Ms access 使用“连接”将两个不同表中的值插入到另一个不同表中

Ms access 使用“连接”将两个不同表中的值插入到另一个不同表中,ms-access,vba,ms-access-2010,Ms Access,Vba,Ms Access 2010,我有一个按钮,它使用两个单独的查询,从两个表中提取数据并插入到另一个表中: Dim lngID As Long Dim lngIDCallout As Long Dim strSQL1 As String lngID = CalloutAttendance_MultiSelect.Value lngIDCallout = Forms![Callouts].[CalloutID].Value strSQL1 = "INSERT INTO Members_Callouts(MemberID) S

我有一个按钮,它使用两个单独的查询,从两个表中提取数据并插入到另一个表中:

Dim lngID As Long
Dim lngIDCallout As Long
Dim strSQL1 As String

lngID = CalloutAttendance_MultiSelect.Value
lngIDCallout = Forms![Callouts].[CalloutID].Value

strSQL1 = "INSERT INTO Members_Callouts(MemberID) SELECT MemberID FROM Members WHERE MemberID=" & lngID    
strSQL2 = "INSERT INTO Members_Callouts(CalloutID) SELECT CalloutID FROM Callouts WHERE CalloutID=" & lngIDCallout

CurrentDb.Execute strSQL1
CurrentDb.Execute strSQL2
CalloutAttendance_MultiSelect.Requery
虽然它几乎完成了我希望它做的事情,但它将两个值作为两个独立的新记录插入,而我希望它将其插入一个新记录。我已经试过了,但是我要么得到语法错误,要么在下面的例子中,我得到了3067运行时错误查询输入必须至少包含一个表或查询

strSQL1 = "INSERT INTO Members_Callouts(MemberID, CalloutID) SELECT
          (SELECT MemberID FROM Members WHERE MemberID=" & lngID & "),
          (SELECT CalloutID FROM Callouts WHERE CalloutID=" & lngIDCallout & ")"
有人知道我哪里会出错吗


谢谢:-

在本例中,您只需插入键值,因此只需

strSQL1 = _
        "INSERT INTO Members_Callouts (MemberID, CalloutID) " & _
            "VALUES (" & lngID & ", " & lngIDCallout & ")"
换言之,你不需要为诸如

"(SELECT MemberID FROM Members WHERE MemberID=" & lngID & ")"

…因为它返回的值只是lngId,假设该值存在于[Members]表中。

在这种情况下,您只需插入键值,所以只需

strSQL1 = _
        "INSERT INTO Members_Callouts (MemberID, CalloutID) " & _
            "VALUES (" & lngID & ", " & lngIDCallout & ")"
INSERT INTO
  MyTable (Col1,Col2,Col3,Col4,Col5,Col6,Col7)
SELECT
  f1.col1, f2.col2, f3.col3, f3.col4, f3.col5, f4.col6, f5.col7
FROM
  (SELECT Col1 FROM Func1())           AS f1
CROSS JOIN
  (SELECT Col2 FROM Func2())           AS f2
CROSS JOIN
  (SELECT Col3,Col4,Col5 FROM Func3()) AS f3
CROSS JOIN
  (SELECT Col6 FROM Func4())           AS f4
CROSS JOIN
换言之,你不需要为诸如

"(SELECT MemberID FROM Members WHERE MemberID=" & lngID & ")"
…因为它返回的值只是lngId,假设该值存在于[Members]表中

INSERT INTO
  MyTable (Col1,Col2,Col3,Col4,Col5,Col6,Col7)
SELECT
  f1.col1, f2.col2, f3.col3, f3.col4, f3.col5, f4.col6, f5.col7
FROM
  (SELECT Col1 FROM Func1())           AS f1
CROSS JOIN
  (SELECT Col2 FROM Func2())           AS f2
CROSS JOIN
  (SELECT Col3,Col4,Col5 FROM Func3()) AS f3
CROSS JOIN
  (SELECT Col6 FROM Func4())           AS f4
CROSS JOIN
从Func5中选择Col7作为f5

从Func5中选择Col7作为f5