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
Função para fechar todos os formulários
Função para fechar todos os formulários

Nota importante: para ter acesso aos vídeos e arquivos exemplos deste site, adquira um dos planos apresentados abaixo. Você pode comprar em até 10x no Cartão de Crédito. 

Veja como comprar e saiba mais sobre o material oferecido,  clicando aqui.

Open v3

 


 

Em certas situações é necessário forçar o fechamento de formulários.  Por exemplo, o aplicativo Maestro que ofereço neste site, faz uso desta técnica de fechar os formulários para poder realizar o logoff e trocar de usuário.

Quando um formulário é aberto, ele assume um número que começa do zero(0).  Podemos identificar o nome de um formulário aberto, através deste número.  Exemplo de dois formulários abertos:

forms(0).name :::> frmLogin

forms(1).name :::> frmClientes

A propriedade count retorna à quantidade de formulários que estão abertos.  Exemplo:

forms.count :::> 2

Vamos supor que eu feche o formulário frmLogin do exemplo acima, o número de identificação será  atualizado automaticamente e o formulário frmClientes passará a ser identificado pelo zero(0)

forms(0).name :::> frmClientes

forms(1).name :::> Erro 2456 - número inválido

Observe na função abaixo que o laço FOR foi configurado para percorrer os formulários do maior número de identificação para o menor (step -1), justamente por causa da reconfiguração automática dos números de identificação dos formulários abertos que ocorre quando um deles é fechado.

Public sub fncFechaForms(Optional booLogOff As Boolean = False)
On Error Resume Next
Dim j As Integer, nf As Integer
'------------------------------------------------------------
'Armazena na variável nf, a quantidade de formulários abertos
'------------------------------------------------------------
nf = Forms.Count 
'-----------------------------------------------------------------------------
'Percorre os formulários abertos,do maior número de identificação para o menor
'-----------------------------------------------------------------------------
For j = (nf - 1) To 0 Step -1
   If booLogOff Then
      '------------------------------------------------------------------------
      'Fecha todos os formulários, mantendo aberto apenas o formulário frmLogin
      '------------------------------------------------------------------------
      If Not Forms(j).Name = "frmLogin" Then
         DoCmd.Close acForm, Forms(j).Name, acSaveYes
      End If
   Else
      '-------------------------------------------------------
      'Fecha todos os Forms, incluindo o formulário de Login
      '-------------------------------------------------------
      DoCmd.Close acForm, Forms(j).Name, acSaveYes
   End If
Next j
End sub

Para realizar o logoff a função é chamada assim:

call fncFechaForms(true) :::> fecha todos os formulários, exceto o formulário de Login (frmLogin)

Ao encerrar o aplicativo, a função é chamada para fechar todos os formulários:

call fncFechaForms() :::> fecha todos os formulários.

Bom estudo!


 

 


3 comentário(s)

Sales   09/01/2018 19:01:10

Boa noite,
Fiz um botão para fechar os formulários, exceto um, mas ta fechando todo o banco de dados.
Help

Private Sub REABRIR_Click()
Call fncFechaFormsPS(True)
Me.SITUAÇÃO.Value = "CANCELADO"
End Sub

Public Function fncFechaFormsPS(Optional booLogOff As Boolean = False)
'----------------------------------
'fecha todos os formulários abertos
'----------------------------------
On Error Resume Next
Dim j As Integer, NF As Integer
NF = Forms.Count
For j = (NF - 1) To 0 Step -1
If booLogOff Then
If Not Forms(j).Name = "F_PS_CADASTRO" Then
DoCmd.Close acForm, Forms(j).Name, acSaveYes
End If
Else
DoCmd.Close acForm, Forms(j).Name, acSaveYes
End If
Next j
End Function

Amaral do AtivoAccess   18/02/2019 07:58:25

Obrigado Avelino. Excelente solução.

Valdir Pereira da   04/07/2019 11:11:06

Avelino,

Teria um para fechar o Banco de Dados inteiro após certo tempo de inatividade??
Estou usando com ribbon persanalizada pelo montaribbons adquirido de você.


Envie seu comentário: