Base: INSERT INTO, SQL, Makro

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

NTClient
****
Beiträge: 106
Registriert: Di, 19.07.2005 16:09

Base: INSERT INTO, SQL, Makro

Beitrag 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
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Base: INSERT INTO, SQL, Makro

Beitrag 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
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
NTClient
****
Beiträge: 106
Registriert: Di, 19.07.2005 16:09

Re: Base: INSERT INTO, SQL, Makro

Beitrag 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...
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Base: INSERT INTO, SQL, Makro

Beitrag 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
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
NTClient
****
Beiträge: 106
Registriert: Di, 19.07.2005 16:09

Re: Base: INSERT INTO, SQL, Makro

Beitrag 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!
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Base: INSERT INTO, SQL, Makro

Beitrag 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.
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Base: INSERT INTO, SQL, Makro

Beitrag 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.
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Base: INSERT INTO, SQL, Makro

Beitrag 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. ;)
NTClient
****
Beiträge: 106
Registriert: Di, 19.07.2005 16:09

Re: Base: INSERT INTO, SQL, Makro

Beitrag 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!
DPunch
*******
Beiträge: 1112
Registriert: Mo, 02.11.2009 16:16
Wohnort: Marburg

Re: Base: INSERT INTO, SQL, Makro

Beitrag 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.
Antworten