> _Target.FieldByName(MeinText).Value := EmptyParam
Auch das ergibt einen Laufzeitfehler.
Mein Witz von vorhin scheint sich doch allmählich als realistisch(st)e Lösung hervorzustun.
Delphi-Quellcode:
t := trim(_Source.FieldByName(MeinText).AsString);
if trim(t) = '' then begin
_Target.FieldByName(MeinText).AsString := #0;
end else begin
_Target.FieldByName(MeinText).AsString := t;
end;
Das hätte in meinem Fall den Vorteil, dass das "MeinText" Feld ja nur an wenigen Stellen geschrieben, dafür an vielen Abgefragt wird (evtl. NULL Problematik im SELECT) und ich eben hier nur ein paar wenige "gut auffindbare" Stellen im Quelltext, die angepasst werden müssen.
Meines bescheidenen Wissens nach, sind Strings ja "Nullterminiert", also mit #0 als letztes Byte am Ende. Somit müsste eigentlich für den Fall t='' der Eintrag in der Tabelle stimmen, bzw. Byte-mäßig identisch sein mit den DEFAULT Werten, wenn ich "MeinText" in einem neuen Datensatz gar nicht schreibe(?).
Wenn ich eine Abfrage mache
Code:
SELECT * FROM Layout WHERE MeinText=''
und die Gegenabfrage
Code:
SELECT * FROM Layout WHERE MeinText<>''
werden nun zumindest scheinbar alle Datensätze zurück gegeben - entweder in der einen, oder anderen Abfrage. In sofern KÖNNTE es stimmen...?
Delphi 10.4 32-Bit auf Windows 10 Pro 64-Bit, ehem. Delphi 2010 32-Bit auf Windows 10 Pro 64-Bit