我使用下列语句执行的时候:
ADOQ.ConnectionString := 'Provider=MSDASQL.1;Persist Security Info=False;Data Source=dBASE Files;Initial Catalog=c:\';
ADOQ.SQL.Clear;
ADOQ.SQL.Add('select * into :dbf_name from stock IN [ODBC][ODBC;Driver=SQL Server;UID=sa;PWD=123;Server=sql_bg;]');
ADOQ.Parameters.ParamValues['dbf_name'] := 'stock.dbf';
ADOQ.ExecSQL;发现生成的DBF文件名是 Pa_RaM000.DBF,而不是我要求的stock.dbf,不知道怎么回事啊啊啊????数据库:SQL6.5
操作系统:W2K
工    具:D6

解决方案 »

  1.   

    因为你的代码中找不到参数'dbf_name',所以是随机生成一个文件的。
      

  2.   

    再说你SQL 后面的INTO:dbf_name 只能是表名,不能用于做数据库名。
      

  3.   

    金马 你好:1、    因为你的代码中找不到参数'dbf_name',所以是随机生成一个文件的。我用这句替换的啊
    ADOQ.Parameters.ParamValues['dbf_name'] := 'stock.dbf';2、如果我直接下面这样写是能运行的,生成的就是stock.dbf,但我要导出好多表,所以才要替换的
    ADOQ.SQL.Add('select * into stock.dbf from stock IN [ODBC][ODBC;Driver=SQL Server;UID=sa;PWD=123;Server=sql_bg;]');
      

  4.   

    >>'select * into :dbf_name 
    以前也討論過這個問題, 參數不能為table name吧!你說的情況, 只能用
    Format('select * into %s from stock IN [ODBC][ODBC;Driver=SQL Server;UID=sa;PWD=123;Server=sql_bg;]',['stock.dbf']);
    來解決吧!
      

  5.   

    不要用参数,直接用字符串吧ADOQ.SQL.Add('select * into ' + ls_tablename + 'from stock IN [ODBC][ODBC;Driver=SQL Server;UID=sa;PWD=123;Server=sql_bg;]');
    ADOQ.ExecSQL;