MySQL und DBExpress "you can't run this command now"

marko

Grünschnabel
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.

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.
 
Zurück