PoshCode Logo PowerShell Code Repository

Use SSRS ReportViewer with PowerShell, use parameters and catch navigate event

  1. # by @bernd_k aka @sqlsulidae  http://sqlsulidae.blogspot.com/            
  2. #            
  3.            
  4. # This is an extension of the script you find at            
  5. # http://www.sqlmusings.com/2009/08/21/sql-server-powershell-how-to-view-your-ssrs-reports-rdl-using-powershell-and-reportviewer/            
  6. # I show how to provide parameters and how to catch the navigate event            
  7.            
  8.            
  9. # [void]            
  10.  [System.Reflection.Assembly]::Load("Microsoft.ReportViewer.WinForms, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a")            
  11.            
  12.              
  13. $rv = New-Object Microsoft.Reporting.WinForms.ReportViewer            
  14.            
  15. $eventHandler = [Microsoft.Reporting.WinForms.HyperlinkEventHandler]{            
  16.     #$this                        #  $this is sender            
  17.     Write-Host "Hyperlink Event fired"            
  18.     Write-Host $_.Hyperlink       # $_ are the event args            
  19.     $_.Cancel = $true                  
  20.     }            
  21. $rv.Add_Hyperlink($eventHandler)            
  22.            
  23. $rv.ProcessingMode = "Remote"            
  24. $rv.ServerReport.ReportServerUrl = "http://localhost/reportserver"            
  25. $rv.ServerReport.ReportPath = "/Reports/Sample Report"            
  26.              
  27. #if you need to provide basic credentials, use the following            
  28. #$rv.ServerReport.ReportServerCredentials.NetworkCredentials=            
  29. #    New-Object System.Net.NetworkCredential("myuser", "mypassword")            
  30.              
  31. $rv.Height = 800            
  32. $rv.Width = 1200            
  33. $rv.Dock = [System.Windows.Forms.DockStyle]::Fill            
  34.            
  35. # if you have more than 1 parameters            
  36. # $params = new-object 'Microsoft.Reporting.WinForms.ReportParameter[]' 2            
  37. # $params[0] = new-Object Microsoft.Reporting.WinForms.ReportParameter("Par1", "3159", $false)            
  38. # $params[1] = new-Object Microsoft.Reporting.WinForms.ReportParameter("par2", "3159", $false)            
  39.            
  40. # my report has only 1 parameter            
  41. $params = new-object 'Microsoft.Reporting.WinForms.ReportParameter[]' 1            
  42. $params[0] = new-Object Microsoft.Reporting.WinForms.ReportParameter("Par1", "3159", $false)            
  43.            
  44. $rv.ServerReport.SetParameters($params);            
  45.            
  46.            
  47.            
  48. $rv.ShowParameterPrompts = $false            
  49. $rv.RefreshReport()            
  50.              
  51. #--------------------------------------------------------------            
  52. #Show as Dialog Using Windows Form            
  53. #--------------------------------------------------------------            
  54. #create a new form            
  55. $form = New-Object Windows.Forms.Form            
  56.              
  57. #we're going to make it just slightly bigger than            
  58. $form.Height = 810            
  59. $form.Width= 1210            
  60. $form.Controls.Add($rv)            
  61. $rv.Show()            
  62. $form.ShowDialog()            
  63.            
  64.            
  65. <#
  66. http://blogs.msdn.com/b/powershell/archive/2008/05/24/wpf-powershell-part-3-handling-events.aspx
  67. http://social.msdn.microsoft.com/Forums/en-US/vsreportcontrols/thread/693694bc-bfbc-4786-98ee-a99826e78739
  68. #>

Submit a correction or amendment below (
click here to make a fresh posting)
After submitting an amendment, you'll be able to view the differences between the old and new posts easily.

Syntax highlighting:


Remember me