MFC ODBC



  • Hallo,

    nach langer langer Zeit habe ich auch mal wieder ein Problem! 🙂

    Und zwar muss ich über ODBC auf eine Datenbank zugreifen. Jetzt habe ich ein kleines Problem:

    Ich würde gerne die Applikation als Dialog und nicht als SDI bzw. MDI schreiben.
    Sobald ich aber im Wizard Dialog auswähle, dann kann ich ja nicht mehr die "Datenbankunterstützung" im Wizard verwenden.

    Jetzt habe ich es zwar hinbekommen auf die DB zuzugreifen, ein "Select" zumachen, aber ich konnte nicht "kontrolliert" auf die Daten im Resultset zugreifen.

    Meine Vorgehensweise entnahm ich folgender Seite

    http://www.willemer.de/informatik/db/odbcmfc.htm (blauer Kasten gegen Ende der Seite)

    Jetzt würde ich gerne wissen, ob es irgendwo eine bessere Quelle gibt, als diese , die mir erklärt wie man ohne Wizard auf eine DB zugreifen kann.
    Oder vielleicht kann mir jemand von Euch erklären, wie eine strukturierte vorgehensweise für unten aufgeführte Schritte aussehen könnte.

    1. Aufbau zur Datenbank über ODBC
    2. Abfrage über "Select" auf eine oder mehrere Spalten einer Tabelle
    3. Ausgabe aller im ResultSet befindlichen Werte in ein Feld(Edit,Liste,...egal :))

    Vielen Dank für Euere Mühe



  • *seufz* Da macht man sich die Mühe und keiner guckt hin... 😞
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-164310.html



  • Hi,

    erstmal danke für Deine schnelle Hilfe! Deine Tutorial ist zwar richtig schön aufgezogen, aber leider auch nicht das, was ich suche.

    Zum besseren Verständnis:

    Ich will nicht die einzelnen Datensätze zur Anzeige (Punkt 3 vorhin war nur für Testzwecke gedacht, um überhaupt zu sehen, ob Daten ausgelesen werden) verwenden, sondern um mit Ihnen zu "arbeiten" und erst das Ergebnis anzeigen.

    Es müsste doch rein theortisch mögl. sein, auch ohne eine extra Klasse auszukommen, und die Datenbankverbindung und Abfrage innerhalb meiner Hauptklasse hinzubekommen.

    Bsp:

    User klickt auf einen Button, z.B. OK, und es werden Umsätze, die von Kunden erzeugt wurden, in ein Feld ausgegeben.

    So stelle ich mir ungefähr die Lösung vor:

    CDbDlg::OnButtonXXX {
    
    CDatabase db;
    CRecordset rs;
    db.OpenEx("");
    rs.Open(CRecordset::forwardOnly,"Select revenue from Customers", CRecordset::readOnly)
    .
    .
    .
    }
    

    So dann gehen nämlich meine Probleme los:

    Soweit ich das verstanden habe, muss ich dann mit meinem Cursor durch das ResultSet durchlaufen. Doch da habe ich keine Ahnung, wie groß das Set ist.

    Könnte mir vielleicht:

    rs.isEOF
    

    weiterhelfen?

    Danke

    P.S.: Jetzt glaub ich, dass ich hier auch den letzten verwirrt habe 🙂



  • Paulchen26 schrieb:

    erstmal danke für Deine schnelle Hilfe! Deine Tutorial ist zwar richtig schön aufgezogen, aber leider auch nicht das, was ich suche.

    Danke. 🙂
    Schade.

    Zum besseren Verständnis:

    Ich will nicht die einzelnen Datensätze zur Anzeige (Punkt 3 vorhin war nur für Testzwecke gedacht, um überhaupt zu sehen, ob Daten ausgelesen werden) verwenden, sondern um mit Ihnen zu "arbeiten" und erst das Ergebnis anzeigen.

    Sicher ist das möglich. Statt anzeigen kannst du auch damit rechnen. Z.B. ne Summe bilden.

    Es müsste doch rein theortisch mögl. sein, auch ohne eine extra Klasse auszukommen, und die Datenbankverbindung und Abfrage innerhalb meiner Hauptklasse hinzubekommen.

    Ja, ich glaube auch das geht. Aber das ist der Punkt, für den ich noch nen Autor suche. 😉
    Es geht auch über GetFieldValue und andere Funktionen, die ich leider noch nicht verstanden und daher auch nicht benutzt habe.

    Könnte mir vielleicht:

    rs.isEOF
    

    weiterhelfen?

    Jepp, auf jeden Fall. 🙂
    Schau dir nochmal Kapitel 5.1 an. Genau die Schleife brauchst du.

    Danke

    P.S.: Jetzt glaub ich, dass ich hier auch den letzten verwirrt habe 🙂

    Mach dir keine Hoffnungen, wir sind abgehärtet. :p


Log in to reply