AJUDA COM UPDATE

ELMO01 26/04/2011 16:19:43
#372508
Agora estou às voltas com o UPDATE. Quando peço para salvar me retorna o seguinte erro em anexo.


O Código utilizado é este:

Dim Conn As New MySqlConnection(StrAssoc)
Conn.Open()

Dim Campos As String
Dim Valores As String

Campos = [Ô](matricula_associado, nome_razao_social, id_tipo_categoria_associado,[Ô]
Campos = Campos & [Ô]situacao,vencimento_carteirinha,rg_insc_estadual,cpf_cnpj,data_nascimento,naturalidade,uf_naturalidade,[Ô]
Campos = Campos & [Ô]nacionalidade,estado_civil,sexo,nome_pai,nome_mae,funcao_trabalho,email)[Ô]

Valores = [Ô](@matricula_associado, @nome_razao_social, @id_tipo_categoria_associado,[Ô]
Valores = Valores & [Ô]@situacao,@vencimento_carteirinha,@rg_insc_estadual,@cpf_cnpj,@data_nascimento,@naturalidade,@uf_naturalidade,[Ô]
Valores = Valores & [Ô]@nacionalidade,@estado_civil,@sexo,@nome_pai,@nome_mae,@funcao_trabalho,@email)[Ô]

Dim cSQL As String = [Ô]UPDATE ASSOCIADOS SET [Ô] & Campos & [Ô] VALUES [Ô] & Valores & [Ô] where Txt_AssMat.Text = @matricula_associado[Ô]
Dim Cmd As New MySqlCommand(cSQL, Conn)

Cmd.Parameters.AddWithValue([Ô]@matricula_associado[Ô], Txt_AssMat.Text)
Cmd.Parameters.AddWithValue([Ô]@nome_razao_social[Ô], Txt_AssNom.Text)
Cmd.Parameters.AddWithValue([Ô]@id_tipo_categoria_associado[Ô], Cmb_AssCat.Text)
Cmd.Parameters.AddWithValue([Ô]@rg_insc_estadual[Ô], Txt_AssIde.Text)
Cmd.Parameters.AddWithValue([Ô]@cpf_cnpj[Ô], Txt_AssCPF.Text)
Cmd.Parameters.AddWithValue([Ô]@data_nascimento[Ô], CDate(Msk_AssDtN.Text))
Cmd.Parameters.AddWithValue([Ô]@naturalidade[Ô], Txt_AssCns.Text)
Cmd.Parameters.AddWithValue([Ô]@uf_naturalidade[Ô], Cmb_AssUfs.Text)
Cmd.Parameters.AddWithValue([Ô]@nacionalidade[Ô], Txt_AssNsc.Text)
Cmd.Parameters.AddWithValue([Ô]@estado_civil[Ô], Cmb_AssEci.Text)
Cmd.Parameters.AddWithValue([Ô]@sexo[Ô], Cmb_AssSex.Text)
Cmd.Parameters.AddWithValue([Ô]@nome_pai[Ô], Txt_AssPai.Text)
Cmd.Parameters.AddWithValue([Ô]@nome_mae[Ô], Txt_AssMae.Text)
Cmd.Parameters.AddWithValue([Ô]@funcao_trabalho[Ô], Txt_AssPro.Text)
Cmd.Parameters.AddWithValue([Ô]@email[Ô], IIf(Txt_AssEma.Text <> [Ô][Ô], Txt_AssEma.Text, vbNull))

Cmd.ExecuteNonQuery()
Conn.Close()

Alguém pode me ajudar??

Obrigado,
JONATHANSTECKER 26/04/2011 16:21:57
#372509
Resposta escolhida
Cadê o erro?
JONATHANSTECKER 26/04/2011 16:29:06
#372510
Você não deu o valor a dois parâmetros, deve ser este o erro.
Cmd.Parameters.AddWithValue([Ô]@situacao[Ô], ???)
Cmd.Parameters.AddWithValue([Ô]@vencimento_carteirinha[Ô], ???)

E uma dúvida, você está alterando o campo matricula_associado? Para que? Ele não é o ID?
ELMO01 26/04/2011 17:36:02
#372517
Jonathan - realmente vc tem razão, estava salvando a matrícula, só que não ewra necessário, mas mesmo assim continua a apresentar o erro. Tirei um print e está anexado.
JONATHANSTECKER 26/04/2011 17:57:47
#372519
Putz cara, nem reparei, mas nesse caso você está atualizando os dados e não inserindo...
Os métodos são diferentes.

A string da query teria que ficar dessa maneira.:
    Dim Conn As New MySqlConnection(StrAssoc)
Conn.Open()

Dim Campos As String
Dim Valores As String

Campos = [Ô]nome_razao_social=@nome_razao_social, id_tipo_categoria_associado=@id_tipo_categoria_associado,[Ô]
Campos += [Ô]situacao=@situacao,vencimento_carteirinha=@vencimento_carteirinha,rg_insc_estadual=@rg_insc_estadual,[Ô]
Campos += [Ô]cpf_cnpj=@cpf_cnpj,data_nascimento=@data_nascimento,naturalidade=@naturalidade,uf_naturalidade=@uf_naturalidade,[Ô]
Campos += [Ô]nacionalidade=@nacionalidade,estado_civil=@estado_civil,sexo=@sexo,[Ô]
Campos += [Ô]nome_pai=@nome_pai,nome_mae=@nome_mae,funcao_trabalho=@funcao_trabalho,email=@email[Ô]

Dim cSQL As String = [Ô]UPDATE ASSOCIADOS SET [Ô] & Campos & [Ô] WHERE Txt_AssMat.Text = @matricula_associado[Ô]
Dim Cmd As New MySqlCommand(cSQL, Conn)

Cmd.Parameters.AddWithValue([Ô]@matricula_associado[Ô], Txt_AssMat.Text)
Cmd.Parameters.AddWithValue([Ô]@nome_razao_social[Ô], Txt_AssNom.Text)
Cmd.Parameters.AddWithValue([Ô]@situacao[Ô], ???)
Cmd.Parameters.AddWithValue([Ô]@vencimento_carteirinha[Ô], ???)
Cmd.Parameters.AddWithValue([Ô]@id_tipo_categoria_associado[Ô], Cmb_AssCat.Text)
Cmd.Parameters.AddWithValue([Ô]@rg_insc_estadual[Ô], Txt_AssIde.Text)
Cmd.Parameters.AddWithValue([Ô]@cpf_cnpj[Ô], Txt_AssCPF.Text)
Cmd.Parameters.AddWithValue([Ô]@data_nascimento[Ô], CDate(Msk_AssDtN.Text))
Cmd.Parameters.AddWithValue([Ô]@naturalidade[Ô], Txt_AssCns.Text)
Cmd.Parameters.AddWithValue([Ô]@uf_naturalidade[Ô], Cmb_AssUfs.Text)
Cmd.Parameters.AddWithValue([Ô]@nacionalidade[Ô], Txt_AssNsc.Text)
Cmd.Parameters.AddWithValue([Ô]@estado_civil[Ô], Cmb_AssEci.Text)
Cmd.Parameters.AddWithValue([Ô]@sexo[Ô], Cmb_AssSex.Text)
Cmd.Parameters.AddWithValue([Ô]@nome_pai[Ô], Txt_AssPai.Text)
Cmd.Parameters.AddWithValue([Ô]@nome_mae[Ô], Txt_AssMae.Text)
Cmd.Parameters.AddWithValue([Ô]@funcao_trabalho[Ô], Txt_AssPro.Text)
Cmd.Parameters.AddWithValue([Ô]@email[Ô], IIf(Txt_AssEma.Text <> [Ô][Ô], Txt_AssEma.Text, vbNull))

Cmd.ExecuteNonQuery()
Conn.Close()
ELMO01 28/04/2011 13:40:40
#372699
Jonathan - Coloquei a sua sugestão mas mesmo assim continua a dar erro. Veja o print em anexo.

O código é este:
Dim Campos As String

Campos = [Ô]nome_razao_social=@nome_razao_social, numero_carteirinha=@numero_carteirinha,[Ô]
Campos += [Ô]id_tipo_categoria_associado=@id_tipo_categoria_associado, data_cadastro=@data_cadastro, [Ô]
Campos += [Ô]situacao=@situacao, vencimento_carteirinha=@vencimento_carteirinha,[Ô]
Campos += [Ô]rg_insc_estadual=@rg_insc_estadual, cpf_cnpj=@cpf_cnpj,[Ô]
Campos += [Ô]data_nascimento=@data_nascimento, naturalidade=@naturalidade,[Ô]
Campos += [Ô]uf_naturalidade=@uf_naturalidade, nacionalidade=@nacionalidade,[Ô]
Campos += [Ô]estado_civil=@estado_civil,sexo=@sexo,[Ô]
Campos += [Ô]nome_pai=@nome_pai,nome_mae=@nome_mae,[Ô]
Campos += [Ô]funcao_trabalho=@funcao_trabalho,email=@email[Ô]

Dim cSQL As String = [Ô]UPDATE ASSOCIADOS SET [Ô] & Campos & [Ô] WHERE Txt_AssMat.Text = @matricula_associado[Ô]
Dim Cmd As New MySqlCommand(cSQL, Conn)

Cmd.Parameters.AddWithValue([Ô]@nome_razao_social[Ô], Txt_AssNom.Text)
Cmd.Parameters.AddWithValue([Ô]@numero_carteirinha[Ô], Txt_Num_Cart.Text)
Cmd.Parameters.AddWithValue([Ô]@id_tipo_categoria_associado[Ô], Cmb_AssCat.Text)
Cmd.Parameters.AddWithValue([Ô]@data_cadastro[Ô], CDate(Msk_AssDtC.Text))
Cmd.Parameters.AddWithValue([Ô]@situacao[Ô], [Ô]ATIVO[Ô])
Cmd.Parameters.AddWithValue([Ô]@vencimento_carteirinha[Ô], Now().AddYears(4))
Cmd.Parameters.AddWithValue([Ô]@rg_insc_estadual[Ô], IIf(Txt_AssIde.Text <> [Ô][Ô], Txt_AssIde.Text, vbNull))
Cmd.Parameters.AddWithValue([Ô]@cpf_cnpj[Ô], IIf(Txt_AssCPF.Text <> [Ô][Ô], Txt_AssCPF.Text, vbNull))
Cmd.Parameters.AddWithValue([Ô]@data_nascimento[Ô], CDate(Msk_AssDtN.Text))
Cmd.Parameters.AddWithValue([Ô]@naturalidade[Ô], IIf(Txt_AssCns.Text <> [Ô][Ô], Txt_AssCns.Text, vbNull))
Cmd.Parameters.AddWithValue([Ô]@uf_naturalidade[Ô], IIf(Txt_AssCns.Text <> [Ô][Ô], Txt_AssCns.Text, vbNull))
Cmd.Parameters.AddWithValue([Ô]@nacionalidade[Ô], IIf(Txt_AssCns.Text <> [Ô][Ô], Txt_AssCns.Text, vbNull))
Cmd.Parameters.AddWithValue([Ô]@estado_civil[Ô], IIf(Cmb_AssEci.Text <> [Ô][Ô], Cmb_AssEci.Text, vbNull))
Cmd.Parameters.AddWithValue([Ô]@sexo[Ô], IIf(Cmb_AssEci.Text <> [Ô][Ô], Cmb_AssEci.Text, vbNull))
Cmd.Parameters.AddWithValue([Ô]@nome_pai[Ô], IIf(Txt_AssPai.Text <> [Ô][Ô], Txt_AssPai.Text, vbNull))
Cmd.Parameters.AddWithValue([Ô]@nome_mae[Ô], IIf(Txt_AssMae.Text <> [Ô][Ô], Txt_AssMae.Text, vbNull))
Cmd.Parameters.AddWithValue([Ô]@funcao_trabalho[Ô], IIf(Txt_AssPro.Text <> [Ô][Ô], Txt_AssPro.Text, vbNull))
Cmd.Parameters.AddWithValue([Ô]@email[Ô], IIf(Txt_AssEma.Text <> [Ô][Ô], Txt_AssEma.Text, vbNull))

Cmd.ExecuteNonQuery()
Conn.Close()

Veja o que estou fazendo de erro neste código.

Obrigado,
JONATHANSTECKER 28/04/2011 13:51:48
#372701
Tente trocando esta linha e adicionando esta parâmetro.
Parece estar tudo certo... Mas esse erro está estranho...
Dim cSQL As String = [Ô]UPDATE ASSOCIADOS SET [Ô] & Campos & [Ô] WHERE matricula_associado=@matricula_associado[Ô]
[ô] E adicione este parâmetro
Cmd.Parameters.AddWithValue([Ô]@matricula_associado[Ô], Txt_AssMat.Text)
ELMO01 28/04/2011 15:32:05
#372710
Jonathan - deu certo - muito obrigado mais uma vez
Tópico encerrado , respostas não são mais permitidas