DAO-Exception



  • Hi,

    der folgende Code führt bei mir zu einer Exception in daocore.cpp, Zeile 3892.

    CDaoDatabase db;
    db.Open("H:\\Glossar\\glossar.mdb");
    
    CDaoRecordset m_Set(&db);
    
    if (!m_Set.IsOpen())
    m_Set.Open(dbOpenDynaset, "select * from glossar");
    

    Der Absturz erfolgt beim Aufruf von: m_Set.Open(dbOpenDynaset,...)
    Ich habe die Parameter mal testweise weggelassen stürzt aber trotdem ab.
    Kann mir jemand helfen?



  • Und? Was sagt die Exception, was ihr nicht passt?

    Vielleicht kann die Datenbank ja kein Dynashot.

    🙂



  • Nicht viel. Debug Assertion Failure, unknown Software Exception.
    Das Problem ist, wenn ich nur m_pSet.Open() aufrufe (also ohne Parameter) dann meckert der Debugger trotzdem. Ich habe mal die Aufrufe verfolgt. Der Fehler ereignet sich in der Funktion "void CDaoRecordset::BuildSelectList()" der Datei daocore.cpp:

    ASSERT(m_nFields > 0);
    

    m_nFields sind doch die Anzahl an Spalten, also Felder in einer DB, oder nicht?
    Ich weiss aber, dass ich auf jeden Fall mehr als 0 Spalten habe.



  • Du weißt das, hast du das aber auch dem Recordset mitgeteilt?

    Beim ODBC-Zugriff steht das immer im Konstruktor. Such doch mal in deiner Klasse nach der Variablen. Wenn die nicht initialisiert wird, zähl deine Spalten in der Tabelle und initialisier sie mit der Anzahl.

    🙂



  • ruf mal bevor du was mit DAO machst AFXDaoInit() aud und ganz am Ende AFXDaoTerm()


Anmelden zum Antworten