none
Eine Spalte aus einer Dataset-Tabelle in Combobox binden RRS feed

  • Frage

  • Hallo Leute,

    ich möchte aus einer Tabelle nur eindeutige Werte und von dem Ergebnis nur eine Spalte in einer Combobox anzeigen lassen.

    Ich habe folgendes versucht:

    Dim distinctTable As Data.DataTable = DSet_Atom.Tables("tblTask").DefaultView.ToTable(True, "olCompanies")
    CmbMandanten.DataSource = distinctTable.Columns("olCompanies")
    

    Aber irgendwie klappt das ganze nicht. Die Spalte olCompanies können mehrere Werte haben, und die möchte ich auf eindeutige Werte filten. Und diese Spalte soll dann in einer Combobox angezeigt werden.

    Ich hoffe jemand kann mir helfen.

    Vielen Dank.

    Gruß Ahmed

    Donnerstag, 17. Januar 2019 19:10

Antworten

  • Hi Ahmed,
    nachfolgend eine kleine Demo als Anregung. Es wird Distinct in LinQ genutzt und das Ergebnis in einer Liste persistiert, die dann als DataSource genutzt wird.

    Public Class Form1
    
      Private CmbMandanten As New ComboBox With {.Dock = DockStyle.Top}
      Private DSet_Atom As New DataSet
    
      Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Me.Controls.Add(CmbMandanten)
        Me.LoadData()
    
        CmbMandanten.DataSource = (From dr In DSet_Atom.Tables("tblTask").AsEnumerable
                                   Select dr.Item("olCompanies") Distinct).ToList
      End Sub
    
      Private Sub LoadData()
        With DSet_Atom
          With .Tables
            With .Add("tblTask")
              .Columns.Add("olCompanies", GetType(String))
              .Rows.Add("B")
              .Rows.Add("A")
              .Rows.Add("C")
              .Rows.Add("A")
              .Rows.Add("B")
              .Rows.Add("A")
              .Rows.Add("D")
              .Rows.Add("A")
            End With
          End With
        End With
      End Sub
    
    End Class


    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP für Developer Technologies)
    Meine Homepage mit Tipps und Tricks

    • Als Antwort markiert Ahmed Martens Donnerstag, 17. Januar 2019 22:06
    Donnerstag, 17. Januar 2019 19:46

Alle Antworten

  • Hi Ahmed,
    nachfolgend eine kleine Demo als Anregung. Es wird Distinct in LinQ genutzt und das Ergebnis in einer Liste persistiert, die dann als DataSource genutzt wird.

    Public Class Form1
    
      Private CmbMandanten As New ComboBox With {.Dock = DockStyle.Top}
      Private DSet_Atom As New DataSet
    
      Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Me.Controls.Add(CmbMandanten)
        Me.LoadData()
    
        CmbMandanten.DataSource = (From dr In DSet_Atom.Tables("tblTask").AsEnumerable
                                   Select dr.Item("olCompanies") Distinct).ToList
      End Sub
    
      Private Sub LoadData()
        With DSet_Atom
          With .Tables
            With .Add("tblTask")
              .Columns.Add("olCompanies", GetType(String))
              .Rows.Add("B")
              .Rows.Add("A")
              .Rows.Add("C")
              .Rows.Add("A")
              .Rows.Add("B")
              .Rows.Add("A")
              .Rows.Add("D")
              .Rows.Add("A")
            End With
          End With
        End With
      End Sub
    
    End Class


    --
    Viele Grüsse
    Peter Fleischer (ehem. MVP für Developer Technologies)
    Meine Homepage mit Tipps und Tricks

    • Als Antwort markiert Ahmed Martens Donnerstag, 17. Januar 2019 22:06
    Donnerstag, 17. Januar 2019 19:46
  • Hallo Peter,

    einfach perfekt. Hat auf Anhieb hingehauen.

    Ich tue mich immer noch mit den Datenbanken schwer.

    Ist schon schwierig, wenn man noch die Denke von VB6 und DAO hat.

    Gruß Ahmed

    Donnerstag, 17. Januar 2019 21:43