2012-02-06 7 views
0

私はこれが適切な質問であることを100%確信しているわけではありませんが、ここには入ります:無関係な2つのクエリの行を選択してテーブルに追加するフォームを作成するにはどうすればよいですか?

私はAccessでフォームを作成しようとしています。

「ジョブ」と「ワーカー」という2つのクエリと、「割り当て」のテーブルがあります。私は、特定のジョブに対して、異なるワーカーを見てそれらをジョブに割り当てることができるようにインターフェースを構築したいと考えています。ワーカーがジョブに対して選択されると、ワーカーをそのジョブにリンクする「割り当て」テーブルに行を追加する必要があります。仕事は複数の労働者を持つことができ、その逆もあります。

"Jobs"、 "Workers"、 "Assignments"というサブフォームがメインフォームにあるように設定する必要があると思います。 「ジョブ」でどのジョブが選択されている場合でも、「割り当て」には、そのジョブに割り当てられているワーカーの一覧が表示されます。 「Workers」の下に「Assign Worker」ボタンがあり、「Assignments」の下に「Unassign Worker」ボタンがあり、割り当てリストから作業者を削除します。

多くのExcelユーザーフォームを作成しているため、コントロールの背後にあるクエリとVBAコードに必要なことを理解しています。どのようにすればよいかわからないのは、サブフォームを使ってAccessでこれを構築することです。これは最も直接的なアプローチであると思われます。私はTextBoxesの束を作るだけでそれを回避できると思いますが、それは不必要な作業のようです。

このフォームの作成方法に関するアドバイスはありますか?

答えて

2

これは、コードなしで、または最悪の場合はごくわずかなコードで設定できます。

私たちはあなたのテーブルが含まれているとしましょう:

Jobs 
JobID ->Primary key 
OtherStuff 

Workers 
WorkerID ->Primary key 
OtherStuff 

Assignments 
JobID ->) Primary key 
WorkerID ->) 
OtherStuff 

あなたが必要になります。

A main form, Jobs. 
A sub form, Assignments 

サブフォームの割り当ては、ウィザードがあなたのためにこれを行います、リンクの子と親フィールドのジョブIDを持っている必要があります。 WorkerIDの代わりに

、コンボボックスを置く:

RowSource: SELECT WorkerID, SName & ", " & FName FROM Workers 
Bound Column : 1 
ControlSource : WorkerID 
Column Widths : 0; 2cm 
Column Count : 2 

あなたが仕事のために労働者を選択すると、ジョブIDが自動的に入力されますので、あなたが好きなようにあなたは、できるだけ多くの労働者を追加することができます。

Northwindサンプルデータベースには、この種類のもののいくつかの例があります。

+0

ありがとう、これは私が始めるのに役立ちます。選択した仕事にどの従業員が「ベストフィット」しているかを示したいので、各従業員の情報を表示する方法を見つける必要があります。 3番目のテーブルを介してWorkerのデータとリクエストを結合し、コンボボックスから値を直接選択するのではなく、WorkerサブフォームをダブルクリックしてAssignmentsテーブルを入力する別のサブフォームを使用します。簡単な方法がない限り...? – sigil

+0

必要に応じて、[追加]ボタンを使用してすべてのワーカー情報の完全なサブフォームを作成できます。これは、VBAを介して実行されるSQLや、ワーカーのサブフォームから割り当てのサブフォームへの更新など、少しコードが必要になります。ベストフィットのチェックが時折行われる場合は、他にも解決策があります。ジョブの種類によって最適な判断ができる場合は、さらにレベルの情報を追加できます。 – Fionnuala

関連する問題