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 :
Query1.FieldByName('Feldname').value;
Das selbe Ergebniss produziere ich aber auch mit
quer1.Fieldvalues['feldname'];
Wenn ich nun Zuweisungen in der Form mache
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.
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.
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