0

所以这是我第一次与工会合作,我正在尝试查询 3 个表。

抽象的

我正在尝试从具有相同 ID 的 3 个不同表(每个表一个字段)中选择 3 个字段。

我希望每组记录都有来自 3 个字段的结果,然后我可以使用 3 个结果。似乎正在发生的事情是它获取所有结果并为每个结果创建一个记录集

任何指导将不胜感激,据我所知,我可能会以完全错误的方式解决这个问题。

这是我正在使用的代码

Dim rs1 As DAO.Recordset
Dim unionquery As String

    unionquery = "select 
                    [Test Script] from TEST_SCRIPTS where TEST_ID= " & Me.TEST_ID & " 
                  union select 
                    PROC_ID from PROC_CHECK where TEST_ID= " & Me.TEST_ID  & " 
                  union select all 
                    [Software Version] from SOFTWARE_VERSION where TEST_ID= " &  
                    Me.TEST_ID & " "

    Set rs1 = CurrentDb.OpenRecordset(unionquery, dbOpenForwardOnly)

    If Not (rs1.EOF And rs1.BOF) Then

        Do Until rs1.EOF = True

        ' I THOUGHT THIS WOULD WORK BUT I GET AN ERROR SAYING rs1!PROC_ID AND
        ' rs1![Software Version] are not part of the recordset

        ' WHEN I ALERT OUT rs1![Test Script] i get the whole set
        MsgBox " " & rs1![Test Script] & ", " & rs1!PROC_ID & ", " 
                   & rs1![Software Version] & " "

        Loop

   End If

   rs1.Close
   Set rs1 = Nothing
4

2 回答 2

1

将此添加到您的代码中,就在该OpenRecordset行之前:

Debug.Print unionquery 

然后您可以运行代码,转到即时窗口 ( Ctrl+ g),然后复制联合查询的文本。然后在查询设计器中创建一个新查询,切换到 SQL 视图,粘贴文本,然后运行查询。

这种努力将允许您查看查询返回的字段……您会立即注意到已命名的字段PROC_ID[Software Version]没有包含在该记录集中。我想你会看到一个名为 的字段[Test Script],但请自己检查。

您的首要任务必须是修改查询,以便它返回您想要的信息。在查询设计器中使用该查询后,修改您的 VBA 代码以使用该查询的 SQL。

于 2013-09-17T18:38:47.313 回答
1

“UNION”子句追加行而不是列。因此,生成的记录集只有一个名为 [Test Script] 的列,其中填充了来自

a: TEST_SCRIPTS where TEST_ID= " & Me.TEST_ID
b: PROC_CHECK where TEST_ID= " & Me.TEST_ID
c: SOFTWARE_VERSION where TEST_ID= " &  Me.TEST_ID 

你可能想要这样的查询

select [Test Script] , [PROC_ID] , [Software Version] FROM (TEST_SCRIPTS INNER JOIN 
PROC_CHECK ON TEST_SCRIPTS.TEST_ID = PROC_CHECK.TEST_ID) INNER JOIN AS SOFTWRE_VERSION     ON 
TEST_SCRIPTS.TEST_ID = SOFTWRE_VERSION.TEST_ID;

这样您就可以获得(如果 TEST_ID 在表中是唯一的)一行并在您输入问题 rs1![Test Script] & ", " & rs1!PROC_ID & ", " & rs1![Software Version] & " " 时访问字段

于 2013-09-17T19:40:44.707 回答