Problem mit Weitergabe/Weiterverarbetung des Rückgabewerts (wxWidgets)



  • Hallo zusammen,

    ich habe folgendes Problem bei der Rückgabe von gefundenen, bzw. nicht gefundenen Datensätzen aus einer Datenbank.
    Der folgende Code-Ausschnitt funktioniert soweit:

    std::auto_ptr<dba::DbResult> res(ar.GetIStream()
            .sendQuery(dba::SQL("select VAL1, VAL2, VAL3, [...] from TABLEXY where VAL1=':s' and VAL2=':s'")
                .into(db_val1)
                .into(db_val2)
                .into(db_val3)
                . [...]    << form_val1 << form_val2));
    
        while(res->fetchRow())
        {
            txt_val1->SetValue(db_val1); [...]
        }
    

    Ich greife also mittels Debea auf eine MySQL-Datenbank zu, setze ein SELECT-Statement ab und fülle in der while-Schleife die wxTextCtrl-Felder mit den zurück gegebenen Werten. Soweit, so gut.

    Wenn KEIN Datensatz gefunden wird, soll nun aber eine kleine Textbox mit einer entsprechenden Nachricht erscheinen.
    Mir geht es nun lediglich darum, abzufragen ob ein Datensatz gefunden wurde oder nicht.
    Und hier sehe ich vermutlich den Wald vor lauter Bäumen nicht...

    Frage ich den Return-Wert von DbResult::fetchRow() ab, etwa in dieser Form...

    bool recordFound = res->fetchRow();
    
        if(recordFound == TRUE)
            std::cout << "Record found: " << recordFound << std::endl;
        else
            std::cout << "No record found: " << recordFound << std::endl;
    

    ... erhalte ich entweder 1 oder 0 zurück, was ja schonmal OK ist (die Ausgabe auf Konsole erfolgt hier nur aus Testgründen).
    Aber auch wenn nun ein Datensatz gefunden wird, der Return-Wert also 1 beträgt, werden die wxTextCtrl-Felder in der darauf folgenden while-Schleife nun NICHT mehr gefüllt?!
    Kommentiere ich dagegen die o.g. if-/else-Verzweigung aus, werden die Felder wieder gefüllt.

    Mein Problem liegt also darin, mit dem korrekt zurückgegebenen Wert aus der DB weiterarbeiten zu können.
    Wenn also der Return-Wert 1 beträgt sollen zusätzlich auch die ensprechenden Textfelder gefüllt werden.
    Momentan ist aber leider nur ein "entweder... oder..." möglich...

    Wie schon erwähnt, handelt es sich vermutlich nur um eine Kleinigkeit. Nur komme ich einfach nicht drauf...

    Vielen Dank im voraus!

    Gruß,
    kyusho


Anmelden zum Antworten