Reporting Services and passing Parameters???

  • Hey Guys,

    I have been looking for some help with this. I can call reports using the code below that do not require parameters and it works perfectly. However, some reports DO need parameters (sometimes many) and I am unsure how to do this.

    What changes do I need to make here so that I can pass paramaters (their names and values) to the function below. Have been trying very hard at this and have had some luck, but never got it working. I think I got close, but I am not sure if what I did was correct, so here is the original code I started with.

    Hope someone can help...I'm desperate.

    Friend Shared Sub RenderPDFReport(ByVal reportURL As String)

    Dim result As Byte() = Nothing

    Dim historyID As String = Nothing

    Dim format As String = "PDF"

    Dim devInfo As String = Nothing

    Dim credentials As ReportServer.DataSourceCredentials() = Nothing

    Dim showHideToggle As String = Nothing

    Dim encoding As String

    Dim mimeType As String

    Dim warnings As ReportServer.Warning() = Nothing

    Dim reportHistoryParameters As ReportServer.ParameterValue() = Nothing

    Dim streamIDs As String() = Nothing

    Dim proxyParameters() As ReportServer.ParameterValue = Nothing

    Dim rs As ReportServer.ReportingService = New ReportServer.ReportingService

    rs.Credentials = System.Net.CredentialCache.DefaultCredentials

    Try

    result = rs.Render(reportURL, format, historyID, devInfo, proxyParameters, credentials, showHideToggle, encoding, mimeType, reportHistoryParameters, warnings, streamIDs)

    'Write the contents of the report to a pdf, and then open it

    Dim filePath As String = System.IO.Path.GetTempFileName() & ".pdf"

    Dim stream As System.IO.FileStream = System.IO.File.Create(filePath, result.Length)

    stream.Write(result, 0, result.Length)

    stream.Close()

    'Show the report

    Process.Start(filePath)

    Catch ex As System.Net.WebException

    MessageBox.Show("You do not have sufficient permissions or the report server could not be contacted. " & Environment.NewLine & "Please see your system administrator. (" & ex.Message & ")", "Could Not Access Report Server", MessageBoxButtons.OK, MessageBoxIcon.Error)

    End Try

    End Sub

    End Class

  • Currently of all the parameters in our repotrs we only need to specifically set one per report. Most of the other parameters use system defaults like current date/time/user/etc... Hadn't really thought about that, but it seems a bit strange how that has worked out

    We use this snippet of code to set the DefaultValue for the parameter we change. You might be able to hack around with this. I believe the trick is to set the ForRendering property to true so the parameter list is returned.

    static void SetParms(ReportingService rs, string RptPath, string ParamValue)
    {
     // Report Parameters
     bool forRendering = true;
     string historyID = null;
     ParameterValue[] values = null;
     DataSourceCredentials[] credentials = null;
     ReportParameter[] parameters = null;
     parameters = rs.GetReportParameters(RptPath, historyID, forRendering, values, credentials);
     if (parameters.Length > 0)
     {
      parameters[0].DefaultValues = new string[] {ParamValue};
      rs.SetReportParameters(RptPath, parameters);
     }
    }

     

    --------------------
    Colt 45 - the original point and click interface

  • Oops ... should note that this is C# code

     

    --------------------
    Colt 45 - the original point and click interface

  • Thanks for your help. I don't know much of C# but I will probably be able to convert it. So I will try. But if you can easilly convert to VB.NET that would be very helpful.

  • Copy the code posted by Phil and then go to the URL at the bottom of this message.  Before pasting the code, using the drop-down, change the code translation direction to be c# ->VB.net  .Then just paste the code into the textbox, wait ~2-3 seconds and then 'presto' the Vb.net code should be at the bottom of the page.

    http://www.carlosag.net/Tools/CodeTranslator/Default.aspx

    Cheers,

     

     

    Steve.

  • Awesome! stevefromOZ that's one for the bookmarks! Thank you very much to all who helped.

Viewing 6 posts - 1 through 5 (of 5 total)

You must be logged in to reply to this topic. Login to reply