Mohamed Amine:
Quiero configurar una fuente de datos a mi cuadro combinado cuando corro no hay error pero sigue mostrando ceros en el cuadro combinado
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"
Caius Jard:
Creo que el problema está en su SQL, MySQL y está realizando algún tipo de adición numérico prenom además nom y produciendo 0
Tratar
CONCAT(prenom, ' ', nom) as name
En su lugar sql. Yo prefiero usar concat en la mayoría de RDBMS para concatenar cadenas, porque es más consistente con su comportamiento en NULL - en SQL Server, usando el operador de concat más en algo como 'a' + null
resultado en NULL, pero en Oracle 'a' || null
es a
- tanto en el comportamiento es consistente CONCAT
Aquí hay un código completo con todas mis recomendaciones:
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
Consejos:
- no es necesario perder el tiempo con la conexión: dataadapter creará / apertura / cierre por usted
- utilizar una tabla de datos no es un conjunto de datos
- Usando utilizar
- utilizar el constructor de MySqlDataAdapter que toma un connectionstring y un comando en texto más corto y más cerca en este caso. Yo sólo uso el constructor que toma un DbConnection si estoy inscribir manualmente varios comandos en una transacción, etc.