Übergabe eines CRecordset* an eine Dialogklasse
-
Folgende Situation: ich lade in meinem Programm aus einer DLL einen Logindialog. Die Benutzerinformationen sind in einer Datenbank gespeichert. Da ich den Dialog möglichst universell einsetzen möchte dachte ich mir, die Recordsetklasse an den Dialog zu übergeben und die eigentlichen Abfragen dann im Dialog durchzuführen. Vorteil ist, dass theoretisch jedes Programm eine andere Datenbank verwenden kann und dies Einstellung im Programm durchgeführt werden kann, ohne den Dialog aus der DLL zu modifizieren. Das Konstrukt sieht wie folgt aus:
//dialog CLogin::CLogin(CMitarbeiter* pMitarbeiterSet, CPasswort* pPasswortSet,CWnd* pParent /*=NULL*/) : CDialog(CLogin::IDD, pParent) , m_szBenutzername(_T("")) , m_szPasswort(_T("")) , m_szProgrammname(_T("")) { m_pMitarbeiterSet=pMitarbeiterSet; m_pPasswortSet=pPasswortSet; if (!m_pMitarbeiterSet->IsOpen()) { AfxMessageBox(_T("Konstruktor: Die externe Klasse ist nicht geöffnet"), MB_OK); } }
Im Programm habe ich jetzt eine Instanz der Recordset-Klasse erstellt und je nach dem ob ich open aufgerufen habe oder nicht wird die Messagebox aus dem Konstruktor ausgegeben.
Greife ich aber in anderen Memberfunktionen (OnButton....) auf m_pMitarbeiterSet zu, so ist die Satzklasse nie geöffnet. Warum?
Möglicherweise ist das Desig auch Mist, aber ich habe derzeit keine andere Idee, wie ich das umsetzen könnte.