Office中国论坛/Access中国论坛
标题:
麻烦自找——浅谈Access组件的导出
[打印本页]
作者:
roych
时间:
2011-6-25 01:51
标题:
麻烦自找——浅谈Access组件的导出
本帖最后由 roych 于 2015-1-31 16:01 编辑
一直以为只有我们怕麻烦,后来才知道外国人更怕麻烦,不信且看:“Don't trouble troubles until trouble troubles you”,里面就有4个麻烦(trouble),够麻烦了吧?虽说怕归怕,但现实还是要面对的。例如,导出数据库组件就是一件很麻烦的事情。当然,聪明的版友如你,可能直接就说了,直接复制出来作为备份不就行了嘛?这不是自找麻烦吗?
这句话说得好。不过我还是想先说说背景:数据库是其它部门某个前辈开发的,或许因为安全的缘故,用Shell指定了工作组打开软件。然而几经辗转,也不知道是版本(源文件是Office 2002版本) 还是因为工作组的缘故,只能在指定的某台电脑打开。而目前公司开始装2010……现在大家知道为什么只能导出了吧?
关于导出,用系统自带的导出命令不是不可以,不过五十几张表,再加五十几个查询,再加五十几个窗体,加上十几个宏和三四个模块,虽说不多,老是点着鼠标也不太愉快,而且更加麻烦的是,一旦点错了,很可能某个表没导出,逐个对比起来,想来也不轻松吧?因此只好写一个模块来执行,跟大家温习一下DoCmd.TransferDatabase的用法。
Sub test()
'需要引用DAO 3.6库
Dim db As dao.Database
Set db = CurrentDb
'导出表
For Each tbl In db.TableDefs
'系统表不导出(嗯,如果删除If语句将出错)。
If Not tbl.Name Like "msys*" Then
DoCmd.TransferDatabase acExport, "Microsoft Access", CurrentProject.Path & "\test.mdb", acTable, tbl.Name, tbl.Name
End If
Next
'导出查询
For Each qry In db.QueryDefs
DoCmd.TransferDatabase acExport, "Microsoft Access", CurrentProject.Path & "\test.mdb", acQuery, qry.Name, qry.Name
Next
'导出窗体
For Each frm In CurrentProject.AllForms
DoCmd.TransferDatabase acExport, "Microsoft Access", CurrentProject.Path & "\test.mdb", acForm, frm.Name, frm.Name
Next frm
'导出宏
For Each mcr In CurrentProject.AllMacros
DoCmd.TransferDatabase acExport, "Microsoft Access", CurrentProject.Path & "\test.mdb", acMacro, mcr.Name, mcr.Name
Next mcr
'导出报表
For Each rpt In CurrentProject.AllReports
DoCmd.TransferDatabase acExport, "Microsoft Access", CurrentProject.Path & "\test.mdb", acReport, rpt.Name, rpt.Name
Next rpt
'导出模块
For Each mdl In CurrentProject.AllModules
DoCmd.TransferDatabase acExport, "Microsoft Access", CurrentProject.Path & "\test.mdb", acModule, mdl.Name, mdl.Name
Next mdl
End Sub
复制代码
在即将被导出的数据库中新建一个模块,把上面代码复制进去执行即可。——可能有版友会觉得,这样会不会把这个模块也导进去了?这个放心就是了,这是正在执行的模块,是不会被导入的。此外,值得留意的是,表和查询,跟窗体等其它组件是分属不同的集合的。
能不能用Container或者AccessObject来做呢?目前还没调试。此外,这只能在当前数据库里执行,也算是一个缺陷。看看大家有没有更好的办法。希望能与大家探讨。
作者:
Grant
时间:
2011-6-25 08:59
先收下~
作者:
huangqinyong
时间:
2011-6-25 21:00
这个功能不错,收下了,谢谢
作者:
wang1950317
时间:
2011-6-25 21:56
收藏学习!谢谢!
作者:
mag770t
时间:
2011-8-8 16:41
收下了,学习个,谢谢!
作者:
bpchan
时间:
2012-1-11 18:43
学习
欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/)
Powered by Discuz! X3.3