einem Document mehrere Sichten zuordnen



  • Hallo,
    in meinem Document stehen die Daten.
    Ich möchte jetzt gerne diesem Dokument mehrere Views zuordnen.

    Der Hintergrund ist dieser:
    Die Daten in meinem Dokument sind die Ergebnisse verschiedener Datenbankabfragen. Die Anzahl der Ergebnis-Spalten der Datenbankabfragen sind unterschiedlich. Deshalb setze ich mehrere Views ein.

    Hat jemand eine Idee, wie ich das Problem lösen könnte ?

    Mein Programm läuft immer nur durch diese Zeile in der DoDataExchange-Funktion der ersten CViewEins:

    DDX_Control(pDX, IDC_MSFLEXGRID_EINS, m_flexiEins);
    

    und nicht wie gewünscht durch die DoDataExcahnge-Funktion der zweiten CViewZwei:

    DDX_Control(pDX, IDC_MSFLEXGRID_ZWEI, m_flexiZwei);
    

    Danke für alle Antworten



  • ist meine Frage zu ungenau formuliert ?

    Kann mir denn wirklich keiner weiterhelfen ?



  • Wer vom Standard abweicht kriegt meistens wenig Antworten, weils noch keiner gemacht hat. 😉
    Ich glaube, ich habe sowas mal bei Codeproject.com gesehen.

    Da wird es sicher einen Trick geben, damit alle Views angesprochen werden.


  • Mod

    Der primäre Ansatz hier ist UpdateAllViews zu verwenden.

    Oder hast Du schon Probleme mehrere Views anzulegen?



  • Die neue Klasse CViewZwei hab ich genauso wie es bei der alten Klasse CViewEins war, von CFormView abgeleitet.
    Das Programm läuft auch in die neue Klasse CViewZwei hinein.
    Es läuft aber nicht durch die Funktion DoDataExchange der neuen Klasse durch, wo die Zuordnung

    DDX_Control(pDX, IDC_MSFLEXGRID_ZWEI, m_flexiZwei);
    

    zum zweiten FlexGrid gemacht wird.

    Könnt Ihr mir weiterhelfen ?



  • in der MSDN-Library steht, durch Aufruf von:

    UpdateData(TRUE)
    

    wird DoDataExchange aktiviert.

    Mein Programm steigt aber dann in UpdateData(TRUE) aus. Die Fehlermeldung ist:

    "calling UpdateData without calling DoModal before"



  • ich könnte auch alles umbauen so dass ich nur noch eine View habe.

    Dann müßte ich aber nach dem Ereignis OnBnClickedButton unterscheiden, welche Daten gerade angezeigt werden und abhängig davon die Daten in das erste Excel-Sheet oder in das zweite Excel-Sheet übertragen.

    Dem Ereignis OnBnClickedButtonTransferToExcel() praktisch einen Parameter SheetExcelEins, SheetExcelZwei übergeben.



  • mein Problem habe ich jetzt gelöst.

    Ich verwende jetzt wie angekündigt nur noch eine CView.

    In dieser CView deklariere ich eine Funktion Set_Output(int out).
    Die Variable out ist global definiert in CView.

    Aus der Dokumentenklasse wird die Funktion Set_Output(int out) aufgerufen. Out hat abhängig davon, welche Tabelle ausgegeben werden sollte, einen entsprechenden Wert.

    void CDB1View::Set_Output(int out)
    {
    	output=out; //output global variable in CDB1View()	
    }
    

    In CView kann der übergebene Wert dann verarbeitet werden und die zwei verschiedenen Wege (Ausgabe TabelleEins, Ausgabe TabelleZwei) können eingeschlagen werden.
    Ist zwar nicht so elegant, mit einer globalen Variable zu handlen, aber mir fällt nichts besseres ein.

    Danke trotzdem für alle Antworten


Anmelden zum Antworten