关于EXECL,和TEXT 导入SQL 的问题 有没人来帮帮小弟我啊(300分)

  • 主题发起人 主题发起人 xiagu
  • 开始时间 开始时间
X

xiagu

Unregistered / Unconfirmed
GUEST, unregistred user!
为什么执行时总是显示“不能使用空白的对象或列名。如有必要,请使用一个空格。”?
with adoquery1 do
begin
close;
sql.Clear;
sqltrs := 'insert into test(zt,users,tel,fy)'+
'SELECT * FROM OpenDataSource(""Microsoft.Jet.OLEDB.4.0"",""Data Source="C:/Documents and Settings/Administrator/桌面/test.xls -c -q";Extended Properties="Excel 8.0;HDR=Yes;";Persist Security Info=False"")...[sheet1$]';
Parameters.Clear;
ParamCheck:=false;
sql.Text := sqltrs;
execsql;
end;
end;

SQL 表为
test
zt varchar(50)
users varchar(50)
tel varchar(50)
fy varchar(50)

execl 表名为 test
zt users tel fy
1 234 123 123
0 1231 3212 321231
1 32123 2312 23123

就在SQL中运行是可以用的,在DELPHI中就是不行,不知道为什么
 
难道就没有人帮我吗?
 
为什么执行时总是显示“不能使用空白的对象或列名。如有必要,请使用一个空格。”?
不是已经说明了吗?在EXCEL表你没加有"列名"..加列名啊..
 
sqltrs :='insert into test(zt,users,tel,fy) '+
'select zt,users,tel from OpenDataSource( ''Microsoft.Jet.OLEDB.4.0'',
''Data Source="C:/Documents and Settings/Administrator/桌面/test.xls";User ID=Admin;Password=;Extended properties=Excel 8.0'')...sheet1$'

你的单引号有问题,-c -q是什么参数?出错提示是否adoquery1设置了参数呢?去除试试看
 
sqltrs := 'insert into test(zt,users,tel,fy)'+
'SELECT * FROM OpenDataSource(""Microsoft.Jet.OLEDB.4.0"",""Data Source="C:/Documents and Settings/Administrator/桌面/test.xls -c -q";Extended Properties="Excel 8.0;HDR=Yes;";Persist Security Info=False"")...[sheet1$]';

adoquery对SQL命令支持不象SQL Server,尤其对冒号(:),我也遇到过类似问题。
我是分步做的:
1、建立Excel的adoconnection连接;
2、用adoquery打开Excel表(sheet);
3、循环表,将记录写入数据库。
这样的好处是可以进行数据有效性检查。多点代码而已。
 
谢谢大家,想偷懒也不行...............
不过循环表不会作,本人是新手.
 
如果要循环,效率好低哦,而且要建立两个adoconnection连接,分别指向sql数据库和excel文件。

操作不复杂,用个:
table.first;
while not table.eof do
begin
//insert .....
table.next ;
end ;
 
没有更多的就算了,谢谢大家
 
后退
顶部