von Stephan » Mi, 17.01.2018 20:23
Hallo,
bei dem Versuch einen gerade geschrieben Datensatz testweise nochmals mit den gleichen Werten zu updaten bekomme ich folgende Fehlermeldung:
"BASIC-Laufzeitfehler.
Es ist eine Ausnahme aufgetreten
Type: com.sun.star.sdbc.SQLException
Message: Unexpected token: ( in statement [UPDATE "Firma" SET (]."
Das hier ist der relevante Code, der erste sql_string bewirkt bei Ausführung ein richtiges Eintragen in die Datenbank, beim zweiten sql-String kommt die, vorstehend benannte, Fehlermeldung.
(Hinweis: Tabelle "Firma" ist über "FID" (Autowert) mit einer zweiten Tabellen verknüpft, wobei aber dort noch keine konkreten DAten sind während der Code läuft, da ja Base "FID" erst gerade bei der Ausführuing des esten sql-Strings erzeugt.)
'...
sql_string = "INSERT INTO ""Firma"" (""Firmenname"", ""Abteilung"", ""FPostStrasse""," &_
"""FPostleizahl"", ""FOrt"", ""FLand"", ""FBsStrasse"", ""FBsPostleizahl""," &_
"""FBsOrt"", ""FeMail"", ""FUrl"", ""FAdressKategorie"", ""FTelefonZentrale""," &_
"""FFax"", ""FBemerkung"", ""FGeaendert"") VALUES ('" & var_Firmenname & "', '" & var_Abteilung & "'," &_
"'" & var_FPostStrasse & "', '" & var_FPostleizahl & "', '" & var_FOrt & "', '" & var_FLand & "'," &_
"'" & var_FBsStrasse & "', '" & var_FBsPostleizahl & "', '" & var_FBsOrt & "', '" & var_FeMail & "'," &_
"'" & var_FUrl & "', '" & var_FAdressKategorie & "', '" & var_FTelefonZentrale & "', '" & var_FFax & "'," &_
"'" & var_FBemerkung & "','" & akt_Datum & "')"
oStatement.executeUpdate(sql_string)
sql_string = "CALL IDENTITY()"
oAbfrageergebnis = oStatement.executeQuery(sql_string)
WHILE oAbfrageergebnis.next
inID = oAbfrageergebnis.getLong(1)
WEND
Msgbox "Updatetest"
sql_string = "UPDATE ""Firma"" SET (""Firmenname"", ""Abteilung"", ""FPostStrasse""," &_
"""FPostleizahl"", ""FOrt"", ""FLand"", ""FBsStrasse"", ""FBsPostleizahl""," &_
"""FBsOrt"", ""FeMail"", ""FUrl"", ""FAdressKategorie"", ""FTelefonZentrale""," &_
"""FFax"", ""FBemerkung"", ""FGeaendert"") VALUES ('" & var_Firmenname & "', '" & var_Abteilung & "'," &_
"'" & var_FPostStrasse & "', '" & var_FPostleizahl & "', '" & var_FOrt & "', '" & var_FLand & "'," &_
"'" & var_FBsStrasse & "', '" & var_FBsPostleizahl & "', '" & var_FBsOrt & "', '" & var_FeMail & "'," &_
"'" & var_FUrl & "', '" & var_FAdressKategorie & "', '" & var_FTelefonZentrale & "', '" & var_FFax & "'," &_
"'" & var_FBemerkung & "','" & akt_Datum & "') WHERE ""FID"" = '" & inID & "'"
oStatement.executeUpdate(sql_string)
'...
Ist die Schreibweise mit 2 'Arrays' bei UPDATE nicht zulässig? Oder was ist sonst falsch?
Gerne nehme ich auch Ratschläge zur 'best practice' an. Aufgabe ist aus einem Basic-Dialog eine große Anzahl von Werten in einer Datenbank zu updaten und hierzu würde ich gerne vorzugsweise alle Werte updaten (geänderte und nicht-geänderte) um nicht auf dem Basic-Dialog überwachen zu müssen welche Werte sich ändern.
(Hinweis: ja, "... Postleizahl" [sic] soll so geschrieben sein, und funktioniert im ersten SQL ja auch so.)
Gruß
Stephan
Hallo,
bei dem Versuch einen gerade geschrieben Datensatz testweise nochmals mit den gleichen Werten zu updaten bekomme ich folgende Fehlermeldung:
"BASIC-Laufzeitfehler.
Es ist eine Ausnahme aufgetreten
Type: com.sun.star.sdbc.SQLException
Message: Unexpected token: ( in statement [UPDATE "Firma" SET (]."
Das hier ist der relevante Code, der erste sql_string bewirkt bei Ausführung ein richtiges Eintragen in die Datenbank, beim zweiten sql-String kommt die, vorstehend benannte, Fehlermeldung.
(Hinweis: Tabelle "Firma" ist über "FID" (Autowert) mit einer zweiten Tabellen verknüpft, wobei aber dort noch keine konkreten DAten sind während der Code läuft, da ja Base "FID" erst gerade bei der Ausführuing des esten sql-Strings erzeugt.)
[color=#008040] '...
sql_string = "INSERT INTO ""Firma"" (""Firmenname"", ""Abteilung"", ""FPostStrasse""," &_
"""FPostleizahl"", ""FOrt"", ""FLand"", ""FBsStrasse"", ""FBsPostleizahl""," &_
"""FBsOrt"", ""FeMail"", ""FUrl"", ""FAdressKategorie"", ""FTelefonZentrale""," &_
"""FFax"", ""FBemerkung"", ""FGeaendert"") VALUES ('" & var_Firmenname & "', '" & var_Abteilung & "'," &_
"'" & var_FPostStrasse & "', '" & var_FPostleizahl & "', '" & var_FOrt & "', '" & var_FLand & "'," &_
"'" & var_FBsStrasse & "', '" & var_FBsPostleizahl & "', '" & var_FBsOrt & "', '" & var_FeMail & "'," &_
"'" & var_FUrl & "', '" & var_FAdressKategorie & "', '" & var_FTelefonZentrale & "', '" & var_FFax & "'," &_
"'" & var_FBemerkung & "','" & akt_Datum & "')"
oStatement.executeUpdate(sql_string)
sql_string = "CALL IDENTITY()"
oAbfrageergebnis = oStatement.executeQuery(sql_string)
WHILE oAbfrageergebnis.next
inID = oAbfrageergebnis.getLong(1)
WEND
Msgbox "Updatetest"
sql_string = "UPDATE ""Firma"" SET (""Firmenname"", ""Abteilung"", ""FPostStrasse""," &_
"""FPostleizahl"", ""FOrt"", ""FLand"", ""FBsStrasse"", ""FBsPostleizahl""," &_
"""FBsOrt"", ""FeMail"", ""FUrl"", ""FAdressKategorie"", ""FTelefonZentrale""," &_
"""FFax"", ""FBemerkung"", ""FGeaendert"") VALUES ('" & var_Firmenname & "', '" & var_Abteilung & "'," &_
"'" & var_FPostStrasse & "', '" & var_FPostleizahl & "', '" & var_FOrt & "', '" & var_FLand & "'," &_
"'" & var_FBsStrasse & "', '" & var_FBsPostleizahl & "', '" & var_FBsOrt & "', '" & var_FeMail & "'," &_
"'" & var_FUrl & "', '" & var_FAdressKategorie & "', '" & var_FTelefonZentrale & "', '" & var_FFax & "'," &_
"'" & var_FBemerkung & "','" & akt_Datum & "') WHERE ""FID"" = '" & inID & "'"
oStatement.executeUpdate(sql_string)
'...
[/color]
Ist die Schreibweise mit 2 'Arrays' bei UPDATE nicht zulässig? Oder was ist sonst falsch?
Gerne nehme ich auch Ratschläge zur 'best practice' an. Aufgabe ist aus einem Basic-Dialog eine große Anzahl von Werten in einer Datenbank zu updaten und hierzu würde ich gerne vorzugsweise alle Werte updaten (geänderte und nicht-geänderte) um nicht auf dem Basic-Dialog überwachen zu müssen welche Werte sich ändern.
(Hinweis: ja, "... Postleizahl" [sic] soll so geschrieben sein, und funktioniert im ersten SQL ja auch so.)
Gruß
Stephan