Bei meinem Ansatz mit Variant geht die Typsicherheit mit Sicherheit flöten und Nebenwirkungen sind gerade bei Float (zufällig ohne Nachkommastellen) und Integer eher zu erwarten als auszuschließen.
Alternative:
Die Routine, die UI ins Objekt /
DB schreibt, prüft ob das UI-Feld leer ist.
Delphi-Quellcode:
if Edit.Text = '
'
then
qry.FieldByName('
Nummer').AsVariant := EmptyParam
// Das müsste in der DB dann NULL werden.
else
begin
if TryStrToFloat(Edit.Text, myFloat)
then
qry.FieldByName('
Nummer').AsFloat := myFloat
else
// was ist hier im Fehlerfalle zu machen?
end;
Bei leerem Edit.Text wird qry.FieldByName('Nummer').AsString := Edit.Text eher als Leerstring in der
DB landen als als Null. Aber hier könnte es je nach Datenbank(schnittstelle) auch Unterschiede geben.
qry.FieldByName('Nummer').AsString := Edit.Text funktioniert allerdings auch, wenn Nummer in der
DB als Integer oder Float definiert ist. Enthält Edit.Text allerdings etwas, was nicht zum Typ von Nummer passt, wird es eine
Exception geben.