コンボボックスにvb.netの設定データソース

モハメド・アミン:

私は誤りがよん実行したときに、私のコンボボックスにデータソースを設定したいが、それはコンボボックスで示すゼロを保持します

Dim cnx As New MySqlConnection("datasource=localhost;database=bdgeststock;userid=root;password=")
        Dim cmd As MySqlCommand = cnx.CreateCommand
        Dim da As MySqlDataAdapter
        Dim ds As New DataSet
        If ConnectionState.Open Then
            cnx.Close()
        End If
        cnx.Open()
        cmd.CommandText = "SELECT idf,(prenom + ' ' + nom) AS NAME FROM fournisseur "
        da = New MySqlDataAdapter(cmd)
        cnx.Close()
        da.Fill(ds)
        da.Dispose()
        ComboBox1.DataSource = ds.Tables(0)
        ComboBox1.ValueMember = "idf"
        ComboBox1.DisplayMember = "NAME"

キーズJard:

私はこの問題は、あなたのSQLであると思うし、MySQLはprenomプラスNOMの数字以外のいくつかの並べ替えを実行すると0を生産しています

試します

CONCAT(prenom, ' ', nom) as name

あなたのSQLの代わりに。私は、NULL値にその動作とより一貫性のあるであるため、文字列を連結するために、ほとんどのRDBMSでの連結を使用して好む- SQLServerのでは、とプラスのようなものの上に、連結演算子を使用して'a' + nullNULLでなく、Oracleでの結果は'a' || nullあるa-の両方にCONCATの動作は一貫しています

ここに私のすべての勧告に完全なコードは次のとおりです。

Dim cnstr = "datasource=localhost;database=bdgeststock;userid=root;password="
Dim cmd = "SELECT idf, CONCAT(prenom, ' ', nom) AS nom FROM fournisseur "
Using da As New MySqlDataAdapter(cmd, cnstr)
    Dim dt As New DataTable
    da.Fill(dt)
    ComboBox1.DataSource = dt
    ComboBox1.ValueMember = "idf"
    ComboBox1.DisplayMember = "nom"
End Using

チップ:

  • あなたは周りの接続を台無しにする必要はありません:データアダプターはあなたのためのオープン/クローズ/それを作成します。
  • データテーブルでないデータセットを使用します
  • 使用使用
  • この場合は短く、近いテキストベースれたconnectionString、コマンドを取るをMySqlDataAdapterのコンストラクタを使用します。私は、私は手動で取引などで複数のコマンドを登録していた場合にはDbConnectionを取るコンストラクタを使用します

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=372754&siteId=1