Página 1 de 1

[resolvido] Maestro só fecha se os relatórios estiverem fechados

Enviado: 01 Fev 2018, 02:31
por Dico Seibt
Mestre Avelino,

Sei que há um código na programação do Maestro que impede o funcionamento do botão fechar ("X" na barra superior), mas não o estou localizando. E eu pretendo repetir este código para considerar os formulários abertos, de forma a obrigar que o usuário feche os formulários antes de fechar o programa (alguns formulários são fechados por consultas ação - que modificam os dados de acordo com as escolhas ou operações que o usuário praticou no formulário).
Poderia, para começar, indicar onde está o tal código?

Abraço.

Re: Maestro só fecha se os relatórios estiverem fechados

Enviado: 01 Fev 2018, 07:42
por Avelino Sampaio
Dico,

o código se encontra no formulário frmLogin, no evento "ao descarregar"

Código:
Private Sub Form_Unload(Cancel As Integer)
On Error Resume Next
'se tiver algum relatório aberto não permite fechar o access
If Application.Reports.Count > 0 Then Cancel = True
End Sub


Nota: O Maestro tem outro recurso que é fechar automaticamente todos os formulários ao encerrar. Fica na função fncOnAction da ribbon, no módulo mod_ribbon. A função fncFechaForms() fica no módulo mod_geral

Código:
...
Case "btsair"
Call fncFechaForms
...


Aguardamos

Re: Maestro só fecha se os relatórios estiverem fechados

Enviado: 07 Fev 2018, 02:10
por Dico Seibt
Mestre Avelino, boa noite.

Coloquei mais uma linha com o seguinte código no evento Unload do FrmLogin:

If Application.Forms.Count > 1 Then Cancel = True

Assim, o sistema está contando também os formulários. Com um aberto (é o FrmLogin) o botão fechar do Access funciona. Com qualquer outro form aberto, o botão fica desativado.
Esta função é importante para alguns formulários que só podem ser fechados executando uma consulta ação (ou vai adiante ou reverte as alterações realizadas até ali).

Abraço.

Re: [resolvido] Maestro só fecha se os relatórios estiverem fechados

Enviado: 08 Fev 2018, 02:34
por Dico Seibt
Mestre Avelino, boa noite.

Ocorreu um erro em decorrência da rotina que conta os formulários abertos. Se clico no "X" com um formulário aberto, a rotina opera e não permite o fechamento do sistema. Mas aí os botões da Ribbon deixam de funcionar e passam a emitir um aviso com o código de erro 2501 ("A ação Close foi cancelada") e só sai deste looping se fecho o formulário aberto.
Observo que nos comandos da função fncOnAction escrevi como segue:

Código: Selecionar todos

Case "btFichaAssociado"
        DoCmd.Close , ""
        DoCmd.OpenReport "RelFichaProposta", acViewPreview, "", "", acNormal
        DoCmd.Maximize

Isso faz que a primeira ação seja fechar o formulário aberto, mas isso não está funcionando. Consigo fechar o formulário através de um botão "fechar" no próprio formulário, como comando Close.