Auf verschiedene Access-DBs dynamisch zugreifen



  • Hallo,

    in meinem Prog möchte ich zwischen 2 verschiedenen Access-DBs zur Laufzeit wechseln und auf deren Daten zugreifen. Ich habe 2 verschiedene Klassen cRecSet1 und cRecSet2 und davon 2 Instanzen m_Set1 und m_Set2 in cMyView.h eingefügt.

    #include "cRecSet1.h"
    #include "cRecSet2.h"
    
    class CMyView : public CFormView
    {
    public:
    cRecSet1 m_Set1;   //die Klassen cRecSet1 und cRecSet2 sind von CDaoRecordset abgeleitet 
    cRecSet2 m_Set2;
    ...
    }
    

    Nun habe ich bisher in den Funktionen den Code für jeden einzelnen Recordset geschrieben. Also alles doppelt:

    void CMyView::InitRecordset()
    {   	
    if (bSelected1)   //bSelected1 und bSelected2 können im Toolbar auf True oder 
    {                 // False geschaltet werden 
    	if (!m_Set1.IsOpen()) 
    		m_Set1.Open();
    
         Set1.MoveFirst();
         ...  //hier ist noch jede Menge mehr Code
    }
    if (bSelected2)
    {
    	if (!m_Set2.IsOpen()) 
    		m_Set2.Open();
    
          Set2.MoveFirst();
          ... //hier ist noch jede Menge mehr Code
    }
    

    Kann man das irgendwie besser lösen?

    Das Problem ist, dass die Recordset-Instanzen global sein müssen, da ich von mehreren Funktionen (OnButtonNext(), OnButtonPrev() etc..) drauf zugreifen will. Ich dachte da an eine einzige Instanz von CDaoRecordset m_Set in
    CMyView.h von der ich den Pfad zu Laufzeit ändern kann. Leider sind alle Versuche bereits gescheitert.

    Bitte helft mir! 😞



  • Man kann das lösen. Man schreibt sich eine Wrapper (www.sensorme.de/dateien/odbc.zip)



  • Danke für die Antwort. Nur leider weiss ich noch wie ich diese Wrapper einsetzen kann, da ich noch nicht so lange dabei bin. Ausserdem hatte ich vergessen zu sagen, dass ich DAO benutze. Kennt jemand noch eine andere Lösung? Code?



  • Diesen Wrapper setzt du ein indem du die header includest. Diese Header muss die Lib finden können. Zur verwendung einfach mal in die header schauen. ist eigentlich selbsterklärend.


Anmelden zum Antworten