AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken OnBeforePost mit NULL Value?
Thema durchsuchen
Ansicht
Themen-Optionen

OnBeforePost mit NULL Value?

Ein Thema von wschrabi · begonnen am 1. Aug 2023 · letzter Beitrag vom 1. Aug 2023
Antwort Antwort
wschrabi

Registriert seit: 16. Jan 2005
448 Beiträge
 
#1

OnBeforePost mit NULL Value?

  Alt 1. Aug 2023, 14:14
Datenbank: MariaDB • Version: 10.3.28 • Zugriff über: UniDAC
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

Geändert von wschrabi ( 1. Aug 2023 um 14:19 Uhr)
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.490 Beiträge
 
Delphi 7 Professional
 
#2

AW: OnBeforePost mit NULL Value?

  Alt 1. Aug 2023, 14:58
Funktioniert es damit?
Delphi-Quellcode:
procedure tMyTableBeforePost(Dataset: TDataset);
begin
  if Dataset.fieldbyname('EntryDateTime').asstring = 'then
    Dataset.fieldbyname('EntryDateTime').Value := EmptyParam;
end;
(Bei Delphi 7 ist EmptyParam in der Unit Variants deklariert.)
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.442 Beiträge
 
Delphi 12 Athens
 
#3

AW: OnBeforePost mit NULL Value?

  Alt 1. Aug 2023, 15:13
Clear ist an sich genau der richtige Weg ein Feld auf NULL zu setzen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#4

AW: OnBeforePost mit NULL Value?

  Alt 1. Aug 2023, 15:26
jupp
Delphi-Quellcode:
Dataset.fieldbyname('EntryDateTime').Clear;
// oder
Dataset.fieldbyname('EntryDateTime').Value := Null;
Clear geht fast immer.
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 -> https://www.componentsource.com/prod...eleases?page=3
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 1. Aug 2023 um 16:07 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sinspin
Sinspin

Registriert seit: 15. Sep 2008
Ort: Dubai
674 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: OnBeforePost mit NULL Value?

  Alt 1. Aug 2023, 18:34
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.

... Navigator ein EDIT mache, kommt immer dass für EntryDateTime der Type '' nicht ok sei. ...
Was ist denn eigentlich die Fehlermeldung? "nicht ok" ist jedenfalls keine Meldung, und hilft Null um herauszufinden was schief geht.
Stefan
Nur die Besten sterben jung
A constant is a constant until it change.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.033 Beiträge
 
Delphi 12 Athens
 
#6

AW: OnBeforePost mit NULL Value?

  Alt 1. Aug 2023, 19:11
Zitat:
Nachtrag: geht das so irgenwie?
Delphi-Quellcode:
procedure tMyTableBeforePost(Dataset: TDataset);
begin
  if Dataset.fieldbyname('EntryDateTime').asstring = 'then
    Dataset.fieldbyname('EntryDateTime').clear ;
end;
Das Feld ist wirklich ein DATETIME, TIMESTAMP, oder sowas, also z.B. ein Delphi-Referenz durchsuchenTDateTimeField?
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;
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:00 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