Die Fehlermeldung bekomme ich, wenn ich einen 'RecordCount' abfrage während der Ermittlung des nächsten freien Indexes.
Beim ersten Mal funktioniert die Abfrage beim zweiten Mal nicht mehr.
Normale Selects auf die Tabelle funktionieren aber weiterhin.
Wie ersichtlich wird jedes mal ein neues Query Objekt erzeugt und anschließend freigegeben. Sofern das mit der TObjectList und OwnsObjects hinhaut. ^^
Es liegt eine Datenbankkapsel zugrunde, in der BDE, ADO und DBExp vereint sind. Diese werden über Compilerschlatern umgeschlatet. D.h. es ist sicher gestellt das nur DBExp Aufrufe erfolgen.
Beim ersten Mal funktioniert die Abfrage beim zweiten Mal nicht mehr.
Code:
var
Qry : DB_Query;
begin
Result := Default;
Qry := DB.DB_Query_erzeugen;
try
Qry.SQL.Clear;
Qry.SQL.Add( 'Select max(' + Field + ') as Exp1 from ' + Table );
try
Qry.Active := True;
if Qry.RecordCount > 0 then begin
Result := Qry.Fields.fieldbyname('Exp1').AsInteger + 1;
end;
except
MessageDlg( 'Fehler beim Abfragen der Tabelle ' + Table + '!!', mtError, [mbOK], 0);
end;
finally
DB.DB_Query_schliessen( Qry );
end;
end;
Normale Selects auf die Tabelle funktionieren aber weiterhin.
Wie ersichtlich wird jedes mal ein neues Query Objekt erzeugt und anschließend freigegeben. Sofern das mit der TObjectList und OwnsObjects hinhaut. ^^
Es liegt eine Datenbankkapsel zugrunde, in der BDE, ADO und DBExp vereint sind. Diese werden über Compilerschlatern umgeschlatet. D.h. es ist sicher gestellt das nur DBExp Aufrufe erfolgen.