ADODataset组件访问Excel文件,在IDE界面上能正确的显示Excel文件中的数据,但运行时报错:操作被取消(50分)

  • 主题发起人 主题发起人 sh_web
  • 开始时间 开始时间
S

sh_web

Unregistered / Unconfirmed
GUEST, unregistred user!
我采用ADO组件访问Excel文件。
ADODataset1的ConnectString=Provider=MSDASQL.1;Persist Security Info=False;Data Source=Excel Files;Extended Properties=Excel 8.0;Initial Catalog=g:/classmates.xls
ConnectText=Select Name from [students] where Number=122
DataSourse1的Dataset属性设置为ADODataSet1
设置DBText1的DataSource属性为DataSource1,设置DataField为Name
在将ADODataset1的Active设为True后,DBText1的内容能正常地显示为John

但在Run时,显示如下Exception Notification:

debubber Exception Notification
Project Project1.exe raised exception class EOleException with message ' 操作被取消'.Process stopped.Use Step or Run to continue.

运行step over后,Degugger Exception Notification
Project Project1.exe raised exception class EStackOverflo with message 'Stack overflow'.Process Stopped.Use Step or Run to continue.
 
你的ADO驱动应选JET.OLEDB吧,我的连接字串是
Provider=Microsoft.Jet.OLEDB.4.0;Data Source=F:/crm/daat/bruce/ImportExcel/test.xls;Extended Properties=Excel 8.0;Persist Security Info=False
没问题
 
在设置ConnectString时,我选择的Provider是Microsoft Ole DB provider for ODBC driver,
但在这个connectString中,Provider=MSDASQL,MSDASQL是什么,是Excel专用的吗?
 
照 zm30所说,ADO驱动选择了Jet.OLEDB,
运行的时候,提示说Jet.OLEDB引擎打不开文件,文件被独占使用或无权访问该文件的数据。
但该文件没有被别的程序使用,而且在设置ConnectString时访问权限也被设置为了Read/Write。
问题在哪里啊。是不是我把MADC升级到了MADC 2.7RTM导致的问题啊,是不是MADC 2.7对JET.OLEDB不支持啊??
 
要用一个单独的AdoConnection,并且运行时Connected要设为false,然后在程序里设置
AdoDataset1.Active:=True;
因为这样访问Excel是独占访问,所以要这样
 
OK NOW!
还是回到最初的问题,为什么不能用OLE DB Provider for ODBC Driver来访问Excel文件呢(在IDE上可以正常的显示Excel数据,但Run时出错)?
ODBC不是微软提出来的非常通用的数据库接口吗?为何Excel不支持(是不是我用错了)?
JET.OLEDB好像是用来访问Access数据库的。
 
我这里用ODBC通过,没有你说的问题。
JET不只是访问Access,还可以访问excel,dbf等,但如果不是访问Access的话要设置一下
Extend Property
 
let me try again.
 
用ODBC时,问题依然存在,还是“操作被取消”。
 
后退
顶部