我用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
解决方案 »
- 第一次使用Frame,向各位请教
- 郁闷!!进程终止不了???
- Access中更新语句为什么不能使用分组?
- 如何把SQL中的记录值与Treeview联系起来,在线等…
- 我笨:Delphi5中我找不到HTML控件,有谁可以告诉我?第一个答对的得分
- 如何点击其它控件实现拖着标题栏移动Form呢?
- 为何我的报表(QuickRep)每页只显示一条记录。如何设置成每页显示30条呀?
- 判断消息
- 怎样把表中的某个字段的值全部用控件列出来?online wait
- 《Delphi2程序设计大全》那里可以买到?杭州已经绝版了。我找不到!那位同志可以告诉我?
- C# 调用Delphi写的Web Services 返回中文乱码的问题!
- 服务程序是否可以支持键盘输入?该如何实现
'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;
这样就可以了