Delphi-PRAXiS
Seite 3 von 3     123   

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)

p80286 30. Jul 2009 11:04

Re: NULL-Werte auf String casten?
 
Zitat:

Zitat von Bernhard Geyer
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.

Hallo Bernhard,

gibt es da irgendwo ein Delphi-Beispiel?
in google hab' ich nur die üblichen Verweise auf TADO... gefunden und Microsoft ist für Delphianer nicht ganz so ergiebig.

Gruß
K-H

Frederika 30. Jul 2009 19:09

Re: NULL-Werte auf String casten?
 
Zitat:

Zitat von mkinzler
ADO bietet sich eigentlich nur für Access und MSSQL an, für andere DBMS gibt es meist bessere Komponenten. Aber wenn die Auswahl nicht in deiner Hand liegt ist es müssig darüber zu diskutieren.

Na ja, Komponenten für mein Programm kann ich mir natürlich frei aussuchen, aber laufen muss das ganze dann mit Sybase auf einem fremden System ohne zusätzliche Installationen. Die Performanz ist derzeit ausreichend, aber wenn es empfehlenswerte Komponenten für direkten Zugriff auf Sybase 9 gibt, dann schaue ich mir sie gerne mal an. Vorschläge sind willkommen. Ich bräuchte nur Ersatz für TADQuery und TADOCommand -- mit den letzten Tipps hier aus dem Forum ist die Performanz jetzt aber ziemlich OK.

Bernhard Geyer 30. Jul 2009 19:15

Re: NULL-Werte auf String casten?
 
Zitat:

Zitat von p80286
gibt es da irgendwo ein Delphi-Beispiel?

Suche mal im http://www.entwickler-forum.de nach "CoConnection Kosch"

Zitat:

Zitat von Frederika
Na ja, Komponenten für mein Programm kann ich mir natürlich frei aussuchen, aber laufen muss das ganze dann mit Sybase auf einem fremden System ohne zusätzliche Installationen.

Dann geht es zu 100% nicht mit ADO da dieser standardmäßig keinen OLE DB Provider für Sybase mitbringt.

FediDelPr 19. Dez 2018 15:01

AW: NULL-Werte auf String casten?
 
Gemässe Alzaimar liefert MyADO["FeldName"] den Feldinhalt als Variant (siehe oben).

Warum gelingt mir dann die Zuweisung

VAR
such: VARIANT;
..
..

such := ADOQuery1['Suchwert'];

nicht.

Ist der Feldinhalt NULL, kommt die übliche Fehlermeldung:

Could not convert variant of type (Null) into type (OleStr)


Zurzeit arbeite ich mit FieldByName würde NULL aber gerne
explizit abfangen.

Tools: ACCESS recht neu, DELPHI Berlin

Danke für eine Begründung.

Sherlock 19. Dez 2018 15:05

AW: NULL-Werte auf String casten?
 
Gibt es kein
Delphi-Quellcode:
ADOQuery1['Suchwert'].IsNull
?

Verwendbar zB in einem if:
Delphi-Quellcode:
if not ADOQuery1['Suchwert'].IsNull then
  such := ADOQuery1['Suchwert'];
Sherlock

Delphi.Narium 19. Dez 2018 15:13

AW: NULL-Werte auf String casten?
 
Eventuell sowas:
Delphi-Quellcode:
VAR
such: VARIANT;
..
..
if not VarIsEmpty(ADOQuery1['Suchwert']) then such := ADOQuery1['Suchwert'];

p80286 19. Dez 2018 15:16

AW: NULL-Werte auf String casten?
 
@Sherlock
Soweit ich weiß, Nein!

NULL bedeutet ja, daß ein Feld leer ist. Das wiederum sollte in der Query abgefangen werden, falls notwendig. NULL ist eine Information, die nur in der DB existiert.
Mit dem
Delphi-Quellcode:
.Asstring
wird NULL zu einem Leerstring was aber nicht heißt, daß ein LeerString=NULL ist.

Gruß
K-H

FediDelPr 19. Dez 2018 17:35

AW: NULL-Werte auf String casten?
 
Danke für die schnellen Rückmeldungen.


Zusammengefasst komme ich nun zu folgenden Erkenntnissen:

VAR
such: STRING;

..
..

IF VarIsClear(ADOQueryAuto['Suchbegriff'])
THEN ShowMessage('not assigned')
ELSE ShowMessage('assigned');

IF VarIsEmpty(ADOQueryAuto['Suchbegriff'])
THEN ShowMessage('NULL')
ELSE ShowMessage('not NULL');

(* zwar einfach .. *)
such := ADOQueryAuto.FieldByName('Suchbegriff').AsString;

(* .. oder aus meiner Sicht besser *)
IF VarIsEmpty(ADOQueryAuto['Suchbegriff'])
THEN such := ADOQueryAuto['Suchbegriff']
ELSE such := '' (* .. oder etwas anderes *);

Es gibt keine Fehlermeldungen mehr und ich denke es läuft (ohne genaue Checks).

Etwas allerdings bleibt unbeantwortet. Warum wird die Zuweisung

vari := ADOQueryAuto['Suchbegriff'];

an den Typ VARIANT nicht akzeptiert ?
Ist der Term ADOQueryAuto['Suchbegriff'] evtl. gar nicht vom Typ VARIANT ?


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

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