Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   IBDAC: In der DB sind Leerstrings statt Null. Alternativen? (https://www.delphipraxis.net/155237-ibdac-der-db-sind-leerstrings-statt-null-alternativen.html)

Int3g3r 12. Sep 2019 15:06

AW: IBDAC Leerstring statt Null. Alternativen?
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1445879)
Betrifft das auch IBDAC? Ich frage nur, weil FireDAC eine Option StrsEmpty2Null hat, die vermutlich genau diesen Effekt aktiviert.

Ja, leider. Ich muss dazu aber sagen das ich nicht die neuste version von IBDAC benutze.


EDIT: Hab hier ne mögliche Lösung. Also bei mir Funktionierts. :-D

Delphi-Quellcode:
procedure Tdm.qryTestBeforePost(DataSet: TDataSet);
var
   i: Integer;
begin
   for i := 0 to DataSet.FieldCount-1 do
   begin
      if (DataSet.FieldByName(DataSet.FieldList[i].DisplayName).ReadOnly) or
          (DataSet.FieldByName(DataSet.FieldList[i].DisplayName).IsNull) then
            Continue;

      if trim(DataSet.FieldByName(DataSet.FieldList[i].DisplayName).AsString) = '' then
            DataSet.FieldByName(DataSet.FieldList[i].DisplayName).Clear;
   end;
end;
end;

Uwe Raabe 12. Sep 2019 15:19

AW: IBDAC Leerstring statt Null. Alternativen?
 
Du solltest zum Einen überprüfen, ob du das Feld überhaupt beschreiben darfst, und zum Anderen, ob es nicht schon NULL ist. Auch ein NULL-Wert liefert einen Leerstring bei AsString.

Int3g3r 12. Sep 2019 15:30

AW: IBDAC Leerstring statt Null. Alternativen?
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1445884)
Du solltest zum Einen überprüfen, ob du das Feld überhaupt beschreiben darfst, und zum Anderen, ob es nicht schon NULL ist. Auch ein NULL-Wert liefert einen Leerstring bei AsString.

Ahh, sehr gute Überlegung. Besten Dank an das hätte ich nicht gedacht!
Das hätte irgendwann ne Exception gegeben.:roll:
Wurde nun angepasst!

mkinzler 12. Sep 2019 15:32

AW: IBDAC Leerstring statt Null. Alternativen?
 
Alternativ könntre man dies auch mit einem Trigger lösen; wäre dann unabhängig von den Komponenten/Programm.

Uwe Raabe 12. Sep 2019 15:36

AW: IBDAC Leerstring statt Null. Alternativen?
 
Statt
Delphi-Quellcode:
TrimRight(TrimLeft(...
kannst du dich auch gleich
Delphi-Quellcode:
Trim(...
schreiben, oder?

Int3g3r 12. Sep 2019 15:39

AW: IBDAC Leerstring statt Null. Alternativen?
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1445892)
Statt
Delphi-Quellcode:
TrimRight(TrimLeft(...
kannst du dich auch gleich
Delphi-Quellcode:
Trim(...
schreiben, oder?

Hast recht hab das nochmals nachgelesen.
Habe gedacht aus " Hallo Welt " würde danach "HalloWelt"

Zitat:

Alternativ könntre man dies auch mit einem Trigger lösen; wäre dann unabhängig von den Komponenten/Programm.
Hatte ich schon vorher gelesen. Da ich mich mit der FireBird-Syntax noch schlechter auskenne als in Delphi, habe ich mir gedacht ich lasse das lieber.

mkinzler 12. Sep 2019 15:51

AW: IBDAC Leerstring statt Null. Alternativen?
 
Hatte ich schon vorher gelesen. Da ich mich mit der FireBird-Syntax noch schlechter auskenne als in Delphi, habe ich mir gedacht ich lasse das lieber.

Ist einfach

SQL-Code:
SET TERM ^^ ;
CREATE TRIGGER <TABELLE>_BI FOR <TABELLE> ACTIVE BEFORE INSERT or UPDATE POSITION 0 AS
begin
  if ( new.<Feld> = '') then new.<Feld> = NULL;
end ^^
SET TERM ; ^^

Int3g3r 12. Sep 2019 16:31

AW: IBDAC Leerstring statt Null. Alternativen?
 
Zitat:

Ist einfach
Danke für das Beispiel. Werde es ggf. später benutzen.

hoika 12. Sep 2019 16:52

AW: IBDAC Leerstring statt Null. Alternativen?
 
Hallo,
Zitat:

Ich möchte keine Leerstrings in meiner DB
Es gibt doch da auch Unterschiede.

Null = Wert nicht bekannt
"" = Wert bekannt, ist aber leer.

Uwe Raabe 12. Sep 2019 16:57

AW: IBDAC Leerstring statt Null. Alternativen?
 
Es gibt noch eine Möglichkeit: Wert bekannt und kein Leerstring, besteht aber nur aus Leerzeichen.

So wie ich das verstanden habe, ist diese Vorgabe <Leerstring> => NULL hier anwendungsspezifisch.


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:33 Uhr.
Seite 2 von 3     12 3      

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