Microsoft Access 掲示板

フォームのレコードソース

3 コメント
views
4 フォロー

クリックイベントでフォームを開くようにしています。

開くときにあらかじめ抽出結果をセットしたレコードを
フォームのレコードソースにしたいです。

以下のとおりのコードで抽出は問題なくできています。

                Set QRY = db.CreateQueryDef("")
                QRY.sql = Sample_SQL() '抽出SQL
                Set rs = QRY.OpenRecordset

行き詰ってしまいました。
ご教授お願い致します。

kitty
作成: 2019/05/10 (金) 14:37:58
通報 ...
1

ご提示のコードはVBAでテーフルデータを取得したり更新したりするときのもです。
フォームでデータを操作する場合は、関係ないです。

フォームを開く時に、引数で抽出条件を設定できます。

DoCmd.OpenForm メソッド (Access) | Microsoft Docs

コード例

DoCmd.OpenForm "フォーム名", , , "抽出条件"

または、

DoCmd.OpenForm "フォーム名", , "抽出条件を設定したクエリ名"

フォームのレコードソースにはテーブル名が、抽出条件を設定していないクエリ名を設定しておきます。

2
kitty 2019/05/13 (月) 09:53:05 e4054@a3086

ご連絡ありがとうございます。

フォームに設定する方法は存じております。

今行っている作業は、単純ではなく、たくさんの「フォームを開く」コマンドボタンから発生するイベントが、ほとんど同じ内容なのでそれらのコードを短縮するために標準モジュールにSQLを作成したのですが、その抽出したレコードをなんとかフォームのレコードセットに入れることができないかという問題です。

もしかしたらDo~Until でフォームのオブジェクトに代入していかないといけないやつでしょうか?

3

「標準モジュールにSQLを作成した」のなら、
フォームの RecordSourceプロパティにそれを設定すればいいでしょう。

どのタイミングで設定したいのか不明ですが、フォームの開く時イベントでするなら、

Private Sub Form_Open(Cancel As Integer)
    Dim SQL As String
    SQL = 標準モジュールで作成したSQL
    Me.RecordSource = SQL
End Sub