Datenbank und Thread

kerian

Erfahrenes Mitglied
Hallo zusammen ich brauche euere Hilfe.
Bin kurz vorm .....
Ich Arbeite mit DAO und Visual C++ 6.0. Eine Access Datenbank.
Also ich lese Daten von der Serieelleschnittelle aus. Soweit so gut.
Die möchte ich im Hintergrund in einer Datenbank aktualisieren.
In einem Dialog sollen die Daten nach drücken
eines Knopfes ausgelesen und dargestellt werden.
Wie sollte man so was lösen? Nach zahlreichen Versuchen bin ich
bis jetzt Erfolglos geblieben!

Die Felermeldung ist:
Unbehandelte Ausnahme Test.exe(DAO350.DLL): 0xC0000005: Access Vaioltion
Ob das mit m_pWorkspace zusammenhängt weiss ich nicht. Hab den Versucht zu schließen aber hat auch nichts geholfen! Vielleicht hat jemand da schön Erfahrung und kann mir helfen.


Gruß
Kerian
 
Zuletzt bearbeitet:
Die Fehlermeldung sagt so leider gar nichts aus, wenn man nicht die Codezeile sieht, in der sie ausgelöst wird.
Hast Du die Datenbank geöffnet?
Hast Du das Recordset mit Edit zum Bearbeiten vorbereitet?
Hast Du es mit Update wieder freigegeben?
 
Ausserdem musst du bei den MFC-Datenbank-Gedöns immer wieder Exceptions abfangen. Die eine Hälfte der Befehle arbeitet mit Rückgabewert, die andere schmeisst mit Exceptions um sich.
Und wenn eine nicht ge-catch-ed wird, dann wird dein Programm abgeschossen.
 
Hi,
das mit Edit(); und Update(); habe ich überprüft!
Der Thread läuft und schreibt die Daten in die Datenbank!
Wenn ich jetzt den Dialog aufmachen möchte und auf die Datenbakt zugreiffen will
passiert es! Und Bleibt in der db1.Open() stecken.
Das mit ge-catch-ed geht nicht weil er garnicht so weit kommt!
Also bin ich in die Open(); Funktion reingegangen um nachzuschauen wo er hängt!
So wie es aussieht bleibt er in der
DAO_CHECK(m_pWorkspace->m_pDAOWorkspace->OpenDatabase() Funktion hängen :-(
Code:
	DAO_CHECK(m_pWorkspace->m_pDAOWorkspace->OpenDatabase(
		V_BSTR(&var),
		COleVariant((long)bExclusive, VT_BOOL),
		COleVariant((long)bReadOnly, VT_BOOL),
		COleVariant(lpszConnect, VT_BSTRT),
==>		&m_pDAODatabase));

Genau hier bleibt er mit dem gelben Pfeil stehen. Wenn ich jetzt weiter gehen will
schmeißt er die Fehlermeldung!
Die Verbindung zu den Datenbanken erzeuge ich, in dem ich ind beiden *.cpp global
Code:
CDaoDatabase db1;        //Datenbank-Variable
CDaoRecordset rs1(&db1); //RecordSet für GR2 zuweisen
und
Code:
CDaoDatabase db6; //Datenbank-Variable
CDaoRecordset rs6(&db6); //RecordSet für GR2 zuweise
schreibe. Auch mit CCriticalSection habe ich es versucht!

Gruß
kerian
 
Hallo zusammen,
ich bin es noch mal!
Ich führe jetzt vor jedem öffen der Datenbag AfxDaoInit(); aus.
Und wie es aussieht funktioniert es :-)

Gruß
Kerian
 
Zurück