Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Zeit im Label aktualisieren (https://www.delphipraxis.net/69862-zeit-im-label-aktualisieren.html)

tom_po 21. Mai 2006 13:35


Zeit im Label aktualisieren
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe eine kleine Lagerverwaltung (DBisam Datenbank), wo ich Lagereingänge und ausgänge registriere.

Alles klappt soweit gut (war bis dahin nur mit grosser Hilfe von marabu möglich), die Lageraus-und eingänge werden mit aktuellem Datum und Uhrzeit verbucht, dabei die Bestände aktualisiert.

Nach der Verbuchung soll in Label6 das Datum und die Uhrzeit der Bechung angezeigt werden, dies funktoioniert auch beim ersten mal gut, doch bei der zweiten Buchung ändert sich die Uhrzeit nicht.
Hier der Code:

Delphi-Quellcode:
procedure Tmovestock.Button1Click(Sender: TObject);    //Eingang Material
var
  dt: TDateTime;
  fs: TFormatSettings;
begin
  // weil du im Edit keinen Dezimalpunkt verwendest:
  fs.DecimalSeparator := ',';
  dt := DateTimePicker1.DateTime;
  with dbisamquery1 do
  begin
    SQL.Text := 'insert into movestock(code, eingang, datum) '
              + 'values (:code, :eingang, :datum)';
    Params.ParamByName('code').Value := combobox1.Text;
    Params.ParamByName('eingang').Value := StrToFloat(edit1.Text);
    Params.ParamByName('datum').Value := dt;
    ExecSQL;

    SQL.Text := 'update stockfabric set stock = stock + :stock where code = :code';
    Params.ParamByName('code').Value := combobox1.Text;
    Params.ParamByName('stock').Value := StrToFloat(edit1.Text);
    ExecSQL;
    SQL.Text := 'update stockfabric set date = :datum where code = :code';
    Params.ParamByName('datum').Value := dt;
    ExecSQL;
  end;
  label6.Caption := datetimetostr(Datetimepicker1.dateTime);
  button3.Click;
end;
button3 aktualisiert den Bestand des Vorrats in dbedit1 so:

Delphi-Quellcode:
procedure Tmovestock.Button3Click(Sender: TObject);
begin
dbisamquery3.SQL.Clear;
dbisamquery3.sql.Add('select stock from stockfabric where code='+quotedstr(combobox1.Text));
dbedit1.Text:='stock';
dbisamquery3.ExecSQL;
end;
anbei noch ein bild der Form

MrKnogge 21. Mai 2006 13:46

Re: Zeit im Label aktualisieren
 
Da ich den TDateTimePicker mit der Datumsansicht sehe, gehe ich davon aus, dass du bei dem TDateTimePicker nicht die Uhrzeit aktualisierst. Nimm statt dem TDateTimePicker mal
Delphi-Quellcode:
:= Now;
gruss

tom_po 21. Mai 2006 13:54

Re: Zeit im Label aktualisieren
 
hab's jetzt so erweitert, jedoch, die Uhrzeit ändert sich nicht, wenn ich eine 2. Buchung mache, weder im Label6, noch in der Datenbank, dort wird immer mit derselben Uhrzeit gebucht, wie die Form aufgerufen wurde:
Delphi-Quellcode:
procedure Tmovestock.Button1Click(Sender: TObject);    //Eingang Material
var
  dt: TDateTime;
  fs: TFormatSettings;
begin
  // weil du im Edit keinen Dezimalpunkt verwendest:
  fs.DecimalSeparator := ',';
  dt := DateTimePicker1.DateTime;
  with dbisamquery1 do
  begin
    SQL.Text := 'insert into movestock(code, eingang, datum) '
              + 'values (:code, :eingang, :datum)';
    Params.ParamByName('code').Value := combobox1.Text;
    Params.ParamByName('eingang').Value := StrToFloat(edit1.Text);
    Params.ParamByName('datum').Value := dt;
    ExecSQL;

    SQL.Text := 'update stockfabric set stock = stock + :stock where code = :code';
    Params.ParamByName('code').Value := combobox1.Text;
    Params.ParamByName('stock').Value := StrToFloat(edit1.Text);
    ExecSQL;
    SQL.Text := 'update stockfabric set date = :datum where code = :code';
    Params.ParamByName('datum').Value := dt;
    ExecSQL;
  end;
  Datetimepicker1.Date:=now;
  label6.Caption := datetimetostr(Datetimepicker1.dateTime);
  button3.Click;
end;

tom_po 21. Mai 2006 13:57

Re: Zeit im Label aktualisieren
 
bin jetzt selbst darauf gekommen, jetzt gehts so:

Delphi-Quellcode:
procedure Tmovestock.Button1Click(Sender: TObject);    //Eingang Material
var
  dt: TDateTime;
  fs: TFormatSettings;
begin
  // weil du im Edit keinen Dezimalpunkt verwendest:
  fs.DecimalSeparator := ',';
  dt := DateTimePicker1.DateTime;
  with dbisamquery1 do
  begin
    SQL.Text := 'insert into movestock(code, eingang, datum) '
              + 'values (:code, :eingang, :datum)';
    Params.ParamByName('code').Value := combobox1.Text;
    Params.ParamByName('eingang').Value := StrToFloat(edit1.Text);
    Params.ParamByName('datum').Value := dt;
    ExecSQL;

    SQL.Text := 'update stockfabric set stock = stock + :stock where code = :code';
    Params.ParamByName('code').Value := combobox1.Text;
    Params.ParamByName('stock').Value := StrToFloat(edit1.Text);
    ExecSQL;
    SQL.Text := 'update stockfabric set date = :datum where code = :code';
    Params.ParamByName('datum').Value := dt;
    ExecSQL;
  end;
  Datetimepicker1.Date:=Date;
  Datetimepicker1.Time:=Time;
  label6.Caption := datetimetostr(Datetimepicker1.dateTime);
  button3.Click;
end;
verstehe allerdings nicht, wieso es mit dienem Vorschlag (now) nicht geht!!??

pacman1986 21. Mai 2006 13:59

Re: Zeit im Label aktualisieren
 
oder
Delphi-Quellcode:
  Datetimepicker1.DateTime := Now;

MrKnogge 21. Mai 2006 13:59

Re: Zeit im Label aktualisieren
 
lass den TDateTimePicker doch weg, sondern benutz nur "now"

tom_po 21. Mai 2006 14:10

Re: Zeit im Label aktualisieren
 
ich hab's jetzt so:

Delphi-Quellcode:
Datetimepicker1.Date:=Date;
  Datetimepicker1.Time:=Time;
  //label6.Caption := datetimetostr(Datetimepicker1.dateTime);
  label6.Caption := datetimetostr(now);
  button3.Click;
die Aktualisierung des Datums und der Zeit brauche ich hier, sonst wird die Lagerbewegung in der datenbank nicht aktualisiert

pacman1986 21. Mai 2006 14:45

Re: Zeit im Label aktualisieren
 
und was hatt das mit dem tdatetimepicker zu tun den brauchst du nicht...

ps : dt brauchst du auch nicht;

einfach

Delphi-Quellcode:
Params.ParamByName('datum').Value := now;
und unten das selbe dann kannst du den tdatetimepicker Löschen und die variable brauchst du auch nicht ...

tom_po 21. Mai 2006 14:59

Re: Zeit im Label aktualisieren
 
ok, ich hab's jetzt so, danke für den tip, der code ist jetzt schlanker...

Delphi-Quellcode:
procedure Tmovestock.Button1Click(Sender: TObject);    //Eingang Material
var
  fs: TFormatSettings;
begin
  // weil du im Edit keinen Dezimalpunkt verwendest:
  fs.DecimalSeparator := ',';
  with dbisamquery1 do
  begin
    SQL.Text := 'insert into movestock(code, eingang, datum) '
              + 'values (:code, :eingang, :datum)';
    Params.ParamByName('code').Value := combobox1.Text;
    Params.ParamByName('eingang').Value := StrToFloat(edit1.Text);
    Params.ParamByName('datum').Value := now;
    ExecSQL;

    SQL.Text := 'update stockfabric set stock = stock + :stock where code = :code';
    Params.ParamByName('code').Value := combobox1.Text;
    Params.ParamByName('stock').Value := StrToFloat(edit1.Text);
    ExecSQL;
    SQL.Text := 'update stockfabric set date = :datum where code = :code';
    Params.ParamByName('datum').Value := now;
    ExecSQL;
  end;
  label6.Caption := datetimetostr(now);
  button3.Click;
end;
und den datetimepicker brauch ich jetzt wirklich nicht, denn alle buchungen sollen ja nur mit dem aktuellen datum und uhrzeit gespeichert werden, so kann man am datum nichts machen...gute idee, danke


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:59 Uhr.

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