Hi,
gerade was kurioses entdeckt. Folgender Code funktioniert unter Windows Problemlos:
Delphi-Quellcode:
if mydate > 0 then
l_Query.ParamByName('date').AsString := DateToISO8601(mydate)
else
begin
l_Query.ParamByName('date').DataType := ftString;
l_Query.ParamByName('date').Clear;
end;
Hinter den Parametern steckt ein
SQL Insert Skript. mydate ist ein TDateTime. Ziel des Codes ist, ich möchte in der Datenbank nicht den Standard "0" wert für das Datum stehen haben (1899 irgendwas) sondern, wenn ich kein Datum habe, dann möchte ich wirklich NULL in der Datenbank stehen haben. Firedac muss ich in dem Fall den Datentyp mitgeben, sonst verweigert er das clear.
Wenn ich diesen Code jetzt auf Android ausführe, dann erhalte ich zu Laufzeit die Fehlermeldung, das Versucht wird ein ftWideString in ein ftString umzuwandeln und das ein neuaufbau der Abfrage erfordert. Wenn ich alles auf Widestring umstelle, dann funktioniert es wieder.
Ich vermute jetzt, dass unter Android ein "AsString" automatisch zu einem "AsWideString" wird und dann das
DB Feld entsprechen als WideString in die
Query geladen wird. Wenn ich jetzt versuche explizit mit ftString den Datentyp auf ftString zu setzen knallt es.
Würdet ihr das als Bug sehen, oder ist das per Design so?
vG
PJM