Access SQL syntax Fehler
Access bringt mir die Fehlermeldung das ich einen Syntax Fehler in meinem Code habe, ich kann diesen jedoch nicht finden.
Hallo liebes Forum
Ich erhalte einen Laufzeitfehler 3144: Syntaxfehler in UPDATE Anweisung wenn ich versuche den Folgenden Code im Access VBA auszuführen:
Ich sehe den Fehler leider nicht...
Kann es sein das Access bzw MSSQL den SELECT im UPDATE nicht versteht?
lg Valume
Hallo liebes Forum
Ich erhalte einen Laufzeitfehler 3144: Syntaxfehler in UPDATE Anweisung wenn ich versuche den Folgenden Code im Access VBA auszuführen:
Dim strSQL2 As String
strSQL2 = "UPDATE tbl_messungen SET (Titel, Auftragsteilnummer) = (SELECT Titel, Auftragsteilnummer FROM tbl_messungen WHERE Messauftrag_IDFS = " & idMessauftragalt & ") WHERE Messauftrag_IDFS = 9999"
DoCmd.RunSQL strSQL2
Ich sehe den Fehler leider nicht...
Kann es sein das Access bzw MSSQL den SELECT im UPDATE nicht versteht?
lg Valume
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 156974
Url: https://administrator.de/contentid/156974
Ausgedruckt am: 22.11.2024 um 10:11 Uhr
9 Kommentare
Neuester Kommentar
Bin mir da nicht 100% sicher, aber ich denke, daß ist syntaktisch tatsächlich so nicht zulässig, weil bei deinem SELECT grundsätzlich keine oder mehrere Zeilen als Ergebnis rauskommen können, das SET aber wirklich exakt nur _ein_ Wertepaar gebrauchen kann.
1. Werte einzeln zuweisen
geht nicht
geht
2. Access mag keine SELECTs in UPDATEs
Ich würde entweder Unterabfragen verwenden, oder mit DLookup arbeiten, z.B.
UPDATE Tabelle SET (feld1, feld2)=(1,2) WHERE id=1
UPDATE Tabelle SET feld1=1, feld2=2 WHERE id=1
2. Access mag keine SELECTs in UPDATEs
Ich würde entweder Unterabfragen verwenden, oder mit DLookup arbeiten, z.B.
Dim strTitel As String
Dim lngAuftragsteilNummer As Long
strTitel = DLookup("Titel", "tbl_messungen", "Messauftrag_IDFS=" & idMessauftragAlt)
lngAuftragsteilNummer = DLookup("Auftragsteilnummer", "tbl_messungen", "Messauftrag_IDFS=" & idMessauftragAlt)
strSQL2 = "UPDATE tbl_messungen SET Titel='" & strTitel & "', Auftragsteilnummer=" & lngAuftragsteilNummer & " WHERE Messauftrag_IDFS = 9999"
Da meine Antwort von gestern leider verschluckt wurde, nochmal in Kurzform:
Du versuchst mehrere Werte einer Spalte zuzuordnen, deren ID 9999 ist. Das geht so nicht. Die Zuweisung muss eindeutig sein.
Ich interpretiere Deine Absicht mal so, dass Du Teilmessungen einer Gesamtmessung zuordnen möchtest.
Dazu versuchst Du die IDs der Teilmessungen bei der Gesamtmessung zu hinterlegen. Dafür bräuchtest Du dann eine eigene Zuordnungstabelle.
Sollten die Teilmessungen eindeutig zuzuordnen sein, wäre eine andere Möglichkeit die ID der Gesamtmessung bei den Teilmessungen zu hinterlegen. Die Datenstruktur solltest Du vielleicht auch noch einmal überdenken. Es sieht so aus, als ob Du einige Daten doppelt speicherst (z.B. Titel). Mit einer Tabelle für die Gesamtmessung, deren ID Du bei den Teilmessungen in der eigenen Tabelle hinterlegst, wäre das zu bereinigen.
Du versuchst mehrere Werte einer Spalte zuzuordnen, deren ID 9999 ist. Das geht so nicht. Die Zuweisung muss eindeutig sein.
Ich interpretiere Deine Absicht mal so, dass Du Teilmessungen einer Gesamtmessung zuordnen möchtest.
Dazu versuchst Du die IDs der Teilmessungen bei der Gesamtmessung zu hinterlegen. Dafür bräuchtest Du dann eine eigene Zuordnungstabelle.
Sollten die Teilmessungen eindeutig zuzuordnen sein, wäre eine andere Möglichkeit die ID der Gesamtmessung bei den Teilmessungen zu hinterlegen. Die Datenstruktur solltest Du vielleicht auch noch einmal überdenken. Es sieht so aus, als ob Du einige Daten doppelt speicherst (z.B. Titel). Mit einer Tabelle für die Gesamtmessung, deren ID Du bei den Teilmessungen in der eigenen Tabelle hinterlegst, wäre das zu bereinigen.
Bei welcher Anweisung passiert der Fehler?
strSQL oder strSQL2?
Wandelst Du das Datum entsprechend um?
http://www.donkarl.com/FAQ/FAQ6VBA.htm#6.8
bzw.
http://www.office-loesung.de/ftopic174075_0_0_asc.php
strSQL oder strSQL2?
Wandelst Du das Datum entsprechend um?
http://www.donkarl.com/FAQ/FAQ6VBA.htm#6.8
bzw.
http://www.office-loesung.de/ftopic174075_0_0_asc.php