Ich habe ein DAO-Recordset, das eine Datensatzgruppe durchläuft und eine SQL-Anweisung für eine andere Tabelle ausführt, die Datensätze dieser Tabelle aktualisiert. Aus irgendeinem Grund mag es nicht, den Recordset-Wert in der Where-Klausel der SQL-Anweisung zu verwenden. Ich habe alles versucht, was mir einfällt.vba Zugriff auf Recordset-Feld in SQL-Klausel
strSQL = "Select A, B FROM TABLE1"
Set rs = CurrentDb.OpenRecordset(strSQL)
If Not rs.BOF and Not rs.EOF Then
rs.MoveFirst
While (Not rs.EOF)
DoCmd.RunSQL "UPDATE TABLE2 SET TABLE2.B = rs!B WHERE TABLE2.A = rs!A;"
rs.MoveNext
Wend
End If
rs.Close
Das einzige Problem ist die Where-Klausel. Es hat kein Problem mit der set-Klausel, obwohl es auf den Wert auf die gleiche Weise zugreift. Ich erhalte einen Datentyp-Mismatch-Fehler in der Where-Klausel.
Was sind die Feldtypen für TABLE1.A und TABLE2.A? Sind sie beide Saiten? – braX
Sie verwenden nicht die Recordset-Werte .... Sie verwenden die Zeichenfolgen "rs! A" und "rs! B" .... Sie müssen die Werte von _rs! A_ und _rs! B_ in die SQL-Abfrage einfügen String ...... Nachschlagen 'String Verkettung' im Internet – jsotola
Good Lord. Schreiben Sie das einfach als einzelne Abfrage. Dies zu tun, indem man eine SQL-Anweisung durchläuft und erstellt, ist verrückt! – JohnFx