Accessdatenbank neuen Datensatz einfügen!
-
Hallo!
Ich habe Unix-Toms lösung probiert, nun will ich einen Datensatz einfügen, nur geht das nicht, hier der Code:cpp:
CString sODBCName = "Etikett"; CDatabase dbnumber; CNumber_Tbl number(&dbnumber); dbnumber.Open(sODBCName); if(dbnumber.IsOpen()) { number.Open(CRecordset::snapshot, "select * from Daten"); if (number.IsBOF()) { } else { number.AddNew(); number.m_Name = m_accname; number.m_Logo = m_logo; number.Update(); number.Requery(); number.MoveLast(); //MessageBox("hinzugefügt - VERARSCHT :D", 0, 0); } } dbnumber.Close();.h:
#include "afxdb.h" class CNumber_Tbl: public CRecordset { public: // Art der Felder long m_Nr; CString m_Name; CString m_Logo; CNumber_Tbl(CDatabase *pdb) : CRecordset(pdb) { m_Nr = 0; m_Name = _T(""); m_Logo = _T(""); m_nFields = 3; // Anzahl der felder in der Access } virtual void DoFieldExchange( CFieldExchange* pFX ) { // Fuer Datenaustausch //In Eckigen Klammern die Feldnamen in Access. pFX->SetFieldType(CFieldExchange::outputColumn); RFX_Long(pFX, _T("[Nr]"), m_Nr); RFX_Text(pFX, _T("[Name]"), m_Name); RFX_Text(pFX, _T("[Logo]"), m_Logo); } };ich denk bei select * from Daten wird was net stimmen

Kevin
-
Ich hab jetzt rausgefunden dass ich einen neuen Datensatz einfügen kann wenn ich das erste mal die Datenbank öffne, denn beim Start meiner anwendung lese ich alle Datensätze aus. Wenn ich in diesen Code ein AddNew einfüge klappt es, aber sobald ich das getan habe funktioniert es nicht mehr, vergesse ich hier was zu schließen?
void CKunden::OnInitialUpdate() { CString sODBCName = "Etikett"; CDatabase dbnumber; CNumber_Tbl number(&dbnumber); CFormView::OnInitialUpdate(); //MessageBox(0, "muh", 0, 0); dbnumber.Open(sODBCName); if(dbnumber.IsOpen()) { number.Open(CRecordset::snapshot, "select * from Daten"); if (number.IsBOF()) { } else { while(!number.IsEOF()) { // number.m_irgendwas stehen die daten // m_kundenliste.AddString(number.m_Vorname); // MessageBox(0,number.m_Vorname, 0, 0); m_kundenliste.AddString(number.m_Name); number.MoveNext(); //MessageBox(0, CKunden::m_artikelliste, 0, 0); //(*this)->m_artikelliste; } } number.MoveFirst(); number.AddNew(); number.m_Name = "test"; number.m_Logo = "cola"; //<----- GEHT number.Update(); number.Requery(); dbnumber.Close(); } //m_kundenliste.AddString("bla"); // TODO: Speziellen Code hier einfügen und/oder Basisklasse aufrufen }