Hallo Forum,
dank eurer vielen Kommentare und Anregungen habe ich den Code nun folgendermaßen angepasst:
Delphi-Quellcode:
function GetFeldwertFromID(aTabelle, aFeld:
string; aID: integer): Variant;
var
MyQuery: TFDQuery;
begin
Result := StrKeinEintrag;
MyQuery := TFDQuery.Create(MyDB);
try
MyQuery.Connection := MyDB;
if (MyQuery.Connection.Connected)
and (aID > 0)
then
begin
with MyQuery
do
begin
SQL.Text := '
select * from &pTabelle where ID = :pID';
MacroByName('
pTabelle').asRaw := aTabelle;
ParamByName('
pId').asInteger := aId;
try
open;
if not (FieldByName(aFeld).IsNull)
and
not (FieldByName(aFeld).asString.IsEmpty)
and
(Recordcount > 0)
and
((FindField('
GELOESCHT') =
nil)
or (Locate('
GELOESCHT', 0, [])))
then
Result := FieldByName(aFeld).AsString;
except
raise;
end;
end;
end;
finally
MyQuery.Close;
MyQuery.Free;
end;
end;
Die ursprüngliche Fehlermeldung aus #1 bleibt aber weiterhin bestehen. Wie gesagt, die Fehlermeldung kommt nur in Verbindung mit einer Microsoft
Access Datenbank und auch nur einmal beim ersten Druchlauf.
Was mich übrigens noch interessieren würde ist:
Und wieder mal ein
with
und keiner sagt was.
Das ist eine Art von Schreibfaulheit die früher oder später zu sehr schönen Fehlern führen wird.
Was ist an WITH so "schlimm"? Welche Fehler treten durch WITH auf?
Gruß Michael
Michael H.