回 帖 发 新 帖 刷新版面

主题:[讨论]关于用ADO从多个EXCEL文件中检索数据的问题

[em18]
我这里有20多个EXCEL文件,表的格式不太一样,但是有相同列,我需要根据相同的列来检索需要的数据,检索部分的程序如下:
for i:=0 to Memo1.Lines.Count-1 do
     begin
     ADOConnection1.Connected:=False;
     ADOConnection1.ConnectionString:='Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+Memo1.Lines.Strings[i]+';Extended Properties=Excel 8.0;Persist Security Info=False';
     ADOConnection1.Connected:=True;
     ADOQuery1.Close;
     ADOQuery1.SQL.Clear;
     ADOQuery1.SQL.Add('SELECT 计划日期,设备名称,型号,规格 FROM [excel 8.0;database='+Memo1.Lines.Strings[i]+'].[Sheet1$] WHERE 型号 LIKE "%'+Kword.Text+'%"'+' OR 规格 LIKE "%'+Kword.Text+'%"');
     ADOQuery1.Parameters.Clear;
     ADOQuery1.Open;
     end;
其中i为Memo控件中文本的行数,Kword.Text是用户输入的检索数据,Memo1.Lines.Strings[i]中则是要检索的EXCEL文件的路径,用i循环实现检索所有的文件,但是有的文件没问题,有的文件检索时则弹出错误提示"未知",也没有其它的提示,实在不知道问题出在哪里,我检查过文件的结构没问题,如过SQL检索时用精确查找=则没有问题,用模糊检索 LIKE 则会出现"未知"的错误提示,后来检查发现是有一单元格字符串太长,删掉几个字就没有问题了,难道模糊查询对要处理的字符串的长短有限制吗?请大家帮忙分析一下,还有因为用的是i循环检索,检索的结果放在DBGRID中,检索下一个文件时则会将上一个文件检索的结果覆盖掉,这怎么解决啊?希望大家帮帮忙,谢谢了.

回复列表 (共2个回复)

沙发

like对长度没要求,应该是EXCEL的问题.
DBGRID是针对一个表的查询,如果多个EXCEL的内容不在一个表里面,就要用数据库的UNION来实现了.

板凳

yaojp7519能说的具体一点吗?我的是EXCEL2000,我试过2003也不行啊,谢谢了.;

我来回复

您尚未登录,请登录后再回复。点此登录或注册