Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
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!
Como está fazendo para atualizar? Por SQL?
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.
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.
Como assim não entendi, como eu faço a string do update, igual a do insert? Você pode me dar um exemplo ?
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 ?
Sua variavel codigo , como você coloca o valor nela?
Pode ser que esteja atualizando o cara errado.
Eu declarei ela
Public codigo As Integer
E chamo ela assim
codigo = rs("codigo")
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.
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 ?
Posta o código da tela e um print da tela.
De longe é ruim entender :D.
Do form todo ou só do botão editar ?
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.
>
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:/applications/core/interface/imageproxy/imageproxy.php?img=http://img43.imageshack.us/img43/5923/imagemjdi.jpg&key=4678058f45725c5e9843c2dd98a1c0710e4f3491df9db7372ba2b5fdb06d7ab1" alt="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.
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.
>
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
Como colocou o rs("codigo") no update ?
Postaae.
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)OK então. Parabéns pela solução!
Abraços!
http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif
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!