bollywood actresses hair loss hair rehab london contact number cheap hair extensions brazilian curly hair with closure hair extension fails human hair wigs black ponytail hairstyles 2018 sunny hair extensions uk hair extensions remy hair extensions weft koko one piece hair extensions clip hair
Executar consulta apenas na primeira vez de abertura do BD

... Assinatura do site por 1 ano + Kit MontaRibbons + 3 Livros em PDF + Diversas Revistas (pdf) de brinde, por apenas R$100,00
(
podendo parcelar em até 10 vezes no cartão de crédito)...

Clique aqui e obtenha mais detalhes do nosso kit completo e de como comprar.


Executar consulta apenas na primeira vez de abertura do BD

Antes de iniciar a sua leitura, clique aqui e cadastre-se para receber comunicados sobre novos artigos.

Usuário Baretta:

Prezado, boa noite.

Através da macro AutoExec, executo uma consulta que altera uma coluna inteira para a data atual.  Desse modo, comparo a data de recebimento de um processo com a data atual e determino se ele está no prazo, se está atrasado, etc...

Tudo funciona muito bem, porém toda vez que o Microsoft Access é aberto por um usuário, ele executa essa atualização de data.

Pergunta: - existe um modo desta consulta ser executada apenas a primeira vez que o banco é aberto no dia?

Suporte:

Baretta,

crie uma tabela tblDataExecução, nesses moldes:

Campo Código como numeração automática e chave primária
Campo Data como tipo data e formato data abreviada
Campo Executado do tipo Sim/Não e com valor padrão 0.

Exemplo:

Código Data Executado
1 26/07/2017 x

 

Em um módulo global, cole este código:

Public Function fncExecuta()

    Dim rs As DAO.Recordset 'declaro ao VBA uma variável
    'abro a tabela que contém o controle de execução
    Set rs = CurrentDb.OpenRecordset("tblDataExecução") 
    
    If rs.EOF Then 'se ao abrir a tabela e ela não ter registro algum, então
        rs.AddNew 'movo o ponteiro para a posição de novo registro
           rs.Fields("Data").Value = Date 'defino o campo data como a data atual
        rs.Update 'salvo o registro
    End If
    
    rs.MoveLast 'movo o ponteiro para o último registro
    'se a última data registrada na tabela for menor que a data de hoje, então
    If rs.Fields("Data").Value < Date Then 
        rs.AddNew 'movo o ponteiro para a posição de novo registro
            rs.Fields("Data").Value = Date 'defino o campo data como a data atual
        rs.Update 'salvo o registro
        rs.MoveLast 'e movo o ponteiro para o registro que acabei de criar
    End If
    
    'se a última data registrada na tabela for menor que a data de hoje e o 
    'campo executado estiver falso, então
    If rs.Fields("Data").Value = Date And rs.Fields("Executado").Value = False Then
        CurrentDb.Execute "MinhaConsulta" 'executo a minha consulta
        rs.Edit 'começo a editar o registro atual
            rs.Fields("Executado").Value = True 'defino o campo executado como verdadeiro
        rs.Update 'salvo a edição que fiz
        'dou um aviso que executei a consulta
        MsgBox "Executei a consulta MinhaConsulta. Agora só amanhã.",vbInformation,"Aviso" 
    End If
    
    rs.Close 'fecho a tabela
    Set rs = Nothing 'descarrego a memória

End Function

Na sua macro AutoExec escolha ExecutarCódigo e chame a função - cole isto -> fncExecuta()

Usuário Barreta:

Perfeito!

E muito obrigado por cada linha de comentário no código.


 

 


Não há comentário

Envie seu comentário: