Можно в VB ускорить перебор свойств форм БД (Access 97)?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
patq
Начинающий
Начинающий
 
Сообщения: 24
Зарегистрирован: 06.08.2005 (Сб) 22:23
Откуда: Ижевск

Можно в VB ускорить перебор свойств форм БД (Access 97)?

Сообщение patq » 06.08.2005 (Сб) 22:44

Доброго времени суток, Всем заглянувшим на вопрос!

Программа написана на 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

lord0n
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 845
Зарегистрирован: 30.06.2005 (Чт) 9:55
Откуда: Moskow

Сообщение lord0n » 06.08.2005 (Сб) 22:46

а накой тебе просматривать формы?

patq
Начинающий
Начинающий
 
Сообщения: 24
Зарегистрирован: 06.08.2005 (Сб) 22:23
Откуда: Ижевск

Глюки в БД задолбали.

Сообщение patq » 07.08.2005 (Вс) 10:47

Глюки в БД, разработанной в Access 97 задолбали.
Прогой их выявляю, потом в Access устраняю.
Все хорошо, но больно долго работает

lord0n
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 845
Зарегистрирован: 30.06.2005 (Чт) 9:55
Откуда: Moskow

Re: Глюки в БД задолбали.

Сообщение lord0n » 07.08.2005 (Вс) 13:32

patq писал(а):Глюки в БД, разработанной в Access 97 задолбали.
Прогой их выявляю, потом в Access устраняю.
Все хорошо, но больно долго работает


я бы на твоем месте переписал прогу на vb и пользовался ею
так надежней ИХМО

patq
Начинающий
Начинающий
 
Сообщения: 24
Зарегистрирован: 06.08.2005 (Сб) 22:23
Откуда: Ижевск

Ответ интересен, но ...

Сообщение patq » 08.08.2005 (Пн) 19:05

lord0n писал(а):я бы на твоем месте переписал прогу на vb и пользовался ею
так надежней ИХМО


Спасибо за совет, он очень интересен. В следующей проге, жизнь меня до этого дожмет.

А по существу вопроса есть какие-нибудь идеи.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Majestic-12 [Bot] и гости: 10

    TopList