• 締切済み

アクセスで同じフォームを違うクエリで共用したい

 アクセスで、同じフォームでの複数人が入力作業を行うのですが、作業者によって少しづつ条件の違う検索をクエリで行っています。  このとき、フォームは作業者の数だけ作成しておかなければならないでしょうか?  フォームの手直しをする際に1回で済むように、違うクエリを使った場合も同じフォームが利用できれば、大変助かるのですが、現状では作業者の数だけフォームの修正が必要で困っております。  何か、良い解決の方法があればお教えください。

みんなの回答

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.2

>違うクエリを使った場合も同じフォームが利用できれば 簡単な方法としては 1つの入力フォームを使い簡単にレコードソースを変更するには入力フォームをサブフォームの様に使います。 デザインビューで1つのコントロールが何もないフォームを作ります。これを例えばフォームAとします。 フォームAの中に入力フォームをサブフォームとして配置します。 フォームAに作業者用のボタンを作ります。例えば作業者が3人でクエリが各クエリ1・クエリ2・クエリ3とします。 作業者1のボタンのクリック時イベントに Private Sub 作業者1_Click() Me![入力フォーム].Form.RecordSource = "クエリ1" Me![入力フォーム].Requery End Sub 同様に作業者2のボタンには Private Sub 作業者2_Click() Me![入力フォーム].Form.RecordSource = "クエリ2" Me![入力フォーム].Requery End Sub のようにし作業者3ボタンも同様です。 入力フォームを開く時はフォームAを開くようにして作業者のボタンで入力フォームのレコードソースとなるクエリを変更させ使用すれば簡単だと思いますが。 これならフォームAと入力フォームを配布すれば同じ様にフォームを開き作業者が必要なボタンでレコードソースを切り替えられるので簡単。 試してみてください。

junkun2jp
質問者

お礼

お世話になります。  マクロから「フォームを開く」に続けて「フィルターの実行」で、使いたいクエリを指定すると、上手く行くようで、当分は、この方法でゆけそうです。  余談ですが、対象レコードが増えたときにリストボックスでレコードを選べるようにしようとすると、フィルター実行前のレコードリストしか表示されないようで、リストボックスの「値集合ソース」にフィルターを掛けた指定が上手く出来ないのでつまずいています。  VBAは勉強中なのでまだまだ、使いこなせませんが、研究してみます。

  • akipapa
  • ベストアンサー率38% (34/89)
回答No.1

クエリをフォームのレコードソースに設定している場合なら、以下の方法が使えます。 Form_Load()のイベントとして、レコードソースをユーザーによって切り替える方法をお試しください。 Me.RecordSource = "クエリー1" If ○○○ Then Me.RecordSource = "クエリー2" End If フォームを開く時点で、どのクエリを使うか判定する方法(上記の○○○の部分)は、業務仕様により決める必要があるので、ご自分で検討してみてください。

junkun2jp
質問者

お礼

お世話になります。 条件分枝の設定に、変数をあてなければならないのでしょうが、VBAは得意ではないので、マクロで何とかならないか試しています。

関連するQ&A