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, 7241 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
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

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

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

Windows Server
gelöst SQL Server 2008 überlappender E A Vorgang, Fehler ID 997 (4)

Frage von Timx zum Thema Windows Server ...

Datenbanken
gelöst Fehler bei SQL Abfrage - Filter Funktion (2)

Frage von mschaedler1982 zum Thema Datenbanken ...

Netzwerkgrundlagen
gelöst Access Point Fehler (2)

Frage von TheDonn zum Thema Netzwerkgrundlagen ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...