Seite 1 von 1
Base: INSERT INTO, SQL, Makro
Verfasst: Fr, 15.07.2011 13:49
von NTClient
Ich bin kurz vor der Auflösung, aber es klappt noch nicht.
Folgendes funktioniert:
Extras - SQL, dort in das Kommando reinschreiben:
INSERT INTO "ID_BuchungenKoGe" ("Datum", "Kommen")
VALUES (now, '07:00:00')
Befehl erfolgreich ausgeführt.
Jetzt soll das in ein Makro verpackt werden:
Code: Alles auswählen
Sub SetTime
SQLStatement=ConnectToDB.createStatement
Result=SQLStatement.executeQuery (INSERT INTO "ID_BuchungenKoGe" ("Datum", "Kommen") VALUES (now, '07:00:00'))
end Sub
BASIC-Syntax-Fehler. Fehler in Klammerschachtelung.
Wieso??? Die Klammerschatelung stimmt doch: drei mal auf, drei mal zu! Was sehe ich denn da nicht?
Noch schöner wäre übrigens:
Code: Alles auswählen
Sub SetTime
Kommando="INSERT INTO "ID_BuchungenKoGe" ("Datum", "Kommen") VALUES (now, '07:00:00')"
SQLStatement=ConnectToDB.createStatement
Result=SQLStatement.executeQuery (Kommando)
end Sub
Aber das klappt gar nicht, wegen der Anführungszeichen bei Kommado AS String. Geht wahrscheinlich mit "abc"+"xyz" ... irgendwie.
Gruß Bernd!
Moderation,4: verschoben in BASIC-Unterbereich, wo alle Makro-Fragen hin gehören; Betreff angepasst; CODE tags gesetzt
Re: Base: INSERT INTO, SQL, Makro
Verfasst: Fr, 15.07.2011 15:06
von komma4
NTClient hat geschrieben:Aber das klappt gar nicht, wegen der Anführungszeichen bei Kommado AS String.
Nehme die Anführungszeichen doppelt:
Code: Alles auswählen
Kommando="INSERT INTO ""ID_BuchungenKoGe"" (""Datum"", ""Kommen"") VALUES (now, '07:00:00')"
Damit sollte es klappen.
Viel Erfolg!
Und bei der nächsten Frage angeben: OOo Version, Betriebssystem und Datenbank; Danke
Re: Base: INSERT INTO, SQL, Makro
Verfasst: Mo, 18.07.2011 09:38
von NTClient
Ah ... super!
Danke!
Aber noch was:
ich versuche,
Kommando="INSERT INTO ""ID_BuchungenKoGe"" (""Datum"", ""Kommen"") VALUES (now, '07:00:00')"
durch
Kommando="INSERT INTO ""ID_BuchungenKoGe"" (""Datum"", ""Kommen"") VALUES (now, time)"
zu ersetzen.
Fehlermeldung: "Column not found: TIME"
time ist doch VALUE und nicht COLUMN, oder?
hmm...
Re: Base: INSERT INTO, SQL, Makro
Verfasst: Mo, 18.07.2011 11:20
von komma4
NTClient hat geschrieben:Kommando="INSERT INTO ""ID_BuchungenKoGe"" (""Datum"", ""Kommen"") VALUES (now, time)"
Du übergibst einen SQL Befehl.
Bei HSQLDB 1.8 (ich weiss noch immer nicht, welche Datenbank Du ansprichst: die Dialekte sind verschieden!) ist
NOW() eine interne Funktion.
TIME() gibt es da nicht, also wird das als Spaltenname ausgewertet - und die gibt es offensichtlich nicht bei Deiner Tabelle.
Bei HSQLDB 1.8 nehme die internen Funktionen
HOUR() MINUTE() und
SECOND() und setze sie zu einer Zeichenkette zusammen - das wird bei einer
TIME-Spalte nämlich erwartet.
Oder setze vorher eine BASIC-Variable entsprechend
Dokumentation: http://www.hsqldb.org/doc/1.8/guide/ch09.html
Re: Base: INSERT INTO, SQL, Makro
Verfasst: Mo, 18.07.2011 12:22
von NTClient
Aha!
So langsam werde ich warm! Ich glaube, es lohnt sich, sich damit zu beschäftigen ...
BTW: es war in der Tat HSQL 1.8
Gruß und Danke! Bernd!
Re: Base: INSERT INTO, SQL, Makro
Verfasst: Mo, 18.07.2011 15:46
von DPunch
Aloha
komma4 hat geschrieben:Bei HSQLDB 1.8 nehme die internen Funktionen HOUR() MINUTE() und SECOND() und setze sie zu einer Zeichenkette zusammen
Die eingebettete HSQLDB stellt dafür "CURRENT_TIME" zur Verfügung.
Re: Base: INSERT INTO, SQL, Makro
Verfasst: Mo, 18.07.2011 16:33
von komma4
DPunch hat geschrieben:Die eingebettete HSQLDB stellt dafür "CURRENT_TIME" zur Verfügung.
Das ist natürlich besser.
Ich arbeite nicht mit der Eingebauten und kenne mich deshalb auch nicht so gut aus.
Danke für die Ergänzung.
Re: Base: INSERT INTO, SQL, Makro
Verfasst: Mo, 18.07.2011 16:46
von DPunch
Ich normalerweise auch nicht, ich hatte aber im Hinterkopf, dass es die CURRENT_DATE - Funktion gibt.
Die Suche mit CURRENT_TIME auf der verlinkten Doku-Seite hat die Frage dann geklärt.

Re: Base: INSERT INTO, SQL, Makro
Verfasst: Mo, 18.07.2011 17:06
von NTClient
Ich habs versucht mit
Kommando = "INSERT INTO ""ID_BuchungenKoGe"" (""Datum"", ""Kommen"") VALUES (NOW, '" & TIME & "')"
liefert bspw:
INSERT INTO "ID_BuchungenKoGe" ("Datum", "Kommen") VALUES (NOW, '17:10:09')
... und funktioniert! Man beachte die Hochkommas vor unt hinter TIME
... ist allerdings dann nicht ganz konsequent, weil das Datum mit SQL ermittelt qwird, time hingegen mit BASIC.
Achso:
CURRENT_TIME funktioniert bei mir nicht ("unecpected token"), aber
Kommando = "INSERT INTO ""ID_BuchungenKoGe"" (""Datum"", ""Kommen"") VALUES (NOW(), NOW())"
funktioniert, weil NOW Datum und Uhrzeit liefert?!
Gruß Bernd!
Re: Base: INSERT INTO, SQL, Makro
Verfasst: Mo, 18.07.2011 17:44
von DPunch
Aloa
NTClient hat geschrieben:CURRENT_TIME funktioniert bei mir nicht ("unecpected token")
Die Fehlermeldung lässt darauf schliessen, dass Du es falsch verwendest.
Nicht
Code: Alles auswählen
Kommando = "INSERT INTO ""ID_BuchungenKoGe"" (""Datum"", ""Kommen"") VALUES (NOW, '" & CURRENT_TIME & "')"
sondern
Code: Alles auswählen
Kommando = "INSERT INTO ""ID_BuchungenKoGe"" (""Datum"", ""Kommen"") VALUES (NOW, CURRENT_TIME)"
CURRENT_TIME ist eine HSQL-Funktion, keine Basic-Funktion.
NTClient hat geschrieben:funktioniert, weil NOW Datum und Uhrzeit liefert?!
Anscheinend.