MaximoAccess

Caro Usuário, antes de postar pela primeira vez, leia as regras do fórum.

Obrigado

Administração do MaximoAccess

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

    [Resolvido]usar eof para verificar se existe registo

    Compartilhe

    eduardo landucci
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 15
    Registrado : 18/12/2015

    [Resolvido]usar eof para verificar se existe registo

    Mensagem  eduardo landucci em Ter 13 Jun 2017, 19:02

    Boa tarde.


    Gostaria de saber a maneira como o VBA - Access trabalha com a instrução EOF.


    Estou tentando testar se existe registro em uma tabela usando o EOF, mas ele sempre retorna falso. Se alguem puder me ajudar, agradeço
    .
    .
    .
    Dim RS As DAO.Recordset
    Set RS = CurrentDb.OpenRecordset("dados_carnet")
    RS.MoveLast

    MsgBox (RS.EOF)

    If RS.BOF() Then
    MsgBox ("Não existem parcelas")
    Me.Requery
    Else
    .
    .
    .
    avatar
    philipp.moreira
    Avançado
    Avançado

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 250
    Registrado : 05/02/2016

    Re: [Resolvido]usar eof para verificar se existe registo

    Mensagem  philipp.moreira em Ter 13 Jun 2017, 22:36

    Eduardo, boa noite!

    A propriedade EOF (End Of File) indica se o cursor do recordset chegou ao fim da lista de registro.

    Acho que no seu caso, como você move o cursor do recorset para último registro leva o teste do If (se) a retornar sempre falso, pois a propriedade BOF indica se o cursor do recordset esta posicionado antes do primeiro registro ( ou seja, posicionado no header/cabeçalho).
    referência microsoft: BOF

    Se você move o cursor para última linha e "pergunta"/testa se o cursor está no registro antes da primeira linha leva ao resultado de falso sempre.

    Eu recomendo que faça assim:
    Código:

    Dim RS As DAO.Recordset

    Set RS = CurrentDb.OpenRecordset("dados_carnet")

    RS.MoveLast
    RS.MoveFirst

    'MsgBox (RS.EOF)

    'If RS.BOF() Then
    If RS.recordcount < 1 Then
      MsgBox ("Não existem parcelas")
      Me.Requery
    Else
     While Not RS.EOF
      ' Sua lógica de processamento
     Wend

     ' Ou se preferir, como já possui a informação da quantidade de registros
     For i = 1 To RS.recordcount
      ' Sua lógica de processamento
     Next i


    Porque usar movelast e movefirst?
    R - Ao movimentar o cursor no recordset a propriedade recordcount é automaticamente preenchida, conforme o cursor avança (percorrendo o recordset) e permite a você desenvolvedor checar a quantidade de linhas contidas no recordset.
    Então você move para última linha e depois retorna para primeira, pois assim, se o teste/If for satisfeito você terá a informação da quantidade de linhas e já terá o cursor posicionado na primeira linha (não o cabeçalho).

    eduardo landucci
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Brasil
    Mensagens : 15
    Registrado : 18/12/2015

    Re: [Resolvido]usar eof para verificar se existe registo

    Mensagem  eduardo landucci em Ter 13 Jun 2017, 23:34

    grato

      Data/hora atual: Sab 23 Set 2017, 06:47