Unausgegorene Gedankensplitter von mir:
Delphi-Quellcode:
// Schreiben in die DB:
// statt
if TryStrToFloat(Edit.Text, myFloat)
then
qry.FieldByName('
Nummer').AsFloat := myFloat;
// mal versuchen
qry.FieldByName('
Nummer').AsVariant = Edit.Text;
// statt
if TryStrToInt(Edit.Text, myInt)
then
qry.FieldByName('
Nummer').AsInteger := myInt;
// mal versuchen
qry.FieldByName('
Nummer').AsVariant := Edit.Text;
// statt
if TryStrToFloat(Edit.Text, myFloat)
then
qry.ParamByName('
Nummer').AsFloat := myFloat;
// mal versuchen
qry.ParamByName('
Nummer').Value = Edit.Text;
// statt
if TryStrToInt(Edit.Text, myInt)
then
qry.ParamByName('
Nummer').AsInteger := myInt;
// mal versuchen
qry.ParamByName('
Nummer').Value := Edit.Text;
// Lesen aus der DB:
Edit.Text := qry.FieldByName('
Nummer').AsVariant;
Varianten machen eine implizite Typkonvertierung, wenn Edit.Text leer ist, könnte damit dann Null in die
DB geschrieben werden. Müsstest Du mal prüfen, keine Ahnung, ob sich da alle Datenbank(schnittstell)en gleich verhalten.
Beim Lesen aus der
DB wird der Inhalt des Datenbankfeldes bei der Zuweisung per .AsVariant in den Typ konvertiert, der links vom Gleichheitszeichen steht. Bei Edit.text also in einen String.
Die delphitypische Typsicherheit könnte dabei allerdings verloren gehen.