モハメド・アミン:
私は誤りがよん実行したときに、私のコンボボックスにデータソースを設定したいが、それはコンボボックスで示すゼロを保持します
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' + null
NULLでなく、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を取るコンストラクタを使用します