![]() |
Datenbank: MSSQL • Zugriff über: DBX4
Fehlermeldung: 'Das Objekt war geöffnet' bei ExecuteQuery
Hallo zusammen,
ich stelle gerade von der BDE auf DBX4 um. Leider bekomme ich im Moment immer die Fehlermeldung "Das Objekt war geöffnet". Ich habe mir jetzt aus meinem Projekt folgende Kurzfassung erstellt:
Delphi-Quellcode:
Immer wenn ich einen Befehl mit Parametern zum zweiten mal abschicke bekomme ich die Fehlermeldung.procedure TfrmMainMenue.AddParameterDate(iWert: TDateTime; iCommand:TDBXCommand); var MyParameter : TDBXParameter; dDT: TSQLTimeStamp; begin MyParameter := iCommand.CreateParameter; with MyParameter do begin DataType := TDBXDataTypes.TimeStampType; dDT:=DateTimeToSQLTimeStamp(iWert); Value.SetTimeStamp(dDT); end; iCommand.Parameters.AddParameter(MyParameter); end; procedure TfrmMainMenue.Button3Click(Sender: TObject); var MyConnectionFactory: TDBXConnectionFactory; MyConnectionProperties: TDBXProperties; DB_Test : TDBXConnection; MyCommand : TDBXCommand; MyReader : TDBXReader; begin MyConnectionFactory := TDBXConnectionFactory.GetConnectionFactory; MyConnectionProperties := MyConnectionFactory.GetConnectionProperties('BFS'); DB1 := MyConnectionFactory.GetConnection(MyConnectionProperties); MyCommand := DB1.CreateCommand; MyCommand.Parameters.ClearParameters; MyCommand.Text := 'SELECT * FROM Unternehmenstamm WHERE (ChgDate_ID = ?) ORDER BY UnternehmenNr_ID'; AddParameterDate(StrToDate('01.01.1990'),MyCommand); MyReader := MyCommand.ExecuteQuery; while MyReader.Next do ShowMessage(MyReader.Value['Name'].GetAnsiString); MyCommand.Parameters.ClearParameters; MyCommand.Text := 'SELECT * FROM Unternehmenstamm WHERE (ChgDate_ID = ?) ORDER BY UnternehmenNr_ID'; AddParameterDate(StrToDate('02.01.1990'),MyCommand); MyReader := MyCommand.ExecuteQuery; // --> Fehlermeldung: 'Das Objekt war geöffnet' while MyReader.Next do ShowMessage(MyReader.Value['Name'].GetAnsiString); end; Was mache ich da falsch? |
Re: Fehlermeldung: 'Das Objekt war geöffnet' bei ExecuteQue
ich behelfe mir im Moment damit, dass ich zuerst immer MyCommand.Free aufrufe um dann MyCommand neu zu erstellen. Aber das kann doch nicht so gedacht sein...
Delphi-Quellcode:
procedure TfrmMainMenue.Button3Click(Sender: TObject);
var MyConnectionFactory: TDBXConnectionFactory; MyConnectionProperties: TDBXProperties; DB_Test : TDBXConnection; MyCommand : TDBXCommand; MyReader : TDBXReader; begin MyConnectionFactory := TDBXConnectionFactory.GetConnectionFactory; MyConnectionProperties := MyConnectionFactory.GetConnectionProperties('BFS'); DB_Test := MyConnectionFactory.GetConnection(MyConnectionProperties); MyCommand := DB_Test.CreateCommand; MyCommand.Parameters.ClearParameters; MyCommand.Text := 'SELECT * FROM Unternehmenstamm WHERE (ChgDate_ID = ?) ORDER BY UnternehmenNr_ID'; AddParameterDate(StrToDate('01.01.1990'),MyCommand); MyReader := MyCommand.ExecuteQuery; while MyReader.Next do ShowMessage('1 ' + MyReader.Value['Name'].GetAnsiString); MyCommand.Free; // wieder freigeben... MyCommand := DB_Test.CreateCommand; //.. und dann neu erstellen MyCommand.Parameters.ClearParameters; MyCommand.Text := 'SELECT * FROM Unternehmenstamm WHERE (ChgDate_ID = ?) ORDER BY UnternehmenNr_ID'; AddParameterDate(StrToDate('01.01.1990'),MyCommand); MyReader := MyCommand.ExecuteQuery; // Jetzt geht es while MyReader.Next do ShowMessage('2 ' + MyReader.Value['Name'].GetAnsiString); MyCommand.Free; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:57 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz