请问我用DELPHI的ADOPROCEDURE控件在程序中调用SQL的存储过程时每一次都会报告超时,但是在SQL查询分析器里面执行就一切正常,只耗时8秒.请问各位大虾,怎样才能让ADOPROC控件在程序中顺利执行存储过程呢,小弟先行感谢了!还有一件小事,就是把一个EXCEL文件导入SQL数据库中,我用的步骤是先将EXCEL文件以FTP形式导入服务器中(服务器上建的有FTP站点),然后再在服务器上通过执行INSERT TABLE1...SELECT * FROM OPENROWSET....语句将EXCEL文件导入数据表中.问题就是在最后一步时提示"OLE程序错误,连接程序并未返回任何错误信息."
请问各位高手,怎样才能用这种办法让EXCEL文件的内容顺利导入SQL?(老大只让用这个办法了...)非常感谢!

解决方案 »

  1.   

    第一个没有碰到;第二个我已经发过:
    哈哈,抢分。导出代码如下:
    procedure TzwcxTreeList.ExportToExcel;
    var
          SaveDialog: TSaveDialog;
          fileName: string;      Excel,
          WorkBook,
          WorkSheet: Variant;      r,
          c: Integer;
    begin
         if VisibleColumnCount <= 0 then begin
                MessageBox(GetActiveWindow, '导出失败,表格数据为空', '警告提示', MB_ICONWARNING or MB_OK);
                Exit;
          end;      try
                Excel := CreateOleObject('Excel.Application');
          except
                on e: Exception do begin
                      MessageBox(GetActiveWindow, '导出失败,请先安装电子表格Microsoft Excel', '警告提示', MB_ICONWARNING or MB_OK);
                      Excel := null;
                      Exit;
                end;
          end;      SaveDialog := TSaveDialog.Create(Self);
          SaveDialog.Filter := 'Excel表格|*.xls';      if SaveDialog.Execute then
                fileName := SaveDialog.FileName
          else
                Exit;      try
                WorkBook := Excel.Application.WorkBooks.Add;
                WorkSheet := WorkBook.WorkSheets[1];            //列
                for c := 0 to VisibleColumnCount - 1 do begin
                      WorkSheet.Cells[1].NumberFormat := '@';
                      WorkSheet.Cells[1, c + 1].Value := VisibleColumns[c].Caption.Text;
                end;            //行
                for r := 0 to Count - 1 do begin
                      for c := 0 to VisibleColumnCount - 1 do begin
                            WorkSheet.Cells[r + 2, c + 1].Value := Nodes[r].Texts[getCOlIndex(c)];
                      end;
                end;            try
                      if WorkBook.SaveAs(fileName) then begin
                            MessageBox(GetActiveWindow, pchar('成功导出到文件' + fileName), '提示', MB_ICONINFORMATION or MB_OK);
                      end;
                except
                      on e: Exception do begin
                            MessageBox(GetActiveWindow, '放弃保存', '提示', MB_ICONWARNING or MB_OK);
                            exit;
                      end;
                end;
          except
                on e: Exception do begin
                      MessageBox(GetActiveWindow, PChar(e.Message), '警告', MB_ICONWARNING or MB_OK);
                      WorkBook.Saved := True;
                      WorkBook := null;
                      Excel.Quit;
                      Excel := null;
                      Exit;
                end;
          end;      WorkBook.Saved := True;
          WorkBook := null;
          Excel.Quit;
          Excel := null;
    end;
      

  2.   

    多谢chenyansong(Batistuta),不过我们老大只让用FTP的方法实现,烦请大哥再帮个忙,非常感谢了.问题一旦解决,立即散分!
      

  3.   

    OPENROWSET中的数据源只能是本地的,看你自己怎么处理了,反正传上去找不到文件都是这个原因。
      

  4.   

    是这样的,FTP上传到服务器后,再在服务器端执行OPENROWSET.这样就是在服务器那里把EXCEL导进数据库了.但是就是在服务器端执行导入的过程不能成功.