在Delphi中用ADD控件打开Access文件

在Delphi数据库编程中,有时我们想避开BDE数据引擎,这样就可以减少非常大的额外开销。这时,我们就要用ADO控件了,(ADO控件是微软用来存取各种数据的高级接口技术,也叫OLE DB)。下面就是一个用ADO控件读取Access数据库的程序。
   首先在窗体中加入以下控件:
   button1,label1,label2,listbox1,edit1控件(它们在Standard选项卡上);
   opendialog1控件(在Dialogs选项卡上)
   datasource1控件(在Data Access选项卡上)
   dbgrid1控件(在Data Controls选项卡上)
   adoconnection1,adotable1控件(在ADO选项卡上)
   给它们添加适当的属性,使它们如(图1)1所示。它们的要添加的属性如下:

图1
图1

   button1:caption 属性:'打开';

label1:caption 属性:'Access文件';

label2:caption 属性:'请选择表';
   edit1:text 属性:' ';(即空白)
   opendialog1:filter属性:*.mdb|*.mdb;

dbgrid1:datasource 属性:datasource1;

datasource1:dataset 属性:adotable1;

adotable1:connection 属性:adoconnection1;

adoconnection1:loginprompt 属性:false;

添加属性后,我们就给事件添加程序代码,只要在button1的onclick事件和listbox1的ondblclick事件中添加程序即可,添加的程序如下:
   button1的onclick事件:
   procedure TForm1.Button1Click(Sender:TObject)

var
   myaccess:string;

const
   myStr1='Provider=%s;Data Provider=%s;Data Source=%s';

{给出接口参数}

myprovider='msdatashape.1';

mydataprovider='microsoft.jet.oledb.4.0';

begin
   opendialog1.FileName:='*.mdb';

if opendialog1.Execute then
   begin
   myaccess:=opendialog1.FileName;

edit1.Text:=myaccess;

adoconnection1.Connected:=false;

adoconnection1.ConnectionString:=format(mystr1,,
   [myprovider,mydataprovider,myaccess]);

adoconnection1.Connected:=true;

adoconnection1.GetTableNames(listbox1.Items);

end;

end;

listbox1的ondblclick事件:
   procedure TForm1.ListBox1DblClick(Sender:TObject)

begin
   adotable1.Close;

adotable1.TableName:=listbox1.Items.Strings[listbox1.itemindex];

adotable1.Open;

end;

添加程序后运行,试着打开一个Access文件。比如我打开一个在E盘的“E:\My Documents\myaccess1.mdb”文件((图2)2),该文件中有五个表,双击任何一个就会自动打开。致于对数据库的添加、删除等操作,adotable控件和table控件差不多,这里就不说了,有兴趣的读者可以自己试试(以上程序已在Delphi 5.0中调试通过和在没有安装Delphi及BDE的电脑上运行成功)。

图2
图2