Visual Studio 2008、mvc 2 に付属の Crystal レポートを使用しています。ユーザーがリンクをクリックすると、PDF レポートが生成されます。
これは、クリスタルレポートを構成する私の方法です
public ReportClass ConfigureReportClass(string strReportPath, object[] objParameters)
{
ReportClass rptH = new ReportClass();
try
{
rptH = new ReportClass();
rptH.FileName = strReportPath;
int Count = 0;
rptH.Load();
if (objParameters == null)
return rptH;
foreach (object obj in objParameters)
{
ParameterField param = rptH.ParameterFields[Count++]; // first param
param.AllowCustomValues = true;
ParameterDiscreteValue Disparam = new ParameterDiscreteValue();
Disparam.Value = obj;
param.CurrentValues.Add(Disparam);
}
}
catch (Exception ex)
{
throw ex;
}
return rptH;
}
これはPDFに変換するためのものです
public System.IO.Stream GetPDFStream(CrystalDecisions.CrystalReports.Engine.ReportClass rptClass)
{
System.IO.Stream stream = rptClass.ExportToStream(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat);
return stream;
}
これはコントローラーのアクションメソッドです
public FileResult GetComplaintFile(String ComplaintNumber)
{
HomeBLLC objHomeBLLC = new HomeBLLC();
ReportClass rptH = objHomeBLLC .ConfigureReportClass(Server.MapPath("~/Views/Complaint/ComplaintReport.rpt"), new object[] { ComplaintNumber });
return File( objHomeBLLC.GetPDFStream(rptH),"application/pdf" );
}
Visual Studio のデザイン ビューでレポートのプレビューを表示できますが、実行時に例外が発生します
Logon failed.
詳細: 28000:[Microsoft][ODBC SQL Server ドライバー][SQL Server]ユーザー 'user' のログインに失敗しました。ファイル C:\Windows\TEMP\ComplaintReport {5BDD522D-04DA-48CD-9F43-A9C648F195D9}.rpt のエラー: 接続できません: ログオン パラメータが正しくありません。CrystalDecisions.ReportAppServer.ConvertDotNetToErom.ThrowDotNetException(Exception e) で CrystalDecisions.ReportSource.EromReportSourceBase.ExportToStream(ExportRequestContext reqContext) で CrystalDecisions.CrystalReports.Engine.FormatEngine.ExportToStream(ExportRequestContext reqContext) で CrystalDecisions.CrystalReports.Engine.ReportDocument.ExportToStream(ExportOptions) F:\myapp\BLL\Home\HomeBLLC.CS:line 1082 の myapp.BLL.Home.HomeBLLC.GetPDFStream(ReportClass rptClass) で CrystalDecisions.CrystalReports.Engine.ReportDocument.ExportToStream(ExportFormatType formatType) で
F:\myapp\Controllers\ComplaintController.cs:line 709 の myapp.Controllers.ComplaintController.GetComplaintFile(String ComplaintNumber) F:\myapp\Controllers\ComplaintController.cs:line 76 の myapp.Controllers.ComplaintController.Complaint() lambda_method (ExecutionScope 、 ControllerBase 、 Object[] ) で System.Web.Mvc.ActionMethodDispatcher.Execute (ControllerBase コントローラー、Object[] パラメーター) で System.Web.Mvc.ReflectedActionDescriptor.Execute (ControllerContext controllerContext、IDictionary 2 parameters)
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary
2 パラメーター) で System. .Web.Mvc.ControllerActionInvoker.<>c_ DisplayClassd.b _a () で System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter フィルター、ActionExecutingContext preContext、Func1 continuation)
at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClassd.<>c__DisplayClassf.<InvokeActionMethodWithFilters>b__c()
at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodWithFilters(ControllerContext controllerContext, IList
System.Web.Mvc.ControllerActionInvoker.InvokeAction(ControllerContext controllerContext, String actionName) での 1 つのフィルター、ActionDescriptor actionDescriptor、IDictionary`2 パラメーター)
同じ DSN を使用している他のアプリケーションが Crystal レポートを正しく実行しているため、私の DSN は正しく構成されています。
前もって感謝します