MaximoAccess

Caro Usuário, não tire as suas duvidas nas Salas de Repositório, abra sempre um novo tópico relacionado, nas salas destinadas para o efeito, como Sala de Tabelas, Consultas, Formulários, Relatórios, Macros, Módulos e VBA.

Obrigado

Administração do MaximoAccess

Dicas Ms Access, Exemplos Ms Access, Codigos VBA Ms Access, SQL Ms Access

    [Resolvido]Erro em tempo de execução '3021' - Nenhum registro atual

    Compartilhe

    Samuel Ribeiro
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 566
    Registrado : 05/02/2011

    [Resolvido]Erro em tempo de execução '3021' - Nenhum registro atual

    Mensagem  Samuel Ribeiro em Sab 31 Jan 2015, 20:04

    Boa tarde

    Faz dia que estou tentando resolver este erro mas não consigo, tenho um formulário onde digito o código interno de um produto da loja onde trababalho que uso para alterar o endereço do mesmo, mas assim que digito o código do produto me vem o seguinte erro:

    Erro em tempo de execução '3021':
    Nenhum registro atual

    Estou usando o seguinte código:

    Código:
    Private Sub txtCodInternoEndereco_AfterUpdate()

    Dim strDocNome As String
    Dim strLinkCriteria As String

        strDocNome = "FormCadastroEnderecoCodigo"
     
    If (Not IsNull(DLookup("[Cod_Interno_Item]", "Cadastro_Itens", _
            "[Cod_Interno_Item] ='" & Me!Cod_Interno_Item & "'"))) Then

         
            Dim rs As DAO.Recordset
    Set rs = CurrentDb.OpenRecordset("Select * From Cadastro_Itens Where Cod_Interno_Item = '" & Me!txtCodInternoEndereco & "'")

          rs.MoveLast
         
    'Autopreencher os campos com os dados do registro encontrado:
    Me.txtCodigoFocItem = rs("Cod_Foc_Item")
    Me.txtCodigoBarrasItem = rs("Cod_Barras_Item")
    Me.txtMarcaItem = rs("Marca_Item")
    Me.txtDescricaoItem = rs("Descricao_Item")
    Me.TxtEndProdAtual = rs("Endereco_Item")

    Me.TxtNovoEndProduto.SetFocus

    End If

    End Sub

    E quando peço para depurar esta linha rs.MoveLast , aparece selecionada em amarelo.

    Desde ja agradeço.


    .................................................................................
    ______________________________
         Samuel Carlos Ribeiro

    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 5889
    Registrado : 05/11/2009

    Re: [Resolvido]Erro em tempo de execução '3021' - Nenhum registro atual

    Mensagem  Alexandre Neves em Dom 01 Fev 2015, 12:39

    Boa tarde,
    Veja qual o valor assumido pela variável, substitua-a na expressão e teste em consulta
    Select * From Cadastro_Itens Where Cod_Interno_Item = '" & Me!txtCodInternoEndereco & "'"
    Se não devolver qualquer registo, não deve utilizar o movelast


    .................................................................................
    Access 2010. Mande bd que dê para testar (indique a versão). Não peça para fazer o que já tem feito. Dê todos os detalhes.
    Não coloquem entraves como senhas, esconder controlos, etc. Disponibilizem o mais limpo possível
    Só respondo a mensagens privadas, se forem de assunto privado; às outras não respondo.
    Quem trabalha e mata a fome não come o pão de ninguém; mas quem não trabalha e come, come sempre o pão de alguém. António Aleixo

    Samuel Ribeiro
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 566
    Registrado : 05/02/2011

    Re: [Resolvido]Erro em tempo de execução '3021' - Nenhum registro atual

    Mensagem  Samuel Ribeiro em Qua 04 Fev 2015, 10:01

    Bom dia.

    Desculpe a demora, muito corrido ultimamente.
    Consegui pelo menos fazer funcionar, com pouco mudanças.
    Vejo que o colega Alexandre neves tem razão, o problema esta acontecendo devido a esta linha.

    "rs.MoveLast"

    Veja como ficou o código:

    Código:
    Private Sub txtCodInternoEndereco_AfterUpdate()

    Dim strDocNome As String
    Dim strLinkCriteria As String

        strDocNome = "FormCadastroEnderecoCodigo"
        
    If (Not IsNull(DLookup("[Cod_Interno_Item]", "Cadastro_Itens", _
            "[Cod_Interno_Item] ='" & Me!Cod_Interno_Item & "'"))) Then
            Dim rs As DAO.Recordset
    Set rs = CurrentDb.OpenRecordset("Select * From Cadastro_Itens Where Cod_Interno_Item = '" & Me!txtCodInternoEndereco & "'")
        
     rs.MoveLast
        
    'Autopreencher os campos com os dados do registro encontrado:
    Me.txtCodigoFocItem = rs("Cod_Foc_Item")
    Me.txtCodigoBarrasItem = rs("Cod_Barras_Item")
    Me.txtMarcaItem = rs("Marca_Item")
    Me.txtDescricaoItem = rs("Descricao_Item")
    Me.TxtEndProdAtual = rs("Endereco_Item")

    Me.TxtNovoEndProduto.SetFocus
    'End If
    End If
    End Sub

    Continuo tentando fazer com que esta mensagem suma:
    Erro em tempo de execução: Nenhum registro atual. Acontece somente com os produtos que não estão cadastrados.
    Desde ja Agradeço.


    .................................................................................
    ______________________________
         Samuel Carlos Ribeiro

    JPaulo
    Moderador
    Moderador

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 8907
    Registrado : 04/11/2009

    Re: [Resolvido]Erro em tempo de execução '3021' - Nenhum registro atual

    Mensagem  JPaulo em Qua 04 Fev 2015, 15:58

    Set rs = CurrentDb.OpenRecordset("Select * From Cadastro_Itens Where Cod_Interno_Item = '" & Me!txtCodInternoEndereco & "'")

    'Se não existir registro, não avança  
    If rs.RecordCount = 0 Then Exit Sub


    .................................................................................
    Sucesso e Bons Estudos
    Success and Good Studies

    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]
    [Você precisa estar registrado e conectado para ver esta imagem.] [Você precisa estar registrado e conectado para ver este link.]

    Samuel Ribeiro
    Super Avançado
    Super Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 566
    Registrado : 05/02/2011

    Re: [Resolvido]Erro em tempo de execução '3021' - Nenhum registro atual

    Mensagem  Samuel Ribeiro em Qua 08 Abr 2015, 11:55

    Bom dia Pessoal

    Esqueci de finalizar este tópico, problema resolvido.
    Veja como ficou o código.

    Código:
    Private Sub txtCodInternoEndereco_AfterUpdate()

    Dim strDocNome As String
    Dim strLinkCriteria As String

        strDocNome = "FormCadastroEnderecoCodigo"
       
    If (Not IsNull(DLookup("[Cod_Interno_Item]", "Cadastro_Itens", _
            "[Cod_Interno_Item] ='" & Me!txtCodInternoEndereco & "'"))) Then
            Dim rs As DAO.Recordset
    Set rs = CurrentDb.OpenRecordset("Select * From Cadastro_Itens Where Cod_Interno_Item ='" & Me.txtCodInternoEndereco & "'")
        'If rs.RecordCount > 0 Then
          rs.MoveLast
          'Autopreencher os campos com os dados do registro encontrado:
          Me.txtCodigoFocItem = rs("Cod_Foc_Item")
          Me.txtCodigoBarrasItem = rs("Cod_Barras_Item")
          Me.txtMarcaItem = rs("Marca_Item")
          Me.txtDescricaoItem = rs("Descricao_Item")
          Me.TxtEndProdAtual = rs("Endereco_Item")
          'Else
          'Não faz nada
        'End If
    Me.TxtNovoEndProduto.SetFocus
    End If
    End Sub

    Obrigado a todos.


    .................................................................................
    ______________________________
         Samuel Carlos Ribeiro

      Data/hora atual: Seg 05 Dez 2016, 16:32