2011-08-22 197 views
1

如何將.net中的Access報告保存到用戶的PC?我試過使用Access.SaveAsAXL,Docmd.OutputTo和其他幾種方式,但無濟於事。以下是我最近的嘗試。將存取文件保存爲.net

string dbname = "D:\\filename.mdb"; 

     Microsoft.Office.Interop.Access.Application oAccess = new Microsoft.Office.Interop.Access.Application(); 
     oAccess.OpenCurrentDatabase(dbname, true); 
     oAccess.Visible = true; 
     var acFormatXLS = "Microsoft Excel (*.xls)"; 
     string id = "tblJobs.JobID=" + (Convert.ToInt32(GetMaxJobID())).ToString(); 

     try 
     { 
      oAccess.Run("BuildXAxisTimeLine", Convert.ToInt32(GetMaxJobID())); 

      oAccess.SaveAsAXL(Microsoft.Office.Interop.Access.AcObjectType.acReport, "rptChartData", "D:\\report.xls"); 
     } 
     catch (Exception ex) 
     { 
      MessageBox.Show(ex.Message); 
      //oAccess.CloseCurrentDatabase(); 
     } 

我收到的錯誤是:

HRESULT E_FAIL已從調用返回至COM組件

任何幫助,將不勝感激。謝謝。

回答

0

followig代碼解決了我的問題。將它放在try部分,如上所示,而不是oAccess.SaveAsAxl代碼行,並在.Run代碼行下。

oAccess.DoCmd.OpenReport("rptChartData", Microsoft.Office.Interop.Access.AcView.acViewPreview, null,id); 
       oAccess.DoCmd.OutputTo(Microsoft.Office.Interop.Access.AcOutputObjectType.acOutputReport, "rptChartData", acFormatXLS, "D:\\reportname.pdf",false, null, null);