MFC ODBC Driver Problem



  • Silvercreast schrieb:

    Wie kannst du das eigentlich an der Nummer feststellen.

    Was? Dass die Fehlermeldung unvollständig war? Jeder Fehlermeldung beginnt mit error Cxxxx:.
    Das ist übrigens immer noch nicht die ganze Meldung. Die nachfolgenden Zeilen bis zum nächsten "error" gehören auch noch dazu.

    Bisher kann ich nur sagen, dass TRowset::Close mehrdeutig ist. Wie sieht denn die Deklaration von CtblDatenbankAccessor aus?



  • Nein ich meinte wie du an Hand der Nummer den Fehler erkennst??
    Das andere es darf doch eigentlich gar nicht sein das ich in der ATLDBCLI.H was ändern muss oder?? Ich habe übrigens den Fehler gelöst, ich musste CRecordset:: vor das Close schreiben also:

    void CRecordset::close()
    

    Jetzt habe ich ganz viele andere Fehler 😮 unteranderem den den du genannt hast, jetzt weiss ich überhaupt nicht mehr weiter 😕

    gruss Silver



  • Silvercreast schrieb:

    Nein ich meinte wie du an Hand der Nummer den Fehler erkennst??

    Dazu sind die Nummern doch da. 😕

    Das andere es darf doch eigentlich gar nicht sein das ich in der ATLDBCLI.H was ändern muss oder??

    Du DARFST in atlbdcli.h nichts ändern.

    Ich habe übrigens den Fehler gelöst, ich musste CRecordset:: vor das Close schreiben also:

    "Gelöst" würde ich das nicht nennen. Lass die Finger von Systemheaderdateien.

    Jetzt habe ich ganz viele andere Fehler 😮

    Wundert mich nicht.

    jetzt weiss ich überhaupt nicht mehr weiter 😕

    Zweiter Versuch: 🙄
    Wie sieht denn die Deklaration von CtblDatenbankAccessor aus?

    Kann es sein, dass du MFC-ODBC und ATL-OLEDB-Consumer wild gemischt hast?



  • MFK schrieb:

    Dazu sind die Nummern doch da. 😕

    Ja aber wie weiss ich welche Fehlermeldung für welchen Fehler steht 😕

    Du DARFST in atlbdcli.h nichts ändern.

    Hab ich ja gesagt

    "Gelöst" würde ich das nicht nennen. Lass die Finger von Systemheaderdateien.

    Ganz schnell die Lösung gelöscht 🙄

    Zweiter Versuch: 🙄
    Wie sieht denn die Deklaration von CtblDatenbankAccessor aus?

    class CtblDatenbankAccessor   :   public CRecordset 
    //CRecordset darf ich wahrscheinlich auch net Vererben  :rolleyes: 
    {
    public:
    	LONG m_IDPKDatenbank;
    	TCHAR m_Regal[51];
    	TCHAR m_Interpret[51];
    	TCHAR m_Titel[51];
    	TCHAR m_Rubrik[51];
    	TCHAR m_CD[51];
    
    BEGIN_COLUMN_MAP(CtblDatenbankAccessor)
    	COLUMN_ENTRY(1, m_IDPKDatenbank)
    	COLUMN_ENTRY(2, m_Regal)
    	COLUMN_ENTRY(3, m_Interpret)
    	COLUMN_ENTRY(4, m_Titel)
    	COLUMN_ENTRY(5, m_Rubrik)
    	COLUMN_ENTRY(6, m_CD)
    END_COLUMN_MAP()
    
    	// Sie können diese Funktion aufrufen, wenn Sie einen Datensatz einfügen und Sie
    	// alle Felder initialisieren wollen, wenn Sie nicht alle von diesen explizit setzen.
    	void ClearRecord()
    	{
    		memset(this, 0, sizeof(*this));
    	}
    };
    

    Kann es sein, dass du MFC-ODBC und ATL-OLEDB-Consumer wild gemischt has
    Zwt?

    Das kann sehr gut sein da ich das speichern nach diesem link der oben ist gemacht habe.

    Kannst du mir bei meinem Kuddelmuddel helfen???



  • Silvercreast schrieb:

    Ja aber wie weiss ich welche Fehlermeldung für welchen Fehler steht 😕

    MSDN Library.

    Das kann sehr gut sein da ich das speichern nach diesem link der oben ist gemacht habe.

    Da steht aber nichts von CRecordset. Der Link beschreibt ATL OLEDB consumer templates. Das ist weder MFC noch ODBC, da hat CRecordset nichts zu suchen.

    Du musst dich entscheiden, welche Datenbankschnittstelle du benutzen willst.



  • Ja dann die ODBC weil das laden funktioniert ja schon.
    Das Problem ist nur ich hab mir die informationen von verschiedenen Seiten geholt.
    Und ich dachte, das bei Codeproject die anleitung für ODBC gilt. Da ich ja den ODBC Driver hinzufügen musste.

    Muss ich jetzt die ALTDBCLI.H und die tblDatenbank.H löschen??
    Und was muss ich denn dann machen??



  • Wenn du ODBC der MFC benutzen willst brauchst du nur die afxdb.h einbinden (wird automatisch in der stdafx.h gemacht, wenn du beim Projekt "Datenbankunterstützung hinzufügen" eingeklickert hattest.

    So und dann brauchst du eigentlich nur noch die Klassen CDatabase und CRecordSet. Wie die zu benutzen sind, steht inkl. beispielen in der MSDN Library..

    Was hast du denn genau vor? Daten aus Tabellen lesen/speichern ?



  • Ja ich habe eine klitze kleine Access Datenbank mit einer Tabelle und dir will ich lesen und speichern das lesen funktioniert ja schon nur das speichern noch nicht.



  • Dann hast du zwei Möglichkeiten:

    1. einen SQL-Insert schreiben (generieren) und mit CDatabase::ExecuteSQL abschicken.

    2. ein CRecordset aufmachen (mit Open, genau wie beim lesen) und dann einfach mit CRecordset::AddNew eine weitere Zeile einfügen, Werte zuweisen und dann mit CRecordset::Update das ganze commiten (abschliessen).



  • Ja das mit dem AddNew kenn ich ja , das Problem wie komm ich an meine Datenbank Variablen ran ?? Irgendwie muss ich doch die Daten in diese Variablen packen??


Anmelden zum Antworten