Datenbank-Fehlermeldung - bitte um Hilfe



  • Folgende Kette:
    2 Datenbereiche in einem MS Excel-File <- Abfrage in MS Access <- ODBC-Treiber <- VC++6/MFC/CRecordSet

    Programm compiliert/linkt ohne Probleme, Felder sind in CRecordSet eingebunden.

    Folgende Fehlermeldung bei der Ausführung der Datenbankabfrage:

    "Das Datenbankmodul kann " nicht finden. Stellen Sie sicher, dass es sich um einen gültigen Parameter oder Alias-Namen handelt, der keine ungültigen Zeichen oder falsche Zeichensetzung enthält und dessen Name nicht zu lang ist."

    Der SQL-String der Abfrage (MS Access) ist ganz einfach:
    SELECT * FROM Datenfeld1,Datenfeld2;

    Die Excel-Datenbereiche sind in MS Access als Tabellen verknüpft. Die Abfrage zeigt in Access korrekte Daten.

    Wo muss man da ansetzen? Was versteht man genau unter dem "Datenbankmodul"?



  • Hallo

    sind Datenfeld1 / 2 denn auch Tabellen 😕
    (von Namen her nicht -> Fehler)
    MfG
    Klaus



  • Der Fehler liegt sicher bei dem Assistenten von MS VC++ 6 (oder auch 7). Er erzeugt bei GetDefaultSQL(...) einfach nur "[View]". Dies bewirkt die Fehlermeldung. Warum dies selbst in der neueren Version von MS VC++ nicht behoben ist, weiß wohl keiner. Richtig muss es bei Access-Views heissen: "SELECT * FROM View;" Dann klappt das auch mit dem Durchreichen von hinten durch die Brust ins Auge. 😉



  • Ja richtig, hat geklappt. Was bedeutet aber nun AFX_IDP_SQL_ROW_FETCH bzw.
    "Fehler beim Abruf eines Datensatzes". Wenn man mit dem Zeiger m_pSet mit Move...() sich bewegt, klappen die meisten Datensätze, andere allerdings nicht (siehe Fehlermeldung). Wo kommt dieser Fehler her? Mit GetLastError() erhält man immer null, also alles "o.k." Wie kann ich diesen Fehler abfangen? Die Funktionen Move...() sind vom Typ void, liefern also keinen Fehlerwert zurück.


Anmelden zum Antworten