VBA代码调用Access数据库系统压缩和修复数据库功能
- 2004-07-30 05:14:00
- 版主们-Office交流网 原创
- 9613
如何用VBA代码调用Access系统压缩和修复数据库这一功能.
希望通过标签的单击事件调用系统菜单中的压缩和修复数据库这一功能.
上传个文件:qPdhFMoU.rar
1. ququ 最简单的办法 新增一个菜单栏,把这个命令拖到菜单内即可
2. kunlun 在Access窗体上创建 建一个标签,在标签的单击事件中添加如下事件
Private Sub Text1_Click() docmd.RunCommand acCmdCompactDatabase docmd.RunCommand acCmdRepairDatabase end sub
3. Tmtony站长做的压缩和修复数据库函数
Function Compact() With CommandBars.Add(, msoBarFloating, , True) Const CompactId As Long = 2071 .Controls.Add msoControlButton, CommandBars("Tools").Controls(7).CommandBar.Controls(2).Id DoEvents .Visible = True .Controls(1).SetFocus SendKeys "{ENTER}" '模拟击键压缩 End With End Function
4. 李啸林 修改后的函数
可以适合97与XP,我没有安装过ACCESS 2000,希望你们能给我补上。
Dim ref As Reference Dim i As Byte Set ref = References!Access '我不用Application.Vertion是由于,这个属性在Access 97中不存在。 Select Case ref.Major Case 8: i = 6 'Access 97 Case 9: i = 7 'Access XP Case Else MsgBox "未知版本,无法使用此功能" Exit Sub End Select With CommandBars.Add(, msoBarFloating, , True) .Controls.Add msoControlButton, CommandBars("Tools").Controls(i).CommandBar.Controls(2).Id DoEvents .Visible = True .Controls(1).SetFocus SendKeys "{ENTER}" '模拟击键压缩 End With
5. zhengjialon 把这个函数拷贝下窗体的模块里,然后在标签的单击事件里写:Compact
Function Compact() With CommandBars.Add(, msoBarFloating, , True) Const CompactId As Long = 2071 .Controls.Add msoControlButton, CommandBars("Tools").Controls(7).CommandBar.Controls(2).Id DoEvents .Visible = True .Controls(1).SetFocus SendKeys "{ENTER}" '模拟击键压缩 End With End Function
6. guoya ngw123:连接表压缩方法建立一个函数,然后在程序中调用
Function zipDB() If Right(CurrentProject.Path, 1) <> "\" Then '判断当前路径 Y = CurrentProject.Path & "\" Else Y = CurrentProject.Path End If x = Y & "data_be.mdb" 'data_be.mdb为后台数据库名称 '取得路径 If Dir(x) = "" Then MsgBox "数据未找到" Exit Function ElseIf Dir(x) <> "" Then '确定文件存在 DBEngine.CompactDatabase x, Y & "temp.mdb", ";pwd=123", , ";pwd=123" '压缩为暂存文件 ' 假设后台数据库密码为"123" Kill x '删除原文件 FileCopy Y & "temp.mdb", x '还原 Kill Y & "temp.mdb" '删除暂存文件 End If MsgBox "完成修补及压缩" End Function
ywg
谢谢huanghai问题解决了,总结一下和各位新手共同学习:
1、用zhengjialon版主提供的Tmtony站长和李啸林的方法,并在VBE的窗口中菜单栏,工具/引用里请首选引用Microsoft Office X.0 Object Llbrary.这种方法应该适用于没有拆分的数据库(拆分后没试过)。2、用guoya的方法适用于拆分过的数据库。
ngw123
如何压缩修复连接表呢....这个无法通过链接表来压缩,必须 压缩实际的链接数据库文件
ywg
kunlun你好: 按你所说的方法,系统提示出错,不能压缩打开的数据库,我是希望在界面中屏避系统菜单,在用户窗体中,做一个标签,让用户通过单击此标签实现对本数据库的压缩与修复,(数据库为打开状态).请帮我想想办法.谢谢!
zhengjialon
http://www.office-cn.net/thread-17457-1-1.html
ywg
版主没搞明白?能否详细说明,"VBA"小弟真是不太认识它
ywg
版主还是要麻烦你.系统提示错误运行时错误'-2147467259(80004005)':方法'ADD'作用于对象'commandBarControls'时失败
ngw123
连接表如何压缩呀..怎么没人回答...是不是新建一个access实冽,再打开连接表,再压缩..我去试试...
kunlun
这么复杂,有没有简单一点呀。我头都大了,看不懂了
ywg
还有那位能再次拉我一把呀!
zhengjialon
回楼主:在VBE的窗口中菜单栏,工具/引用里请首选引用Microsoft Office X.0 Object Llbrary
huanghai
找到要操作菜单的位置,然后用代码执行,具体如:CommandBars("menu bar").Controls("工具(&T)").Controls("数据库实用工具(&D)").Controls("压缩和修复数据库(&C)...").Execute
ywg在
huanghai按你所说的方法,系统提示出错,不能压缩打开的数据库.
ywg
guoya你所提供的方法,我经试验发现如果是在没有用户登陆及密码的数据库中可以正常使用,但如果是在有用户登陆及密码的数据库中在压缩后会出现错误提示运行时错误‘3031’密码无效guoya及各位高手能否帮忙解决这个问题。
guoya
后台数据是不应该有安全机制的呀
ywg
没有用系统的安全机制,但有用VBA代码的用户登陆密码,拆分后的后台数据库的密码为123而前台窗体打开时会出现密码无效的错误,应如何解决呢?去掉代码中的pwd=123", , ";pwd=123"可以吗?DBEngine.CompactDatabase x, Y & "temp.mdb", ";pwd=123", , ";pwd=123" '压缩为暂存文件
' 假设后台数据库密码为"123"
(设置_安全_修复-相关文章技巧链接):
ACCESS数据库RunCommand方法参数列表说明说明
- office课程播放地址及课程明细
- Excel Word PPT Access VBA等Office技巧学习平台
- 将( .accdb) 文件格式数据库转换为早期版本(.mdb)的文件格式
- 将早期的数据库文件格式(.mdb)转换为 (.accdb) 文件格式
- KB5002984:配置 Jet Red Database Engine 数据库引擎和访问连接引擎以阻止对远程数据库的访问(remote table)
- Access 365 /Access 2019 数据库中哪些函数功能和属性被沙箱模式阻止(如未启动宏时)
- Access Runtime(运行时)最全的下载(2007 2010 2013 2016 2019 Access 365)
- Activex控件或Dll 在某些电脑无法正常注册的解决办法(regsvr32注册时卡住)
- office使用部分控件时提示“您没有使用该ActiveX控件许可的问题”的解决方法
- RTF文件(富文本格式)的一些解析
- Access树控件(treeview) 64位Office下出现横向滚动条不会自动定位的解决办法
- Access中国树控件 在win10电脑 节点行间距太小的解决办法
- EXCEL 2019 64位版(Office 2019 64位)早就支持64位Treeview 树控件 ListView列表等64位MSCOMMCTL.OCX控件下载
- VBA或VB6调用WebService(直接Post方式)并解析返回的XML
- 早期PB程序连接Sqlserver出现错误
- MMC 不能打开文件C:/Program Files/Microsoft SQL Server/80/Tools/Binn/SQL Server Enterprise Manager.MSC 可能是由于文件不存在,不是一个MMC控制台,或者用后来的MMC版
- sql server连接不了的解决办法
- localhost与127.0.0.1区别
- Roych的浅谈数据库开发系列(Sql Server)
- sqlserver 自动备份对备份目录没有存取权限的解决办法
- 安装Sql server 2005 express 和SQLServer2005 Express版企业管理器 SQLServer2005_SSMSEE
联系人: | 王先生 |
---|---|
Email: | 18449932@qq.com |
QQ: | 18449932 |
微博: | officecn01 |