AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken IBDAC: In der DB sind Leerstrings statt Null. Alternativen?
Thema durchsuchen
Ansicht
Themen-Optionen

IBDAC: In der DB sind Leerstrings statt Null. Alternativen?

Ein Thema von BlueStarHH · begonnen am 14. Okt 2010 · letzter Beitrag vom 7. Okt 2019
Antwort Antwort
Seite 2 von 3     12 3      
Int3g3r

Registriert seit: 28. Nov 2018
Ort: Schweiz
118 Beiträge
 
Delphi 10.3 Rio
 
#11

AW: IBDAC Leerstring statt Null. Alternativen?

  Alt 12. Sep 2019, 16:06
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.

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;

Geändert von Int3g3r (12. Sep 2019 um 16:39 Uhr)
  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
 
#12

AW: IBDAC Leerstring statt Null. Alternativen?

  Alt 12. Sep 2019, 16:19
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.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Int3g3r

Registriert seit: 28. Nov 2018
Ort: Schweiz
118 Beiträge
 
Delphi 10.3 Rio
 
#13

AW: IBDAC Leerstring statt Null. Alternativen?

  Alt 12. Sep 2019, 16:30
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.
Wurde nun angepasst!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#14

AW: IBDAC Leerstring statt Null. Alternativen?

  Alt 12. Sep 2019, 16:32
Alternativ könntre man dies auch mit einem Trigger lösen; wäre dann unabhängig von den Komponenten/Programm.
Markus Kinzler
  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
 
#15

AW: IBDAC Leerstring statt Null. Alternativen?

  Alt 12. Sep 2019, 16:36
Statt TrimRight(TrimLeft(... kannst du dich auch gleich Trim(... schreiben, oder?
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Int3g3r

Registriert seit: 28. Nov 2018
Ort: Schweiz
118 Beiträge
 
Delphi 10.3 Rio
 
#16

AW: IBDAC Leerstring statt Null. Alternativen?

  Alt 12. Sep 2019, 16:39
Statt TrimRight(TrimLeft(... kannst du dich auch gleich 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.

Geändert von Int3g3r (12. Sep 2019 um 16:43 Uhr)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#17

AW: IBDAC Leerstring statt Null. Alternativen?

  Alt 12. Sep 2019, 16:51
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 ; ^^
Markus Kinzler

Geändert von mkinzler (12. Sep 2019 um 17:12 Uhr) Grund: Trigger auf Ereignis "UPDATE" erweitert
  Mit Zitat antworten Zitat
Int3g3r

Registriert seit: 28. Nov 2018
Ort: Schweiz
118 Beiträge
 
Delphi 10.3 Rio
 
#18

AW: IBDAC Leerstring statt Null. Alternativen?

  Alt 12. Sep 2019, 17:31
Zitat:
Ist einfach
Danke für das Beispiel. Werde es ggf. später benutzen.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#19

AW: IBDAC Leerstring statt Null. Alternativen?

  Alt 12. Sep 2019, 17:52
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.
Heiko
  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
 
#20

AW: IBDAC Leerstring statt Null. Alternativen?

  Alt 12. Sep 2019, 17:57
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.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 10:04 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