Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Access SQL syntax Fehler

Frage Microsoft Microsoft Office

Mitglied: Valume91

Valume91 (Level 1) - Jetzt verbinden

14.12.2010, aktualisiert 15:33 Uhr, 7289 Aufrufe, 9 Kommentare

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:

01.
Dim strSQL2 As String 
02.
    strSQL2 = "UPDATE tbl_messungen SET (Titel, Auftragsteilnummer) = (SELECT Titel, Auftragsteilnummer FROM tbl_messungen WHERE Messauftrag_IDFS = " & idMessauftragalt & ") WHERE Messauftrag_IDFS = 9999" 
03.
    DoCmd.RunSQL strSQL2 
04.
 
Ich sehe den Fehler leider nicht...

Kann es sein das Access bzw MSSQL den SELECT im UPDATE nicht versteht?

lg Valume
Mitglied: 32067
14.12.2010 um 15:40 Uhr
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.
Bitte warten ..
Mitglied: Valume91
14.12.2010 um 15:44 Uhr
Hi DKrause

Danke für deine Antwort!
Kennst du evtl. eine Alternative?

lg Valume
Bitte warten ..
Mitglied: NilsErik
14.12.2010 um 17:09 Uhr
1. Werte einzeln zuweisen

01.
UPDATE Tabelle SET (feld1, feld2)=(1,2) WHERE id=1
geht nicht

01.
UPDATE Tabelle SET feld1=1, feld2=2 WHERE id=1
geht

2. Access mag keine SELECTs in UPDATEs
Ich würde entweder Unterabfragen verwenden, oder mit DLookup arbeiten, z.B.

01.
Dim strTitel As String 
02.
Dim lngAuftragsteilNummer As Long 
03.
 
04.
strTitel = DLookup("Titel", "tbl_messungen", "Messauftrag_IDFS=" & idMessauftragAlt) 
05.
lngAuftragsteilNummer = DLookup("Auftragsteilnummer", "tbl_messungen", "Messauftrag_IDFS=" & idMessauftragAlt) 
06.
 
07.
strSQL2 = "UPDATE tbl_messungen SET Titel='" & strTitel & "', Auftragsteilnummer=" & lngAuftragsteilNummer & " WHERE Messauftrag_IDFS = 9999"
Bitte warten ..
Mitglied: Valume91
14.12.2010 um 17:38 Uhr
Hi NilsErik

Danke erstmal für deine Antwort!

Werte einzeln zuweisen kann ich nicht machen, da ich alle Updaten will die die IDFS 9999 haben, und genauere Angaben habe ich nicht.
Geht das wirklich so mit deiner Variante mit Dlookup?
Weil strTitel, bzw. lngAuftragsteilNummer enthalten dann ja mehrere Werte. Das Würde dann so aussehen
01.
UPDATE tbl_messungen SET Titel='bla, test, hmm, jaja, so', Auftragsteilnummer=12, 15, 18, 16, 13 WHERE Messauftrag_IDFS = 9999
Der Code bringt bei mir ausserdem die Fehlermeldung: "Unzulässige verwendung von NULL" bei der Zeile:
01.
 lngAuftragsteilNummer = DLookup("Auftragsteilnummer", "tbl_messungen", "Messauftrag_IDFS=" & idMessauftragAlt) 
Was ist daran noch Falsch?

lg Valume
Bitte warten ..
Mitglied: NilsErik
15.12.2010 um 08:14 Uhr
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.
Bitte warten ..
Mitglied: Valume91
15.12.2010 um 08:54 Uhr
Hi NilsErik

Also damit du mein Problem verstehst nochmals von ganz Anfang:
Ich habe mehrere Datensätze mit der Messauftrag_IDFS x (steht in Variable idMessauftragAlt) in der Tabelle tbl_messungen.
Nun möchte ich diese Datensätze dublizieren! Also jeweils Titel, und Auftragsteilnummer in einen neuen Datensatz einfügen.
Dabei soll die Messauftrag_IDFS geändert werden auf den Wert der in der Variable idMessauftragneu steht.

Nun zu meinem Lösungsansatz:
Ich dachte ich mache das so:
1. Erstellen neuer Datensätze mit Messauftrag_IDFS 9999
2. Kopieren von Titel und Auftragsteilnummer aus den alten in die neuen Datensätze
3. Ändern der Messauftrag_IDFS von 9999 auf den Wert aus Variable idMEssauftragneu.

Ich hoffe du verstehst nun mein Problem ;)
Hier noch mein VBA Code für oben Berschriebenes:
01.
Dim strSQL As String 
02.
    strSQL = "INSERT INTO tbl_messungen (Messauftrag_IDFS) VALUES (9999)" 
03.
    DoCmd.RunSQL strSQL 
04.
Dim strSQL2 As String 
05.
    strSQL2 = "UPDATE tbl_messungen SET (Titel, Auftragsteilnummer) = (SELECT Titel, Auftragsteilnummer FROM tbl_messungen WHERE Messauftrag_IDFS = " & idMessauftragalt & ") WHERE Messauftrag_IDFS = 9999" 
06.
    MsgBox strSQL2 
07.
    DoCmd.RunSQL strSQL2 
08.
Dim strSQL3 As String 
09.
    strSQL3 = "UPDATE tbl_messungen SET Messauftrag_IDFS = idMessauftragneu WHERE Messauftrag_IDFS = 9999" 
10.
    DoCmd.RunSQL strSQL2
Gibt es evtl sogar eine einfachere Möglichkeit?

lg Valume
Bitte warten ..
Mitglied: Valume91
15.12.2010 um 10:05 Uhr
Hi

Habs jetzt noch versucht anderst zu lösen:
Und zwar habe ich in der tbl_messungen ein Feld "Erstellt_zeit" als "Datum/Zeit" erstellt.

Und arbeite mit Folgendem VBA Code:
01.
Dim datum_zeit As Date 
02.
datum_zeit = Now() 
03.
 
04.
Dim strSQL As String 
05.
    strSQL = "INSERT INTO tbl_messungen (Titel, Auftragsteilnummer) SELECT Titel, Auftragsteilnummer FROM tbl_messungen WHERE Messauftrag_IDFS = " & idMessauftragalt 
06.
    DoCmd.RunSQL strSQL 
07.
Dim strSQL2 As String 
08.
    strSQL2 = "UPDATE tbl_messungen SET Messauftrag_IDFS = " & idMessauftragneu & " WHERE '" & datum_zeit & "' < Erstellt_zeit" 
09.
    MsgBox strSQL2 
10.
    DoCmd.RunSQL strSQL2
Jedoch erhalte ich jetzt ein Fehler "Datentypen unverträglich".

Was mache ich falsch?

lg Valume
Bitte warten ..
Mitglied: NilsErik
15.12.2010 um 13:19 Uhr
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
Bitte warten ..
Mitglied: Valume91
23.01.2011 um 20:52 Uhr
Habe das Problem auf andere Weise gelöst.
Danke für die Tipps!
-->Close
Bitte warten ..
Neuester Wissensbeitrag
Off Topic

"Ich habe nichts zu verbergen"

(2)

Erfahrungsbericht von FA-jka zum Thema Off Topic ...

Ähnliche Inhalte
Datenbanken
gelöst Fehler 1064 you have an error in SQL syntax datenbankabfrage, Search and Replace (1)

Frage von Blackshirt zum Thema Datenbanken ...

Datenbanken
gelöst Access 2010 SQL Tabellen Datensätze einfügen (6)

Frage von Dr.Cornwallis zum Thema Datenbanken ...

Datenbanken
Automatisierter täglicher Import einer Access Datenbank in SQL (5)

Frage von RichterS zum Thema Datenbanken ...

Windows Server
SQL Fehler Beim Installieren von SQL 2008 R2 auf einem Windows 2012 Server (6)

Frage von Sv-Schneider zum Thema Windows Server ...

Heiß diskutierte Inhalte
CPU, RAM, Mainboards
Kaufberatung für mind. 8 verschiedene HighEnd-Mainboards (23)

Frage von yperiu zum Thema CPU, RAM, Mainboards ...

Mac OS X
Mac kann nicht im LAN pingen alle anderen schon (19)

Frage von smartino zum Thema Mac OS X ...

Hyper-V
Langsames Netzwerk i210 LAN Karte (10)

Frage von Akcent zum Thema Hyper-V ...

Windows Server
Server 2016 - Kuriositäten (8)

Frage von certifiedit.net zum Thema Windows Server ...