4

コンボボックスに SQL Result を入力しようとしていますが、問題はデータテーブル形式でデータを処理していると思います。

    Dim sql As String
    Dim sqlquery As String
    Dim ConnectionString As String
    ConnectionString = "Data Source=(local);Initial Catalog=Control;Persist Security Info=True;User ID=user;Password=pass"
    sqlquery = "Select dbName from Databases"

    Using connection As SqlConnection = New SqlConnection(ConnectionString)
        connection.Open()
        Using conn As SqlCommand = New SqlCommand(sqlquery, conn)
            Dim rs As SqlDataReader = comm.ExecuteReader
            Dim dt As DataTable = New DataTable
            dt.Load(cmboxDatabaseName)
        End Using 'comm
    End Using 'conn

プログラムを実行すると、悲しい空のコンボボックスが表示されます。

4

2 に答える 2

6

ほぼ正しいですが、DataReader を使用してデータテーブルをロードする必要があります。
次に、DataTable を Combo の DataSource に割り当てます

Using connection As SqlConnection = New SqlConnection(ConnectionString)
    connection.Open()
    Using comm As SqlCommand = New SqlCommand(sqlquery, connection)
            Dim rs As SqlDataReader = comm.ExecuteReader
            Dim dt As DataTable = New DataTable
            dt.Load(rs)
            ' as an example set the ValueMember and DisplayMember'
            ' to two columns of the returned table'
            cmboxDatabaseName.ValueMember = "IDCustomer"
            cmboxDatabaseName.DisplayMember = "Name"
            cmboxDatabaseName.DataSource = dt
    End Using 'comm
End Using 'conn

また、コンボボックスValueMemberプロパティを、将来の処理のキーとして使用する列の名前に設定し、DisplayMemberプロパティを、ユーザーが選択するテキストとして表示する列名に設定することもできます。

于 2013-06-06T20:26:54.810 に答える