mehrere Datenbanken bearbeiten



  • Hallo!
    Ich habe eine 2 Tabellen einer Dao-Datenbank mit Hilfe des Klassen-Ass. in ein Projekt eingebunden. Will ich jetzt etwas in eine der beiden Tabellen z.B. mit m_pSet->Edit() speichern kommt einer Fehlermeldung: "Aktualisieren nicht möglich: Datenbank oder Objekt schreibgeschützt!".Was mach ich falsch liegt es vielleicht daran, dass GetDefaultSQL beide Tabellen gleichzeitig zurückgibt:
    return T_("[Tabelle1],[Tabelle2]")?

    Danke schon mal im Vorraus

    Hansi



  • Erster Gedanke:
    Ist die Datenbankdatei schreibgeschützt oder archiviert ?



  • Nee nicks von beiden. Vielleicht noch ne Idee?

    thx
    Hansi



  • Morgen,
    könnte es vielleicht sein, dass die Werte, die du speicherst in einer Spalte nicht zugelassen sind. Beispielsweise Wenn es in einer Spalte keine doppelten Einträge geben darf oder so was in der Art.

    Gruß Dscho



  • Also ich denk daran liegts auch nicht, weil es ja klappt wenn ich nur eine Tabelle einbinde. Trotzdem danke! Noch ne Idee?

    Grüße

    Hansi



  • Hm keine Ahnung ?
    Aber wieso machst du nicht einfach für jede Tabelle eine eigene Klasse ?
    So mach ich das immer - funktioniert wunderbar 😉



  • Es liegt an Deiner GetDefaultSQL()-Impl.:

    Wenn Du Edit() aufrufst wird eine Update-Anweisung generiert. Eine Update-Anweisung kann aber immer nur eine Tabelle ändern.
    Versuch mal im Access eine Update-Anweisung mit meheren Tabellennamen zu formulieren. Es wird Dir nicht gelingen.

    Du wirst wohl ober übel für jede Tabelle eine Klasse bauen müssen.



  • Danke! Aber wie kann ich dann diese Variable m_pSet erzeugen und auch so benutzen? Ich bin nämlich leider Anfänger und kenne mich nicht so aus, bin aber auch erst 14.

    Grüße

    Vielen Dank

    Hansi



  • Bitte sag mir doch mal jemand wie ich diese variable m_pSet erzeuge, wenn ich jede Tabelle einzeln mache und dann m_pSet auch so verwenden kann. Ich weiß es echt nicht!

    Danke

    Hansi



  • Versuch es aus einer vom Assistenten generierten Anwendung abzuleiten.
    Das geht ganz gut.

    Prinzipiell:
    -neue Recordset-Klasse
    -CMyRecordset myRecordset in die Doc-Klasse
    -CMyRecordSet* m_pSet in View (oder wo du willst)
    -m_pSet=&GetDocument()->myRecordset

    if(!m_pSet->IsOpen())
       m_pSet->Open();
    


  • CrazyOwl schrieb:

    Versuch es aus einer vom Assistenten generierten Anwendung abzuleiten.
    Das geht ganz gut.

    Wenns nicht funktioniert kannst ja einfach noch mal fragen. 😉

    PS: Die Anbindung an die Datenbanktabelle machst du per Assistenten, oder...



  • Danke!Ich werds mal probieren. Aber eins muss ich mal bemerken du hast viel mehr ahnung als die typies in so manch anderem forum!

    Nochmals danke!

    Grüße

    Hansi



  • Habs jetzt mal ausprobiert, allerdings mit ODBC-Anbindung.
    Sollte jedoch egal sein, hab das gleiche vor ca. auch schon mit DAO gemacht, ist ziehmlich gleich.

    Kleine ToDo-Liste ;-):

    1.) Recordset-Klasse erstellen CMyRecordset

    2.) in der Doc.cpp:

    CMyRecordset m_Recordset;
    

    3.) in die Doc.cpp

    #include "MyRecordset.h"
    

    vor der Zeile

    #include "...Doc.h"
    

    4.) in der View.h, oder wo du sie brauchst

    CMyRecordset* m_pSet;
    

    5.) in die OnInitialUpdate der View-Klasse

    m_pSet = &GetDocument()->m_Recordset;
    
        if(m_pSet->IsOpen())
           m_pSet->Close();
    
        m_pSet->Open();
    

    6.) in die View.cpp

    #include "MyRecordset.h"
    

    vor

    #include "...doc.h"
    

    7.) in die <Anwendungsname>.cpp - Datei

    #include "MyRecordset.h"
    

    vor

    #include "...Doc.h"
    

    Viel Spass 🙂



  • FAQ 🙂


Anmelden zum Antworten