with dm.qry do
  begin
   close;
   sql.Clear;
   sql.Add('master..xp_cmdshell ''bcp ''SELECT * from msj.dbo.CHQT_Tablecomm'' ''queryout c:\test.xls -c -S''.'' -U''sa'' -P''sa''');
   execsql;
  end;不好用,请帮忙看一下

解决方案 »

  1.   

    begin
      with dm.qry do
      begin
      paramcheck := False;
       close;
       sql.Clear;
       sql.Add('master..xp_cmdshell bcp ''SELECT * from msj.dbo.CHQT_Tablecomm'' queryout ''c:\test.xls'' -c -S"." -U"sa" -P"sa"');
       execsql;
      end;
    end;
    帮忙看看是哪里的的问题
      

  2.   

    sql.Add('master..xp_cmdshell bcp ''SELECT * from msj.dbo.CHQT_Tablecomm'' queryout ''c:\test.xls'' -c -S"." -U"sa" -P"sa"'); 
    没看懂
      

  3.   

      sql.Add('master..xp_cmdshell ''bcp "SELECT * from msj.dbo.CHQT_Tablecomm" queryout c:\test.xls -c -S. -Usa -Psa''');这里面的关系你要弄清楚。
    bcp是一个程序,在命令提示符下调用:
    bcp "SELECT * from msj.dbo.CHQT_Tablecomm" queryout c:\test.xls -c -S. -Usa -Psa
    可以将数据导出到文件中。
    命令行中用双引号来分割参数,而不是单引号。
    -Usa 这里不能加引号。master..xp_cmdshell 是一个存储过程,执行后面的命令行。在查询分析器中可以这样执行:
    master..xp_cmdshell  'dir'      
    --注意这里是用SQL字符串(用单引号)sql.Add() 是执行SQL语句。
      

  4.   

    另提醒:尽量不要使用 master..xp_cmdshell 存储过程,有安全性隐患。