HSQL und Datum einfügen?

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: HSQL und Datum einfügen?

von Bratmatzen » Mo, 17.07.2006 20:44

Hallo,
hab mal euren Code (den ich übrigens überaus hilfreich fand :wink: ) ausprobiert. Mir ist aufgefallen das OOO Basic auch wenn datum als string formatiert ist das zusammensetzen als einen Rechenschritt interpretiert. Zur korrekten übergabe des Datums muss die ganze Formatierung noch in Anführungsstrichen stehen. Hier mein Code:

Code: Alles auswählen

datu=date
datum = ""+year(datu)+"-"+ format(month(datu),"00")+"-"+format(day(datu), "00")+""
query= "INSERT INTO ""tb1"" (""mzMNr"",""mzNkVor"",""mzDat"")            
    values ("+mNr+","+mNkVor+",'"+datum+"')"
Gruß Matze

von ykcim » Fr, 07.07.2006 11:07

Hi,
Nicht HSQL - ist SQL typisch! Bei allen anderen erst recht (bsp MySQL)
Jein, bei dem meisten läßt es sich abghängig von Sprache einstellen.
Das sollte bei OO gerade mit der eigenen HSQL-Datenbank auch so sein.
So ist die Funktion date sowohl in deutsch wie in englisch nicht direkt mit HSQL zu verwenden. Wohl aber mit ODBC, JDBC, Access und Dbase.
(Mysql habe ich noch nicht probiert).

mfg
Michael

PS.
Bin mir nämlich nicht sicher, ob deine Variante bei einstelligen Werten nicht versagt
Date erzeugt nur zweistellige Werte.

von Toxitom » Do, 06.07.2006 17:01

Hey Michael,
Bei HSQL muß es wirklich jjjj-mm-tt sein!
Nicht HSQL - ist SQL typisch! Bei allen anderen erst recht (bsp MySQL) :wink:

Im übrigen baue ich meinen Datumsstring anders:

Code: Alles auswählen

datum=year(datu)+"-"+ format(month(datu),"00")+"-"+format(day(datu), "00") 
Bin mir nämlich nicht sicher, ob deine Variante bei einstelligen Werten nicht versagt :?:

Gruss
Thomas

von ykcim » Do, 06.07.2006 15:43

:Toxitom

Hallo Thomas,

in meinen dritten Versuch ist das Datum mit Hochkommas maskiert und es geht nicht.
Die Ursache ist aber das Format. Bei HSQL muß es wirklich jjjj-mm-tt sein!
Bei allen anderen Formaten kommt ein Fehler oder es werden falsche Zahlen eingetragen!
Und date spuckt das Datum in Abhängigkeit der Betriebsystemeinstellungen raus.

Code: Alles auswählen

    datu=date
    msgbox date
    datum=mid(datu,7,4)+"-"+mid(datu,4,2)+"-"+mid(datu,1,2)
    query= "INSERT INTO ""tb1"" (""mzMNr"",""mzNkVor"",""mzDat"")           
    values ("+mNr+","+mNkVor+",'"+datum+"')"

mfg
Michael

von ykcim » Do, 06.07.2006 15:22

:pmoegenb


Es handelt sich um eine HSQL-Datenbank. Und dort sind die Hochkommas in Basic auch nötig! Und durch den Doppelpunkt bei den Werten wird auch wird der Befehl gleich abgebrochen.

Wenn man das Datum mal wegläßt geht es nur so:

Code: Alles auswählen

       query= "INSERT INTO ""tbMonatlicheZahlung"" (""mzMNr"",""mzNkVor"") values ("+mNr+","+mNkVor+")"
mfg
Michael
[/quote]

von Toxitom » Do, 06.07.2006 15:09

Hallo Michael,
aber wie füge ein Datum per SQL in Datumsfeld?
Ein Datum wird in SQL als String übergeben, und zwar im speziellen Format: Ich glaube: jjjj-mm-tt . Ob die anderen Formate auch funktionieren, weis ich nicht genau. Sicher aber: Du musst Sie als String übergeben, das Feld ist aber dennoch ein Date-Feld. Insofern müsste dein Langstring wie folgt heissen:

Code: Alles auswählen

Datum=Date
query= "INSERT INTO ""tb1"" (""mzMNr"",""mzNkVor"",""mzDat"") values ("+mNr+","+mNkVor+",'"+datum+"')" 
Also: mit einfachen Hochzeichen maskiert! Das geht übrigens bei allen Werten, insofern nutze ich gerne einen Array mit Daten und verbinde mit Join:

Code: Alles auswählen

Datum=Date
query= "INSERT INTO ""tb1"" (""mzMNr"",""mzNkVor"",""mzDat"") values ('" & Join(MeinDatenArray(), "',  '") & "')" 
Gerade bei sehr viel Feldern sehr bequem :-)

Gruss
Thomas

@ Peter: Die doppelten Anführungszeichen sind bei der HSQLDB zwingend notwendig (anderenfalls werden alle Buchstaben in Großbuchstaben umgewandelt!) , bei anderen DB-Engines optional!

von pmoegenb » Do, 06.07.2006 14:59

pmoegenb hat geschrieben:
ykcim hat geschrieben:Wie soll ich den ohne Verbinder (+) aus meinen Variablen ( z.b. mNr ) einen String machen? Ich will einen einen SQL-String mit Werten aus meinen Variablen erzeugen!
Hallo Michael,

die gesamte SQL-Anweisung wird doch als String übergeben. So wie die SQL-Anweisung von mir lautet heißt dies übersetzt:

Füge eine Zeile in die DB tb1 ein. Fülle die Spalten wie folgt aus den den Variablen:
  • mzMNr mit mNr
    u.s.w.
Ich denke, dass die Anführungszeichen nur bei Base, nicht aber bei Basic benötigt werden. Versuch mal folgende Syntax:

Code: Alles auswählen

Datum=Date
query= "INSERT INTO tb1 (mzMNr, mzNkVor, mzDat) values (:mNr, :mNkVor, :datum)"

von pmoegenb » Do, 06.07.2006 14:33

ykcim hat geschrieben:Wie soll ich den ohne Verbinder (+) aus meinen Variablen ( z.b. mNr ) einen String machen? Ich will einen einen SQL-String mit Werten aus meinen Variablen erzeugen!
Hallo Michael,

die gesamte SQL-Anweisung wird doch als String übergeben. So wie die SQL-Anweisung von mir lautet heißt dies übersetzt:

Füge eine Zeile in die DB tb1 ein. Fülle die Spalten wie folgt aus den den Variablen:
  • mzMNr mit mNr
    u.s.w.

von ykcim » Do, 06.07.2006 14:06

Wie soll ich den ohne Verbinder (+) aus meinen Variablen ( z.b. mNr ) einen String machen? Ich will einen einen SQL-String mit Werten aus meinen Variablen erzeugen!

mfg
Michael

von pmoegenb » Do, 06.07.2006 13:14

Hallo Michael,

meines Wissens werden die Value-Werte ohne Pluszeichen übergeben. Lediglich die Reihenfolge und Datentyp muss übereinstimmen.

Wenn es sich z. B. bei mNr um eine Variable handelt, muss : (Hostvariable) davor gesetzt sein, dafür entfallen die Anführungszeichen.

Beispiel:

Code: Alles auswählen

Datum=Date
query= "INSERT INTO ""tb1"" (""mzMNr"",""mzNkVor"",""mzDat"") values (:mNr, :mNkVor, :datum)" 

HSQL und Datum einfügen?

von ykcim » Do, 06.07.2006 12:40

Möglicherweise bin gerade blind :-) , aber wie füge ein Datum per SQL in Datumsfeld?

Versucht habe ich:

Code: Alles auswählen

Datum=Date
query= "INSERT INTO ""tb1"" (""mzMNr"",""mzNkVor"",""mzDat"") values ("+mNr+","+mNkVor+","+datum+")"

query=  "INSERT INTO ""tb1"" (""mzMNr"",""mzNkVor"",""mzDat"") values ("+mNr+","+mNkVor+","+""""+datum+"""""+")"

query=  "INSERT INTO ""tb1"" (""mzMNr"",""mzNkVor"",""mzDat"") values ("+mNr+","+mNkVor+","+"'"+datum+"'"+")"

Ich bekomme dann mit executeUpdate immer Fehlermeldungen.
Hat jemand einen Tipp für mich?

mfg
Michael

Nach oben