Delphi-Quellcode:
begin
// Bisherige Abfrage schließen.
DB_Query_Eintragen.Close;
// Neues Statement zuweisen.
// Ohne Order By ist die Reihenfolge eher zufällig.
// Eventuell select * from daten order by Datum, Zeit?
DB_Query_Eintragen.SQL.Text := 'select * from daten';
// Abfrage öffnen
DB_Query_Eintragen.Open;
// Zum letzten Satz gehen, ohne Order By nicht zwingend der höchste, Stand,
// das neueste Datum, sondern nur das, was die Datenbank zufällig als Letztes liefert.
DB_Query_Eintragen.Last;
// Berechnungen durchführen
// Der Wert von Neu aus dem letzten Datensatz wird im neuen Datensatz der Wert für Stand.
zStand := DB_Query_Eintragen.FieldByName('Neu').AsInteger;
xZaehlerstand := StrToInt(LbE_Zaehler.Text);
yVerbrauch := xZaehlerstand - zStand;
// neuen Datensatz einfügen und Werte zuweisen
DB_Query_Eintragen.Append;
DB_Query_Eintragen.FieldByName('Datum').AsDateTime := Date;
// Warum Datum als TDateTime und Zeit als String?
DB_Query_Eintragen.FieldByName('Zeit').AsString := TimeToStr(Time);
// oder DB_Query_Eintragen.FieldByName('Zeit').AsDateTime := Time;
DB_Query_Eintragen.FieldByName('Name').AsString := CbB_Name.Text;
DB_Query_Eintragen.FieldByName('Stand').AsInteger := zStand;
DB_Query_Eintragen.FieldByName('Neu').AsInteger := xZaehlerstand;
DB_Query_Eintragen.FieldByName('Verbrauch').AsInteger := yVerbrauch;
// und Daten speichern.
DB_Query_Eintragen.Post;
// Abfrage schließen.
DB_Query_Eintragen.Close;
// Welcher Zusammenhang besteht zwischen
// der Abfrage DB_Query_Eintragen, Table_Daten und dem DBGrid?
Table_Daten.Refresh;
end;
Habe mal deinen Quelltext etwas überarbeitet und kommentiert, keine Ahnung, ob dadurch dein Problem gelöst werden kann.
.AsVariant
nutze ich nur, wenn ich den Datentyp nicht kenne.
Wenn x ein Integer ist, ist eine Zuweisung der Art
.AsVariant := x
, nicht zwingend sinnvoll, da ist
.AsInteger := x
bessert, dito. natürlich auch für Strings, ...
Mit welcher Datenbankkomponente ist das DBGrid verbunden? Mit DB_Query_Eintragen oder mit Table_Daten. Welche Daten enthält überhaupt Table_Daten?
Sollte das DBGrid mit DB_Query_Eintragen verbunden sein, muss
DB_Query_Eintragen.Close;
entfallen, da dadurch die Datenmenge geschlossen wird und damit keine Anzeige im DBGrid möglich ist.