Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

gabrieldb

[Resolvido] Update e Excluir

Recommended Posts

Bom dia pessoal eu já postei uma dúvida parecida com essa em outro gigantesco tópico mais voltei a passar por ela agora e o que tem lá não é a mesma coisa.Tirei um campo "codigo" do insert ai quando eu gravo os outros campos ele autonumera o campo "codigo" na tabela, só que ficou mais duas dúvidas a primeira é: se eu busco um cliente no BD e atualizo por exemplo o telefone dele e salvo, ele não grava em cima do registro atual,ele cria um novo ai fica dois clientes iguais e com o campo telefone diferente.Como eu posso resolver isso ?

A segunda é pra excluir o campo "codigo", como posso fazer ?

Obrigado pela atenção!

Compartilhar este post


Link para o post
Compartilhar em outros sites

A segunda é pra excluir o campo "codigo", como posso fazer ?

Essa parte aqui eu consegui resolver...

 

Eu criei uma váriavel integer como o nome "codigo" pra receber o campo "codigo" do BD e no botão excluir coloquei assim :

 

Conex.Execute ("delete from clientes where codigo='" & codigo & "'")

Mais falta a primeira dúvida.

Valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como está fazendo para atualizar? Por SQL?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então eu não to atualizando ainda, é isso que eu quero fazer uma função pra usar um botão só, e verificar se o código já existe na tabela, se existir da um update, se não existir um insert.entendeu ?

Eu só to fazendo o insert dos dados na tabela.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faz um select pelo CPF ou RG na tabela de clientes. E daí você verifica se o recordset (que você acabou de carregar) está em BOF ou EOF. Se estiver, não existe entao você dá um update. Se NÃO estiver em BOF e EOF você faz o update.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como assim não entendi, como eu faço a string do update, igual a do insert? Você pode me dar um exemplo ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consigui fazer o update com esse código:

 

Conex.Execute ("update clientes Set nome = '" & txtFantasia.Text & "',estab ='" & txtEstab.Text & "',razao='" & txtRazao.Text & "',endereco='" & txtEndereco.Text & "',bairro='" & txtBairro.Text & "',cidade='" & txtCidade.Text & "',estado='" & txtEstado.Text & "',cep='" & txtCep.Text & "',cnpj='" & txtCnpj.Text & "',inscricao='" & txtInscricao.Text & "',ccm='" & txtCcm.Text & "', fone1='" & txtFone1.Text & "',fone2='" & txtFone2.Text & "', fone3='" & txtFone3.Text & "',fax='" & txtFax.Text & "',resp='" & txtResp.Text & "', cargo='" & txtCargo.Text & "', email='" & txtEmail.Text & "',site='" & txtSite.Text & "' Where codigo = '" & codigo & "'")

Mais ele tá estranho vou dar um exemplo do que tá acontecendo ai você entende melhor do que eu explicar.

 

Exemplo:

Eu tenho o registro "Universo Tintas" e "Hospital Ifor" ai eu vou e apago do registro "Universo" a palavra "Tintas" e depois volto a Incluir o "Tintas" ele some o registro "Hospital Ifor" e fica os dois outros "Universo" e "Universo Tintas".

 

Conseguiu entender ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sua variavel codigo , como você coloca o valor nela?

Pode ser que esteja atualizando o cara errado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu declarei ela

Public codigo As Integer

E chamo ela assim

 

codigo = rs("codigo")

Compartilhar este post


Link para o post
Compartilhar em outros sites

OK.

 

codigo = rs("codigo")

 

 

Onde você chama isso? Qunado carrega a tela, quando busca outro cliente???

 

 

POr que pelo que você disse, você cadastrou o Cli1(1) e o CLi2(2), nessa sequencia. E depois de ter cadastrado alterou o 1, mas na verdade a variavel código estavacom o código do Cli2.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu chamo ela no botão editar, quando busco outro cliente.

 

POr que pelo que você disse, você cadastrou o Cli1(1) e o CLi2(2), nessa sequencia. E depois de ter cadastrado alterou o 1, mas na verdade a variavel código estavacom o código do Cli2.

E como eu faço pra resolver, onde devo chamar ela ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Posta o código da tela e um print da tela.

 

De longe é ruim entender :D.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Do form todo ou só do botão editar ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Da tela.

 

Deve ter algum lugar depois do botão editar, que preenche a variavel denovo.

 

POsta a rotina que altera e o botão.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Da tela.

 

Deve ter algum lugar depois do botão editar, que preenche a variavel denovo.

 

POsta a rotina que altera e o botão.

 

Minha tela:

Imagem Postada

 

Private Sub cmdSalvar_Click()
FormAlterado = False
 Bloqueio
Call conexao
Conex.Execute ("update clientes Set nome = '" & txtFantasia.Text & "',estab ='" & txtEstab.Text & "',razao='" & txtRazao.Text & "',endereco='" & txtEndereco.Text & "',bairro='" & txtBairro.Text & "',cidade='" & txtCidade.Text & "',estado='" & txtEstado.Text & "',cep='" & txtCep.Text & "',cnpj='" & txtCnpj.Text & "',inscricao='" & txtInscricao.Text & "',ccm='" & txtCcm.Text & "', fone1='" & txtFone1.Text & "',fone2='" & txtFone2.Text & "', fone3='" & txtFone3.Text & "',fax='" & txtFax.Text & "',resp='" & txtResp.Text & "', cargo='" & txtCargo.Text & "', email='" & txtEmail.Text & "',site='" & txtSite.Text & "' Where codigo = '" & codigo & "'")
If rs.State = 1 Then rs.Close
 rs.Open "select * from clientes", Conex, adOpenDynamic, adLockOptimistic
txtFantasia = Empty
txtEstab = Empty
txtRazao = Empty
txtEndereco = Empty
txtBairro = Empty
txtCidade = Empty
txtEstado = "São Paulo"
txtCep = Empty
txtCnpj = Empty
txtInscricao = Empty
txtCcm = Empty
txtFone1 = Empty
txtFone2 = Empty
txtFone3 = Empty
txtFax = Empty
txtResp = Empty
txtCargo = Empty
txtEmail = Empty
txtSite = Empty
Set DataGrid1.DataSource = Nothing
 rs.Close
End Sub

Esse é o botão que eu to usando pra alterar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sei lá cara. Em algum lugar entre o editar e o salvar você deve estar preenchendo denovo.

 

Experimente colocar, no update, rs("codigo") em vez da variavel código.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sei lá cara. Em algum lugar entre o editar e o salvar você deve estar preenchendo denovo.

 

Experimente colocar, no update, rs("codigo") em vez da variavel código.

 

Eu tentei mais ele dá Compile error.

 

ps:Esse sistema táme matando aos poucos...rsrs

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como colocou o rs("codigo") no update ?

Postaae.

Compartilhar este post


Link para o post
Compartilhar em outros sites

uhul consegui resolver scorpio,eu fiz assim

Coloquei um textbox com a propriedade visible setado para false, busco os dados da tabela e este textbox vai receber o codigo do cliente(melhor que a variavel) e fiz um if se ele conter algo, ou seja, se o lenght dele for maior que zero é sinal de que estes dados já existem no banco de dados e que portanto utilizarei um update, caso contrário o insert.

Ficou assim meu código no botão salvar:

 

Call conexao
If rs.State = 1 Then rs.Close
 rs.Open "select * from clientes", Conex, adOpenDynamic, adLockOptimistic
 If Len(txtCodigo.Text) > 0 Then
 Conex.Execute ("update clientes Set nome = '" & txtFantasia.Text & "',estab ='" & txtEstab.Text & "',razao='" & txtRazao.Text & "',endereco='" & txtEndereco.Text & "',bairro='" & txtBairro.Text & "',cidade='" & txtCidade.Text & "',estado='" & txtEstado.Text & "',cep='" & txtCep.Text & "',cnpj='" & txtCnpj.Text & "',inscricao='" & txtInscricao.Text & "',ccm='" & txtCcm.Text & "', fone1='" & txtFone1.Text & "',fone2='" & txtFone2.Text & "', fone3='" & txtFone3.Text & "',fax='" & txtFax.Text & "',resp='" & txtResp.Text & "', cargo='" & txtCargo.Text & "', email='" & txtEmail.Text & "',site='" & txtSite.Text & "' Where codigo = " & txtCodigo.Text)
Else
Conex.Execute ("insert into clientes (nome,estab,razao,endereco,bairro,cidade,estado,cep,cnpj,inscricao,ccm, fone1,fone2, fone3,fax,resp, cargo, email,site)values('" & txtFantasia.Text & "','" & txtEstab.Text & "','" & txtRazao.Text & "','" & txtEndereco.Text & "','" & txtBairro.Text & "','" & txtCidade.Text & "','" & txtEstado.Text & "','" & txtCep.Text & "','" & txtCnpj.Text & "','" & txtInscricao.Text & "','" & txtCcm.Text & "','" & txtFone1.Text & "','" & txtFone2.Text & "','" & txtFone3.Text & "','" & txtFax.Text & "','" & txtResp.Text & "','" & txtCargo.Text & "','" & txtEmail.Text & "','" & txtSite.Text & "')")
End If

Compartilhar este post


Link para o post
Compartilhar em outros sites

OK então. Parabéns pela solução!

 

 

Abraços!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.