AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi NULL-Werte auf String casten?
Thema durchsuchen
Ansicht
Themen-Optionen

NULL-Werte auf String casten?

Ein Thema von Frederika · begonnen am 25. Jul 2009 · letzter Beitrag vom 19. Dez 2018
Antwort Antwort
Seite 1 von 3  1 23      
Frederika

Registriert seit: 28. Jan 2009
81 Beiträge
 
#1

NULL-Werte auf String casten?

  Alt 25. Jul 2009, 13:05
Datenbank: MS Access • Zugriff über: ADO
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?
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: NULL-Werte auf String casten?

  Alt 25. Jul 2009, 13:15
Schau dir mal
TADOQuery.FieldByName('spaltenname').AsString an.
  Mit Zitat antworten Zitat
Frederika

Registriert seit: 28. Jan 2009
81 Beiträge
 
#3

Re: NULL-Werte auf String casten?

  Alt 25. Jul 2009, 13:23
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...
  Mit Zitat antworten Zitat
omata

Registriert seit: 26. Aug 2004
Ort: Nebel auf Amrum
3.154 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: NULL-Werte auf String casten?

  Alt 25. Jul 2009, 13:25
Hast du gelesen, was ich geschrieben habe?

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

Registriert seit: 28. Jan 2009
81 Beiträge
 
#5

Re: NULL-Werte auf String casten?

  Alt 25. Jul 2009, 13:53
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')?
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#6

Re: NULL-Werte auf String casten?

  Alt 25. Jul 2009, 15:41
MyADO["FeldName"] liefert den Feldinhalt als Variant, wohingegen MyADO.FieldByName("FeldName") eine Instanz vom Typ TField liefert.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
Frederika

Registriert seit: 28. Jan 2009
81 Beiträge
 
#7

Re: NULL-Werte auf String casten?

  Alt 25. Jul 2009, 16:23
Vielen Dank für die Erklärung.

Gibt es Performanz-Empfehlungen für die eine oder andere Art? Oder ist der Zugriff gleich schnell?
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman
Online

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.388 Beiträge
 
Delphi 12 Athens
 
#8

Re: NULL-Werte auf String casten?

  Alt 25. Jul 2009, 16:53
Hallo,

unabhängig von der Lösung noch mein Senf dazu.
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

bis dann...
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#9

Re: NULL-Werte auf String casten?

  Alt 25. Jul 2009, 17:07
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.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#10

Re: NULL-Werte auf String casten?

  Alt 25. Jul 2009, 18:37
Zitat von haentschman:
Hallo,

unabhängig von der Lösung noch mein Senf dazu.
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

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

Cheers,
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 3  1 23      


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