SSRS报告调用存储过程

时间:2012-01-04 16:21:31

标签: reporting-services ssrs-2008

我们正在使用SSRS 2008 R2

我们有几个报告可以调用多个存储过程。似乎只要报告被调用,它就会运行带有默认值的存储过程,然后使用传递的参数重新运行存储过程。这有意义吗?

我们正在考虑使用快照来存储包含所有默认参数的报告快照,但有更好的方法吗?

rptViewer.ProcessingMode = ProcessingMode.Remote
rptViewer.ShowCredentialPrompts = False
rptViewer.ShowBackButton = False
rptViewer.ShowDocumentMapButton = False
rptViewer.ShowExportControls = False
rptViewer.ShowFindControls = False
rptViewer.EnableViewState = True
rptViewer.ShowPageNavigationControls = False
rptViewer.ShowParameterPrompts = True
rptViewer.ShowRefreshButton = False
rptViewer.ShowPrintButton = True
rptViewer.ShowPromptAreaButton = False
rptViewer.ShowToolBar = True
rptViewer.ShowZoomControl = False
rptViewer.SizeToReportContent = True
rptViewer.AsyncRendering = False
rptViewer.Height = Unit.Percentage(100)
rptViewer.Width = Unit.Percentage(100)

Dim RepParameters As New ReportParams
With RepParameters
  .ApplicationID = MyBase.CurrentApplicationID.ToString
  .EntityID = EntityIDList
  If ShowTitle Then .isExported = "True" Else .isExported = "False"
  .LanguageID = CShort(MyBase.CurrentLanguage.ID).ToString
  .UserSecurityID = CInt(MyBase.CurrentLoggedUser.SecurityID).ToString
End With

**rptViewer.ServerReport.SetParameters(rep.SsrsReportParameters(RepParameters))**

2 个答案:

答案 0 :(得分:1)

听起来你传递的参数太晚了,无法用于reportviewer控件。确保在页面的执行周期中尽快设置它们。我通过在代码后面的页面加载代码中初始化ReportViewer控件而不是在aspx部分中声明一个来解决这个问题。这解决了我。

答案 1 :(得分:0)

更多的解决方法而非解决方案。

我们最终将其中一个参数的默认值设置为-1,而在存储过程中,如果参数不是-1,我们只运行代码。