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