![]() |
Datenbank: MariaDB • Version: 10.3.28 • Zugriff über: UniDAC
OnBeforePost mit NULL Value?
Hi
Ich habe eine FRAGE zu MariaDB und den Typ DATETIME. Ich habe eine DBGrid, wenn ich die dort über den Navigator ein EDIT mache, kommt immer dass für EntryDateTime der Type '' nicht ok sei. ICh habe mir gedacht, in dem Handler OnBeforePost da eine IF Abfrage, wenn die Cell leer ist, dann soll für das Feld ENTRYDATETIME ein NULL reingeschrieben werden. Doch wie ändert man das DATASET mit FIELDNAME = 'EntryDateTime' zu NULL ???? Bei MySQL 5.7 war das kein Problem, der hat einfach auch ein '' in das DATETIME hinengebuttet. Nachtrag: geht das so irgenwie?
Delphi-Quellcode:
procedure tMyTableBeforePost(Dataset: TDataset);
begin if Dataset.fieldbyname('EntryDateTime').asstring = '' then Dataset.fieldbyname('EntryDateTime').clear ; end; DANKE |
AW: OnBeforePost mit NULL Value?
Funktioniert es damit?
Delphi-Quellcode:
(Bei Delphi 7 ist EmptyParam in der Unit Variants deklariert.)
procedure tMyTableBeforePost(Dataset: TDataset);
begin if Dataset.fieldbyname('EntryDateTime').asstring = '' then Dataset.fieldbyname('EntryDateTime').Value := EmptyParam; end; |
AW: OnBeforePost mit NULL Value?
Clear ist an sich genau der richtige Weg ein Feld auf NULL zu setzen.
|
AW: OnBeforePost mit NULL Value?
jupp
Delphi-Quellcode:
Clear geht fast immer.
Dataset.fieldbyname('EntryDateTime').Clear;
// oder Dataset.fieldbyname('EntryDateTime').Value := Null; Null zickt bei Blobs gerne rum. EmptyParams ist "eigentlich" für Parameter, aber das ist ein Field. Clear = NULL = varNull (VarIsNull) Empty = varEmpty = ein nicht zugewiesender Variant (VarIsEmpty) EmptyParams = varError+VAR_PARAMNOTFOUND (VarIsError) Ist ja fast so pervers, wie diese kranke Pseudokonstante EmptyStr, anstatt einem ''. Außerdem sollte UniDAC ein Setting haben, um "LeerStrings" als NULL zu speichern. (also im BeforePost automatisch umzuwandeln). Vemutlich an der Query-Komponente (notfalls auch mal an der Connection nachsehn) [add] SetEmptyStrToNull -> ![]() |
AW: OnBeforePost mit NULL Value?
Kommt die Fehlermeldung bei Posten oder beim Aufruf von Edit?
Verwirrenderweise schreibst Du zwar dass Du Edit aufrufst, dann aber was in OnBeforePost machen willst. Zitat:
|
AW: OnBeforePost mit NULL Value?
Zitat:
![]() Dann liefert AsString immer einen DatumsString, außer das Feld ist NULL, wo es einen Leerstring zurück gibt. Somit trifft dieses IF immer nur, wenn es bereist NULL ist und noch mehr NULL als NULL geht nicht, weshalb Clear nichts ändern wird, da es funktional effektiv Folgendes ergäbe:
Delphi-Quellcode:
if Dataset.FieldByName('EntryDateTime').IsNull then
Dataset.FieldByName('EntryDateTime').Clear; // aka Dataset.FieldByName('EntryDateTime').Value := Null; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:38 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