Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование, связанное с MS Office > Как скопировать запросы и модули из одной базы в д


Автор: k0c9k 9.11.2007, 18:30
Заранее благодарю за помощь. 
З.Ы. любые линки по теме приветствуются

Автор: k0c9k 10.11.2007, 15:25
Так. как копирнуть запросы я вроде разобрался
Код

Sub CopyQueries()
Dim nameFrom As String
Dim nameTo As String

' Path to the new DB
nameTo = "d:\projects\abfrage\new"

Dim newDb As Database
Set newDb = OpenDatabase(nameTo)

For Each o In CurrentDb.QueryDefs
    If ObjectExists("Query", o.Name, newDb) Then
        newDb.QueryDefs.Delete (o.Name)
    End If
    If (InStr(o.Name, "~") = 0) Then
        Set QueryDef = newDb.CreateQueryDef(o.Name, o.SQL)
    End If
Next o

MsgBox (Done)
End Sub


да. кстати - ктонибудь знает что за запросы которые начинаются с "~" ? так их в базе не видно, но когда копируешь - они всплывают.
а вот с копированием макросов - тут *опа. вообще непонятно. находятся они не в базе, а в application. 
Код

CurrentProject.AllMacros

и как из одной базы в другую кинуть - на данный момент загадка. может кто знает ?

Автор: Akina 10.11.2007, 21:32
Любые объекты запросто ИМПОРТИРУЮТСЯ из внешней базы данных. И смысла делать это программно я лично не вижу.

Цитата(k0c9k @  10.11.2007,  16:25 Найти цитируемый пост)
что за запросы которые начинаются с "~" ? 

Это запросы из конструкторов отчетов и прочих объектов БД.

Автор: mihanik 11.11.2007, 11:48
Akina, может мне сразу вопросы по Access переносить в твой раздел? (Базы данных - Access )

Дело в том, что лично я в Access, - скажем так, - не силён...

Остальные тоже.
А тут целый раздел по Access?

Автор: k0c9k 14.11.2007, 15:16
Akina
Цитата(Akina @  10.11.2007,  21:32 Найти цитируемый пост)
Любые объекты запросто ИМПОРТИРУЮТСЯ из внешней базы данных.

Конечно запросто импортируются. но это возможно в случае если размер базы менее ~2 Гб (точно не ручаюсь сказать). иначе эта функция перестает работать.


Автор: Akina 14.11.2007, 16:04
Цитата(k0c9k @  14.11.2007,  16:16 Найти цитируемый пост)
это возможно в случае если размер базы менее ~2 Гб (точно не ручаюсь сказать). иначе эта функция перестает работать.

При размере БД более 2 Гб она вообще перестанет работать.
С другой стороны речь шла об импорте объектов, а не данных, которые (особенно при таком объеме) просто обязаны лежать в отдельной БД - разделение баз данных не идиоты придумали...

Цитата(mihanik @  11.11.2007,  12:48 Найти цитируемый пост)
может мне сразу вопросы по Access переносить в твой раздел? (Базы данных - Access )

Если вопрос касается именно Аксесса, а не общий по VBA - конечно. Впрочем, никто не запрещает оставить переадресующий линк (кому я это рассказываю?).

Автор: k0c9k 14.11.2007, 17:17
Akina, Ну вот по независящим от меня причинам это сделано именно так. А сделать скрипт - самое простое на текущий момент. 

Автор: Akina 14.11.2007, 17:41
Цитата(k0c9k @  14.11.2007,  18:17 Найти цитируемый пост)
по независящим от меня причинам это сделано именно так

Значит, есть достаточные основания изменить текущее положение вещей. ИМХО.

Автор: k0c9k 14.11.2007, 17:53
Akina, спасибо за советы, но база далеко - и недоступна для меня.  
как сделать copyobject из одного application в другое ?

Автор: k0c9k 16.11.2007, 19:04
всем любителям полемики - привет.
Код

Sub CopyMacroModule()
Dim nameTo As String

' Path to the new DB
nameTo = "d:\new.mdb"

For Each o In Application.CurrentProject.AllMacros
    Application.DoCmd.TransferDatabase acExport, "Microsoft Access", nameTo, acMacro, o.Name, o.Name
Next o

For Each o In Application.CurrentProject.AllModules
    Application.DoCmd.TransferDatabase acExport, "Microsoft Access", nameTo, acModule, o.Name, o.Name
Next o

End Sub

Автор: Akina 16.11.2007, 19:16
По той же методике можно и импорт делать. Кстати.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)