Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: Ralf_17 am Oktober 05, 2010, 15:15:39

Titel: Laufzeitfehler 3134 Syntaxfehler in der Insert Into-Anweisung
Beitrag von: Ralf_17 am Oktober 05, 2010, 15:15:39
Hallo,

Code:
Private Sub Kombifeld2_BeforeUpdate(Cancel As Integer)


Dim disseminiert_Stadium_ID As Long, strBezeichnung As String

lngdisseminiert_Stadium_ID = Me!Kombifeld2

strBezeichnung = Me!Kombifeld2.Column(1)


strSQL = "INSERT INTO Tab_Fruehstadium(I)_und_disseminiert_Stadium(II) (Bezeichnung) VALUES ('" & strBezeichnung & "')"

DoCmd.RunSQL strSQL
End Sub

beim Debuggen: Markieren der  CoCmd-Zeile mit im Betreff genannten Fehler

Kennt jemand die Ursache?
(Tab-name zu lang?)

Danke!

Titel: Re: Laufzeitfehler 3134 Syntaxfehler in der Insert Into-Anweisung
Beitrag von: database am Oktober 05, 2010, 15:35:21
Hallo,

das Problem liegt an den Klammern im Tabellennamen!
Die SQL-Engine interpretiert dieses Stadium(II) (Bezeichnung)  als 2 aufeinanderfolgende Feldnamen die extra eingeklammert sind und somit wird ein Fehler erzeugt.
Nimm die Klammern aus dem Tabellennamen raus und alles läuft problemlos.

strSQL = "INSERT INTO Tab_FruehstadiumI_und_disseminiert_StadiumII (Bezeichnung) VALUES ('" & strBezeichnung & "')"

Natürlich musst du die Tabelle selbst auch umbenennen!

HTH
Peter
Titel: Re: Laufzeitfehler 3134 Syntaxfehler in der Insert Into-Anweisung
Beitrag von: Ralf_17 am Oktober 05, 2010, 16:21:48
ok, danke!

jetzt anderer Fehler bei Testen der Anfügeabfrage:

Keine Anfügung, aufgrund Schlüsselverletzung  (Access-Fehlermeldung stark verkürzt wiedergegeben).

(Beziehungen innerhalb den Tabellen bzw. den referrierenden Forms sind im Beziehungsfenster korrekt abgebildet.)



Titel: Re: Laufzeitfehler 3134 Syntaxfehler in der Insert Into-Anweisung
Beitrag von: DF6GL am Oktober 05, 2010, 16:34:20
Hallo,


das Feld "Bezeichnung" in der Tabelle besitzt nicht zufällig einen eindeutigen Index, bzw. ist ein Teil von einem zusammengesetzten Schlüssel?

Titel: Re: Laufzeitfehler 3134 Syntaxfehler in der Insert Into-Anweisung
Beitrag von: database am Oktober 05, 2010, 16:34:36
Hallo,

als Nachtrag du kannst da Problem auch umgehen in dem du den Tabellennamen in eckige Klammern setzt - so können die runden Klammern im Namen bleiben.

Zum Anderen Problem - naja, Access wird dich kaum belügen!
Mangel Kenntnis deiner Struktur kann ich dazu wenig aussagen - möglicherweise wird die Eingabe eines Fremdschlüssels zusätzlich zur Beschreibung erwartet (das Feld ist als Mussfeld deklariert, darf also nicht leer bleiben) oder du hast - was ich jetzt nicht hoffe - das Feld Beschreibung in der Tabelle zum Primärschlüssel ernannt.

Titel: Re: Laufzeitfehler 3134 Syntaxfehler in der Insert Into-Anweisung
Beitrag von: database am Oktober 05, 2010, 16:36:05
@DF6GL

das waren nur 16 sec.!    ::) ;D
Titel: Re: Laufzeitfehler 3134 Syntaxfehler in der Insert Into-Anweisung
Beitrag von: DF6GL am Oktober 05, 2010, 16:50:30

@database:

man könnte auch sagen, das war eine lange Viertel-Minute..  :P  ;)  ;D
Titel: Re: Laufzeitfehler 3134 Syntaxfehler in der Insert Into-Anweisung
Beitrag von: Ralf_17 am Oktober 05, 2010, 16:59:07
Hallo,
Textfeld als Schlüsselvariable, das passiert nicht mal mir ;-)

Hab Autowert_ID als PS (und kein weiteres Feld!) dazu neben Bezeichnung noch ne Spalte mit Fremd-ID - referrierend
zu übergeordneter Tabelle. Diese als Zahl (Long I) und ohne doppelte Werte. In übergeordneter Tab. ebenso Autowert_ID.

Die Beziehung hab ich mal gelöscht, bei Neuerstellung kann ich nur 1:1 auswählen (vorher 1 [übergeord.Tab] : n [besagte Tab].
Titel: Re: Laufzeitfehler 3134 Syntaxfehler in der Insert Into-Anweisung
Beitrag von: DF6GL am Oktober 05, 2010, 17:19:52
Hallo,

"dazu neben Bezeichnung noch ne Spalte mit Fremd-ID "

na, da liegt der Hase im Pfeffer.  Deine Anfügeabfrage setzt dieses Feld nicht (d. h. setzt mit einem NULL-"Wert" ) und der kann kein FS sein...
Titel: Re: Laufzeitfehler 3134 Syntaxfehler in der Insert Into-Anweisung
Beitrag von: Ralf_17 am Oktober 05, 2010, 17:27:03
Hi,

ok. verstehe.

Aber weglassen kann ich den ja auch nicht einfach.
Titel: Re: Laufzeitfehler 3134 Syntaxfehler in der Insert Into-Anweisung
Beitrag von: database am Oktober 05, 2010, 17:27:29
Hi,

ZitatDiese als Zahl (Long I) und ohne doppelte Werte
Dann hast du auf den FS einen eindeutigen Index gelegt und somt ist nur noch 1:1 möglich!
Da liegt wirklich mit der Beziehung was im Argen ...   :o
Titel: Re: Laufzeitfehler 3134 Syntaxfehler in der Insert Into-Anweisung
Beitrag von: Ralf_17 am Oktober 05, 2010, 17:37:11
ok, danke. Werd weiter probieren.