Type mismatch

  • Wie soll ich ein Date/Time feld aus notes nach MySql kriegen wobei der typ der spalte im MySql Date ist!


    Ich kriege imer TypeMismatch, Hab es mit

    Code
    to_date('"+uidoc.datum(0)+"',%0d.%0m.%Y)


    versucht und auch mit

    Code
    '"+uidoc.datum(0)+"'


    aber ich kriege immer typemismatch


    Danke

  • probier mal '&' anstatt '+'.


    '&' macht eine automatische konvertierung in text (string).


    bzw. versuch mal deinen string in '|' einzufassen.

    bunt ist das dasein und granatenstark. volle kanne hoshi's!


    IBM Certified Advanced System Administrator (R5, D6, D7)
    IBM Certified Advanced Application Developer (R5, D6, D7, D8)

    • Offizieller Beitrag

    schalte mal den Debugger ein. In welcher Zeile bleibt der stehen?, ist es die gepostete Zeile?


    Dannn Poste mal noch die erste Zeile der SUB oder Function. Eventuell liegt es an "%0d.%0m.%Y", dies muss doch bestimmt per String übergeben werden.


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein

  • Hi hab es jetzt so gemacht

    Code
    '"&uidoc.datum(0)&"'


    Ich kriege keiner Fehlermeldung
    Es funktioniert aber im MySql steht jetzt der wert 00-00-0000 anstat des Datums.




    Danke

  • Also wenn das datum schon im notes im date ist dan brauche ich das to_date nicht??


    Es scheint als ob es ab MySql 4.0 diese funktion nicht mehr gibt.
    Also habe ich es so versucht aber es klapt nicht! Ich kriege wieder lauter Nullen


    Dim dt As New NotesDateTime(uidoc.datum(0))


    '"+dt.DateOnly+"'


    Danke

    • Offizieller Beitrag

    gehe doch über ein NotesDateTimeObjekt und übergib dann das Datum, eventuell hilft dies.

    Code
    dim ndt as New NotesDateTime(Cstr(doc.datum(0)))
    call ndt.SetAnyTime   ' Zeitkomponente löschen '
    ' mit ndt.LSLocalTime kommt dann ein Wert vom Typ DateTime zurück'


    Gruß
    Dirk

  • Hi Dirk,


    hier der code den ich jetzt benutze:

    Code
    Dim dt As New NotesDateTime(Cstr(uidoc.datum(0)))
    	Call dt.SetAnyTime
    
    	If rc < 1 Then			
    		qry.SQL="INSERT INTO vijesti(lotID,name,tekst,tekstKratki,source,autor,datum)" _
    		+"VALUES('"+ps+"','"+uidoc.naziv(0)+"','"+uidoc.tekst(0)+"','"+uidoc.krTekst(0)+"','"+uidoc.izvor(0) +"', "_
    		+" '"+uidoc.autorTeksta(0)+"','"+dt.DateOnly+"' )  "


    Und leider kriege ich im mysql 0000-00-00!


    Dank dir

    • Offizieller Beitrag

    schreibe mal den SQL-String in eine Variable und prüfe diese im Designer. Wird dort das Datum richtig mitgegeben? Mit dt.DateOnly kommt aber ein String und kein DateTime-Typ, es muss auch String sein, sonst kannst Du dies im SQL-String nicht übergeben.

    Code
    ...
    tempVar = "INSERT INTO vijesti(lotID,name,tekst,tekstKratki,source,autor,datum)" _
    +"VALUES('"+ps+"','"+uidoc.naziv(0)+"','"+uidoc.tekst(0)+"','"+uidoc.krTekst(0)+"','"+uidoc.izvor(0) +"', "_
    +" '"+uidoc.autorTeksta(0)+"','"+dt.DateOnly+"' )  "
    qry.SQL=tempVar


    Gruß
    Dirk

  • Die messagebox sagt unteranderem '04.07.2007' ! Also es wird richtig angezeigt!


    Wenn ich im MySql das feld auf Varchar setzt dan kriege ich das datum! Aber ich bin mir nicht sichewr ob ich spaeter das datum soriteren kann oder ob ich spaeter zwei werte vergleichen kann!


    '04.07.2007' > '05.07.2007' was kriege ich dan einen vergleich von strings oder von datums werten?


    danke dir dirk

    • Offizieller Beitrag

    OK, da das Script auf dem Server? läuft, wird das Datumsformat vom Server-BS genommen. Dies kannst Du mit

    Code
    ... Format(dt.LSLocalDate, "dd.mm.yyyy") ...

    formatieren. falls auf dem Domino engl. Datumsformat eingestellt ist, dann kommt da etwas von "07/04/2007" zurück.


    Ist aber nur eine Vermutung.


    Gruß
    Dirk

    • Offizieller Beitrag

    mh ... keine Ahnung an was es sonst noch liegen könnte.
    :-? :-? :-? :-? :-? :-? :-? :-? :-? :-? :-? :-? :-? :-? :-? :-? :-?


    Gruß
    Dirk

  • Wenn nachher bei dir im MySQL 00-00-0000 drinsteht solltest du vielleicht auch mal das Datum im SQL Statement so formatieren.


    Vermutlich kann dein SQL System weder xx.xx.xxxx noch xx/xx/xxxx interpretieren

  • Ja du hast recht Taurec ich habe es jetzt so gemacht ich mit left mid und right einen neuen string aus dt.dateonly gebastelt hab im format yyyymmdd ohne punkte und es geht!


    Kann ich den string einfacher formatieren?



    Danke dir

    • Offizieller Beitrag

    ja mit

    Code
    ... Format(dt.LSLocalDate, "dd-mm-yyyy") ...


    Gruß
    Dirk

  • Hi Dirk


    Bei mir gib es garnich LSLocalDate nur LSLocalTime


    Was geht da ab?


    Deshalb habe ich es so gemacht


    d=dt.DateOnly


    Hier ist d 04.07.2007


    d=Format(d, "yyyy-mm-dd")


    Und hier ist d 9999/31/12


    Hilfeeeeeeeeeeeee

    • Offizieller Beitrag

    LSLocalTime meinte ich doch auch - sorry.


    Ansonsten geht es auch mit

    Code
    Day(d.LSLocalTime) & "-" & Month(d.LSLocalTime) & "-" & Year(d.LSLocalTime)


    Falls Du die führenden Nullen noch brauchst, dann mach:

    Code
    right("0" & Day(d.LSLocalTime), 2) & "-" & Right("0" & Month(d.LSLocalTime), 2) & "-" & Year(d.LSLocalTime)


    Gruß
    Dirk

    Rein logisches Denken verschafft uns keine Erkenntnis über die wirkliche Welt.
    Alle Erkenntnis der Wirklichkeit beginnt mit der Erfahrung und endet mit ihr.
    Alle Aussagen, zu denen man auf rein logischen Wegen kommt, sind, was die Realität angeht, vollkommen leer.
    Albert Einstein