Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Добавление модуля в удаленную mdb / 8 сообщений из 8, страница 1 из 1
27.11.2004, 19:31:56
    #32802608
Rogorn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление модуля в удаленную mdb
Подскажите как программой добавить(скопировать) стандартный модуль из одной базы в другую. До самих модулей добрался:
Код: plaintext
1.
2.
3.
4.
Set dbs = OpenDatabase("Путь к базе")
Set ctr = dbs.Containers!Modules
For Each Doc In ctr.Documents
        qw = Doc.Name
Next Doc
а вот проделать с ними что-то не получается, даже удалить не могу.
...
Рейтинг: 0 / 0
27.11.2004, 23:25:29
    #32802670
Serge Gavrilov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление модуля в удаленную mdb
Скопировать
См. методы CopyObject, TransferDatabase

Создать
Получить Application удаленной базы
Создать пустой стандартный модуль
Application.VBE.ActiveVBProject.VBComponents.Add vbext_ct_StdModule
Application.VBE.ActiveVBProject.VBComponents.Import
Импорт из файла
Application.VBE.ActiveVBProject.VBComponents.Import filename

см. Help
...
Рейтинг: 0 / 0
28.11.2004, 13:49:23
    #32802804
Rogorn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление модуля в удаленную mdb
В базе-отправителе создаю "Модуль1", в нем пишу:
Код: plaintext
DoCmd.CopyObject "База-получатель", "Модуль1", acModule, "Модуль1"
Первый запуск: ok - модуль скопирован.
Второй запуск: "Microsoft Access - обнаружена ошибка. Приложение будет закрыто. Приносим извинения за неудобства." Наверно перезаписывать нельзя, а как быть, как сначала удалить в базе-получателе имеющийся объект?
...
Рейтинг: 0 / 0
28.11.2004, 14:59:34
    #32802829
Serge Gavrilov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление модуля в удаленную mdb
Rogorn...Наверно перезаписывать нельзя, а как быть, как сначала удалить в базе-получателе имеющийся объект?

По-моему TransferDatabase перезаписывает объект

посмотрите обсуждение Изменения в форме, удаленной базы.

Сами поищите, подобные вопросы задаются часто.
А поиск на форуме неплохой.
...
Рейтинг: 0 / 0
28.11.2004, 15:15:49
    #32802832
Rogorn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление модуля в удаленную mdb
Разобрался: метод TransferDatabase допускает перезапись:
Код: plaintext
1.
DoCmd.TransferDatabase acExport, "Microsoft Access", _
"Адрес базы получателя", acModule, "Модуль1", "Модуль1"
А как сделать такое? :
База "Main" в ней находится "Модуль1" и процедура "fncTransferDatabase".
В базе "База1" создаю ссылку (Сервис - Ссылки) на базу "Main" и запускаю процедуру "fncTransferDatabase", но возникает ошибка т.к. процедура пытается найти "Модуль1" в базе "База1". Как ее заставить искать модуль в базе "Main"?
...
Рейтинг: 0 / 0
28.11.2004, 17:22:58
    #32802870
Serge Gavrilov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление модуля в удаленную mdb
авторА как сделать такое?
/topic/133471
...
Рейтинг: 0 / 0
28.11.2004, 19:15:03
    #32802911
Rogorn
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление модуля в удаленную mdb
Прочел ссылку.
Так я вроде так все и делал:в базе "База1" создал ссылку на базу "Main", а работать не хочет. Еще раз: в базе "Main" процедура:
Код: plaintext
1.
2.
3.
Public Function fncTransferDatabase()
DoCmd.TransferDatabase acExport, "Microsoft Access", _
"Адрес базы получателя", acModule, "m2","m2"
End Function
модуль "m2" находится тоже в базе "Main". В базе "База1" вызываю процедуру fncTransferDatabase, но экспорта не происходит - программа ищет модуль "m2" в базе "База1", а его там нет.
Насколько понял, по ссылке немного другой вопрос решался: вызвать "чужую" функцию, передав ей "свой" параметр, а у меня - вызвать "чужую" функцию, экспортирующую "чужой" модуль.
-------------------
Понятно, что "База1" и "база получатель" - разные базы, иначе не стоило бы все это городить, а просто воспользоваться импортом.
...
Рейтинг: 0 / 0
28.11.2004, 20:19:12
    #32802935
Serge Gavrilov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Добавление модуля в удаленную mdb
Rogorn...Понятно, что "База1" и "база получатель" - разные базы, иначе не стоило бы все это городить, а просто воспользоваться импортом.
Честно говоря, зачем вы городите огород, я не знаю.
Из ваших объяснений очень трудно понять, что вы работаете с тремя базами.
Из первой выполняется код, из второй надо забрать модуль и передать в третью. Это так?
Если так, то, по простому, вполните импорт из второй в текущую, а из нее уже экспорт в базу приемник.

Можно и по другому, получить Application базы донора или базы приемника и опять же выполнить TransferDatabase (про получение Application и было в той ссылке, которую я вам дал).
Dim App as Application
Set app = GetObject("ПутьИмяБазы")
app.DoCmd.TransferDatabase acExport ...
тогда модуль для экспорта будет искать в App

Есть и другие варианты.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Добавление модуля в удаленную mdb / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]