Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi FieldByName oder FieldValues ? (https://www.delphipraxis.net/56874-fieldbyname-oder-fieldvalues.html)

moebus 12. Nov 2005 16:05

Datenbank: MysQL • Version: 4 • Zugriff über: MyDac

FieldByName oder FieldValues ?
 
Ich hätte da eine Frage zum Auslesen bzw. Schrieben von Datenfeldern in Query's.

Wenn ich Daten Auslesen oder schreiben möchte nutze ich meist die Syntax :

Delphi-Quellcode:
 Query1.FieldByName('Feldname').value;
Das selbe Ergebniss produziere ich aber auch mit

Delphi-Quellcode:
quer1.Fieldvalues['feldname'];
Wenn ich nun Zuweisungen in der Form mache

Delphi-Quellcode:
 Query1.Fieldbyname('feldname').value:=query2.FieldValues['Feldname'];
habe ich des öfteren das Problem das ich die Fehlermeldung erhalte das das Feld nicht als Type Variant angesprochen werden kann. Dies passierte bislang immer bei Integerzuweisungen, so das ich dann folgende Sytanx verwenden musste um den Typ zu definieren.

Delphi-Quellcode:
Query1.Fieldbyname('feldname').asinteger:=query2.FieldValues['Feldname'];
Die Delphi Eingabehilfe gibt mir auf der linke Seite die Funktion FieldByName auf der rechten Seite der Zuweisung nur die Möglichkeit FieldValues zu benutzen. Trotzdem kann ich auf beiden Seiten auch z.B. FieldByName verwenden.

Daraus resultieren nun einige Fragen

1. Was ist eigentlich nun der Unterschied zwischen FieldByName und Fieldvalue? Das enzigste was ich erkennen kann ist das FieldValue immer vom Typ Variant ist, während ich bei FieldByName sowohl mit dem Type Variant (.value), als auch mit Typzuweisungen arbeiten kann(.asstring ectr.)

2. Wann sollte man welche Version nehmen, bzw. ist es sinvoll bei Zuweisungen beide Varianten zu mischen, so wie Delphi es offenbar will?

3. Warum kommt ein Typfehler bei der oben bereits erwähnten Variante wenn Integer Werte von einem Query aufs andere zugewiesen werden soll (beide Feldnamen sind vom Typ int) und z.B. bei Stringzuweisungen nicht.

Delphi-Quellcode:
 Query1.Fieldbyname('feldname').value:=query2.FieldValues['Feldname'];

4. Sollte evtl. ein Type nur zum auslesen der Daten sein (FieldValues) und einer nur zum schreiben (FieldByName) ????


Im Moment verwende ich überwiegend FieldByName mische aber auch ab und an, da beide Versionen tadellos arbeiten.

Für eine Aufkärung eurerseits sage ich schon mal im voraus danke.

Mfg

Moebus

omata 12. Nov 2005 16:24

Re: FieldByName oder FieldValues ?
 
Moin,

ich verwende immer FieldByName und dann niemals value. Mit dem Datentyp variant solltest du meiner Meinung nicht arbeiten. Dieser wird nur benötigt, wenn man z.B. Ole-Anwendung schreibt.
Aber bei einer DB-Anwendung brauchte ich das bisher noch nie. Du solltest Typsicher programmieren und das schliesst variant aus. Typsicherheit bringt einem nicht die volle Sicherheit das alles immer geht, ist aber schon mal ein wichtiger Schritt zu einer stabilen Anwendung.

Also vergiss variant.
Benutze FieldByName('???').As??????


MfG
Thorsten


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:37 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