菜鸟的问题(50分)

  • 主题发起人 主题发起人 laojiang
  • 开始时间 开始时间
L

laojiang

Unregistered / Unconfirmed
GUEST, unregistred user!
请问怎么样用ODBC连接EXCEL数据库
 
方法之一:在控制面板的数据源(ODBC)(win2000是在管理工具中)中新建一个系统DSN,
选择Microsfot Excel Driver(*.xls),再选择要访问的XLS文件,即可在Delphi中以
DSN作为别名来访问。
 
我试过了,不行。请问还有什么别的办法?
 
1.设置ADOConnection的ConnectionString
构造ConnectionString时,OLE DB的提供者要选择Microsoft Jet 4.0 OLE DB Provider作为ADO的驱动程序。
这本来是用于连接Access数据库的驱动程序,但也可打开Excel文件。
连接的数据库名称当然就是你要打开的Excel文件,注意扩展名是*.xls,而不是*.mdb。
最关键的一点是,还要设置扩展属性Extended Properties为“Excel 8.0”,否则,测试连接时会报告无法
识别数据格式的错误。Extended Properties的属性值在“所有”参数页中输入。
最后,设置完成后的ConnectionString中的各项参数为:
Provider=Microsoft.Jet.OLEDB.4.0
Data Source=MyExcelFile.xls
Extended Properties=Excel 8.0
Persist Security Info=False

  2.设置ADODataSet或ADOTable
将ADODataSet或ADOTable连接到刚才的ADOConnection。如果不用ADOConnection,也可以参照上面的方法
直接设置ADODataSet或ADOTable的ConnectionString属性。对于ADODataSet,需要将CommandType属性设置
为cmdTableDirect,而对于ADOTable,则将TableDirect属性设置为True。因为,访问Excel文件是直接的
数据文件访问,不是通过SQL语句来操作游标访问的。如果不设置直接访问,则系统会报告SQL语句格式错
误等信息。
然后,当你下拉ADODataSet中的CommandText属性或ADOTable的TableName属性时,就可以选择到要打开的工
作表了。注意,表名后面多了加一个$符号。

3.打开ADODataSet或ADOTable
 
在请问一下,怎么样才能用sql语句来访问excel表呢?最好还是用bde 或者odbc 来连接excel数据库。
 
你可以试试比较标准的SQL(ANSI SQL)语句。
select * from sheet1
 
连excel文件,用ADO Jet驱动,用ADO_ODBC数据源,和BDE都可以的。
用odbc的话,如同2楼所写。
用SQL操作一样的,这是我以前写的部分测试代码:
procedure TForm1.Button1Click(Sender: TObject);
begin
DataSource1.DataSet:=ADOQuery1;
ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+ExtractFilePath(Application.ExeName)+'bk.xls;Extended Properties=Excel 8.0;Persist Security Info=False';
ADOConnection1.LoginPrompt:=false;
ADOConnection1.Connected:=true;

with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('select * from [sheet1$]'); //注意[sheet1$]的写法
Open;
end;

with ADOQuery2 do
begin
Close;
SQL.Clear;
SQL.Add('select * from [sheet1$] where a=:ID_X'); //注意[sheet1$]的写法
Parameters.ParamByName('ID_X').Value:=edit1.text;
Open;
end;
end;
 
多人接受答案了。
 
后退
顶部