Daten in Datenbank schreiben mit MFC



  • Mein Problem ist ich habe ein Recordset Klasse angelegt aber beim Kompilieren bekomme ich solche Errors obwohl ich noch gar nix gemacht habe..
    Woran kann dieses Problem liegen??

    //recorddd.cpp
    c:\cvs\projekte\statistik\recorddd.h(14) : error C2504: 'CRecordset' : Basisklasse undefiniert
    c:\cvs\projekte\statistik\recorddd.h(16) : error C2629: 'class recorddd (' unerwartet
    c:\cvs\projekte\statistik\recorddd.h(16) : error C2238: Unerwartete(s) Token vor ';'
    c:\cvs\projekte\statistik\recorddd.h(46) : error C2061: Syntaxfehler : Bezeichner 'CFieldExchange'
    C:\CVS\Projekte\statistik\recorddd.cpp(17) : error C2653: 'CRecordset' : Keine Klasse oder Namespace
    C:\CVS\Projekte\statistik\recorddd.cpp(17) : error C2065: 'classCRecordset' : nichtdeklarierter Bezeichner
    C:\CVS\Projekte\statistik\recorddd.cpp(19) : error C2065: 'CDatabase' : nichtdeklarierter Bezeichner
    C:\CVS\Projekte\statistik\recorddd.cpp(19) : error C2065: 'pdb' : nichtdeklarierter Bezeichner
    C:\CVS\Projekte\statistik\recorddd.cpp(20) : error C2448: '<unbekannt>' : Funktionsstil-Initialisierung scheint eine Funktionsdefinition zu sein
    C:\CVS\Projekte\statistik\recorddd.cpp(20) : error C2143: Syntaxfehler : Fehlendes ';' vor ':'
    C:\CVS\Projekte\statistik\recorddd.cpp(21) : error C2448: '<unbekannt>' : Funktionsstil-Initialisierung scheint eine Funktionsdefinition zu sein
    C:\CVS\Projekte\statistik\recorddd.cpp(50) : error C2065: 'CFieldExchange' : nichtdeklarierter Bezeichner
    C:\CVS\Projekte\statistik\recorddd.cpp(50) : error C2065: 'pFX' : nichtdeklarierter Bezeichner
    C:\CVS\Projekte\statistik\recorddd.cpp(51) : error C2448: '<unbekannt>' : Funktionsstil-Initialisierung scheint eine Funktionsdefinition zu sein
    C:\CVS\Projekte\statistik\recorddd.cpp(79) : error C2653: 'CRecordset' : Keine Klasse oder Namespace
    C:\CVS\Projekte\statistik\recorddd.cpp(84) : error C2653: 'CRecordset' : Keine Klasse oder Namespace


  • Mod

    CRecordset ist unbekannt.

    Du hast den Header afxdb.h nicht included.
    Siehe Doku, CRecordset Klasse:
    http://msdn.microsoft.com/en-us/library/92bcy0kw(VS.80).aspx



  • du bisch der beschte->(du bist der beste)



  • Hallo ich muss euch nochmal was fragen

    try
    		{
    			RAdministA rsAdmin(GetDocument()->m_pDatabase);
    			rsAdmin.Open(CRecordset::dynaset, NULL, CRecordset::none);
    
    			rsAdmin.AddNew();
    			rsAdmin.m_UserName		= data.m_sAnwendername;
    			rsAdmin.m_Adminrechte	= "r";
    			rsAdmin.Update();
    
    			rsAdmin.m_strFilter.Format("[UserName] = '%s'", data.m_sAnwendername);
    			rsAdmin.Requery();
    		}
    		catch (CDBException *e)
    		{
    			e->Delete();
    		}
    

    ich fülle meine Tabelle wie Oben aus. Es gibt noch eine Spalte , die UserId heißt. Man sieht es nicht im Code, weil es wird in SQL befehle automatisch generiert. (1,2,3,4 ....). UserId ist mein PrimaryKey und ich werde es in eine andere Tabelle als Fremdschlüssel benutzen.
    Wie kann ich es als fremdschlüssel in die andere Tabelle eintragen ? kann mir bitte jemand helfen.
    LG


  • Mod

    ODBC ist nicht mein Gebiet. Ich benutze nur OLE_DB.

    Setze das Id-Feld mit in den Recordset. Aber bevor Du Update aufrufst Setze das Feld mit SetFieldDirty auf FALSE.
    Danach mit MoveLast zurück und das müsste es gewesen sein.



  • rsAdmin.AddNew();
    			rsAdmin.m_UserId		= data.m_iAnwenderid;
    			rsAdmin.m_UserName		= data.m_sAnwendername;
    			rsAdmin.m_Adminrechte	= "r";
    			rsAdmin.SetFieldDirty(&rsAdmin.m_UserId,FALSE);
    			rsAdmin.Update();
    

    tue ist das so auf False setzen..
    Und wo und wie benutze ich MOveLast ?? in die andere Recordset(recordset für die andere TAbelle )?????

    LG


  • Mod

    Ne! IMHO nach dem Update um die vergebene ID zu bekommen.

    Dann kannst Du den anderen Recordset mit dem foreign key der vergeben wurde benutzen.



  • sorry was bedeutet IMHO ich habe wirklich nix kapiert ???


  • Mod

    IMHO = In my humble opinion -> Googlen

    Du sollst MoveLast nach dem Update ausführen, damit Du die geänderten Daten bekommst...



  • Du bisch wirklich der Beschte 😉


Anmelden zum Antworten