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
    
    }
    

Anmelden zum Antworten