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
    RunSeb 😃

    Achso: 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 🙂 👍


Anmelden zum Antworten