Ir ao conteúdo
  • Cadastre-se

Vb6 aparece um erro ao digitar o código do usuário, já pesquisei e alterei algumas coisas mas sem sucesso.


Posts recomendados

Ao fazer a aplicação que consta na apostila do vb6 aparece um erro ao digitar o código do usuário, já pesquisei e alterei algumas coisas mas sem sucesso.

Private Sub txtCodUsuario_LostFocus()
    Dim cnnComando As New ADODB.Command
    Dim rsSelecao As New ADODB.Recordset
    '   On Error GoTo errSelecao-> desativei para ver se resolvia
       'Verifica se foi digitado um código válido:
       If Val(txtCodUsuario.Text) = 0 Then
            MsgBox "Não foi digitado um código válido, verifique.", vbExclamation + vbOKOnly + vbApplicationModal, "Erro"
            Exit Sub
       End If
    Screen.MousePointer = vbHourglass
    With cnnComando
    'abrir o banco para fazer a consulta e a inclusão:
    'cnnbiblio.ConnectionString = "Driver={Microsoft Access Driver (*.mdb)};Dbq=D:\Projeto\Visual Basic\Bibliotecario\Biblio.mdb;"
    cnnbiblio.ConnectionString = "Provider=ADsDSOObject;Encrypt Password=False;Data Source=D:\Projeto\Visual Basic\Bibliotecario\Biblio.mdb;"
    cnnbiblio.Open
        .ActiveConnection = cnnbiblio
        .CommandType = adCmdText
        'Monta o comando Select para selecionar o registro na tabela:
        .CommandText = "Select * from Usuarios where CodUsuario=" & txtCodUsuario.Text & ";"
        'Set rsSelecao = .Execute
    End With
    With rsSelecao
        If .EOF And .BOF Then
            'Se o recordset esta vazio, não retornou registro com esse código:
            LimparDados
            'Identifica a operação como inclusão:
            vInclusao = True
        Else
            'Senão, atribui aos campos os dados do registro:
            txtNomeUsuario.Text = !NomeUsuario
            txtEndereco.Text = !Endereco
            txtCidade.Text = !Cidade
            txtEstado.Text = !Estado
            txtCEP.Text = !CEP
            txtTelefone = Empty & !Telefone
            'Identifica a operação como Alteração:
            vInclusao = True
            'Habilita o botão Excluir:
            Toolbar1.Buttons(3).Enabled = True
        End If
    End With
    'Desabilita a digitação do campo código:
    txtCodUsuario.Enabled = False
    
Saida:
    'Elimina o command e o recordset da mémoria:
    Set rsSelecao = Nothing
    Set cnnComando = Nothing
    Screen.MousePointer = vbDefault
    Exit Sub
    
'errSelecao:-> deixei essa parte como comentário para ver se resolvia o erro
 '   With Err
  '      If .Number <> 0 Then
            'MsgBox "Houve um  erro na recuperação do registro solicitado.", vbExclamation + vbOKOnly + vbApplicationModal, "Aviso"
            'ver o erro ao digitar o código do usuário
   '         MsgBox "Houve um  erro na recuperação do registro solicitado." & .Description, vbExclamation + vbOKOnly + vbApplicationModal, "Erro"
    '        .Number = 0
     '       GoTo Saida
     '   End If
    'End With
End Sub

Erro>:Run  timer error'3704', quando debugo a linha 
If .EOF And .BOF Then esta amarela informando que o .BOF =<Operação não permitida quando o objeto está fechado.>

 

Como resolver ?

Link para o comentário
Compartilhar em outros sites

Consegui fazer a inclusão alterando algumas coisas mas agora aparece a mensagem que houve erro e na descrição:object required , segue o que foi feito:

Private Sub txtCodUsuario_LostFocus()
'variável que será usada para manipular o Banco de Dados
    Dim cnnComando As New ADODB.Command
    'variável que recebe os dados do Banco de Dados e Grava no BD de volta
    Dim rsSelecao As New ADODB.Recordset
      On Error GoTo errSelecao 'caso ocorra erro vai pra outro comando abaixo
       'Verifica se foi digitado um código válido:
       'Val vai retornar em valores numericos o que foi digitado na txtCodUsuario
    'como não foi digitado nada ele retorna 0, então acontece a MsgBox abaixo
       If Val(txtCodUsuario.Text) = 0 Then
            MsgBox "Não foi digitado um código válido, verifique.", vbExclamation + vbOKOnly + vbApplicationModal, "Erro"
            Exit Sub
       End If
        'o comando abaixo transforma o cursor do mouse em ampulheta
    Screen.MousePointer = vbHourglass
     'o command começa a executar operações no BD
    With cnnComando
    'ativa a conexão criada com o BD
        .ActiveConnection = cnnbiblio
         'indica o tipo de dados a ser aberto
        .CommandType = adCmdText
        'Monta o comando Select para selecionar o registro na tabela:
        'indica qual o campo a ser trabalhado
        .CommandText = "Select * from Usuarios where CodUsuario=" & txtCodUsuario.Text & ";"
        'declarando que o rsSeleção será executado como declarado acima
        Set rsSelecao = .Execute
    End With
    With rsSelecao
        If .EOF And .BOF Then
            'Se o recordset esta vazio, não retornou registro com esse código:
            LimparDados
            'Identifica a operação como inclusão:
            vInclusao = True
        Else
            'Senão, atribui aos campos os dados do registro:
            txtNomeUsuario.Text = !NomeUsuario
            txtEndereco.Text = !Endereco
            txtCidade.Text = !Cidade
            txtEstado.Text = !Estado
            txtCEP.Text = !CEP
            txtTelefone = Empty & !Telefone
            'Identifica a operação como Alteração:
            vInclusao = True
            'Habilita o botão Excluir:
            Toolbar1.Buttons(3).Enabled = True
        End If
    End With
    'Desabilita a digitação do campo código:
    txtCodUsuario.Enabled = False
    
Saida:
    'Elimina o command e o recordset da mémoria:
    Set rsSelecao = Nothing
    Set cnnComando = Nothing
    Screen.MousePointer = vbDefault
    Exit Sub
    
errSelecao:
    With Err
        If .Number <> 0 Then
            MsgBox "Houve um  erro na recuperação do registro solicitado.", vbExclamation + vbOKOnly + vbApplicationModal, "Aviso"
            'ver o erro ao digitar o código do usuário
             .Number = 0
            GoTo Saida
        End If
    End With
End Sub

GravarDados

Private Sub GravarDados()
Dim cnnComando As New ADODB.Command
Dim vConfMsg As Integer
Dim vError As Boolean
    On Error GoTo errGravacao
    'Inicializa as variáveis auxiliares:
    vConfMsg = vbExclamation + vbOKOnly + vbSystemModal
    vErro = False
    'Verifica os dados digitados:
    If txtNomeUsuario.Text = Empty Then
    MsgBox "O nome não foi preenchido.", vConfMsg, "Erro"
    vErro = True
    End If
    If txtEndereco.Text = Empty Then
    MsgBox "O endereco não foi preenchido.", vConfMsg, "Erro"
    vErro = True
    End If
    If txtCidade.Text = Empty Then
    MsgBox "A cidade não foi preenchido.", vConfMsg, "Erro"
    vErro = True
    End If
    If txtEstado.Text = Empty Then
    MsgBox "O estado não foi preenchido.", vConfMsg, "Erro"
    vErro = True
    End If
    If txtCEP.Text = Empty Then
    MsgBox "O cep não foi preenchido.", vConfMsg, "Erro"
    vErro = True
    End If
    'Se aconteceu um erro de digitação, sai da sub sem gravar:
    If vErro Then Exit Sub
    Screen.MousePointer = vbHourglass
    With cnnComando
        .ActiveConnection = cnnbiblio
        .CommandType = adCmdText
        'Verifica a operação e cria o comando SQL correspondente:
        If vInclusao Then
        'Inclusão:
        .CommandText = "insert into Usuarios" & "(CodUsuario,NomeUsuario,Endereco,Cidade," & "Estado,CEP,Telefone)values ( " & txtCodUsuario.Text & ",'" & txtNomeUsuario.Text & "','" & txtEndereco.Text & "','" & txtCidade.Text & "','" & txtEstado.Text & "','" & txtCEP.Text & "','" & txtTelefone.Text & "');"
        Else
        'Alteração:
        .CommandText = "update Usuarios set " & "NomeUsuario = '" & txtNomeUsuario.Text & "'," & "Endereco = '" & txtEndereco.Text & "'," & "Cidade = '," & txtCidade.Text & "'," & "Estado = '," & txtEstado.Text & "'," & "CEP = '," & txtCEP.Text & "'," & "Telefone = '," & txtTelefone.Text & "' " & "where CodUsuario = " & txtCodUsuario.Text & ";"
        End If
        .Execute
        End With
        MsgBox "Gravaçao concluída com sucesso.", vbApplicationModal + vbInformation + vbOKOnly, "Gravação OK"
        'Chama a sub que limpa os dados do formulário:
        LimparTela
Saida:
        Screen.MousePointer = vbDefault
        Set cnnComando = Nothing
        Exit Sub
errGravacao:
       With Err
        If .Number <> 0 Then
        MsgBox "Houve um erro durante a gravação dos dados na tabela." & .Description, vbExclamation + vbOKOnly + vbApplicationModal, "Erro"
            'MsgBox "Houve um erro durante a gravação dos dados na tabela.", vbExclamation + vbOKOnly + vbApplicationModal, "Erro"
            .Number = 0
            GoTo Saida
        End If
        End With
End Sub

 

 

 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!