色彩を教える人になるための講座「色彩講師養成講座」の魅力とは>>

 アクセスで、同じフォームでの複数人が入力作業を行うのですが、作業者によって少しづつ条件の違う検索をクエリで行っています。
 このとき、フォームは作業者の数だけ作成しておかなければならないでしょうか?

 フォームの手直しをする際に1回で済むように、違うクエリを使った場合も同じフォームが利用できれば、大変助かるのですが、現状では作業者の数だけフォームの修正が必要で困っております。
 何か、良い解決の方法があればお教えください。

gooドクター

A 回答 (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と入力フォームを配布すれば同じ様にフォームを開き作業者が必要なボタンでレコードソースを切り替えられるので簡単。
試してみてください。
    • good
    • 1
この回答へのお礼

お世話になります。

 マクロから「フォームを開く」に続けて「フィルターの実行」で、使いたいクエリを指定すると、上手く行くようで、当分は、この方法でゆけそうです。

 余談ですが、対象レコードが増えたときにリストボックスでレコードを選べるようにしようとすると、フィルター実行前のレコードリストしか表示されないようで、リストボックスの「値集合ソース」にフィルターを掛けた指定が上手く出来ないのでつまずいています。

 VBAは勉強中なのでまだまだ、使いこなせませんが、研究してみます。

お礼日時:2006/02/08 00:49

クエリをフォームのレコードソースに設定している場合なら、以下の方法が使えます。


Form_Load()のイベントとして、レコードソースをユーザーによって切り替える方法をお試しください。

Me.RecordSource = "クエリー1"
If ○○○ Then
Me.RecordSource = "クエリー2"
End If

フォームを開く時点で、どのクエリを使うか判定する方法(上記の○○○の部分)は、業務仕様により決める必要があるので、ご自分で検討してみてください。
    • good
    • 1
この回答へのお礼

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

お礼日時:2006/02/08 00:38

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

このQ&Aを見た人はこんなQ&Aも見ています

gooドクター

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング