Operation bei geschlossener Datenmenge nicht ausführbar.



  • Diese Fehlermeldung bekomm ich öfters wenn ich versuch, eine Access-Datenbank zu öffnen. Eine genaue Fehlerbeschreibung hab ich bis jetzt leider nicht gefunden.

    Meine Serviceanwendung prüft alle 2 Minuten, ob es schon neue Datensätze oder eine ganz neue Datenbank gibt und stößt dann einen Thread an, der aus der Access-Datenbank liest und mit diesen Daten dann ein Telegram füllt.

    In die Accessdatenbank, aus der ich lese, wird öfters am Tag ein Datensatz hinzugefügt, aber das dürfte ja kein Problem geben, oder? Ich lese ja nur aus der Datenbank.

    Der Fehler tritt immer sporadisch auf, aber wenn er einmal aufgetreten ist, dann erscheint er zyklisch alle 2 Minuten in der Ereignisanzeige, bis ich den Dienst wieder beende und neu starte.

    String conStr;
    conStr =  "Provider=Microsoft.Jet.OLEDB.4.0;";
    conStr += "Data Source="+pDBName+";";
    conStr += "Mode=ReadWrite;";
    
    ADOConnection->Close();
    ADOConnection->ConnectionString = conStr;
    ADOConnection->LoginPrompt = false;
    
    try
    {
      ADOConnection->Open("", "");
    }
      catch (Exception &exception)
    {
      LogError("Service.Exception.436: " +exception.Message);
    }
    
    try
    {
        ADOQuery->Close();
        ADOQuery->SQL->Clear();
        ADOQuery->SQL->Add(SQLString);
        ADOQuery->Open();
    } catch (Exception &exception)
    {
      LogError("Service.Exception.199: " +exception.Message);
    }
    


  • Hallo

    Solche Fehlermeldung tritt zB auf wenn du Next() ausführen willst, ohne vorher eine Tabelle mit Open() geöffnet zu haben.
    vielleicht hilft dir die Abfrage von TDataSet::State, um herauszufinden wann Operationen gerade erlaubt sind.
    Aus deinem Quellcode-Ausschnitt geht jedenfalls nicht die Fehlerursache hervor.

    bis bald
    akari



  • Hm... komisch, weil eigentlich vor diesem Teil nichts mehr mit der Datenbank gemacht wird... Naja danke trotzdem, ich werd es mal überprüfen.


Anmelden zum Antworten