1

2 つのテーブルからデータを取得して別のテーブルに挿入する 2 つの個別のクエリを使用するボタンがあります。

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

そして、それは私がやりたいことをほぼ実行しますが、2つの値を2つの別々の新しいレコードとして挿入しますが、1つの新しいレコードに挿入したいのです。試してみましたが、構文エラーが発生するか、以下の場合、3067 ランタイム エラー「クエリ入力には少なくとも 1 つのテーブルまたはクエリが含まれている必要があります」が発生します。

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

誰が私がどこで間違っているのか知っていますか?

ありがとう :-)

4

2 に答える 2

1

この場合、キー値を挿入するだけなので、必要なことは次のとおりです。

strSQL1 = _
        "INSERT INTO Members_Callouts (MemberID, CalloutID) " & _
            "VALUES (" & lngID & ", " & lngIDCallout & ")"

つまり、次のようなことを気にする必要はありません...

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

...返される値が正しいlngIdため (値が [Members] テーブルに存在すると仮定)。

于 2013-04-18T06:31:06.060 に答える
0
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 を選択) AS f5

于 2013-04-18T06:33:42.347 に答える