作者:mahushen
摘自:
主要功能:
1.连接Access文件,不使用Ado连接.
2.根据需要删除Access文件中的表或对象.
这里使用了Delphi中的TAccessApplication组件,通过它来连接Access文件,并进行操作.
-
使用TAccessApplication 打开 Access文件:
function OpenAccessFile(p_FileName: string): boolean;//p_FileName:Access文件名,含路径信息
var
tmpC: longint;
begin
result := false;
{特别说明:Access到2003 以后增加了宏安全性设置,如果安全性设置的较高,则每次打开Access文件时总会出一个警告提示框,使用程序打开时也是这样使用不方便,所以在打开Access文件前要先降低宏安全性,然后再打开文件,这样就不会在程序中弹出提示框了,不过在打开文件后要记得把宏安全性还原.}
with TRegistry.Create do
begin
RootKey := HKEY_Current_USER;
if OpenKey('SoftwareMicrosoftOffice .0AccessSecurity', true) then
{由于Access在默认状态下可能没有设置宏安全性,所以这个注册表键可能不存在,所以这里用:true参数,自动创建它}
begin
if ValueExists('Level') then //如果存在Level值
begin
tmpC := Readinteger('Level');//记录下原Level值,以备将来还原
WriteInteger('Level', 1);//设置宏安全性为:低级.1:低级,2:中级,3:高级
end else
begin
tmpC := 2;//没有Level值,则默认它为:中级安全
WriteInteger('Level', 1);//
end;
end;
free;
end;
try
adoc.Connect;//adoc为TaccessApplication对象,先连接Access程序
adoc.Docmd.CancelEvent;
adoc.OpenCurrentDatabase(p_FileName, True, '');//打开指定文件
result := true;
except
on e: exception do
begin
msg.Caption := '';
showmsg(0, '备份数据出错.信息:' + e.Message);
end;
end;
with TRegistry.Create do //还原宏安全性
begin
RootKey := HKEY_Current_USER;
if OpenKey('SoftwareMicrosoftOffice .0AccessSecurity', False) then
begin
if ValueExists('Level') then
begin
WriteInteger('Level', tmpC);
end;
end;
free;
end;
end; -
打开Access文件后就可以进行操作了.
adoc.DoCmd.DeleteObject(acTable, tmpTabname);//adoc为TAccessApplication对象
说明:DoCmd包含一系列的方法,这里使用的DeleteObject方法,两个参数分别是要删除的Access对象的类型和对象的名称.关于更多DoCmd的信息可参考Access的帮助文档中Microsoft Access Visual Basic参考/对象/D/DoCmd部分