Delphi是一个非常优秀的语言和开发环境,具有编译速度快、面向对象、全面支持Windows API、支持COM和强大的数据库支持,特别是在Delphi 5中增加了对ADO(Microsoft ActiveX Data Objects)的支持,使得Delphi程序员可以彻底摆脱BDE,缩小软件分发的体积。但是Delphi的ADO组件不支持ActiveX Data Objects Extensions for Data Definition Language and Security(ADOX、ADO的扩展,用于创建、修改和删除模式对象,如表格和过程;操作安全对象,可用于维护用户和组,以及授予和撤消对象的权限) 和Jet and Replication Objects(JRO,用于对Jet数据库引擎添加压缩、同步复制等特征),这些功能在开发Access数据库往往比较重要。不过由于ADOX、JRO乃至ADO都是基于COM(Component Object Model,组件对象模型)的,可以调用COM来来实现这些功能。下面我将讨论这方面问题,以此抛砖引玉,和大家共同研究。 
  一、关于COM的一些基本概念。 
  COM对象(COM object)是实现某一特殊功能的二进制代码,包括实现功能的一些方法,这些方法通过COM接口(COM interfaces)被访问。但是你不能直接访问COM接口,你可以通过COM类(COM class)来操作COM接口。 
  二、引用ADOX和JRO。 
  开发平台或客户端需要安装MDAC 2.1数据库引擎,你可以从微软公司http://www.microsoft.com/data下载,也可以在安装IE5.0中选择定制安装“动态数据绑定”选项。 
  在Delphi IDE中选择菜单ProjectImport Type Library,出现Import Type Library对话框,选择“Microsoft ADO Ext. 2.x for DDL and Security”,将Class Name中TTable改为TADOXTable(因为TTable组件在Delphi中已经存在并注册);选择“Microsof Jet and Replication Object 2.x Library”。然后单击“Install”安装,便在Delphi的Imports目录下生成ADOX_TLB.pas和JRO_TLB.pas两个文件。在Unit文件的Uses中加入ComObj、ADOX_TLB、JRO_TLB,就可以通过COM操作ADOX和JRO对象了。 
  打开ADOX_TLB.Pas文件,可以看到定义的接口有_Catalog、_Table、_Index等。 
  建立一个接口对象主要有两种方法(以建立_Catalog的对象为例): 
  首先定义Catalog为接口_Catalog的类型。 
  方法1.通过CreateComObject函数建立实例 
  Catalog:=CreateComObject(Class_Catalog) as _Catalog; 
  方法2.通过类来建立实例 
   Catalog:=CoCatalog.create;其实两种方法原理是一样的。在Adox_TLB.pas中,CoCatalog是这样定义的: 
  CoCatalog=class 
  class function Create:_Catalog; 
  …… 
  class function CoCatalog.Create:_Catalog; 
  begin 
  Result:=CreateComObject(CLASS_Catalog) as _Catalog; 
  end; 
  建立了接口对象的实例后,就可以通过接口对象的属性、方法等实现一定的功能。关于ADOX和JRO的对象模型、属性和方法等,请读者自己参阅MDAC SDK或Access2000中的帮助文件,这里就不在重复了。