AccessのVBAを久々に作らざるを得なくなったのですが、
方法が判らずに困っています。
Accessで月毎に列を持っているクエリー(テーブル)から、
各月の数字を印刷するレポートを作成するために、
レポートで参照する列名を固定にして、クエリーの計算式(参照先)をVBAで変更しよう
と考えてます。
例) 月別集計クエリーQ1(テーブルAとBをジョインして作成している)
列名 参照先
--------------
M1 A.M1
M2 A.M2
M3 A.M3
(略)
M12 A.M12
M (可変)11月の時A.M11
N (可変) 11月の時B.M11
これに対して、
コントロールソースQ1を使用しているレポートを開く時のイベントで
M及びNのコントロールソースを変更させようと思います。
"M11"の部分は実際には変数で値をセットします。
Dim db As DAO.Database
Dim qd As DAO.QueryDef
Dim fld As DAO.Field
Dim tb As DAO.QueryDef
Set db = CurrentDb()
Set qd = db.QueryDefs("A")
Set fld = qd.Fields("M11")
Me("M").ControlSource = fld.Name
というような方法で書くと、
「指定した式で参照されている'M'フィールドが見つかりません。」
と出ます。
Me.Controls("SS4JNSR").ControlSource = fld.Name
でも同じです。
レポートのコントロールソースがジョインしていないクエリーだと、
Set fld = tb.Fields("M11")
Me("M").ControlSource = fld.Name
だけで動作するのですが、結合列の場合の参照の仕方が判りません。
教えて頂けないでしょうか?
No.2ベストアンサー
- 回答日時:
フォームが参照するクエリのフィールド名を固定しておくんですよ。
Set fld = qd.Fields("当月")のようにして。
それで月ごとに"フォームが参照するクエリ"を修正するんですよ。
11月だったら以下のようにしておいて
select A.M11 as 当月1, B.M11 as 当月2 from A inner join B on ・・・
12月になったら以下のようにクエリを修正する
select A.M12 as 当月1, B.M12 as 当月2 from A inner join B on ・・・
こうすればフォームが参照するのは常に"当月1"と"当月2"です。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) ACCESS DAO で不要なテーブルのフィールド(列)の削除 4 2022/06/23 12:13
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- Excel(エクセル) フォルダ内のワードファイルをPDFに一括変換するVBA 3 2023/06/09 16:51
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- Visual Basic(VBA) access count数を変数に格納 2 2022/03/30 19:21
- Visual Basic(VBA) マクロVBA 1シートをまとめる 閉じ方 初心者 SOS! 1 2022/06/17 14:54
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Access(アクセス) access,vbaでフォルダ内のファイルをテーブルにインポート、ファイル名もフィールドに追加したい 1 2022/08/31 11:11
- Visual Basic(VBA) Sheet1のA列にコードB列にメアド、Sheet2のB列にコード一覧とD列にメアド一覧があり、Sh 3 2022/10/19 11:57
- Access(アクセス) DoCmd.SearchForRecord が動かない時の解決方法 3 2022/07/22 15:31
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
ACCESSでコントロールソースの変更
Access(アクセス)
-
ACCSESS2013VBA フォームのレコードソースを変更する
その他(データベース)
-
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
-
4
Accessのレポート上のテキストボックス値を設定したい
その他(データベース)
-
5
'2465'指定した式で参照している'直線Aii'フィールドが見つかり
Visual Basic(VBA)
-
6
テキストボックス名を変数で指定してプロパティ設定?
その他(データベース)
-
7
アクセスVBAのMe!と[ ]
Access(アクセス)
-
8
【Access】レポートでテキストボックスやラベル中の文字配置を下にしたい
Access(アクセス)
-
9
レポートのコントロールソースを条件により変えたい
その他(データベース)
-
10
Accessでレポートの項目をVBAで変更したい
その他(データベース)
-
11
「RunSQL」と「Execute」の違い
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
アクセスのレポートのヘッダー...
-
Access チェックボックスを使...
-
アクセスのレポートでこんなこ...
-
Accessのレポート上のテキスト...
-
ACCESS2000 VBAで印刷時にサブ...
-
Access2007 総ページ数が狂う
-
Access レポートで分類ごとに合...
-
Accessでレポートの項目をVBAで...
-
アクセスでレポート作成時にデ...
-
アクセスのレポートをPDF化する...
-
Accessのレポートでのレコード...
-
★お手上げ状態です。助けてくだ...
-
ACCESS レポートでグループご...
-
計算結果がレポートビューでは...
-
レポートのコントロールソース...
-
ACCESS 単票形式のレポート
-
Accessのクエリで1フィールドの...
-
「#エラー」の回避
-
accessのフォームに設置したボ...
-
Access2007でSQLの複数列副問い...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
アクセスのレポートのヘッダー...
-
Accessのレポート上のテキスト...
-
accessレポートにwordの文...
-
ACCESS2000 VBAで印刷時にサブ...
-
Accessのフォーマット時イベント
-
★お手上げ状態です。助けてくだ...
-
Access2013でレポートを名前を...
-
エクセルで表を作り、ピボット...
-
Accessでレポートの項目をVBAで...
-
Access チェックボックスを使...
-
アクセスでレポート作成時にデ...
-
Accessでページヘッダーだけが...
-
アクセスでファイル名をレポー...
-
レポートのコントロールソース...
-
計算結果がレポートビューでは...
-
BusinessObjectsについて教えて...
-
ACCESS でフォームフィルターを...
-
アクセスのレポートで空白のテ...
-
レポートのラベルなどの非表示...
-
テキストボックスにコントロー...
おすすめ情報