Access (VBA)

Access VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(指定なし : 指定なし)
RecordSourceが機能しない場合
投稿日時: 21/04/21 17:43:44
投稿者: だいふくもち

いつもこちらのコミュニティには大変お世話になっております。
現在、Accessを勉強中の者です。自分で調べても行き詰まってしまい、
どなたかご経験者さまのお知恵をお借りできないかと思いご相談させていただきました。
 
*使用しているクエリ
 
@Q_売掛金管理表クエリ(クロス集計)
フィールド | 契約番号 | 請求先 | 契約名 | 顧客ID | 年度 | 4月 | 5月 |...
レコード | 100100 | 〇〇 | 案件◎◎ | 001 | 2021 | \5,000 | \5,000 |
抽出条件:
・Between [Forms]![F_売掛金管理表]![FROM年度] And [Forms]![F_売掛金管理表]![TO年度])
※フォームで入力した年度を「年度」フィールドから抽出
 
AQ_売掛金(入金済)クエリ(クロス集計)
フィールド | 契約番号 | 請求先 | 契約名 | 顧客ID | 年度 | 4月 | 5月 |...
レコード | 100100 | 〇〇 | 案件◎◎ | 001 | 2021 | \5,000 | \5,000 |
抽出条件:
・Between [Forms]![F_売掛金管理表]![FROM年度] And [Forms]![F_売掛金管理表]![TO年度])
※フォームで入力した年度を「年度」フィールドから抽出
・((T_月額マスタ.入金済)=True))
※月額マスタテーブルで「入金済」フィールドにチェックを入れたレコードのみ抽出
 
上記のクエリ2種を「F_売掛金管理表」というフォームのレコードソースにしたいです。
そしてその切り替えを、フォーム上のコンボボックスで制御したいと考えております。
 
*レコードを表示させたいフォーム
 
BF_売掛金管理表
※デフォルトでは@Q_売掛金管理表クエリを表示
コンボボックス:"売上高のみ表示","全売掛金を表示"
ボタン:条件抽出ボタン
 

Private Sub 条件抽出ボタン_Click()

If Me.売掛表示コンボ = "売上高のみ表示" Then
    Me.RecordSource = "Q_売掛金(入金済)クエリ"
Else
    Me.RecordSource = "Q_売掛金管理表クエリ"
End If

End Sub

フォーム読み込み時は、デフォルトで設定している@Q_売掛金管理表クエリが表示されておりますが、
「条件抽出ボタン」を押すと何も表示されなくなってしまいます。
(クエリ側で確認しても、表示されておりません)
 
RecordSourceをマクロで指定した際に、データが表示されない原因として
どのようなものがあるでしょうか…?
初歩的な質問で大変申し訳ありませんが、ご存じの方がいらっしゃいましたら、
ご教授いただけますと大変有難いです。

回答
投稿日時: 21/04/22 10:13:43
投稿者: sk

引用:
Between [Forms]![F_売掛金管理表]![FROM年度] And [Forms]![F_売掛金管理表]![TO年度]

引用:
Private Sub 条件抽出ボタン_Click()
 
If Me.売掛表示コンボ = "売上高のみ表示" Then
    Me.RecordSource = "Q_売掛金(入金済)クエリ"
Else
    Me.RecordSource = "Q_売掛金管理表クエリ"
End If
 
End Sub

これらが全て[F_売掛金管理表]のフォームヘッダーセクション上に
配置されている非連結コントロールであるとして、
 
引用:
フォーム読み込み時は、デフォルトで設定している@Q_売掛金管理表クエリが表示されておりますが、
「条件抽出ボタン」を押すと何も表示されなくなってしまいます
(クエリ側で確認しても、表示されておりません)

その際の[FROM年度], [TO年度], [売掛表示コンボ]の値が
それぞれ何であるかが示されていませんが、単に指定された条件に
該当するレコードが存在していないからではないでしょうか。

投稿日時: 21/04/22 12:02:35
投稿者: だいふくもち

>sk様
拙い内容にも関わらず、いつも有難いご助言をくださり本当にありがとうございます…!
 

その際の[FROM年度], [TO年度], [売掛表示コンボ]の値が
それぞれ何であるかが示されていませんが、単に指定された条件に
該当するレコードが存在していないからではないでしょうか。

分かりづらい書き方をしてしまい、大変申し訳ありません…
[FROM年度]は、「F_売掛金管理表」フォーム上のテキストボックス(非連結)です。
[TO年度]も、同じく「F_売掛金管理表」フォーム上のテキストボックス(非連結)です。
[売掛表示コンボ]は、「F_売掛金管理表」フォームのコンボボックス(非連結)です。
コンボボックスに登録している値は「全売掛金を表示」と「売上高のみ表示」です。
 
ユーザーに年度の範囲を入力、コンボボックスで表示したい情報を選択してもらい
その条件をクエリで取得し、ユーザーが指定した範囲のデータをフォームに表示します。
 
先ほど、以下の内容に書き換えたところ、なぜがクエリが表示されるようになりました…
(コンボボックスの値に「未入金のみ表示」を追加しました。)
 
Private Sub 条件抽出ボタン_Click()

If Me.売掛表示コンボ = "全売掛金を表示" Then
    Me.RecordSource = "Q_売掛金管理表クエリ"
ElseIf Me.売掛表示コンボ = "売上高のみ表示" Then
    Me.RecordSource = "Q_売掛金(売上高)クエリ"
ElseIf Me.売掛表示コンボ = "未入金のみ表示" Then
    Me.RecordSource = "Q_売掛金(未入金)クエリ"
End If

End Sub

せっかく丁寧にご助言いただいたにも関わらず、
根本的な原因を突き止められず大変申し訳ありません…
この度は初歩的な内容にも関わらず、貴重なアドバイスをいただきありがとうございました!