有这样一个语句:
SELECT 姓名,日期 into temptable
FROM OpenDataSource('Microsoft.Jet.OLEDB.4.0','Extended Properties="Excel 5.0;HDR=Yes;";Persist Security Info=False;Data Source="I:\公积金\公积金提取.xls"')...sheet1$主要是把EXCEL表里的数据导入到临时表里,我在查询分析器里执行可以,但把这个语句直接复制到adoquery里,连上connectstring,active:=true;就出错了!!!出错提示:
       不正常地定义参数对象,提供了不一致或完整的信息!

解决方案 »

  1.   

    可以把它写在存储过程中,调用存储过程即可。如:create proc p_ToData
    as
     set nocount on 
    if exists(select * from sysobjects where id=object_id('temptable'))
     drop table temptable
    SELECT * into temptable
    FROM OpenDataSource('Microsoft.Jet.OLEDB.4.0',
    'Extended Properties="Excel 5.0;HDR=Yes;";
     Persist Security Info=False;Data Source="d:\efyyb.xls"')...yb$
      set nocount off
    go--调用
    exec p_ToData
      

  2.   

    写进adoquery要注意格式的,比如一些变量的书写格式等等
      

  3.   

    用到一个ADOConnection,一个ADOQuery,方法如下:
    ADOConnection1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\test.xls...................以下略';
    ADOQuery1.Connection := ADOConnection1
    ADOQuery1.SQL.Text := 'select * from [sheet1$]';
    ADOQuery1.Open;
      

  4.   

    又是一个参数的问题,简单的很,改ADOQuery1.ParamCheck为false就可以了,原因是因为SQL中的":"引起的