Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Einen SqlTimeStamp in einen String umwandeln (https://www.delphipraxis.net/69527-einen-sqltimestamp-einen-string-umwandeln.html)

Mayday171 16. Mai 2006 15:34


Einen SqlTimeStamp in einen String umwandeln
 
Hallo!

Ich versuche verzweifelt einen SQLTimeStamp in einen String umzuwandeln.
Als erstes hol ich mir FileAge('irgendeine Datei') und das wandel ich dann in datetime um und das wiederrum in SQLTimeStamp.
Nun möchte ich diesen SQLTimeStamp in einer SQL Datenbank hinterlegen. Ich benutze die Zeos Komponenten um die Query auszuführen und da wird ein String verlangt, z.B.

Delphi-Quellcode:
zquery1.SQL.Add('REPLACE INTO berichte (name,durchlauf,status,produktnummer,zeit) VALUES ("'+name+'",'+durchlauf+',"'+status+'",'+produktnummer+','+sqlzeit+')');
sqlzeit ist in diesen Beispiel TSQLTimeStamp. Sobald ich diesen Code ausführe gibt er mir aus, dass String und TSQLTimeStamp inkompatible Typen sind, d.h das die Methode Strings als Eigenschaft erwartet.

Was soll ich tun???

DANKE SCHON MAL

MFG

mkinzler 16. Mai 2006 15:43

Re: Einen SqlTimeStamp in einen String umwandeln
 
Die Idee einen system/locale-unabhängigen Wert in einen String mit abhängeigen Wert umzuwandeln ist nicht gut. Verwende doch mal eine parametrisierte Abfrage, der du den DateTime direkt übergeben kannst.

Mayday171 16. Mai 2006 15:52

Re: Einen SqlTimeStamp in einen String umwandeln
 
Das mit den Parametern in SQL querys hab ich noch nie verstanden. Weiß auch nicht wie genau du das meinst. Kannst du mir mal ein Beispiel erstellen bzw. erläutern.

THX

mkinzler 16. Mai 2006 15:55

Re: Einen SqlTimeStamp in einen String umwandeln
 
Delphi-Quellcode:
zquery1.SQL.Test := 'REPLACE INTO berichte (name,durchlauf,status,produktnummer,zeit) VALUES ( :name, :durchlauf, :status, :produktnummer, :zeit)';
zquery1.ParamByName('name').value := name;
zquery1.ParamByName('durchlauf').value := durchlauf;
...
zquery1.ParamByName('zeit').value := FileAge('irgendeine Datei');

Mayday171 17. Mai 2006 07:21

Re: Einen SqlTimeStamp in einen String umwandeln
 
Hab immer noch so meine Probleme mit den Parametern. Hab soweit den Code so umgeschrieben das es mit PArametern funktionieren sollte. Er gibt mir nur beim starten die Fehlermeldung raus, dass Parameter 'irgendwas' ind ZQuery1 nicht existieren soll.
Ich habe den Parameter und Eigenschaften der zquery definiert und kommt immer noch die selbe Fehlermedung.
Was mache ich falsch=???

MfG

mkinzler 17. Mai 2006 07:23

Re: Einen SqlTimeStamp in einen String umwandeln
 
Du baruchst die Parameter nicht pewr Hand definieren, diese werden automatisch anhand der Abfrage erzeugt. Hast du die Parameter genauso wie im Abfragestring geschrieben?

Mayday171 17. Mai 2006 07:38

Re: Einen SqlTimeStamp in einen String umwandeln
 
Es stimmt alles so wie es soll...

Delphi-Quellcode:
//DEFAULTWERTE //
                zquery1.ParamByName('name').Value:='N/A';
                zquery1.ParamByName('durchlauf').Value:=0;
                zquery1.ParamByName('status').Value:='N/A';
                zquery1.ParamByName('produktnummer').Value:='0';
        if (cutrev(tempstring,'_')='ERROR') or (cutrev(tempstring,'_')='OK') then
          begin
            zquery1.ParamByName('status').value:=cutrev(tempstring,'_');
            //showmessage('status='+(cutrev(tempstring,'_')));
            tempstring:=cut(tempstring,'_');
          end;

        if ((length(cutrev(tempstring,'_'))=1) or (length(cutrev(tempstring,'_'))=2)) and (length(cutrev(tempstring,'_'))<>0) then
          begin
            zquery1.ParamByName('durchlauf').value:=cutrev(tempstring,'_');
            //showmessage('durchlauf='+(cutrev(tempstring,'_')));
            tempstring:=cut(tempstring,'_');
          end;

        if (cutrev(tempstring,'_')='') xor not(strisalpha(cutrev(tempstring,'_'))) then
          begin
            zquery1.ParamByName('produktnummer').value:=cutrev(tempstring,'_');
            //showmessage('Produktnummer='+(cutrev(tempstring,'_')));
            tempstring:=cut(tempstring,'_');
          end;
        if tempstring<>'' then
          begin
            if tempstring[length(tempstring)]='_' then
              begin
                setlength(tempstring,length(tempstring)-1);
              end;
              zquery1.ParamByName('name').value:=tempstring;
              //showmessage('name='+tempstring);
          end;

        zquery1.SQL.Add('INSERT INTO berichte (name,durchlauf,status,produktnummer) VALUES ( :name, :durchlauf, :status, :produktnummer)');
        zquery1.ExecSQL;
        zquery1.SQL.Clear;
Er sagt mir immer das parameter 'xyz' nicht existiert.

mkinzler 17. Mai 2006 07:42

Re: Einen SqlTimeStamp in einen String umwandeln
 
Du mußt die Zuweisung der SQL-Abfrage natürlich vor der Belegung der Parameter machen.

Mayday171 17. Mai 2006 07:53

Re: Einen SqlTimeStamp in einen String umwandeln
 
jetzt gibt er mir Fehler bei Bereichsprüfung aus...
Muss ich doch vieleicht den Typ vorher definieren?

mkinzler 17. Mai 2006 07:55

Re: Einen SqlTimeStamp in einen String umwandeln
 
Welchen Typ?


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:21 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz