AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Fehlermeldung: 'Das Objekt war geöffnet' bei ExecuteQuery
Thema durchsuchen
Ansicht
Themen-Optionen

Fehlermeldung: 'Das Objekt war geöffnet' bei ExecuteQuery

Ein Thema von GroHae · begonnen am 5. Mai 2008 · letzter Beitrag vom 6. Mai 2008
Antwort Antwort
GroHae

Registriert seit: 19. Apr 2007
Ort: Nabburg
83 Beiträge
 
Delphi 2007 Enterprise
 
#1

Fehlermeldung: 'Das Objekt war geöffnet' bei ExecuteQuery

  Alt 5. Mai 2008, 12:03
Datenbank: MSSQL • Zugriff über: DBX4
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:

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;
Immer wenn ich einen Befehl mit Parametern zum zweiten mal abschicke bekomme ich die Fehlermeldung.

Was mache ich da falsch?
Grüße

Thomas
  Mit Zitat antworten Zitat
GroHae

Registriert seit: 19. Apr 2007
Ort: Nabburg
83 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: Fehlermeldung: 'Das Objekt war geöffnet' bei ExecuteQue

  Alt 6. Mai 2008, 15:46
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;
Grüße

Thomas
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:11 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz