000
03.08.2002, 18:13 Uhr
Christian
C/C++ Master (Operator)
|
Hallo!
Ich habe jetzt die Frage einmal hier herein geschrieben, da ja die OLE DB Consumer Templates eher zur MFC, bzw. zu Klassenbibliotheken, als zur API passen.
Mein Problem: Ich bin dabei mir ein Programm zu schreiben, das mdb DBs analysiert. Das funktioniert auch sehr gut. Nun ist es so, dass ich eine BeispielDB analysieren wollte und fogelndes Problem eintritt: Alle Tabellen, die ich angelegt habe, werden vom Programm problemlos dargestellt außer eine. Dort gibt es folgendes Problem: Ich verwende den Datentyp: CTable <CDynamicAccessor> table;
Rufe ich nun die Methode MoveNext() der CRowset Klasse auf, dann erhalte ich den Errorcode: 0x8000FFFF. Ich habe einmal nachgesehen, der bedeutet soviel wie: E_UNEXPECTED. Das ist komisch, ich weiß nicht woher der kommen kann. In der Datenbanktabelle sind aber noch 2 weitere Datensätze enthalten. Ich habe einmal den Knackpunkt nachprogrammiert in einer Konsoleanwendung. Der COde ist etwa so:
C++: |
CoInitialize(NULL); CDataSource DS; HRESULT hr = DS.Open("Microsoft.Jet.OLEDB.4.0", "c: \\cocktails.mdb"); CSession session; session.Open(DS); CTable <CDynamicAccessor> t1; t1.Open(session, "Cocktails"); hr = t1.MoveFirst(); hr = t1.MoveNext(); // puts out the error code 0x8000ffff hr = HRESULT_CODE(hr);
BSTR r = new (OLECHAR[255]); r = (BSTR) t1.GetValue(2);
printf("\n\n%S", r); SysFreeString(r); t1.Close(); session.Close(); DS.Close();
printf("Ende!\n"); CoUninitialize(); return 0;
|
Wenn jemand was weiß wäre ich total dankbar. Ist es so, dass das Problem dann bei der DB liegt? Vom Zugriff dürfte das ja stimmen oder?
Danke.
Editiert: Hab nur den Smile im Quellcode entfernt. Uwe -- Grüße, Christian Dieser Post wurde am 04.08.2002 um 13:58 Uhr von FloSoft editiert. |