Listing 2: Click Event Code for the Button Private Sub cmdRender_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles cmdRender.Click ' BEGIN CALLOUT A ReportViewer1.Reset() ' END CALLOUT A AddHandler Me.ReportViewer1.LocalReport.SubreportProcessing, _ AddressOf GalacticSubreportProcessingEventHandler ' BEGIN CALLOUT B ReportViewer1.ProcessingMode = ProcessingMode.Local ReportViewer1.LocalReport.ReportPath = "EmployeeTime.rdl" ' END CALLOUT B ' BEGIN CALLOUT C Dim parameterValues(0) As ReportParameter Dim listOfValues As String parameterValues(0) = New ReportParameter(reportParameterName) listOfValues = "" Dim listBoxItem As Object For Each listBoxItem In clbReportParameter.CheckedItems parameterValues(0).Values.Add(CStr(listBoxItem)) If listOfValues = "" Then listOfValues = CStr(listBoxItem) Else listOfValues = listOfValues & "," & CStr(listBoxItem) End If Next ReportViewer1.LocalReport.SetParameters(parameterValues) ' END CALLOUT C ' BEGIN CALLOUT D Dim connStr as String connStr = "Integrated Security=SSPI;database=Galactic;" connStr = connStr & "server=SQL1;" Dim conn As New SqlConnection(connStr) conn.Open() Dim comm As New SqlCommand() comm.Connection = conn comm.CommandType = CommandType.StoredProcedure comm.CommandText = "stp_EmployeeTime" Dim parameter As SqlParameter = comm.Parameters.Add("@Job", _ SqlDbType.VarChar, 1000) parameter.Value = listOfValues Dim resultSet As SqlDataReader resultSet = comm.ExecuteReader() ReportViewer1.LocalReport.DataSources.Add(New _ ReportDataSource("EmployeeTimeDS", resultSet)) ' END CALLOUT D ReportViewer1.RefreshReport() End Sub