MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração


Participe do fórum, é rápido e fácil

MaximoAccess

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

https://www.maximoaccess.com/t48-regras-do-forum

Obrigado

Administração

MaximoAccess

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.

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


2 participantes

    [Resolvido]usar eof para verificar se existe registo

    avatar
    eduardo landucci
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

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

    [Resolvido]usar eof para verificar se existe registo Empty [Resolvido]usar eof para verificar se existe registo

    Mensagem  eduardo landucci 13/6/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
    .
    .
    .
    philipp.moreira
    philipp.moreira
    Avançado
    Avançado


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  philipp.moreira 13/6/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).
    avatar
    eduardo landucci
    Novato
    Novato


    Respeito às regras : Respeito às Regras 100%

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

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

    Mensagem  eduardo landucci 13/6/2017, 23:34

    grato

    Conteúdo patrocinado


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

    Mensagem  Conteúdo patrocinado


      Data/hora atual: 22/11/2024, 06:15