Tenho esse código para cadastro de vendedores só que quando o txtcodigoven perde o foco ele me pergunta duas vezes se eu desejo incluir novo, não to conseguindo achar onde ta esse erro, dêem uma olhada. se quiserem eu tenho o de cadastro de cliente que está funcionando perfeitamente.
Option Explicit
Dim novo As Boolean 'identifica se o usuário está incluindo ou não um novo registro
Dim frase As String 'usada para montar as instruções SQL
Dim codsel As Long 'Guarda o código do registro selecionado numa instrução
Dim Con As New ADODB.Connection
Dim TbCli As New ADODB.Recordset
Private Sub Botao(Status As Byte)
If Status = 1 Then 'estado inicial
'todos os controles foram bloqueados, apenas o txtCodigo ficará disponível
cmdPesquisar.Enabled = True
cmdGravar.Enabled = False
cmdCancelar.Enabled = False
cmdApagar.Enabled = False
cmdSair.Enabled = True
'adicionamos
Limpa Controls
LimpaMask mskCpf
LimpaMask mskData
LimpaMask mskCep
Bloqueia Controls, False
txtCodigoven.BackColor = vbWhite
txtCodigoven.Enabled = True
ElseIf Status = 2 Then 'inclusão de registro
cmdPesquisar.Enabled = False
cmdGravar.Enabled = True
cmdCancelar.Enabled = True
cmdApagar.Enabled = False
cmdSair.Enabled = False
Limpa Controls
LimpaMask mskCpf
LimpaMask mskData
LimpaMask mskCep
txtCodigoven = codsel
Bloqueia Controls, True
ElseIf Status = 3 Then 'consulta/alteração de registro
cmdPesquisar.Enabled = False
cmdGravar.Enabled = True
cmdCancelar.Enabled = True
cmdApagar.Enabled = True
cmdSair.Enabled = False
End If
End Sub
Private Sub cmdApagar_Click()
If MsgBox("Deseja Realmente Excluir Este Registro ?", vbYesNo + vbCritical, "Atenção...") = vbYes Then
Con.Execute ("DELETE FROM cadastrovendedores WHERE codigo= " & Val(txtCodigoven.Text))
'apagamos e voltamos ao estado inicial
Botao (1)
txtCodigoven.SetFocus
End If
End Sub
Private Sub cmdCancelar_Click()
'Cancelamos uma operação em andamento.... e voltamos ao estado inicial
novo = False
Botao (1)
txtCodigoven.SetFocus
End Sub
Private Sub cmdGravar_Click()
'O campos nome é exigido pelo BD. Para evitar esse erro, cancelamos
'a operação de gravação caso ele esteja vazio ou com brancos.
'A função TRIM() limpa e a Len calcula o comprimento do texto
If Len(Trim(txtNomeven.Text)) < 2 Then
MsgBox " Você não pode gravar se o campo nome estiver vazio!!!", vbOKOnly + vbCritical, "Atenção..."
txtNomeven.SetFocus
Exit Sub
End If
If novo Then
'Registro novo; vamos construir uma instrução INSERT INTO
'Primeiro relacionamos todos os campos da tabela cadastrocliente
frase = "INSERT INTO cadastrovendedores (Codigo, Nome, Cpf, Rg,Data,"
frase = frase & "Rua, Nr, Bairro, Cidade, Uf, Cep,"
frase = frase & "DddFone,Fone, Dddcel, Cel)"
frase = frase & " VALUES (" & txtCodigoven.Text & ","
frase = frase & "'" & txtNomeven.Text & "',"
frase = frase & "'" & mskCpf.Text & "',"
frase = frase & "'" & txtRgven.Text & "',"
frase = frase & "'" & mskData.Text & "',"
frase = frase & "'" & txtRua.Text & "',"
frase = frase & "'" & txtNr.Text & "',"
frase = frase & "'" & txtBairro.Text & "',"
frase = frase & "'" & txtCidade.Text & "',"
frase = frase & "'" & txtUf.Text & "',"
frase = frase & "'" & mskCep.Text & "',"
frase = frase & "'" & txtDddfone.Text & "',"
frase = frase & "'" & txtFone.Text & "',"
frase = frase & "'" & txtDddCel.Text & "',"
frase = frase & "'" & txtCel.Text & "')"
Else
'registro existe
frase = "UPDATE cadastrovendedores SET Nome= '" & txtNomeven.Text & "',"
frase = frase & "Cpf= '" & mskCpf.Text & "',"
frase = frase & "Rg= '" & txtRgven.Text & "',"
frase = frase & "Data= '" & mskData.Text & "',"
frase = frase & "Rua= '" & txtRua.Text & "',"
frase = frase & "Nr= '" & txtNr.Text & "',"
frase = frase & "Bairro= '" & txtBairro.Text & "',"
frase = frase & "Cidade= '" & txtCidade.Text & "',"
frase = frase & "Uf= '" & txtUf.Text & "',"
frase = frase & "Cep= '" & mskCep.Text & "',"
frase = frase & "Dddfone= '" & txtDddfone.Text & "',"
frase = frase & "Fone= '" & txtFone.Text & "',"
frase = frase & "Dddcel= '" & txtDddCel.Text & "',"
frase = frase & "Cel= '" & txtCel.Text & "'"
frase = frase & " WHERE codigo = " & Val(txtCodigoven.Text)
End If
Con.Execute (frase)
'grava e volta ao estado inicial
Botao (1)
'o foco do controle vai para o txtcodigo novamente
txtCodigoven.SetFocus
End Sub
Private Sub cmdPesquisar_Click()
Set formulario = Me
frmPesquisarVdr.Show
End Sub
Private Sub cmdSair_Click()
Unload Me
End Sub
Private Sub Form_KeyPress(KeyAscii As Integer)
KeyAscii = Asc(UCase(Chr(KeyAscii)))
End Sub
Private Sub Form_Load()
Con.Open StringConexao
Botao (1)
Centraliza MDIBStar, Me
End Sub
Private Sub Form_Unload(Cancel As Integer)
'Antes de permitir o fechamento, verificamos a situação de txtNome.Enabled,
'assim, evitamos abandonar uma operação em andamento
If txtNomeven.Enabled Then
'Cancel é um parametro Integer abortado quando igual a -1
Cancel = -1
MsgBox "Você não pode abandonar uma operação em andamento. Grave ou Cancele !", vbCritical, "Atenção"
Else
'Aqui fecho a conexão, do contrário o usuario recebera uma mensagem de erro
'A propriedade .state verificara se a conexao realmente esta aberta
If Con.State = 1 Then
Con.Close
End If
End If
End Sub
Private Sub txtCodigoven_LostFocus()
'Verificamos se o usuário digitou um novo código, senão não prosseguimos
If Val(txtCodigoven.Text) = 0 Then
Exit Sub
End If
codsel = CLng(txtCodigoven.Text) 'Converte o conteúdo de txtCodigo em uma variável long
'Pesquisamos o código digitado com a instrução SELECT
frase = "SELECT * FROM cadastrovendedores WHERE Codigo = " & Val(txtCodigoven.Text)
'O método execute do objeto connection executa a instrução e carrega o resultado...
'no objeto recordset
Set TbCli = Con.Execute(frase)
'A propriedade EOF indica se é fim ou não de arquivo
If Not TbCli.EOF Then
'Achamos o registro. Vamos exibi-lo preenchendo os controles do formulário, novo=false
novo = False
'Vamos desbloquear os controles atribuindo True ao Eneble com o procedimento Bloqueia
Bloqueia Controls, True
'Temos de bloquear o código pois, ele não deve ser alterado
txtCodigoven.Enabled = False
'As aspas concatenadas impedem a atribuição de dados nulo em um text
txtNomeven.Text = TbCli![Nome] & ""
mskCpf.Text = TbCli![Cpf] & ""
txtRgven.Text = TbCli![RG] & ""
mskData.Text = TbCli![Data] & ""
txtRua.Text = TbCli![Rua] & ""
txtNr.Text = TbCli![Nr] & ""
txtBairro.Text = TbCli![bairro] & ""
txtCidade.Text = TbCli![cidade] & ""
txtUf.Text = TbCli![Uf] & ""
mskCep.Text = TbCli![Cep] & ""
txtDddfone.Text = TbCli![Dddfone] & ""
txtFone = TbCli![Fone] & ""
txtDddCel.Text = TbCli![dddcel] & ""
txtCel.Text = TbCli![Cel] & ""
'Aguardo a decisão em estado de alteração/consulta
Botao (3)
Else
'Pergunta se o usuário deseja cadastrar um novo código
If MsgBox("Código não Cadastrado, Deseja incluir Novo?", vbExclamation + vbYesNo, "Atenção...") = vbYes Then
'estado de inclusão de registro
Botao (2)
novo = True
'txtCodigo é bloqueado, pois, como chave primária, não pode ser alterado
txtCodigoven.Enabled = False
End If
End If
End Sub
Pergunta
Jhowcs
Tenho esse código para cadastro de vendedores só que quando o txtcodigoven perde o foco ele me pergunta duas vezes se eu desejo incluir novo, não to conseguindo achar onde ta esse erro, dêem uma olhada. se quiserem eu tenho o de cadastro de cliente que está funcionando perfeitamente.
Link para o comentário
Compartilhar em outros sites
1 resposta a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.