BOTÃO ALTERAR EST? DUPLICANDO CADASTRO
Tenho uma tela de cadastro de clientes, e nela tem os botões, Incluir, Confirmar, Limpar, Alterar e Excluir. Acontece que quando clico no botão Alterar, para fazer alguma alteração no cadastro do cliente, ele está duplicando. Enfim, ao invés de apenas atualizar a alteração, está cadastrando de novo.
Exemplo: Clico no botão Alterar, e os textbox ficam liberados para alterações. Depois que faço alguma alteração, clico no botão Confirmar, para atualizar os dados.
O código do botão Alterar é este:
Private Sub cmdAlterar_Click()
txtRaz.BackColor = &H80000005
txtFan.BackColor = &H80000005
txtEnd.BackColor = &H80000005
txtNum.BackColor = &H80000005
txtBai.BackColor = &H80000005
txtCid.BackColor = &H80000005
cmbEst.BackColor = &H80000005
txtCep.BackColor = &H80000005
txtCnpj.BackColor = &H80000005
txtIe.BackColor = &H80000005
txtTel.BackColor = &H80000005
txtObs.BackColor = &H80000005
txtRaz.Enabled = True
txtFan.Enabled = True
txtEnd.Enabled = True
txtNum.Enabled = True
txtBai.Enabled = True
txtCid.Enabled = True
cmbEst.Enabled = True
txtCep.Enabled = True
txtCnpj.Enabled = True
txtIe.Enabled = True
txtTel.Enabled = True
txtObs.Enabled = True
cmdConfirmar.Enabled = True
txtRaz.SetFocus
End Sub
O código do botão Confirmar é este:
Private Sub cmdConfirmar_Click()
If txtRaz.Text <> [Ô][Ô] Then
RS.AddNew
RS!cod = txtCod.Text
RS!datcad = Date
RS!raz = txtRaz.Text
RS!fan = txtFan.Text
RS!End = txtEnd.Text
RS!num = txtNum.Text
RS!bai = txtBai.Text
RS!cid = txtCid.Text
RS!est = cmbEst.Text
RS!cep = txtCep.Text
RS!CNPJ = txtCnpj.Text
RS!Ie = txtIe.Text
RS!tel = txtTel.Text
RS!obs = txtObs.Text
RS.Update
RS_CONF.FindFirst [Ô]cod_cli=[Ô] & RS_CONF!cod_cli
RS_CONF.Edit
RS_CONF!cod_cli = txtCod.Text
RS_CONF.Update
cmdLimpar_Click
Else
MsgBox [Ô]Preencha os campos para o cadastro![Ô], vbInformation + vbOKOnly, [Ô]FF Express[Ô]
txtRaz.SetFocus
End If
End Sub
Aguardo ajuda de vocês.
Citação::
RS.AddNew -> na alteração não pode conter essa linha.
Eu retirei a linha RS.AddNew do comando Confirmar, mas agora está dando erro.
Rum-Time error [ô]3020[ô]
Update ou CancelUpdate sem AddNew ou Edit.
RS.AddNew --> para inserir um registro
Citação::
RS.Edit --> para editar um registro
RS.AddNew --> para inserir um registro
Porém o botão Confirmar, é o mesmo para salvar a alteração ou gravar um novo registro.
Acho que o erro está ai.
Exemplo: Ao invés de eu atualizar o cadastro nº 2, ele está duplicando no BD para 2, 2 (duas vezes).
Seu patrão é a chave primária.
criar uma variável global do tipo boolean, exemplo: AddMode (não me lembro mais como se declara no VB6).
AÃ, no código do botão Alterar você coloca:
AddMode = false
E no código do botão para Salvar, você coloca:
AddMode = true
No código Confirmar, você deixaria mais ou menos assim:
If AddMode = false Then Rs.Edit
ElseIf AddMode = true Then RS.AddNew.
E o restante do código para gravar o registro
Como não programo em VB6, não sei a sintaxe correta, mas a lógica é esta aÃ.
Mais ou menos isso, entendeu? é só uma ideia, e funciona, tá? Se não tiver outra, testa aà e qualquer coisa poste novamente.
Abraços.
Citação::
Você poderia fazer assim:
criar uma variável global do tipo boolean, exemplo: AddMode (não me lembro mais como se declara no VB6).
AÃ, no código do botão Alterar você coloca:
AddMode = false
E no código do botão para Salvar, você coloca:
AddMode = true
No código Confirmar, você deixaria mais ou menos assim:
If AddMode = false Then Rs.Edit
ElseIf AddMode = true Then RS.AddNew.
E o restante do código para gravar o registro
Como não programo em VB6, não sei a sintaxe correta, mas a lógica é esta aÃ.
Mais ou menos isso, entendeu? é só uma ideia, e funciona, tá? Se não tiver outra, testa aà e qualquer coisa poste novamente.
Abraços.
Infelizmente não consegui criar esta variável, pois sou leigo no assunto.
Desde já agradeço pela ajuda.
No inicio do seu form no General faça o seguinte
Dim Incluir as boolean
No seu botão incluir faça o seguinte, acrescente o código
Incluir = True
No seu botão Alterar faça o seguinte, acrescente o código
Incluir = False
No seu botão confirmar faça a seguinte pergunta
If incluir = True then
rs.addnew
rs.cod = txtcod.text
else
rs.edit
endif
RS!datcad = Date
RS!raz = txtRaz.Text
RS!fan = txtFan.Text
RS!End = txtEnd.Text
RS!num = txtNum.Text
RS!bai = txtBai.Text
RS!cid = txtCid.Text
RS!est = cmbEst.Text
RS!cep = txtCep.Text
RS!CNPJ = txtCnpj.Text
RS!Ie = txtIe.Text
RS!tel = txtTel.Text
RS!obs = txtObs.Text
RS.Update
RS_CONF.FindFirst [Ô]cod_cli=[Ô] & RS_CONF!cod_cli
RS_CONF.Edit
RS_CONF!cod_cli = txtCod.Text
RS_CONF.Update
cmdLimpar_Click
E pronto, coloquei o campo cod logo embaixo do incluir, pois acredito que ele seja um campo chave e dessa maneira não poderá sofrer alteração, agora é só fazer os ajustes que vc precisa, caso for necessário
Acho que é isso, qqer coisa posta ai a pergunta, senão não esqueça de encerrar o tópico
Abraço!