Ssrs 2008 如何调试在我的应用程序中不起作用的服务器端(.rdl)报表?
我有一个SQL Server报表服务器SSRS,它承载一组报表。当我单击提供的URL时,我可以导航到报告,沿着路径向下钻取,通过向报告传递所需的参数,我可以成功地运行报告。报表使用的存储过程托管在使用Windows身份验证的数据库中 然而,当我试图从我的应用程序调用相同的报告时,我看不到任何东西 这是我使用的代码。单击按钮后,我执行以下代码:Ssrs 2008 如何调试在我的应用程序中不起作用的服务器端(.rdl)报表?,ssrs-2008,report,reportviewer,server-side,Ssrs 2008,Report,Reportviewer,Server Side,我有一个SQL Server报表服务器SSRS,它承载一组报表。当我单击提供的URL时,我可以导航到报告,沿着路径向下钻取,通过向报告传递所需的参数,我可以成功地运行报告。报表使用的存储过程托管在使用Windows身份验证的数据库中 然而,当我试图从我的应用程序调用相同的报告时,我看不到任何东西 这是我使用的代码。单击按钮后,我执行以下代码: var reportViewer = new ReportViewer(); // Set Processing Mode reportViewer.P
var reportViewer = new ReportViewer();
// Set Processing Mode
reportViewer.ProcessingMode = ProcessingMode.Remote;
// Set report server and report path
reportViewer.ServerReport.ReportServerUrl = new Uri("http://MySsrsServer/reportserver");
reportViewer.ServerReport.ReportPath = "/Reports/MyReport";
// set the credentials
reportViewer.ServerReport.ReportServerCredentials.ImpersonationUser = WindowsIdentity.GetCurrent();
// create report parameters and set them in the report
var param1 = new ReportParameter("First_Param", "Some string");
var param2 = new ReportParameter("Second_Param", "Some other string");
reportViewer.ServerReport.SetParameters(new ReportParameter[] { param1, param2 });
using (var reportForm = new ReportForm(reportViewer))
{
reportForm.ShowDialog();
}
ReportForm只是一个常规表单,其成员类型为ReportViewer。在类构造函数中,我分配成员:
public ReportForm(ReportViewer reportViewer)
{
InitializeComponent();
try
{
this.reportViewer = reportViewer;
reportViewer.SetDisplayMode(DisplayMode.PrintLayout);
reportViewer.Dock = DockStyle.Fill;
reportViewer.ZoomMode = ZoomMode.Percent;
reportViewer.ZoomPercent = 100;
reportViewer.RefreshReport();
}
catch (Exception exception)
{
MessageBox.Show(exception.Message);
}
}
正如我所说,我可以看到报告在服务器上正确执行,但在我的应用程序中没有。ReportForm的内容是空的,但是我没有得到任何抛出的异常
知道我做错了什么吗
蒂亚,
E结果表明,在要显示报表的窗体外部构造ReportViewer对象,然后将其传递到窗体的构造函数内部,以便将其分配给内部ReportViewer对象不是一个好主意。我不知道幕后发生了什么,可能是ReportViewr实例和GUI控件(用于显示报表)之间的一些绑定被破坏了。进一步回答我的问题,使用数据库跟踪,我们可以确认报表使用的存储过程是使用正确的参数调用的,并且它们返回正确的数据。为什么报表结果显示为空?是否有一种方法可以跟踪报表服务器内部并查看发生了什么?