LEADERSOFT.ru Разработка на заказ программ и сайтов
Форумы по информационным технологиям
 
Регистрация  |  Вход
left
Форумы Минимизировать
ПоискСписок форумов
  Программирование  Microsoft Access. Файлы mdb и accdb  Тема: Проблема ...
 Тема: Проблема видимости типа-класса в подсоед. модуле
 
 15.06.2007 21:04:34
MIkel
2 сообщения


Тема: Проблема видимости типа-класса в подсоед. модуле
Суть проблемы
Создается библиотечный файл Lib1.mdb
В нем создается класс ClassLib1
в классе создается функция
Public Function FuncLib1()
MsgBox " функция класса ClassLib1"
End Function
Создается модуль ModuleLib1
в котором создается функция

Public Function FuncModuleLib1()
Dim Object1 As ClassLib1
Set Object1 = New ClassLib1
Object1.FuncLib1
Set Object1 = Nothing
End Function

где, как видно, создается объект класса ClassLib1

Далее Создается файл Lib2.mdb

в котором создается модуль с функциями
Public Function FuncModuleLib2a()
Dim Object1 As Lib1.ClassLib1
Set Object1 = New Lib1.ClassLib1
Object1.FuncLib1
Set Object1 = Nothing
End Function

Public Function FuncModuleLib2b()
Call FuncModuleLib1
End Function

Далее в Referenses добавляется ссылка на Lib1.mdb

И вуаля - прикол
функция FuncModuleLib2b() выполняется нормально
а
функция FuncModuleLib2a() говорит, что пользовательский тип Lib1.ClassLib1 не известен !

такое было проверено на Access 2000 и XP

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

Вопрос: может кто-нить знает что-нить про этот глюк ?




P.S. Создание классов
Автор: MIkel от 17.10.2003 19:29:53 Источник ...
 15.06.2007 21:04:34
All
4316 сообщения
1-ый


RE: Проблема видимости типа-класса в подсоед. модуле
Что делать, так задумано Microsoft
Если посмотреть в свойствах класса, то свойство Instancing у него можно выставить только Private (1) или PublicNotCreatable (2).
Т.е. создавать новые экземпляры во внешних программах не получится.
Ну и ладно. Добавим в файле с классами модуль с функциями для создания классов

Public Function GetClass1() As Class1
Set GetClass1 = New Class1
End Function
Public Function GetClass2() As Class2
Set GetClass2 = New Class2
End Function

А там, где надо использовать:

Public Sub CL()
Dim obj1 As Class1 'Instancing=PublicNotCreatable
Dim obj As Object 'Instancing=Private
Set obj1 = GetClass1
Set obj = GetClass2
obj1.MSG 'это просто методы, для примера
obj.MSG2 '
End Sub



P.S. Создание классов
Автор: Николай от 0:00:00 Источник ...
 15.06.2007 21:04:34
MIkel
2 сообщения


спасибки
Спасибо большое
до Object и создания в модуле я уже додумался,
а вот с пропертями класса - это я пропустил ...

неисповедимы пути Microsoft'a - а особенно в программном обеспечении ... ;-)


P.S. Создание классов
Автор: Mikel от 18.10.2003 11:24:50 Источник ...
  Программирование  Microsoft Access. Файлы mdb и accdb  Тема: Проблема ...
ПоискПоиск  Список форумовСписок форумов  
right