Mohamed Amine:
Eu quero definir uma fonte de dados para a minha caixa de combinação quando eu corro não existe nenhum erro, mas ele continua mostrando zeros na combobox
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"
Caio Jard:
Acho que o problema está na sua sql e mysql está realizando algum tipo de adição numérico no prenom mais nom e produzindo 0
Experimentar
CONCAT(prenom, ' ', nom) as name
Em sua sql vez. Eu prefiro usar concat na maioria dos RDBMS para concatenar cadeias, porque é mais coerente com o seu comportamento on nulos - em sqlserver, usando o operador concat de mais em algo como 'a' + null
resultado em NULL, mas no Oracle 'a' || null
é a
- tanto no comportamento CONCAT é consistente
Aqui está um código completo com todas as minhas recomendações:
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
dicas:
- você não precisa mexer com a conexão: DataAdapter irá criar / abrir / fechar para você
- usar uma tabela de dados e não um conjunto de dados
- usar Usando
- usar o construtor de MySqlDataAdapter que leva um connectionstring e um comando texto- mais curto e mais próximo, neste caso. Eu só uso o construtor que leva um DbConnection se estou inscrever manualmente vários comandos em uma transação etc