从访问数据库中读取并基于来自不同表的两个字段填充数组

时间:2012-03-06 14:49:59

标签: excel ms-access vba

我正在编写一个excel应用程序,它实质上是根据用户输入选择值。用户选择项目编号,然后可以从访问数据库中预先存在的工具类型列表中进行选择。但是,如果项目没有关联该工具,我不希望该工具显示在列表框中。例如,假设用户已选择项目编号15.此项目有3个工具,例如他们的名称是工具'A','C','D'。换句话说,工具B与该项目无关。

我正在查看两个不同的数据库表。一个表包含所有工具名称,并命名为ToolNames。另一个表包含列出项目关联的所有工具文件,它称为ToolFiles。因此,数据库中可能存在多个工具“C”的副本,这些副本随着其中的数据量而变化。

我真的需要根据用户的输入查询ToolNames表,可以在ToolFiles表中查看。获取项目编号,在ToolFiles数据库中查找工具,然后使用该项目编号填充工具的记录名称,然后查询ToolNames数据库并仅选择ToolFiles数据库中显示的工具名称。 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是我要比较两个工具名称字段的表。

我知道这是一个复杂的问题,很难解释。如果有什么我可以澄清,请告诉我。提前谢谢!

1 个答案:

答案 0 :(得分:0)

为什么不将ToolNames加入ToolFiles来查询数据库?类似的东西:

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