Combobox mit Werten aus MySQL-Tabelle füllen funktioniert so nicht



  • Hallo Ihr!

    Ich habe eine MySQL-Datenbank mit einer Tabelle Agenten (id, vorname, nachname)

    Ich möchte also eine combobox mit dem vollen Namen der Agenten füllen, damit ich da einen Agenten z.B. Franz Müller auswählen kann.

    AnsiString sqlAgent;
    
        cbxAgenten->Clear();
        cbxAgenten->Text = "[Name]";
    
        sqlAgent = "SELECT vorname, nachname FROM nb_agenten";
    
        qryNb_agenten->Close();
        qryNb_agenten->SQL->Clear();
        qryNb_agenten->SQL->Add(sqlAgent);
        qryNb_agenten->Open();
        qryNb_agenten->First();
    
        while(!qryNb_agenten->Eof){
         	cbxAgenten->Items->Add(qryNb_agenten->FieldValues["nachname"]);
            qryNb_agenten->Next();
        }
    

    Leider stehen keine Werte in der Combobox. Woran liegt das?

    Liebe Grüße Nora



  • Hallo

    ich kann keinen Fehler im Codeausschnitt sehen.
    Gibt es noch mehr relevanten Code? Wird vielleicht die ComboBox irgendwo wieder gelöscht? Wird der Ausschnitt überhaupt erreicht? Und natürlich : sind überhaupt Daten in der betreffenden Tabelle?
    Geh mal mit dem Debugger jeden Schritt durch.

    bis bald
    akari



  • Hi!

    Danke für deine Antwort...

    Also der komplette relevante Code ist in einem OnChange-Ereignis. Vielleicht liegt es daran?!?

    AnsiString sqlAgent;
    
        cbxAgenten->Items->Clear();
        cbxAgenten->Text = "<kein Agent ausgewühlt>";
    
        sqlAgent = "SELECT nachname FROM nb_agenten";
    
        qryNb_agenten->Close();
        qryNb_agenten->SQL->Clear();
        qryNb_agenten->SQL->Add(sqlAgent);
        qryNb_agenten->Open();
        qryNb_agenten->First();
        ShowMessage("Test1");
        while(!qryNb_agenten->Eof)
        {
         	cbxAgenten->Items->Add(qryNb_agenten->FieldValues["nachname"]);
            qryNb_agenten->Next();
            ShowMessage("Test2");
        }
    
        cbxAgenten->Text = "<kein Agent ausgewählt>";
    

    Zu den ShowMessages kommt er gar nicht hin.
    Gelöscht wird die ComboBox nirgends denk ich... Und in der Tabelle stehen Datensätze drin.

    Also wird der Code überhaupt nicht erreicht oder?
    Warum nicht?

    Liebe Grüße Nora



  • Hallo

    Zu den ShowMessages kommt er gar nicht hin.

    Wird denn überhaupt der Event ausgelöst? Ist diese Methode wirklich einem Event zugewiesen? Wenn ja, welchem Objekt?
    Ich vermute, mit OnChange meinst du TDataSource::OnDataChange?

    bis bald
    akari



  • Hallo!

    Danke für deine Hilfe akari!

    Also ich habe den Quellcode von oben im Ereignis von TDataSource::OnDataChange probiert auch an verschiedenen anderen Stellen hab ich rumgebastelt... Aber es funktioniert nicht.
    Wo muss ich den hinschreiben, damit es geht?

    Liebe Grüße Nora



  • Hallo

    geh mal mit dem Objektinspektor auf die DataSource, die diese besagte Methode auslösen soll. Im Tab Ereignisse schaust du, ob dort bei OnDataChange diese Methode eingetragen ist. Wenn nicht, wähle die Methode dort aus.

    Statt der ShowMessage kannst du noch besser den Debugger zur Laufzeitkontrolle nehmen. Wie das geht, kannst du hier lesen
    http://www.junix.ch/bcb/help/debug.html
    Fang mit der ersten echten Zeile Code (keine Deklaration) der Methode an und verfolge den Verlauf.

    bis bald
    akari


Anmelden zum Antworten