查看单个帖子
Spark
 
Spark 的头像
热心会员
 
资 料:
注册日期: Mar 2000
帖子: 7,270 声望值: 6
精华: 0,解答: 16
#11 旧 2012-05-02, 23:12:12 默认
Spark 当前离线  

楼主修改一下注册表试试。我没有用Ado引擎读取数据,不知道是否有效

原来,ODBC在读取Excel时,会有个值设置TypeGuessRows=8, 意思是ODBC会先在前8行的数据中去比较,如果所有的数据都在255或以下,那这个字段长度就是varchar(255),否则,这个字段将是text类型。

于是,我们加上TypeGuessRow=100,再试,结果错误依然存在。

原来,虽然可以设置这个属性,但ODBC是不会去用它的,要使这个属性有效,必须修改注册表。对于注册表键是

• Excel 97
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\3.5\Engines\Excel
• Excel 2000 and later versions
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel

修改了里面的TypeGuessRow后,这个问题暂时解决了。

但是,如果大的数据在表的后面位置的话,这个问题还是有可能发生的。所以要彻底的解决的话,在打开一个recordset前,就要先定义好它的字段长度了。


The World is built on C and C++