Zugriff von einer neuen klasse auf eine Datenbank über ODBC
-
moin moin
ich habe da ein Problem ich möchte von einer neu erstellten Klasse auf eine ACCESS Datenbank zugreifen das Problem ist wenn ich wie immer mit folgenden Befehl:
m_pSet->MoveNext //zu nächsten Datenbankpunkt springen
macht er das nicht !!!!
Dann habe ich ein Objekt von der Klasse CView erstellt. Diese sollte eine Methode da aufrufen die dann das aus führt aber dann bekomme ich folgenden Fehler
error C2248: "CFinalV1View::CFinalV1View" : Kein Zugriff auf protected Element, dessen Deklaration in der Klasse "CFinalV1View" erfolgte
und wenn ich die Privat setzte stürtzt mein Programm ab!!!
-
MoveNext ist aber eine Funktion von CRecordset und nicht von einem CView.
Von wo aus versuchst du den Zugriff denn?
-
ich versuche von meiner neuen Klasse auch die Datenbank zuzugreifen
-
Du hast deine Datenbank anscheinend protected deklariert, was auch schön und gut ist. Nun kannst du nicht einfach von einer anderen Klasse darauf zugreifen.Da musst du erst eine get-Methode schreiben.
-
das mit der get methode habe ich aus probiert jetzt kommt der selbe Fehler wenn ich ein Objekt von der Klasse CView generieren will.
meine Neu klasse:
void Sensor::OnSchreiben() { CFinalV1View hallo; hallo.OnSuchen(); }
die get Methode unter der CView:
void CFinalV1View::OnSuchen(int) { int m_a=0; switch(m_a) { case 1: { m_pSet->MoveFirst(); // springt zu ersten Punkt in der Datenbank while(m_sen!= m_pSet->m_Sensor) { m_pSet->MoveNext(); //geht zum nächsten datensatz } break; } case 2: { m_pSet->MoveFirst(); // springt zu ersten Punkt in der Datenbank while(m_bew!= m_pSet->m_Befehl) { m_pSet->MoveNext(); //geht zum nächsten datensatz } break; } } }
und wenn ich das ausführe kommt der fehler mit protectet!!!
-
afro82 schrieb:
das mit der get methode habe ich aus probiert jetzt kommt der selbe Fehler wenn ich ein Objekt von der Klasse CView generieren will.
meine Neu klasse:
void Sensor::OnSchreiben() { CFinalV1View hallo; hallo.OnSuchen(); }
So kannst du keinen View erstellen, der weis noch nicht mal
wo er die Daten herhaben soll. Du könntest der Klasse einen Pointer
auf dein Dokument geben, und darüber dir den View pointer holen,
oder direkt den View per Pointer ansprechen.afro82 schrieb:
die get Methode unter der CView:
void CFinalV1View::OnSuchen(int) { int m_a=0; switch(m_a) { case 1: { m_pSet->MoveFirst(); // springt zu ersten Punkt in der Datenbank while(m_sen!= m_pSet->m_Sensor) { m_pSet->MoveNext(); //geht zum nächsten datensatz } break; } case 2: { m_pSet->MoveFirst(); // springt zu ersten Punkt in der Datenbank while(m_bew!= m_pSet->m_Befehl) { m_pSet->MoveNext(); //geht zum nächsten datensatz } break; } } }
und wenn ich das ausführe kommt der fehler mit protectet!!!
Ist klar, die Methode ist Protected, oder ?
Das kannst du dann nicht von ausserhalb der Klasse über eine Instanz aufrufen.
-
das erste mit dem pointer habe ich nicht verstanden kannst du mir dafür ein beispiel schreiben. wäre nett von dir schon mal danke im vor raus
du hast recht die die View ist protectete:
protected: // Nur aus Serialisierung erzeugen CFinalV1View(); DECLARE_DYNCREATE(CFinalV1View)
aber wenn ich die privat setzte stürzt mein programm beim ausführen der funktion unter sensor ab!!!