Fehlermeldung nach dem Einfügen in die Datenbank
-
Hi
ich füge in die Datenbank meine Daten ein. Beim schliessen vom Recordset oder Database bekomme ich immer eine Fehlermeldung, das programm stürzt ab.
m_pData.Open(CRecordset::appendOnly); m_pData.AddNew(); //adding data m_pData.m_barcode=m_Barcode; m_pData.m_articel=m_Articel; m_pData.m_price=m_Price; m_pData.m_content=m_Content; m_pData.m_unit=m_Unit; m_pData.m_category=m_Category; m_pData.m_tax=m_Mwst; //update and save data m_pData.Update(); //close recordset and database m_pData.Requery(); m_pData.Close(); [b]<-- hier[/b] db.Close(); [b]<--oder hier[/b]
-
Ich glaube, Du solltest auf das Requery() verzichten. Das Update() müsste völlig genügen.
-
Warum wird bei dir die Datenbank zweimal geschlossen????:
m_pData.Close(); db.Close();
Du machst doch nur oben m_pData.Open();!! Dann brauchst auch nur unten m_pData.Close() schreiben, fertig!! Oder versteh ich da was falsch?
Was ist db.Close()???Was bringt er denn eigentlich für einen Fehler??
MSDN_Hasser hat auch recht!! Update genügt!!
MfG
RunSeb
-
aha...
db.close() schliesst die datenbank die ich weiter oben aufgemacht hatte. Ist leider nicht hier im auszug im Quellcode dabei.
Ihre meint das wenn ich Update() mache ich kein close brauche oder bezieht ihr das auf Requery() ??
Komischer weise hat das wunderbar funktioniert. jetzt nicht mehr
-
Ich glaube, Du solltest auf das Requery() verzichten. Das Update() müsste völlig genügen.
Lies dir diesen Satz noch mal durch!!! GAAAAANNNNZ LAANGSAM!!!
Nee, Spaß beiseite. Natürlich muss die Datenbank mit m_pData.Close() geschlossen werden. Und natürlich auch die die weiter oben aufgemacht wurde. Hat mich nur verwirrt. Zieh dir doch mal ein paar Dokus über Requery() bzw. Update().
Die Zeile...
m_pData.Requery();
... kommentierst du einfach mal aus, probierst. Das könnte es wirklich schon gewesen sein.
Der Teufel steckt sehr oft im Detail was Datenbankanbindungen betrifft, darum ist es schwer als außenstehender deinen Fehler zu beheben. Wie sieht er denn nun aus!MfG
RunSeb
-
So,
hab lasse nur Requery weg.
Bekomme an der folgenden Stelle
m_pData.Close();
diese Fehlermeldung:
Unhandled Exception at 0x77f65a58 Kasse.exe: User breakpoint
Indian
-
Guten Morgen
Probiers mal so:
m_pData.Open(); m_pData.CanUpdate(); m_pData.AddNew(); //adding data m_pData.m_barcode=m_Barcode; m_pData.m_articel=m_Articel; m_pData.m_price=m_Price; m_pData.m_content=m_Content; m_pData.m_unit=m_Unit; m_pData.m_category=m_Category; m_pData.m_tax=m_Mwst; //update and save data m_pData.Update(); m_pData.Close(); db.Close();
Ich denke mal m_Barcode, m_Articel, ... sind Members von Eingabefeldern. Achte bitte
sehr darauf das die Datentypen übereinstimmen. Wenn du Access benutzt, erstellst eine Tabelle wo du z.B. die Spalte Price als 'int' hast und dann versuchst du über dein Programm die Felder mit einem 'float' oder 'CString' zu belegen bringt dein Maschinchen solche Fehlermeldungen. "UnbehandelteAusnahme". Versuch auch erstmal langsam vorzugehen in dem du nur eine Datenbank öffnest und schließt und nicht dazwischen gleich die nächste.
MfG
RunSebAchso: Setz mal hinter m_pData.CanUpdate() einen Haltepunkt, debugge mal, so siehts (bei TRUE) du ob deine Datenbank überhaupt zum Bearbeiten bzw. Einfügen oder Löschen von Datensätzen bereit ist.
Und noch was: UpdateData(TRUE); bestimmt die Richtung deines Datenaustausches. Vielleicht solltest du die am besten gleich nach m_pData.Open() festlegen!!
-
alder schwede..
in der Klasser Recordset hat die Field anzahl nicht gestimmt. Ich könnte mich in den... beissen.
m_barcode = "";
m_articelnr = "";
m_articel = "";
m_price = "";
m_content = "";
m_unit = "";
m_category = "";
m_tax = "";
m_stock = "";
m_description = "";
m_nFields = 10;
m_nDefaultType = dynaset;thx für eure hilfe. hab was dazu gelehrnt