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!!!


Anmelden zum Antworten