2012-03-06 19 views
0

私は本質的にユーザー入力に基づいて値を選択するExcelアプリケーションを作成しています。ユーザはプロジェクト番号を選択し、次に両方ともアクセスデータベースに予め存在するツールタイプのリストから選択することができる。しかし、プロジェクトにそのツールが関連付けられていない場合、そのツールがリストボックスに表示されないようにします。たとえば、ユーザーがプロジェクト番号15を選択したとします。このプロジェクトには、ツールA、C、Dの3つのツールがあります。つまり、ツールBはこのプロジェクトとは何の関係もありません。アクセスデータベースから読み込み、異なるテーブルの2つのフィールドに基づいて配列を設定する

私は、私が見ている2つの異なるデータベーステーブルを持っています。 1つのテーブルはすべてのツール名を持ち、ToolNamesという名前です。もう1つのテーブルには、プロジェクト関連付けをリストするすべてのツールファイルがあります。これはToolFilesです。そのため、データベースには、データ量に応じて変化するツール 'C'のコピーが複数存在することがあります。

ToolFilesテーブルでチェックできるユーザーの入力に基づいて、実際にToolNamesテーブルを照会する必要があります。プロジェクト番号を取得し、ToolFilesデータベースからツールを探して、ツールのレコード名にそのプロジェクト番号を入力してから、ToolNamesデータベースを照会し、ToolFilesデータベースに表示されたToolNamesのみを選択します。 ToolFilesデータベースで複数のツール名を重複させることができます。

これは私がこれまで持って結合文です:

strSQL = "SELECT * " _ 
     & "FROM ToolNames t " _ 
     & "INNER JOIN ToolFiles f " _ 
     & "ON t.ToolName = f.Tool_Name " _ 
     & "WHERE f.Tool_Name = '" & theSelectedProjName & "' " 
rs.Open strSQL ' , cn, 3, 3 

ToolNamesは私がから値をする表であり、ToolFilesは私が2ツール名のフィールドを比較する表です。

私はこれが複雑な質問であり、説明するのは難しいことを知っています。私が明確にできるものがあれば教えてください。前もって感謝します!

+0

msqueryを使用して接続しているか、データテーブルを照会するにはどうすればいいですか?あなたが試したものの一例が助けになります – datatoo

答えて

0

ToolNamesからToolFilesにデータベースを照会してみませんか?次のようなものがあります:

SELECT ToolName 
FROM ToolNames t 
INNER JOIN ToolFiles f 
ON t.ToolID = f.ToolID 
WHERE f.ProjectID = [ProjectID] 
+0

tとfは何を表していますか? – thebiglebowski11

+0

@Ranlou:申し訳ありませんが、テーブル名のエイリアスです。テーブルごとにテーブル名を入力する代わりに、テーブル名の別名を付けて、フルネームではなく別名を参照することができます。 –

関連する問題