我用delphi访问excel表,其中有一个表名是sheet1,第一次执行下面语句系列时正常,当执行了一个将数据库表保存为excel的函数后(函数名:Save2File,见后面附件),再执行到frmmain.ADODataSet1.Active:=true;时,都是提示数据库引擎找不到对象sheet1$,很郁闷,不知道为什么
......
frmmain.ADODataSet1.Close;
frmmain.ADODataSet1.CommandText := 'sheet1$';
frmmain.ADODataSet1.Active:=true;
frmmain.ADOCon.Connected:=true;
frmmain.DBGrid1.ReadOnly:=true;
...... 附件:将数据库表保存为excel文件的函数(见“TADODataSet组件的郁闷”)
----------------------------------------------------------------------------------------------------------
我找到原因了:
是下面连接串Data Source的路径出了问题,请问,怎样将“Data Source=D:\my_dir\用户清单.XLS”写成相对路径?在连接串里能不能用类似ExtractFilePath(Application.ExeName)的函数?Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=D:\my_dir\用户清单.XLS;Mode=Share Deny None;Extended Properties=Excel 8.0;Persist Security Info=False;Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=35;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False
......
frmmain.ADODataSet1.Close;
frmmain.ADODataSet1.CommandText := 'sheet1$';
frmmain.ADODataSet1.Active:=true;
frmmain.ADOCon.Connected:=true;
frmmain.DBGrid1.ReadOnly:=true;
...... 附件:将数据库表保存为excel文件的函数(见“TADODataSet组件的郁闷”)
----------------------------------------------------------------------------------------------------------
我找到原因了:
是下面连接串Data Source的路径出了问题,请问,怎样将“Data Source=D:\my_dir\用户清单.XLS”写成相对路径?在连接串里能不能用类似ExtractFilePath(Application.ExeName)的函数?Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin;Data Source=D:\my_dir\用户清单.XLS;Mode=Share Deny None;Extended Properties=Excel 8.0;Persist Security Info=False;Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";Jet OLEDB:Engine Type=35;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False
'Mode=Share Deny None;Extended Properties=Excel 8.0;Persist Security Info=False;'+
'Jet OLEDB:System database="";Jet OLEDB:Registry Path="";Jet OLEDB:Database Password="";'+
'Jet OLEDB:Engine Type=35;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=2;'+
'Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="";Jet OLEDB:Create System Database=False;'+
'Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;'+
'Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=False'倒数第二行,即:'Jet OLEDB:Encrypt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;'+
这一行怎么会错误?我是从delphi的属性框里拷贝出来的呀
提示:Missing operator or semicolon
connStr: string;
begin
connStr:= 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+ExtractFilePath(application.exeName)+'\用户清单.XLS;Extended Properties="Excel 8.0;HDR=Yes;IMEX=1"';
end;
这样就可以了