Доброго времени суток, Всем заглянувшим на вопрос!
Программа написана на Visual Basic 6.0 (текст ниже). В процессе работы она загружает БД, разработанную в Access 97 и просмотривает свойства всех Form этой БД.
На просмотр 14 форм (около 14000 свойств) уходит около 30 мин. Как уменьшить время работы программы?
С уважением.
'в VBA в Проект.Информация установлено
' - Visual Basic for Application |vba6.dll
' - Visual Basic runtime objects and procedures |3
' - Visual Basic objects and procedures |vb6.olb
' - Microsoft Access 8.0 Object Library |MSACC8
Текст программы
Option Explicit
Dim AccObj As Access.Application
Sub BeginWork() 'Начало работы
'Откроем тестируемую БД
' Создает объект Workspace Microsoft Jet.
Set AccObj = CreateObject("Access.Application.8")
' Открывает для монопольного доступа аргумент Database,
' представляющий сохраненную базу данных Microsoft Jet.
AccObj.OpenCurrentDatabase "E:\Тест.mdb", True
Call PropertiForm 'просмотр свойств Форм
AccObj.Quit acExit 'закончим работать с приложением
Set AccObj = Nothing 'уберем ссылку на него
End Sub
'просмотр свойств Форм
Sub PropertiForm()
Dim i_Name As String
Dim i_Ob As Integer
Dim ip As Integer
Dim i_Form As Object
For i_Ob = 1 To CurrentDb.Containers("Forms").Documents.Count
i_Name = CurrentDb.Containers("Forms").Documents(i_Ob - 1).Name
'откроем форму для просмотра
AccObj.DoCmd.OpenForm i_Name, acDesign, , , , acHidden
Set i_Form = AccObj.Forms(i_Name)
With i_Form
'просмотр свойств Форм
Call WorkProperti(.Properties)
'просмотр свойств Форм
For ip = 1 To i_Form.Controls.Count
Call WorkProperti(.Controls(ip - 1).Properties)
Next ip
End With
'закроем форму
AccObj.DoCmd.Close acForm, i_Name
Set i_Form = Nothing
Next i_Ob
End Sub
'работа с продедурами
'Вход: Prop - указатель на продедурs
Sub WorkProperti(Prop As Properties)
Dim i_Prop As Object
For Each i_Prop In Prop 'просматриваем все свойства
If (i_Prop.Category = 4) And _
(i_Prop.Type =8) Then
'анализ выбранных свойств
End If
Next
End Sub