Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как можно программно закрыть все активные окна???
 
 автор: NEWUser   (20.08.2010 в 11:04)   личное сообщение
 
 

Добрый день.
Может кто подскажет как можно в аксесе програмно закрыть все открытые окна (таблицы, формы, отчеты)

  Ответить  
 
 автор: osmor   (20.08.2010 в 12:06)   личное сообщение
 
 

смотрите Application.CurrentProject.allforms
Application.CurrentProject.alltables
и свойство isloaded (кажется так)

  Ответить  
 
 автор: Дядя Федор   (20.08.2010 в 13:34)   личное сообщение
 
 

Как ни странно, отлично работает такой код

Public Sub closeall()
    Do While Forms.Count > 0
        DoCmd.Close acForm, Forms(0).Name
    Loop
    Do While Reports.Count > 0
        DoCmd.Close acReport, Reports(0).Name
    Loop
End Sub

===================
Лучше оформить в виде функции и назначить в макросе autokeys какую-нибудь клавишу
^{F7} - запускПрограммы
...
Имя функции closeall()
===================
и будет вам счастье...

  Ответить  
 
 автор: Lukas   (20.08.2010 в 13:47)   личное сообщение
 
 

Неа.
Окна таблиц и запросов в режиме DataSheet не закроются.

  Ответить  
 
 автор: Дядя Федор   (20.08.2010 в 13:50)   личное сообщение
 
 

Да таблицы не проверял. Lukas, как об., прав.

  Ответить  
 
 автор: Дядя Федор   (01.09.2010 в 12:03)   личное сообщение
 
 

Для таблиц и запросов

Public Function IsLoadedQry(ByVal strQName As String) As Boolean
IsLoadedQry = False
If SysCmd(acSysCmdGetObjectState, acQuery, strQName) = acObjStateOpen Then
IsLoadedQry = True
End If
End Function
''''
Public Function IsLoadedTbl(ByVal strQName As String) As Boolean
IsLoadedTbl = False
If SysCmd(acSysCmdGetObjectState, acTable, strQName) = acObjStateOpen Then
IsLoadedTbl = True
End If
End Function
''''

Public Sub closetblqvr()
Dim tdf As TableDef
Dim qdf As QueryDef
For Each tdf In CurrentDb.TableDefs
   If IsLoadedTbl(tdf.Name) Then DoCmd.Close acTable, tdf.Name
Next tdf
For Each qdf In CurrentDb.QueryDefs
   If IsLoadedQry(qdf.Name) Then DoCmd.Close acQuery, qdf.Name
Next qdf

End Sub

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList