Multicolom Combobox

Status
Niet open voor verdere reacties.

ongenae

Gebruiker
Lid geworden
20 okt 2010
Berichten
124
Hallo allemaal

Ik ben op zoek naar een (eenvoudige) code om in mijn combobox 2 kolommen te maken.
Dit is zo eenvoudig in MS Access, maar ik krijg het niet gedaan in VB.net

Ik wil een combobox die de klantnr en klantnaam weergeeft maar bij het selecteren enkel het klantnr opslaat in zijn geheugen om weg te schrijven naar de database.

Voorlopig heb ik dit in een sub staan (komt eigenlijk neer in 1 lange string).
Maar ik wil dus enkel het nummer onthouden, heb al gedacht om een substring te maken en dat te onthouden maar dit lukt mij ook niet:

Code:
Dim ds As New DataSet
        Dim daklantnr As OleDb.OleDbDataAdapter
        Dim daklantnaam As OleDb.OleDbDataAdapter
        Dim sqlklantnr As String
        Dim sqlklantnaam As String
        Dim inc As Integer
        Dim maxrows As Integer

        sqlklantnr = "SELECT klantnr FROM t_klanten"
        daklantnr = New OleDb.OleDbDataAdapter(sqlklantnr, con)
        daklantnr.Fill(ds, "klantnr")

        sqlklantnaam = "SELECT klantnaam FROM t_klanten"
        daklantnaam = New OleDb.OleDbDataAdapter(sqlklantnaam, con)
        daklantnaam.Fill(ds, "klantnaam")

        comboklant.Text = "Selecteer de klant"

        maxrows = ds.Tables("klantnr").Rows.Count
        inc = 0

        Do Until inc = maxrows
            comboklant.Items.Add(ds.Tables("klantnr").Rows(inc).Item(0) & " - " & ds.Tables("klantnaam").Rows(inc).Item(0))
            inc = inc + 1
        Loop

Iemand ideetjes?
1) ofwel een dorpdown met 2 kolomen (via datagridview ofzo)
2) ofwel met de lange tekst string waar ik het deel uithaal die ik nodig heb (dus alles voor " - ")
 
Is het belangrijk om beide te zien? anders kan je twee lists vullen. list <naam> geef je door aan de combobox, vervolgens sla je het overeenkomstige nummer uit de lijst <nummers> op.
 
Bedoel je hiermee 2 comboboxen naast elkaar, waarbij we de naam selecteren en dat hij dan automatisch het correcte nummer weergeeft?
 
Nee, eerst twee lijsten vullen met je data, en alleen de lijst met namen weergeven in de combobox

1 ja
2 nee
3 misschien

1-ste lijst: 1,2,3
2-de lijst: ja, nee, misschien

combobox.additems(lijst2)

met combobox.selectedindex (bijvoorbeeld "nee" -> item 2) kun je daarna uit de eerste lijst het juiste nummer kiezen: item2 komt overeen met "2"
 
Het kan soms zo eenvoudig zijn.
Voor dit werkt het inderdaad wel goed.

maar als ik toch twee kolomen wil weergeven naast elkaar zal ik waarschijnlijk wel moeten werken met een datagridview

Dit is mijn code om 1 waarde weer te geven en de ander waarde op te zoeken, om deze later te kunnen wegschrijven:

Code:
'VUL KLANTEN IN
        Dim ds As New DataSet
        Dim da As OleDb.OleDbDataAdapter
        Dim sql As String
        Dim inc As Integer
        Dim maxrows As Integer

        sql = "SELECT klantnaam FROM t_klanten"
        da = New OleDb.OleDbDataAdapter(sql, con)
        da.Fill(ds, "klantnaam")

        comboklant.Text = "Selecteer de klant"

        maxrows = ds.Tables("klantnaam").Rows.Count
        inc = 0

        Do Until inc = maxrows
            comboklant.Items.Add(ds.Tables("klantnaam").Rows(inc).Item(0))
            inc = inc + 1
        Loop


Code:
 Private Sub comboklant_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles comboklant.SelectedIndexChanged

        'HAAL KLANTNUMMER OP EN SLA HET OP IN DE STRING VWGESELECTEERDEKLANT
        Dim zoekwaarde As String
        Dim ds As New DataSet
        Dim da As OleDb.OleDbDataAdapter
        Dim sql As String

        zoekwaarde = comboklant.Text

        sql = "SELECT klantnr FROM t_klanten WHERE (klantnaam='" & zoekwaarde & "')"
        da = New OleDb.OleDbDataAdapter(sql, con)
        da.Fill(ds, "klantnr")

        vwgeselecteerdeklant = ds.Tables("klantnr").Rows(0).Item(0)

    End Sub
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan