Combobox mit DB-Werten füllen

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Combobox mit DB-Werten füllen

    Hallo,

    ich habe (vereinfacht gesehen) folgende Tabellen in einer Access 200 mdb:


    tab_Mitarbeiter
    ---------------------
    MitarbeiterID
    Name
    Vorname
    Abteilung (Zahlenwert)



    tab_Abteilung
    ---------------------
    AbteilungsID
    Abteilungsname


    Ich habe jetzt folgende Recordsets angelegt:

    rsMitarbeiter = "
    SELECT * FROM tab_Mitarbeiter, tab_Abteilung
    WHERE tab_Mitarbeiter.Abteilung = tab_Abteilung.AbteilungsID"

    rsAbteilung = "SELECT * FROM tab_Abteilung"

    (tab_Mitarbeiter.Abteilung und tab_Abteilung.AbteilungsID sind auch in Access miteinander verknüpft)

    Mit dem rsMitarbeiter fülle ich jetzt ein Mitarbeiter-Formular und mit rsAbteilung eine Data-Combobox:

    Quellcode

    1. Set dcombo.RowSource = RsAbteilung
    2. dcombo.ListField = "Abteilung"


    Ein Problem bekomme ich jetzt, wenn ich in der Combobox, die dem Mitarbeiter zugeordnete Abteilung anzeigen lassen möchte:

    Quellcode

    1. If Not IsNull(Rs.Fields("Abteilung").Value) Then dcombo.Text = Rs.Fields("Abteilung").Value



    Weil ich Rs.Fields("Abteilung").Value so nicht auslesen kann. Wenn ich aber in Access die SQL-Anweisung meines Mitarbeiter-Recordsets eingebe, funktioniert es. Kann mir da jemand weiterhelfen?

    Danke für jeden Hinweis,

    Andi

    Umgebung:
    Visual Basic 6.0
    Access 2000
    Windows XP
  • Ok, ich bin jetzt einen Schritt weiter und hab es so versucht:

    Quellcode

    1. 'unbind the current sources
    2. Set dcmAbteilung.DataSource = Nothing
    3. Set dcmAbteilung.RowSource = Nothing
    4. 'set the new binding - start with the string properties
    5. dcmAbteilung.DataField = "tab_Mitarbeiter.Abteilung" ' the bound field in master table
    6. dcmAbteilung.BoundColumn = "AbteilungsID" ' the bound field in detail table
    7. dcmAbteilungo.ListField = "tab_Abteilung.Abteilung" ' the display field in detail table
    8. Set dcmAbteilung.RowSource = RsAbteilung ' the detail table
    9. Set dcmAbteilung.DataSource = RsMitarbeiter ' the master table
    Alles anzeigen


    Leider zeigt es in meiner DataCombo immernoch nichts an...hat jemand eine Idee was ich falsch mache?

    Danke, Andi
  • Ich hab das Problem mittlerweile gelöst. Das Feld in der Primärschlüsseltabelle hieß genauso wie das in der Fremdschlüsseltabelle. Trotz Angabe von Tabellennamen vor das Feld, gab es wohl immer wieder Konflikte. Nach Umbenennung eines Datenfelds werden die Einträge problemlos angezeigt.

    Mein nächstes Problem habe ich aber jetzt, wenn ich einen in der DataCombo ausgewählten Eintrag speichern möchte. Ich habe es über

    RsMitarbeiter("AbteilungsNR" ) = dcmAbteilung.BoundText

    versucht, aber ich habe einen Fehler bekommen, weil dcmAbteilung.BoundText keinen Wert enthält...kann mir da jemand weiterhelfen?