COMBOBOX DADOS

BRUNOGOMES 12/10/2012 15:31:20
#411939
Pessoal, estou populando uma combobox dessa maneira:

Dim con As New MySqlConnection([Ô]server=localhost; user id=root; password=admin; database=workshopmanager[Ô])
Dim dados As New DataSet
Dim comando As String = [Ô]SELECT * FROM veiculo[Ô]
Dim adaptador As New MySqlDataAdapter(comando, con)
adaptador.Fill(dados, [Ô]veiculo[Ô])

With cmb_Veiculo
.ValueMember = [Ô]cod_Veiculo[Ô]
.DataSource = dados.Tables(0)
.DisplayMember = [Ô]marca_Veiculo[Ô]
End With


O que eu quero saber é se no .displaymember tem como colocar mais de uma coluna... queria colocar alem do marca_veiculo, colocar tbm: [Ô]modelo_Veiculo[Ô] e [Ô]ano_Veiculo[Ô]
ADHEL 12/10/2012 15:45:00
#411944
Assim da certo
é apenas adaptar ao seu projeto


sql = [Ô]select municipio,id from cidades order by municipio[Ô]
Comando = New MySqlCommand(sql, Conexao)
Dim leitor As MySqlDataReader = Comando.ExecuteReader

While leitor.Read
With cboCidades
.Items.Add(leitor.Item([Ô]municipio[Ô]).ToString() & [Ô] [Ô] & leitor.Item([Ô]id[Ô]).ToString)
End With
End While
leitor.Close()

Aqui pego o municipio e o ID
BRUNOGOMES 12/10/2012 16:31:30
#411949
com esse exemplo, aparace os dados certin.. mas na hora do insert, ele n salva!
ADHEL 12/10/2012 16:35:40
#411950
é mais fácil jogar em textbox,Para depois fazer a gravação
BRUNOGOMES 12/10/2012 16:52:38
#411952
mais no meu exemplo nao tem como.... quero q apareca os dados no combobox e de o insert nele mesmo...
esta colocando no combobox assim:
Dim con As New MySqlConnection([Ô]server=localhost; user id=root; password=admin; database=workshopmanager[Ô])
con.open()
Dim sql As String = [Ô]SELECT * FROM veiculo[Ô]
Dim comando = New MySqlCommand(sql, con)
Dim leitor As MySqlDataReader = comando.ExecuteReader
While leitor.Read
With cmb_Veiculo
.ValueMember = [Ô]cod_Veiculo[Ô]
.Items.Add(leitor.Item([Ô]marca_Veiculo[Ô]).ToString() & [Ô] [Ô] & leitor.Item([Ô]modelo_Veiculo[Ô]).ToString() & [Ô] [Ô] & leitor.Item([Ô]ano_Veiculo[Ô]).ToString)
End With
End While
leitor.Close()


E esta dando o INSERT assim:
Private Sub btn_Salvar_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn_Salvar.Click
btnSalvar()
Dim con As New MySqlConnection([Ô]server=localhost; user id=root; password=admin; database=workshopmanager[Ô])
Dim cmd As New MySqlCommand
Dim reader As MySqlDataReader
cmd = con.CreateCommand
con.Open()

With cmd
.CommandType = CommandType.Text
.CommandText = [Ô]INSERT INTO manutencao (descricao_Manutencao, data_Manutencao, hora_Manutencao, valor_Manutencao, cod_Mecanico, cod_Servico, cod_Veiculo) VALUES (@desc, @data, @hr, @valor, @codVeiculo)[Ô]
.Parameters.Add([Ô]@desc[Ô], MySqlDbType.VarChar)
.Parameters([Ô]@desc[Ô]).Value = txt_descricao.Text
.Parameters.Add([Ô]@data[Ô], MySqlDbType.VarChar)
.Parameters([Ô]@data[Ô]).Value = DateTimePicker1.Text
.Parameters.Add([Ô]@hr[Ô], MySqlDbType.VarChar)
.Parameters([Ô]@hr[Ô]).Value = txt_hora.Text
.Parameters.Add([Ô]@valor[Ô], MySqlDbType.VarChar)
.Parameters([Ô]@valor[Ô]).Value = lbl_valortext.Text
.Parameters.Add([Ô]@codVeiculo[Ô], MySqlDbType.VarChar)
.Parameters([Ô]@codVeiculo[Ô]).Value = cmb_Veiculo.SelectedValue

If cmb_Veiculo.Text = [Ô][Ô] Then
btnAdicionar()
MessageBox.Show([Ô]é necessário que todos os campos com * sejam preenchidos![Ô], [Ô]Aviso[Ô], MessageBoxButtons.OK, MessageBoxIcon.Information)
con.Close()
Else
cmd.ExecuteNonQuery()
MessageBox.Show([Ô]Agendamento cadastrado com sucesso![Ô], [Ô]Aviso[Ô], MessageBoxButtons.OK, MessageBoxIcon.Information)
.CommandText = [Ô]SELECT cod_Manutencao FROM manutencao WHERE data_Manutencao = @data[Ô]
reader = cmd.ExecuteReader
reader.Read()
codManutencao = reader.GetString([Ô]cod_Manutencao[Ô])
lbl_cod.Text = codManutencao
con.Close()
End If
con.Close()
End With
End Sub


mas o veiculo nao esta cadastrando!!
BRUNOGOMES 12/10/2012 23:28:12
#411972
alguem ae pode ajudar ?
ADHEL 12/10/2012 23:47:53
#411973
Apresenta erro ?
Se sim, qual ?
Se não apresenta erro
altera essa linha
.Parameters([Ô]@codVeiculo[Ô]).Value = cmb_Veiculo.SelectedValue
para
.Parameters([Ô]@codVeiculo[Ô]).Value = cmb_Veiculo.text
BRUNOGOMES 12/10/2012 23:59:51
#411974
deixando: .Parameters([Ô]@codVeiculo[Ô]).Value = cmb_Veiculo.SelectedValue

da esse erro: [Ô]Column [ô]cod_Veiculo[ô] cannot be null[Ô]

e mudando para: .Parameters([Ô]@codVeiculo[Ô]).Value = cmb_Veiculo.text

da esse erro: [Ô]Incorrect integer value: [ô]Peugeout 202 2002 (dados q estavam na combobox)[ô] for column [ô]cod_Veiculo[ô] at row 1[Ô]


o erro ocorre na linha: cmd.ExecuteNonQuery()
ADHEL 13/10/2012 00:24:25
#411976
Quando estava assim :
Parameters([Ô]@codVeiculo[Ô]).Value = cmb_Veiculo.SelectedValue
Não estava passando valor nenhum por isso a mensagem
[Ô]Column [ô]cod_Veiculo[ô] cannot be null[Ô]
Coluna não aceita nulo

Quando mudaste para
Parameters([Ô]@codVeiculo[Ô]).Value = cmb_Veiculo.text
Passava esse valor
Peugeout 202 2002
como na tabela esse campo está como integer não vai aceitar
Coloca esse campo como varchar


BRUNOGOMES 13/10/2012 00:35:15
#411977
mas tipow.. o correto seria pegar esses valores marca, modelo e ano e transformar em cod_Veiculo pq ai ele vai aceitar integer
pq o cod_Veiculo é a chave estrangeira e tem q guardar valor integer soh...

nesse codigo anterior do começo do topico, ele fazia isso.. mas eu nao conseguia com ele, colocar mais de uma coluna na combobox, só conseguia colocar a marca:
com oq vc passou deu pra colocar a marca, modelo e o ano...

With cmb_Veiculo
.ValueMember = [Ô]cod_Veiculo[Ô]
.DataSource = dados.Tables(0)
.DisplayMember = [Ô]marca_Veiculo[Ô]
End With

ADHEL 13/10/2012 00:46:39
#411978
Da uma olhada nessa imagem
A chave estrangeira tem que ser o ID dessa tabela
Através dele você pegará os dados que precisa,desse modo ele pode ser integer
Página 1 de 2 [20 registro(s)]
Tópico encerrado , respostas não são mais permitidas