关于ADOQUERY的怪问题,大家帮忙分析一下啊! ( 积分: 100 )

  • 主题发起人 主题发起人 blackeagle136
  • 开始时间 开始时间
B

blackeagle136

Unregistered / Unconfirmed
GUEST, unregistred user!
Delphi7+ADO实现从EXCEL中检索数据,检索部分的程序如下:
ADOConnection1.Connected:=False;
ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:/TTT.xls;Extended Properties=Excel 8.0;Persist Security Info=False';
ADOConnection1.Connected:=True;
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT date,name,types FROM [excel 8.0;database=C:/TTT.xls].[Sheet1$] WHERE types LIKE "%'+Kword.Text+'%"');
ADOQuery1.Parameters.Clear;
ADOQuery1.Open;
end;
Kword.Text是用户输入的检索关键字,通过编译,但是程序运行时会报错,错误内容为“未知”,后来检查发现如果TTT.xls中types列的某一个单元格的内容超过256个字母或256个汉字就会报错,反之如果其内容为字母并且字母个数小于256,或者为汉字并且汉字个数小于256则不会报错,而且只有在模糊查询LIKE时才会报错,用精确查找则没有问题,真不知道是什么原因,大家帮忙分析一下啊。谢谢了。
 
未知是什麽錯誤啊?好像不是這裡的問題,看看連接設置好了沒?然後試驗下
 
把这句 ADOQuery1.Parameters.Clear;屏蔽掉看下?
 
错误就只是“未知”两个字,没有其它的提示,连接设置没有问题,因为当单元格的字串少于256个字符时程序一点问题也没有,只是单元格字串多于256个字符时才会报错,ADOQuery1.Parameters.Clear 屏蔽过,没用。难道是ADOQUERY处理长字串时有问题???
 
这是ADO报的错误,我也有过。具体问题的具体原因不一样。你把ADO的驱动升级一下试一把。另外,你最好使用ADOTABLE的形式进行打开。好像ADOTABLE里面有一个参数可以选择的,这个参数可能比较重要,叫什么DIRECT的,你自己看一下。
 
另外,你最好使用ADOCONN的连接向导生成连接字符串,看和你输入的是否一致。然后直接使用ADOTABLE打开。记得把ADOTABLE的TABLEDIRECT设置为TRUE
 
like 语句好像写的不正确。
 
打开EXCEL文件没有问题,只是待检索的列的某一单元格的字串太长(超过256个字符或汉字)时就会报错,就好象是溢出了一样。不知道是不是ADO本身的问题?
 
我觉得可能是ADO驱动不能处理EXCEL的这种情况,我做过从Excel取文本,发现对于那种超过256个字符的文本,必须用一种特殊的方法取多次才能得以完整的文本,可能正是这种原因引起的错误.
 
dreamisx :那么有什么办法可以解决这个问题吗?
 
后退
顶部