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.