Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   TTtime Felder im Grid werden immer aktualisiert (https://www.delphipraxis.net/213469-tttime-felder-im-grid-werden-immer-aktualisiert.html)

tkhandel 3. Aug 2023 14:52

Datenbank: IBLite • Version: 2020 • Zugriff über: FDConnection

TTtime Felder im Grid werden immer aktualisiert
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

ich habe immer noch ein merkwürdiges Verhalten in einem Grid
Die folgenden Datenbankfelder sind vorhanden:
- Id String
- MitarbeiterId String
- Datum TDate
- Anfang TDateTime
- Ende TDateTime
- Start TTime
- Ende TTime

usw. Bei einem ButtonClick wird ein Eintrag in die Datenbank geschrieben nun werden
alle Felder werden in der Datenbank korrekt gespeichert und ändern sich nicht bis auf die
TTime Felder die werden im Grid ständig aktualisiert sobald der Mauszeiger das Grid
berührt oder ein neuer Eintrag getätigt wird. Das ist zum verzweifeln, wie gesagt in der
DB ist es richtig alle anderen Felder nicht betroffen!

Union 3. Aug 2023 17:43

AW: TTtime Felder im Grid werden immer aktualisiert
 
Code wäre nicht schlecht. Augenschonende Farben auch.

tkhandel 5. Aug 2023 08:25

AW: TTtime Felder im Grid werden immer aktualisiert
 
Hallo ja Farben mach ich noch ist ja ein Test


Also es gibt nur diesen CODE!!!

procedure TfraMain.btnArbeitClick(Sender: TObject);
var
vGuid : TGuid;
begin
CreateGuid(vGuid);
ZeitenEdit.Open;
ZeitenEdit.Insert;
ZeitenEditId.Value := GuidToString(vGuid);
ZeitenEditIDMITARBEITER.AsString := vMitarbeiterId;
ZeitenEditBUCHUNGSART.Astring := 'AZ';
ZeitenEditDatum.asDateTime := DateOf( Now );
ZeitenEditANFANGZEIT.AsDateTime := Now
ZeitenEditJAHR.Value := YearOf(Now);
ZeitenEditMONAT.Value := IntToStr(MonthOf(Now));
ZeitenEditTAG.Value := IntToStr(DayOf(Now));
ZeitenEditSTART.AsDateTime := TimeOf( vStartArbeit );
ZeitenEdit.Post;
ZeitenEdit.Close;
end

Es muss irgendwie an dem Grid bzw FMX liegen, da die Daten in der DB richtig stehen.

himitsu 5. Aug 2023 13:33

AW: TTtime Felder im Grid werden immer aktualisiert
 
Vielleicht könnte mal wer im Debugger nachsehn, ob das OnClick oder z.B. BeforeInsert/AfterInsert/BeforePost/AfterPost wirlich nicht aufgerufen werden?

Wenn du sofort eine Close machst, warum bleiben dann die Anzeigen im Grid bestehen?
Bzw. WIE kommen die Daten ins Grid? (über ein DataBinding von ZeitenEdit wohl eher nicht)

zusätzliche Tipps:
* ein [DELPHI] ... [/DELPHI] um deinen Code drumrum (du hättest noch dreiviertel Tag zum Editieren)
* und
Delphi-Quellcode:
TGUID.NewGuid.ToString

Uwe Raabe 5. Aug 2023 13:51

AW: TTtime Felder im Grid werden immer aktualisiert
 
Ein kleines Beispielprojekt würde hier auch deutlich mehr Informationen liefern als ein einzelner Event-Handler. Die Ursache für ein Problem steckt oft an einer ganz anderen Stelle als man vermutet.

himitsu 5. Aug 2023 14:08

AW: TTtime Felder im Grid werden immer aktualisiert
 
Zitat:

Zitat von tkhandel (Beitrag 1525319)
Also es gibt nur diesen CODE!!!

Aber so richtig glauben kann ich es auch nicht (siehe meine vorherige Frage)
Zitat:

Zitat von himitsu (Beitrag 1525331)
Wenn du sofort eine Close machst, warum bleiben dann die Anzeigen im Grid bestehen?
Bzw. WIE kommen die Daten ins Grid? (über ein DataBinding von ZeitenEdit wohl eher nicht)

Denn so wie der Code ist, kann er definitiv nicht kompiliert werden.

Delphi-Quellcode:
ZeitenEditANFANGZEIT.AsDateTime := Now

Fehlt da nicht ein TimeOf?
Fehlt dahinter nicht ein ;





Fragen zum Datenbank-Design würden sich auch noch stellen. (aber das ist eine andere Angelegenheit)


Warum sind die Daten doppelt mehrfach in der Tabelle?
* Ein Feld reicht. (Das dann für die Anzeige im SELECT aufzuteilen, ist eine andere Sache)
* das mehrfache
Delphi-Quellcode:
Now
kann sich zur Laufzeit ändern. (z.B. einen Hauch vor Mitternacht gecklickt, kann das letzte
Delphi-Quellcode:
Now
nach Mitternacht sein und schon passen die Daten nicht mehr zusammen)
* und wenn man die Daten bearbeitet, aber irgendwo ein Feld vergisst, war's das auch wieder, mit der Konsistenz

Warum
Delphi-Quellcode:
ZeitenEditTAG.Value := IntToStr(DayOf(Now));

anstatt
Delphi-Quellcode:
ZeitenEditTAG.AsString := IntToStr(DayOf(Now));

oder gar
Delphi-Quellcode:
ZeitenEditTAG.AsInteger := DayOf(Now);

tkhandel 9. Aug 2023 08:56

AW: TTtime Felder im Grid werden immer aktualisiert
 
Danke für eure Antworten!

die Felder sind doppelt um verschiedene Feldtypen auszuprobieren,
manches hatte ich zur Vereinfachung gekürzt um nur das Problem zu
schildern. Ein Problem mit dem keiner gerechnet hat.

Inzwischen weiß ich, das es am FMXGrid liegt!
Sobald dort (und nur dort) eine Spalte unter dem Punkt ColumnStyle "TimeColumn"
erhält wird die 'Uhrzeit' bei jeder nur erdenklichen Aktion aktualisiert.
Trotzdem nochmal DANKE


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:03 Uhr.

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