ja, sehe ich genau so, aber: siehe oben: kein Thread, kein Timer, kein
COM, kein nichts
Ob die Methode von einem Thread aufgerufen wird kann man an dem Code nicht erkennen
Rufst du irgendwo an anderer Stelle FreeAndNil auf oder setzt Query1 auf nil?
Falls ja setz mal einen Breakpoint an diese Stellen.
Hat die
Query irgendwelche Ereignisse oder ist die
Query über eine Datasource mit einem oder mehreren Controls verbunden die Ereignisse haben?
Falls ja: Mach mal Breakpoints in diese Ereignisse und beobachte mal Query1 wärend du durchstepst.
Falls das alles nicht zutrifft (oder du es trotzdem mal probieren willst):
Knallt es auch wenn du eine lokale
Query-Variable anlegst und dieser Query1 zuweist und damit weiter arbeitest?
Quasi so:
Delphi-Quellcode:
function TDataModule1.OpenCommand(
query :
string;field:
string;
var value:
string; firstrecord : boolean = True) : boolean;
var dummyQuery: TQuery;
// Oder welche Query Klasse du auch immer verwendest
begin
dummyQuery := query1;
dummyQuery .close;
dummyQuery .sql.clear;
dummyQuery .sql.add(
query);
// hier ist es noch ok
try
value := '
';
dummyQuery .Open;
// hier auch noch
if dummyQuery .RecordCount > 0
then // rumms.....
begin
if not firstrecord
then
query1.last;
value := dummyQuery .fieldbyname(Field).AsString;
end;
dummyQuery .close;
result := true;
except
dummyQuery .close;
result := false;
end;
end;
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."