Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi NULL-Werte auf String casten? (https://www.delphipraxis.net/137647-null-werte-auf-string-casten.html)

Frederika 25. Jul 2009 13:05

Datenbank: MS Access • Zugriff über: ADO

NULL-Werte auf String casten?
 
Ich lese Daten mittels TADOQuery aus eine Datenbank (derzeit testweise Access, aber eigentlich unabhängig davon). Manche der Felder sind leider leer (NULL). Ich möchte beim Einlesen dieser Felder einen Leerstring erzeugen, erhalte aber immer einen Cast-Error ("Ungültige Variant-Typumwandlung").

Delphi-Quellcode:
var AFeld : String;
AFeld := myADO['Feld']); // Fehler, falls Inhalt von 'Feld' = NULL
AFeld := String(myADO['Feld'])); // produziert den gleichen Fehler
Was muss man machen, damit es funktioniert?

omata 25. Jul 2009 13:15

Re: NULL-Werte auf String casten?
 
Schau dir mal
Delphi-Quellcode:
TADOQuery.FieldByName('spaltenname').AsString
an.

Frederika 25. Jul 2009 13:23

Re: NULL-Werte auf String casten?
 
Geht leider auch nicht...

Delphi-Quellcode:
AFeld := myADO['Feld'].AsString; // gleicher Fehler falls NULL
if myADO['Feld'].IsNull then AFeld := '' else AFeld := myADO['Feld']; // Fehler: "Variante referenziert kein Automatisierungsobjekt" ???
verzweifelt...

omata 25. Jul 2009 13:25

Re: NULL-Werte auf String casten?
 
Hast du gelesen, was ich geschrieben habe?

Delphi-Quellcode:
var AFeld : string;
begin
  AFeld := myADO.FieldByName('Feld').AsString;
  :

Frederika 25. Jul 2009 13:53

Re: NULL-Werte auf String casten?
 
Hallo Omata! Vielen Dank, hat tatsächlich geklappt. Super! Sorry, ich war auf das AsString fixiert, das bei myADO['Feld'] nicht funktioniert.

Worin unterscheiden sich denn die Zugriffe myADO['Feld'] und FieldByName('Feld')?

alzaimar 25. Jul 2009 15:41

Re: NULL-Werte auf String casten?
 
MyADO["FeldName"] liefert den Feldinhalt als Variant, wohingegen MyADO.FieldByName("FeldName") eine Instanz vom Typ TField liefert.

Frederika 25. Jul 2009 16:23

Re: NULL-Werte auf String casten?
 
Vielen Dank für die Erklärung.

Gibt es Performanz-Empfehlungen für die eine oder andere Art? Oder ist der Zugriff gleich schnell?

haentschman 25. Jul 2009 16:53

Re: NULL-Werte auf String casten?
 
Hallo,

unabhängig von der Lösung noch mein Senf dazu. :P
Ich persönlich mag keine NULL Werte in der Datenbank. Ich schreibe in sämtliche Felder beim neuen Datensatz zumindest Standardwerte. Wenn dann ein Feld NULL sein sollte, ist was schiefgelaufen :wink:

bis dann...

Bernhard Geyer 25. Jul 2009 17:07

Re: NULL-Werte auf String casten?
 
Zitat:

Zitat von Frederika
Gibt es Performanz-Empfehlungen für die eine oder andere Art? Oder ist der Zugriff gleich schnell?

Wenn du performance benötigst, schau dir mal die Kompos von DevArt an. Fall's du das letzte Prozent an Performance benötigst und auf TDataset-Kompatiblität verzichten kannst greif direkt auf die ADO-Schnittstelle zu und vergiss die Wrapper wie bei ADOExpress/dbGo.

mjustin 25. Jul 2009 18:37

Re: NULL-Werte auf String casten?
 
Zitat:

Zitat von haentschman
Hallo,

unabhängig von der Lösung noch mein Senf dazu. :P
Ich persönlich mag keine NULL Werte in der Datenbank. Ich schreibe in sämtliche Felder beim neuen Datensatz zumindest Standardwerte. Wenn dann ein Feld NULL sein sollte, ist was schiefgelaufen :wink:

bis dann...

Mit welchem Wert initialisierst Du das Feld 'Geschlecht', falls es unbekannt ist - mit 'männlich' oder 'weiblich'? ;)

Cheers,


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:26 Uhr.
Seite 1 von 3  1 23      

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