プロが教えるわが家の防犯対策術!

いつもたいへんお世話になっております。
アクセス97で、フォームを複数作りました。フォーム1、フォーム2、フォーム3。
それぞれのフォームのコマンドボタンでフォーム4を呼び出します。
フォーム4のレコードソースにクエリを使用しますが(クエリ1)、
このクエリにの抽出条件に、最初のフォームのコントロールの値(部門)を設定したいのですが、抽出条件に、「FORMS!フォーム1!部門」とすると、同じクエリを他のフォームには使えませんよね?パラメータを作成して、それぞれのフォームのコマンドボタンのなかで指定できてしまえば、クエリ1と、フォーム4を共有できますよね。現在は、それぞれのフォームに対応するフォーム4とクエリ1を作成しています。なんとかなりませんか?
説明が難しくなってきちゃった・・・
・・・パラメータの入力要求をVBAで処理したいのですが、いい方法を教えてください。

A 回答 (2件)

こんにちは。

maruru01です。
フォーム4のレコードソースをSQLステートメントで指定すればいいと思います。
それを標準モジュールにプロシージャ化しておいて、抽出条件を引数にすればいいと思います。

標準モジュールに、

Public Sub myOpenForm4(Cond As String)

  SQL = "(前部)" & Cond & "(後部)"
  DoCmd.OpenForm "フォーム4"
  Forms!フォーム4.RecordSource = SQL

End Sub

としておいて、各フォームのコマンドボタンのクリックイベントでこのプロシージャを呼び出せばいいと思います。
参考になれば幸いです。
では。
    • good
    • 0

フォーム4の抽出条件は、クエリーで設定しないとないとまずいんでしょうか?


フィルターでの処理でも良ければ、フォーム1~3からフォーム4を開くときに、OpenArgsでパラメータを渡して、Openイベントでフィルターをかけてやるのが簡単かと思いますが。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!