Microsoft的Access继承了一些FoxBase DBF的特点,个人估计是DBF的改进,比如FoxBase说在删除
数据后其实并没有真正删除,只是加上一个删除标记,在需要的时候可以用Recall命令恢复这些数据,如果想彻底删除,首先需要独占访问数据表,然后使用Pack命令来清除这些已经被删除的数据,可以称之为“压缩”数据表。 Access
也是一样,如果是文本和数字等一般数据恐怕不太明显,如果是OLE对象,加入后MDB文件大小会剧增,而在删除这些数据行后文件大小并没有相应减少,日积月累这些无用的数据不光占用了大量硬盘空间,而且也会降低
数据库的访问效率,这时已经没有Pack命令可用了,但可以使用Access的“压缩和修复数据库”(在“工具”菜单中)来将那些无用的数据清除掉。如果你的程序使用Access作为数据库,使用菜单命令来“压缩数据库”肯定是不太合适的,况且有时候需要自动来完成这个 *** 作,所以我们需要把它用代码来完成,需要调用COM对象的方法,压缩后的数据库被保存为另外一个文件,再把原文件删除(其实Access自己也是这么做的),代码如下:#include "objbase.h" //牵涉到COM对象,必须包含此头文件AnsiString srcmdb="c://test.mdb"//原文件名(压缩之前) ACCESS可在菜单上选择[压缩]来压缩当前正打开的数据库,如是我们就可以通过程序临时添加一个工具条按钮,然后使用SendKeys来模拟键盘 *** 作,实现压缩当前数据库,压缩后它会重新打开。函数如下:
FunctionCompact()
'添加一个工具条
WithCommandBars.Add(,msoBarFloating,,True)
'在工具条上添加一个按钮,这个按钮是从系统菜单的[工具]中[压缩]产生的
.Controls.AddmsoControlButton,CommandBars("Tools").Controls(7).CommandBar.Controls(2).Id
.Visible=True
'将焦点移到该按钮上
.Controls(1).SetFocus
'模拟击键
SendKeys"{ENTER}"
EndWith
EndFunction
评论列表(0条)