s:='insert into CPJG (pm,pj,clxh,clgg,pjcldw,pjdwmz,pjdwjz)';
    s:=s+' select a,b,c,d,e,f,g FROM ';
    s:=s+'OPENROWSET(''Microsoft.Jet.OLEDB.4.0'', ''Excel 8.0;Database='+OpenDialog.FileName+''',''SELECT * FROM [sheet1$]'') ';
    with qry do
    begin
      Close;
      SQL.Clear;
      SQL.Add(s);
      ExecSQL;
    end;
假设数据库在x电脑上,软件在x电脑上运行且excel文件也在x电脑上,可以成功执行此代码
如果数据库在x电脑上,软件在y电脑上,excel文件也在y电脑上,则不能运行此代码,excel导入出错
问题出在什么地方,怎么解决。   

解决方案 »

  1.   

    这种做法只能导入本地数据库,两个解决方法:
    1.将文件传到Y电脑再导入
    2.将本地文件导入到本地的临时表,再将临时表导入,你可以在X电脑建个ODBC连到EXECL文件,再用ADOQUERY连到这个ODBC做查询,将查询到的结果INSERY进Y的数据库
      ODBC连EXECL
      ADO1连ODBC
      ADO1做查询
    while not ADO1.EOF do
      a:=fieldbyname(.....)
      b:=....
      ......
      ADO2连Y电脑
      ADO2.SQL.ADD(INSERT......VALUSE(a,b...));
    end;
    大致思路就是这样,你自己再组织下应该很容易了