AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken NULL Werte aus mySQL pro Feld entfernen
Thema durchsuchen
Ansicht
Themen-Optionen

NULL Werte aus mySQL pro Feld entfernen

Ein Thema von Joerginger · begonnen am 2. Jun 2011 · letzter Beitrag vom 3. Jun 2011
Antwort Antwort
Seite 3 von 3     123   
mkinzler
(Moderator)

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

AW: NULL Werte aus mySQL pro Feld entfernen

  Alt 3. Jun 2011, 08:45
Gibt es schon, will er aber umgehen ( siehe Ursprungsfrage)
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#22

AW: NULL Werte aus mySQL pro Feld entfernen

  Alt 3. Jun 2011, 10:43
Um jetzt mal auf den Ursprungsthread zu antworten
Jetzt meine eigentlichen Fragen:
- Wie gehe ich das am cleversten an? Ich meine, 100% dafür Sorge tragen dass alle Datensätze niemals irgendwo NULL in sich tragen kanns nich sein.
Nee, ist auch doof, vor allem weil es eine Weitere Information beinhaltet -> Es liegen keine Daten vor
Ist das absolut unerwünscht, dann eben NULL-Werte in der Tabelle verbieten
- Muss ich für jedes verwendete Feld im Select schon das erwähnte ISNULL(NAME,'') verwenden??? Sieht ja irgendwie nicht so dolle aus: SELECT IFNULL(ADR_NAME1,''''), IFNULL(ADR_NAME2,''''), ISNULL(ADR_STRASSE,'''')... Schreib das mal bei 30-50 Feldern

- ist das der "only way", muss ich mir da eine func schreiben die aus einem gegebenen Feldnamen das IFNULL(F_N,'''') bastelt und an's stringQUERY dranhängt???

- Oder gibts einen smooth-and-easy-Trick für meine Problemstellung?
Ja
- ist meine try-except-finally Idee möglicherweise doch nicht so blöde?
ähhm, die geht schon mal gar nicht ... Except (übers. Ausnahme) und sollte auch nur für Ausnahmen verwendet werden und nicht für den Regelbetrieb.

Aus den hier schon genannten Lizenzgründen würde ich an deiner Stelle Zugriffs-Komponenten verwenden, die ohne die libmysql.dll auskommen.

Weiterhin würde ich für die Darstellung der Werte eine generalisierte procedures schreiben ala
Delphi-Quellcode:
function FieldToStr( Field : TField ) : string;
begin
  if Assigned( Field ) then
    begin
      if VarIsNull( Field.Value ) then
        Result := '// auch möglich Result := '(null)'
      else
        case Field.FieldType of
          ftInteger : Result :=
        end;
    end
  else
    Result := '';
end;

procedure DataSetShowInListView( DataSet : TDataSet; ListView : TListView; FieldList : array of string );
var
  idx : integer;
  valstr : string;
begin
  for idx := Low( FieldList ) to High( FieldList ) do
    begin
      valstr := FieldToStr( DataSet.FindField( FieldList[ idx ] ) );
      ...
    end;
end;
Ich würde aber in den meisten Fällen ein DBGrid (gut persönlich benutze ich ein cxGrid ) für die Anzeige bemühen, denn da braucht es dieses Geraffel nicht.

Weiterhin kann man sich auch Objekte anlegen, wo diese Daten enthalten sind und dann an die Liste übergeben (ORM).
Das Objekt selber kümmert sich dann um die richtige Umwandlung der Daten
Delphi-Quellcode:
type
  TAdresse = class
  private
    FVorname : Variant;
    function GetVorname : string;
    procedure SetVorname( const Value : string );
    procedure SetRawVorname( const Value : Variant );
  public
    property Vorname : string read GetVorname write SetVorname;
    property RawVorname : Variant read FVorname write SetRawVorname;
  end;


function TAdresse.GetVorname : string;
begin
  Result := VarToStrDef( FVorname, '' );
end;
  
procedure TAdresse.SetVorname( const Value : string );
begin
  FVorname := Value;
end;
  
procedure TAdresse.SetRawVorname( const Value : Variant );
begin
  FVorname := Value;
end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#23

AW: NULL Werte aus mySQL pro Feld entfernen

  Alt 3. Jun 2011, 11:34
Jetzt meine eigentlichen Fragen:
- Wie gehe ich das am cleversten an? Ich meine, 100% dafür Sorge tragen dass alle Datensätze niemals irgendwo NULL in sich tragen kanns nich sein.
Wie wäre es, das gleich bei der Tabellendefinition zu erschlagen?
Create Table (
IDKEY NUMBER ( 38 ) NOT NULL,
Wert1 CHAR (1) DEFAULT '0' ,
Wert2 NUMBER (5,2) DEFAULT '0',
....)

Ausserdem wie schon oben erwähnt NULL ist nicht Null sondern Nix!
Wenn man das in Seinen Abfragen berücksichtigt ist diese Info sehr wertvoll.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Joerginger

Registriert seit: 22. Jan 2009
Ort: Wien
38 Beiträge
 
Delphi 7 Enterprise
 
#24

AW: NULL Werte aus mySQL pro Feld entfernen

  Alt 3. Jun 2011, 23:40
Ich bedank' mich an dieser Stelle mal für die vielen wertvollen Informationen!

Vor allem die Hinweise auf die Lizenzkosten waren wichtig, weil ich mySQL (scheinbar fälschlicherweise) für eine "Gratis-Datenbank" gehalten hätt'. Ich frage mich nur: ob das wohl alle Entwickler wissen und berücksichtigen???

Weiters nehme ich Sir Rufo's Codeschnipsel gerne mit, habe mir ferner - auch zwecks Testen - die myDAC Komponenten besorgt... Und die beiden erwähnten DBMS's...

GLG, Mr. Joerginger
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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:34 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