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

    Compartilhe

    paulobski
    Novato
    Novato

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 5
    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.

    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 5889
    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 : 5
    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 : 5
    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!

    Alexandre Neves
    Moderador Global
    Moderador Global

    Respeito às Regras 100%

    Sexo : Masculino
    Localização : Portugal
    Mensagens : 5889
    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: Sex 09 Dez 2016, 03:51