Delphi操作Access文件,非ADO

来源:互联网 发布:世界贸易总额数据 编辑:程序博客网 时间:2024/05/21 06:01

作者:mahushen
摘自:

主要功能:
1.连接Access文件,不使用Ado连接.
2.根据需要删除Access文件中的表或对象.

这里使用了Delphi中的TAccessApplication组件,通过它来连接Access文件,并进行操作.

  1. 使用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;
  2. 打开Access文件后就可以进行操作了.
    adoc.DoCmd.DeleteObject(acTable, tmpTabname);//adoc为TAccessApplication对象
    说明:DoCmd包含一系列的方法,这里使用的DeleteObject方法,两个参数分别是要删除的Access对象的类型和对象的名称.关于更多DoCmd的信息可参考Access的帮助文档中Microsoft Access Visual Basic参考/对象/D/DoCmd部分
原创粉丝点击