DADOS EM COMBOBOX E INSERT
Pessoal, estou com uma duvida..
Meu banco mysql possui duas tabelas: [Ô]Cliente e Veiculo[Ô]. A tabela veÃculo possui Foreign Key cod_Cliente da tabela Cliente.
Estou populando uma combobox em um form de cadastro de Veiculo, com o nome_Cliente da tabela Cliente.
Na hora de fazer o INSERT no veÃculo, quero inserir os dados do veiculo e o nome do cliente q aparecer na combobox quero transformá-lo no código do cliente q está esse nome e colocar no campo cod_Cliente da tabela VeÃculo. Dá pra enteder rs??
Fiz isso aqui mas nao funciona:
O erro acontece no .ExecuteNonQuery() e o visual studio manda isso: [Ô]Input string was not in a correct format.[Ô]
Meu banco mysql possui duas tabelas: [Ô]Cliente e Veiculo[Ô]. A tabela veÃculo possui Foreign Key cod_Cliente da tabela Cliente.
Estou populando uma combobox em um form de cadastro de Veiculo, com o nome_Cliente da tabela Cliente.
Na hora de fazer o INSERT no veÃculo, quero inserir os dados do veiculo e o nome do cliente q aparecer na combobox quero transformá-lo no código do cliente q está esse nome e colocar no campo cod_Cliente da tabela VeÃculo. Dá pra enteder rs??
Fiz isso aqui mas nao funciona:
Private Sub frm_Veiculos_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim con As New MySqlConnection([Ô]server=localhost; user id=root; password=admin; database=workshopmanager[Ô])
Dim dados As New DataSet
btnPadrao()
con.Open()
Dim comando As String = [Ô]SELECT * FROM cliente[Ô]
Dim adaptador As New MySqlDataAdapter(comando, con)
adaptador.Fill(dados, [Ô]cliente[Ô])
With cmb_Cliente
.ValueMember = [Ô]cod_Cliente[Ô]
.DataSource = dados.Tables(0)
.DisplayMember = [Ô]nome_Cliente[Ô]
End With
con.Close()
End Sub
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
cmd = con.CreateCommand
con.Open()
With cmd
.CommandType = CommandType.Text
.CommandText = [Ô]INSERT INTO veiculo (placa_Veiculo, marca_Veiculo, modelo_Veiculo, ano_Veiculo, chassi_Veiculo, observacoes_Veiculo, horadata_Veiculo, cod_Cliente) VALUES (@placa, @marca, @modelo, @ano, @chassi, @obs, @hr, @codCiente)[Ô]
.Parameters.Add([Ô]@placa[Ô], MySqlDbType.Int32)
.Parameters([Ô]@placa[Ô]).Value = txt_placa.Text
.Parameters.Add([Ô]@marca[Ô], MySqlDbType.VarChar)
.Parameters([Ô]@marca[Ô]).Value = txt_marca.Text
.Parameters.Add([Ô]@modelo[Ô], MySqlDbType.VarChar)
.Parameters([Ô]@modelo[Ô]).Value = txt_modelo.Text
.Parameters.Add([Ô]@ano[Ô], MySqlDbType.VarChar)
.Parameters([Ô]@ano[Ô]).Value = txt_ano.Text
.Parameters.Add([Ô]@chassi[Ô], MySqlDbType.VarChar)
.Parameters([Ô]@chassi[Ô]).Value = txt_chassi.Text
.Parameters.Add([Ô]@obs[Ô], MySqlDbType.VarChar)
.Parameters([Ô]@obs[Ô]).Value = txt_obs.Text
.Parameters.Add([Ô]@hr[Ô], MySqlDbType.VarChar)
.Parameters([Ô]@hr[Ô]).Value = lbl_cadastroText.Text
.Parameters.Add([Ô]@codCliente[Ô], MySqlDbType.VarChar)
.Parameters([Ô]@codCliente[Ô]).Value = cmb_Cliente.ValueMember
.ExecuteNonQuery()
End With
con.Close()
End Sub
O erro acontece no .ExecuteNonQuery() e o visual studio manda isso: [Ô]Input string was not in a correct format.[Ô]
Boa tarde,
DICA: Crie uma classe de conexão para o seu projeto. Pelo que percebi a cada SUB você passa: Host, Senha, Usuário... Já pensou na seguinte situação... Se precisar alterar o endereço do banco, você teria que procurar todas as subs e alterar, já com uma classe de conexão, basta alterar a classe que surtirá efeito em todo o projeto, ou seja, tudo em um único lugar.
Da forma que está fazendo para o Cod_Cliente você está passando cod_Cliente e não o valor da chave, repare que nas ultimas linhas mudei de ValueMember para SelectedValue, que é o valor do ID do Cliente.
Tente assim:
DICA: Crie uma classe de conexão para o seu projeto. Pelo que percebi a cada SUB você passa: Host, Senha, Usuário... Já pensou na seguinte situação... Se precisar alterar o endereço do banco, você teria que procurar todas as subs e alterar, já com uma classe de conexão, basta alterar a classe que surtirá efeito em todo o projeto, ou seja, tudo em um único lugar.
Da forma que está fazendo para o Cod_Cliente você está passando cod_Cliente e não o valor da chave, repare que nas ultimas linhas mudei de ValueMember para SelectedValue, que é o valor do ID do Cliente.
Tente 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 MySqlCommandr
cmd = con.CreateCommand
con.Open()
With cmd
.CommandType = CommandType.Text
.CommandText = [Ô]INSERT INTO veiculo (placa_Veiculo, marca_Veiculo, modelo_Veiculo, ano_Veiculo, chassi_Veiculo, observacoes_Veiculo, horadata_Veiculo, cod_Cliente) VALUES (@placa, @marca, @modelo, @ano, @chassi, @obs, @hr, @codCiente)[Ô]
.Parameters.Add([Ô]@placa[Ô], MySqlDbType.Int32)
.Parameters([Ô]@placa[Ô]).Value = txt_placa.Text
.Parameters.Add([Ô]@marca[Ô], MySqlDbType.VarChar)
.Parameters([Ô]@marca[Ô]).Value = txt_marca.Text
.Parameters.Add([Ô]@modelo[Ô], MySqlDbType.VarChar)
.Parameters([Ô]@modelo[Ô]).Value = txt_modelo.Text
.Parameters.Add([Ô]@ano[Ô], MySqlDbType.VarChar)
.Parameters([Ô]@ano[Ô]).Value = txt_ano.Text
.Parameters.Add([Ô]@chassi[Ô], MySqlDbType.VarChar)
.Parameters([Ô]@chassi[Ô]).Value = txt_chassi.Text
.Parameters.Add([Ô]@obs[Ô], MySqlDbType.VarChar)
.Parameters([Ô]@obs[Ô]).Value = txt_obs.Text
.Parameters.Add([Ô]@hr[Ô], MySqlDbType.VarChar)
.Parameters([Ô]@hr[Ô]).Value = lbl_cadastroText.Text
.Parameters.Add([Ô]@codCliente[Ô], MySqlDbType.VarChar)
.Parameters([Ô]@codCliente[Ô]).Value = cmb_Cliente.SelectedValue
.ExecuteNonQuery()
End With
con.Close()
End Sub
Coloquei o selectedvalue no combobox: cmb_Cliente.SelectedValue
e o erro mudou para [Ô]Fatal error encountered during command execution.[Ô]
e o erro mudou para [Ô]Fatal error encountered during command execution.[Ô]
Coloquie assim:
With cmd
.CommandType = CommandType.Text
.CommandText = [Ô]INSERT INTO veiculo (placa_Veiculo, marca_Veiculo, modelo_Veiculo, ano_Veiculo, chassi_Veiculo, observacoes_Veiculo, horadata_Veiculo, cod_Cliente) VALUES (@placa, @marca, @modelo, @ano, @chassi, @obs, @hr, @codCiente)[Ô]
.Parameters.Add([Ô]@placa[Ô], MySqlDbType.Int32, txt_placa.Text)
.Parameters.Add([Ô]@marca[Ô], MySqlDbType.VarChar,txt_marca.Text)
.Parameters.Add([Ô]@modelo[Ô], MySqlDbType.VarChar, txt_modelo.Text)
.Parameters.Add([Ô]@ano[Ô], MySqlDbType.VarChar, txt_ano.Text)
.Parameters.Add([Ô]@chassi[Ô], MySqlDbType.VarChar, txt_chassi.Text)
.Parameters.Add([Ô]@obs[Ô], MySqlDbType.VarChar, txt_obs.Text)
.Parameters.Add([Ô]@hr[Ô], MySqlDbType.VarChar, lbl_cadastroText.Text)
.Parameters.Add([Ô]@codCliente[Ô], MySqlDbType.VarChar, cmb_Cliente.SelectedValue)
.ExecuteNonQuery()
End With
Oxi... com esse codigo que vc passou ae...
Agora ele quer transformar tudo pra Integer...
pra todos ele da esse erro: [Ô]Conversion from string [Ô] HGA-1234[Ô] to type [ô]Integer[ô] is not valid.[Ô] <<< exemplo da placa
mas ta dando esse erro em todos...
Agora ele quer transformar tudo pra Integer...
pra todos ele da esse erro: [Ô]Conversion from string [Ô] HGA-1234[Ô] to type [ô]Integer[ô] is not valid.[Ô] <<< exemplo da placa
mas ta dando esse erro em todos...
Citação:Oxi... com esse codigo que vc passou ae...
Agora ele quer transformar tudo pra Integer...
Mas o código que você passou primeiro lá já está colocando como se o campo no mysql fosse Integer, onde tem MySqlDbType...., é o tipo do campo no banco de dados, nos parâmetros tem que ser o mesmo tipo.
Ex: Placa do carro é to tipo Varchar então seria
.Parameters.Add([Ô]@placa[Ô], MySqlDbType.Varchar, txt_placa.Text)
ahh foi mal.. na placa eu coloquei errado ae... eh varchar mesmo..
mas os outros mesmo sendo varchar ta dando o mesmo erro!! nao sei pq, ta acontecendo só com esse codigo q vc mandou...
mas os outros mesmo sendo varchar ta dando o mesmo erro!! nao sei pq, ta acontecendo só com esse codigo q vc mandou...
Qual mensagem de erro ocorre?
A mensagem que eu passei lah da placa.. da em todos
[Ô]Conversion from string [Ô] oq eu escrevi na textbox [Ô] to type [ô]Integer[ô] is not valid.[Ô]
[Ô]Conversion from string [Ô] oq eu escrevi na textbox [Ô] to type [ô]Integer[ô] is not valid.[Ô]
Esses campos no banco eles não estão como INT?
banco de dados:
Create table Veiculo (
cod_Veiculo integer unsigned primary key not null auto_increment,
placa_Veiculo varchar(30),
marca_Veiculo varchar(30),
modelo_Veiculo varchar(40),
ano_Veiculo varchar(5),
chassi_Veiculo varchar(30),
observacoes_Veiculo varchar(100),
horadata_Veiculo varchar(30),
cod_Cliente integer unsigned not null,
Foreign Key (cod_Cliente) references Cliente (cod_Cliente)) ENGINE=INNODB;
Create table Veiculo (
cod_Veiculo integer unsigned primary key not null auto_increment,
placa_Veiculo varchar(30),
marca_Veiculo varchar(30),
modelo_Veiculo varchar(40),
ano_Veiculo varchar(5),
chassi_Veiculo varchar(30),
observacoes_Veiculo varchar(100),
horadata_Veiculo varchar(30),
cod_Cliente integer unsigned not null,
Foreign Key (cod_Cliente) references Cliente (cod_Cliente)) ENGINE=INNODB;
Tópico encerrado , respostas não são mais permitidas