Ir para conteúdo
Fórum Script Brasil
  • 0

Cadastro de Vendedores


Jhowcs

Pergunta

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

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0

poe o cursor na primeira linha de codigo da sub do lostfocus e aperta F9 pra por o breakpoint (a linha deve fica vermelha).

ai rode o programa com o F5 e quando chegar ai o programa deve parar. então va avancando cada linha com o F8 e vendo os comandos q ele vai executando e ai você deve descobrir o q leva a perguntar duas vezes.

outra coisa q você pode tentar tb é em vez de por esse codigo no lostfocus, por no evento validate.

Link para o comentário
Compartilhar em outros sites

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      652k
×
×
  • Criar Novo...