CRecordSet



  • Hallo Leute,

    ich habe mir eine SDI-Anwendung erstellt die auf CRecordSet basiert.
    Jetzt habe ich noch einen zusätzlichen Dialog als CDialog erstellt, und habe mit erschrecken festgestellt das ich nicht auf die Datenbank zugreifen kann. Wie kann ich das machen, das ich darauf zugriff habe?
    Wäre toll mit beispielcode 🙂

    danke im voraus 🙂
    beto



  • Variable von CRecordset übergeben,
    Oder Klasse von CRecordset ableiten, wenns ein Dialogbasiertes Projekt ist...

    Devil



  • ja, aber wie?
    Hast Du nicht ein Beispiel vür mich?

    mfg Beto



  • Deine Viewklasse hat doch eine Variable m_pSet;
    Diese musst du an den Dialog übergeben, also,
    im Dialog muss auch eine Membervariable von CMeinProjektSet vorhanden sein...

    Devil



  • Hallo nochmal,

    ich habe jetzt stundenlang rumprobiert, aber ich bekomme es nicht hin, wo muss ich den was eintragen? 😕

    mfg Beto 🙂



  • Du hast eine Dialog klasse...
    Klick im Treecontrol auf das klassensymbol, (rechtsklick)
    dann Membervariable hinzufügen. Typ C...Set.
    Übergabe:
    Vor DeinDlg.doModal();
    DeinDlg.m_set= m_pSet;

    Devil



  • Hallo, schon wieder ich 🙂

    ich habe jetzt folgendes gemacht:

    void CTraveglasView::OnNeuKunde() 
    {
        CListCtrl* pList = (CListCtrl*) GetDlgItem(IDC_LIST1);
    
        CKundenDlg dlg;
    
        dlg.m_set = m_pSet;
        if(IDOK == dlg.DoModal())
        {
            int nItem = pList->GetItemCount();
    
            UpdateData(TRUE);
            pList->InsertItem(nItem, m_pSet->m_Vorname,0);
            pList->SetItemText(nItem,1,m_pSet->m_Nachname);
            m_firstname = dlg.m_strVorname;
    
            m_pSet->m_Vorname = dlg.m_strVorname;
            m_pSet->m_Nachname = dlg.m_strNachname;
    
        }
    

    Vorher habe ich mit CTraveglasSet m_set eingerichtet in der CKundenDlg.
    Nun kommt aber die Fehlermeldung "Operator "=" ist nicht verfügbar! 😕
    Warum das?

    mfg Beto



  • Hallo fangen wir nochmal an denn du gehst da falsch ran sehe ich.

    aus welcher DB möchtest du Daten in deine Anwendung
    SQL Access oder Excel zum Beispiel.

    Hast du eine ODBC Verbindung erstellt

    Ich kann dir da etwas per mail zukommenlassen aber ich muß wissen für was

    Vossy



  • Wisst du nun im Dialog auf die daten zugreifen, oder einfach
    nur daten eingeben? Letzteres wäre einfacher, ersteres ist auch
    nicht schwer...

    void CTraveglasView::OnNeuKunde() 
    {
        CListCtrl* pList = (CListCtrl*) GetDlgItem(IDC_LIST1);
    
        CKundenDlg dlg;
    
        dlg.m_set = m_pSet;
        if(IDOK == dlg.DoModal())
        {
            int nItem = pList->GetItemCount();
    
            UpdateData(TRUE);
            pList->InsertItem(nItem, m_pSet->m_Vorname,0);
            pList->SetItemText(nItem,1,m_pSet->m_Nachname);
            m_firstname = dlg.m_strVorname;
            m_pSet->Edit();
            m_pSet->m_Vorname = dlg.m_strVorname;
            m_pSet->m_Nachname = dlg.m_strNachname;
            m_pSet->Update();
    
        }
    

    Devil



  • Hallo
    danke für eure hilfe, aber ich glaube ihr versteht da etwas falsch.
    ich bekomme bei der Zeile dlg.m_set = m_pSet // diese Fehlermeldung:yProjects\Traveglas\TraveglasView.cpp(152) : error C2582: 'CTraveglasSet' : 'Operator =' ist nicht verfuegbar
    Fehler beim Ausführen von cl.exe.

    Es ist so das ich eine Access-Datenbank einbinde, ich möchte sowohl als auch im Dialog, Daten eingeben als auch das die Datenbank gefüllt wird! Muss ich in der Dialogklasse vielleicht noch irgend etwas deklarieren als nur CTraveSet m_set? 😕

    mfg beto



  • Dann füge der C...Set einen Copykkonstruktor ein.
    =operator muss dafür überschrieben werden.

    Devil



  • hallo

    Ich will ja nicht nerven, aber so versiert bin ich noch nicht in der MFC!
    Kannst mir villeicht ein beispiel geben? 🙂

    mfg Beto



  • Das ist **Standard C++...
    also eigentlich sollte man sowas können, bevor man mit der MFC anfängt...
    Aber dann bin ich mal nicht so...

    Tank& Tank::operator =(const Tank &)
    {
        return (*this);
    }
    

    statt Tank halt dein Klassenname.

    Devil

    Automatische Rechtschreibkorrektur wurde aktiv.

    **



  • Hi 🙂 🙂

    peinlich, ich weiß 😞

    Es mag schon sein, das das Standard ist um in der MFC zu Programmieren.
    Das dumme ist nur, das man nicht weiß, wo man was Deklariert.
    Da finde ich, ist die MFC etwas unübersichtlich!
    Naja, auf jeden fall haut das mit deinem Beispiel oben nicht hin.
    Kannste vieleicht mir nochmal verraten wo ich das deklariere 😃
    mfg Beto



  • Original erstellt von devil81:
    **```cpp
    dlg.m_set = m_pSet;

    Ich würd das Recordset nicht kopieren. Vergiss das mit dem Copy-Ctor, die Fehlermeldung macht schon Sinn.
    Deklariere es lieber als Zeiger.

    // Im Dialog:
    CTraveglasSet *m_set;
    


  • Hallo nochmal wieder ich 😕

    Ich bin am verzweifeln:
    ich habe jetzt einen Zeiger eingestellt, dabei kommt diese Fehlermeldung
    C:\Programme\Microsoft Visual Studio\MyProjects\Traveglas\TraveglasView.cpp(157) : error C2039: 'm_pSet' : Ist kein Element von 'CTraveglasSet'

    Ich verstehe das nicht, das kann doch nicht so schwer sein, aus einen Dialog, aus der SDI-Anwendung hervorgerufen eine Datenbank anzusprechen 😕
    Wißt ihr, ich habe nur noch 6 Wochen zeit, das Programm was ich schreiben möchte, fertig zu bekommen, denn am 29.09.02 weiß ich nicht ob mir mein Sohn dann noch zeit dazu lässt!
    Also Bitte HILFE!!!!!!

    mfg Beto



  • Hallo,

    hat keiner eine Lösung für mich? 😞

    Bitte, Hilfe !!!

    mfg Beto



  • Was soll den der Dialog machen?

    Devil

    p.s. nur keine PANIK!



  • Hallo Devil,

    also, auf der Form - der SDI habe ich eine CListCtrl, in diese möchte ich z.B. die Daten übertragen die ich im Dialog eingebe (kann sein das das der flasche weg ist) nun ist es so das die SDI auf eine Datenbank zugreift, wo meinetwegen der Name, Adresse usw schon drin steht. Nun rufe ich im Menue den Befehl "Neuer Kunde" auf, worauf sich ein Dialog öffnet, was ich dort eingebe soll nun in die Ansicht der SDI übertragen werden, aber eben mit den Dantenbankelementen, die in der SDI ja, wie sagt man, bestand haben. ich habe in der Dialogklasse CKundenDlg.h eine neue member deklariert " CTraveglasSet* m_set, das versuche ich dann in der View mit

    CKundenDlg dlg;
    dlg.m_set->m_pSet;
    

    aufzurufen, klappt aber nicht, mit dem operator bin ich nicht klar gekommen, hast vielleicht gesehen von Thomas80d, nun sagt er aber das m_pSet nicht \Traveglas\TraveglasView.cpp(157) : error C2039: 'm_pSet' : Ist kein Element von 'CTraveglasSet'. 😕 😕
    Weißt Du was damit anzufangen, weißt Du was ich vorhabe - kam das rüber?
    Danke übrigens für deine Bemühungen 🙂
    mfg
    Beto



  • Du musst auch den Pointer erst initialisieren, bzw.
    mit m_pSet abgleichen!!
    Wenn du im Dialog nur Daten eingibst, dann kannst du doch
    am schluss die daten an deine View einzeln übergeben,
    und diese dort mittels m_pSet setzen.

    Devil


Anmelden zum Antworten