Dialogfeld -> ODBC -> Interbase



  • Hallo!

    Ich hab eine Dialogfeldanwendung und greife auf eine Interbase DB zu. Hab dazu ein Klasse von CRecordset abgeleitet (<afxdb.h> auch überall eingefügt..).

    Die Membervariablen dieser Klasse sind auch verfügbar, ich kann aber auf sie vom Dialogfeld aus (Eingabefeld->Klassenassistent-> Membervariable hinzufügen) nicht zugreifen!

    Ich will das ganze mit Pointer realisieren ( habs so bei einer SDI Anweisung schon gemacht).

    double Einbinden::get_preis()
    {
    double p=8;
    Einbinden m_pSet;
    // Einbinden
    m_pSet = OnGetRecordset();
    m_pSet = new Einbinden(NULL);

    m_pSet->Open();
    m_pSet->Requery(); // Den Datensatz aktualiesieren
    m_pSet->MoveLast();// zum letzten Datensatz (aktuellen Preis gehen)
    p=m_BVK1; // Variable aus der DB
    return p;
    }

    Ich übernehm p in eine andere Memberfunktion von CAboutDlg und probiers so anzuzeigen. Wenn ich nun das ganze kompilier, erscheint zwar der Dialog, aber wenn ich ihn aktualisieren will, (Button eingefügt) stürzt das Programm ab.

    Wenn ich den Pointer mit OnGetRecordset init. dann kommen zwei Fehlermeldungen:
    error C2440: 'initializing' : 'int' kann nicht in 'class Einbinden *' konvertiert werden
    error C2065: 'OnGetRecordset' : nichtdeklarierter Bezeichner

    Hab schon gegoogelt, und eure Foren durchblättert, und Tutorials bei euch ausprobiert, bei Dialogfeldanw. hats aber noch nicht funktioniert, dass ich einen Wert aus der DB auslese, den Datensatz aktualisiere und den neuen Wert dann in meinem Programm weiterverwende.

    Mit connectionstrings hats auch nicht funktioniert und die MSDN hilft auch nicht wirklich weiter!

    Help??



  • Wie ist denn m_BVK1 definiert? Ich gehe ja stark davon aus, daß du dessen Wert noch aus der Datenbank holen solltest.

    Außerdem: Wozu legst du dir denn ein neues "Einbinden"-Objekt an? Du hast doch schon ein gültiges Objekt (*this), das alle nötigen Informationen besitzt:

    double Einbinden::get_preis() 
    { 
      double p;
      Open();
      Requery(); // Den Datensatz aktualisieren
      MoveLast();// zum letzten Datensatz (aktuellen Preis gehen)
    
      //woher bekommt m_BVK1 seinen Wert?
    
      p=m_BVK1;  // Variable aus der DB 
      return p; 
    }
    // Wenn dir das zu unübersichtlich ist, kannst du auch 'this->Open();' etc schreiben
    

    PS: CPP-Tags helfen, deine Code-Schnipsel lesen zu können
    PPS: Und es reicht, die Frage einmal zu stellen 😉


Anmelden zum Antworten