entweder fehlt mir die passende Axt (wegen der vielen Bäume, die ich nicht sehe) oder ich stelle mich mal wieder zu dusselig an oder ...

Ein kleiner Hinweis, der mich auf den rechten Weg führt, wäre sehr willkommen.

Das Problem.
Ich habe in der in Ooo-Base mitgelieferten DB (embedded HSQLBase) eine Tabelle mit 3 Spalten.
Tabellenname: RELKREATUR
Spalte 1 – MK – Primärkey
Spalte 2 – KEY1 – String
Spalte3 – KEY3 – String
Da OOo-Basic so herrlich zeichen-un-sensitiv ist, d.h. im SQL-Befehl grundsätzlich mal alles in Großbuchstaben umwandelt, verwende ich ebenso grundsätzlich nur noch Großbuchstaben bei Tabellen- und Spaltennamen.
siehe dazu auch: viewtopic.php?t=8982&highlight=
Ich möchte nun neue Zeilen mit Werten/Inhalten in KEY1 und KEY2 einfügen. (Der Primärkey wir ja automatisch von Base vergeben.)
Der 'einfache' SQL-Befehl wäre: INSERT INTO RELKREATUR (KEY1, KEY2) VALUES ( 'Test1', 'Test2' )
- tja, wäre – geht aber nicht.
Dank Forum habe ich erfahren, dass Tabellen- und Spaltennamen in Hochkomma gesetzt werden müssen!!!! (Wieso eigentlich, welche SQL-Version ist das denn?)
siehe hier: viewtopic.php?t=7476
1. Versuch
manuell in Base selbst, unter Extras/SQL:
INSERT INTO "RELKREATUR" ( "KEY1", "KEY2") VALUES ('TestA', 'TestB')
und
INSERT INTO "RELKREATUR" ( KEY1, KEY2) VALUES ('TestA', 'TestB')
Beide funktionieren! (entgegen anderslautenden Gerüchten auch ohne Hochkomma bei den Spaltennamen!)
2. Versuch
So nun soll das ja als Basiccode umgesetzt werden. Dazu müssen zwangsläufig die Doppel-Hochkomma 'maskiert' werden. (s.o.)
also in Ooo-Basic:
WertA = "Wert1"
WertB = "Wert2"
sSQL = "INSERT INTO " & chr(34) & "RELKREATUR" & chr(34) & " (" & chr(34) & "KEY1" & chr(34) & ", " & chr(34) & "KEY2" & chr(34) & ") VALUES ('" & WertA & "', '" & WertB & "' )"
msgbox sSQL
' Massagebox zeigt: INSERT INTO “RELKREATUR“ (“KEY1“, “KEY2“) VALUES ('Wert1', 'Wert2') – so weit, so gut.
oStatment.executeUpdate(SQL)
Es gibt keine Fehlermeldung! Allerdings wird auch keine Zeile eingefügt!??

Warum aber nicht? Hilfe.
Vollständigkeitshalber hier noch der ges. Code:
Code: Alles auswählen
Dim oDatasoure As Object
Dim oConnection As Object
Dim oStatment As Object
Dim oResultset As Object
Dim sSQL As string
Dim sDBName As string
Dim WertA as string
Dim WertB as string
sub Main
sDBName = "Test-Kamigawa"
oDatasoure = createUnoService("com.sun.star.sdb.DatabaseContext").getByName(sDBName)
oConnection = oDatasoure.getConnection("","")
oStatment = oConnection.createStatement()
oStatment.ResultSetType = com.sun.star.sdbc.ResultSetType.SCROLL_INSENSITIVE
oStatment.ResultSetConcurrency = com.sun.star.sdbc.ResultSetConcurrency.UPDATABLE
WertA = "Wert1"
WertB = "Wert2"
sSQL = "INSERT INTO " & chr(34) & "RELKREATUR" & chr(34) & " (" & chr(34) & "KEY1" & chr(34) & ", " & chr(34) & "KEY2" & chr(34) & ") VALUES ('" & WertA & "', '" & WertB & "' )"
msgbox sSQL
' Massagebox zeigt: INSERT INTO “RELKREATUR“ (“KEY1“, “KEY2“) VALUES ('Wert1', 'Wert2')
oStatment.executeUpdate(SQL)
oConnection.close()
End Sub
System: Win XP SP2, alle Treiber aktuell, OOo 2.0.3
Gruß
Ralf
Übrigens habe ich auch mit oResultset.insertrow() ein ähnliches Problem. Dazu folgt aber demnächst ein gesonderter Thread.