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]Limitar a execução de DoCmd.RunMacro

    Compartilhe

    paulobski
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 6
    Registrado : 29/10/2013

    [Resolvido]Limitar a execução de DoCmd.RunMacro

    Mensagem  paulobski em Ter 17 Jun 2014, 01:03

    Boa noite.
    Se me puderem ajudar, eu agradecia.
    Eu usei o DoCmd.RunMacro para executar uma macro quando o formulário de login é aberto. A macro só deve ser executada uma unica vez no 1º dia de cada mês.
    O meu problema é que enquanto for dia 1 a macro vai ser executada sempre que eu abrir a base de dados, e eu quero que seja executada apenas na primeira vez que abro a BD.

    No evento Ao Abrir do formulário de Login eu coloquei o seguinte:

    Private Sub Form_Open(Cancel As Integer)

    If Day(Now()) = 1 Then
       DoCmd.SetWarnings False
       DoCmd.RunMacro "Macro1"
       DoCmd.SetWarnings True
    End If

    End Sub

    É possível fazer o que eu pretendo?
    É a primeira vez que uso o access e não percebo nada de programação.

    Obrigado pela atenção.
    avatar
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: [Resolvido]Limitar a execução de DoCmd.RunMacro

    Mensagem  Alexandre Neves em Ter 17 Jun 2014, 19:43

    Boa tarde, e bem-vindo ao fórum
    Tem de ver se existe alguma condição que seja fiável para desactivar o controlo de execução.
    Entre os dias 1 abre, pelo menos uma vez a bd?
    Se sim:
    - crie uma tabela ControlaDia1, campo ExecutaMacroDia1 (Sim/Não)
    - no código
    If Day(Now()) = 1 and dlookup("ExecutaMacroDia1","ControlaDia1")=-1") Then
    DoCmd.SetWarnings False
    DoCmd.RunMacro "Macro1"
    Currentdb.execute "UPDATE ControlaDia1 SET ExecutaMacroDia1=False"
    DoCmd.SetWarnings True
    else
    Currentdb.execute "UPDATE ControlaDia1 SET ExecutaMacroDia1=True"
    End If


    .................................................................................
    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

    paulobski
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 6
    Registrado : 29/10/2013

    Re: [Resolvido]Limitar a execução de DoCmd.RunMacro

    Mensagem  paulobski em Qui 19 Jun 2014, 00:19

    Obrigado pela resposta.

    A base de dados é aberta varias vezes por dia e isso acontece todos os dias.
    O que eu preciso é que a macro só seja executada na primeira vez que abro a base de dados no dia 1 de cada mês.
    Vou experimentar o que sugeriu e depois digo se funcionou.

    Mais uma vez obrigado!

    paulobski
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 6
    Registrado : 29/10/2013

    Re: [Resolvido]Limitar a execução de DoCmd.RunMacro

    Mensagem  paulobski em Qui 19 Jun 2014, 02:07

    Problema resolvido.

    Experimentei como foi sugerido mas deu erro.
    No entanto aproveitei a ideia da tabela e fiz o seguinte:
    -Criei 2 consultas de atualização, uma para alterar para "sim" e outra para "não" o valor na tabela.
    -coloquei o código

    If Day(Now()) = 1 And DLookup("ExecutaMacroDia1", "ControlaDia1") = 0 Then
    DoCmd.SetWarnings False
    DoCmd.RunMacro "Macro1"
    DoCmd.OpenQuery "AtualizaSim"
    DoCmd.SetWarnings True
    ElseIf Day(Now()) > 1 Then
    DoCmd.SetWarnings False
    DoCmd.OpenQuery "AtualizaNão"
    DoCmd.SetWarnings True
    End If

    e agora já está a funcionar como desejado.

    Obrigado pela ajuda!
    avatar
    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

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

    Re: [Resolvido]Limitar a execução de DoCmd.RunMacro

    Mensagem  Alexandre Neves em Qui 19 Jun 2014, 06:55

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


    .................................................................................
    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

      Data/hora atual: Qua 18 Out 2017, 04:56