主题:[讨论]关于用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中,检索下一个文件时则会将上一个文件检索的结果覆盖掉,这怎么解决啊?希望大家帮帮忙,谢谢了.
我这里有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中,检索下一个文件时则会将上一个文件检索的结果覆盖掉,这怎么解决啊?希望大家帮帮忙,谢谢了.