Search code examples
vb.netcrystal-reports

My Crystal Report is not showing the hole list


Please help with my crystal report, because it doesn't show the hole list when i use parameter fields for a list. here is my class below

`Imports System.Windows.Forms.Application

Imports System.Data
Imports System.Data.SqlClient

Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared
Imports CrystalDecisions.Windows.Forms

Public Class CrystalReportHelperClass

    Dim Sql As New SqlHelper

    Dim CR_ParamDisVals As New ParameterDiscreteValue
    Dim CR_ParamVals As New ParameterValues

    Dim CR_ParamDef As ParameterFieldDefinition
    Dim CR_ParamDefs As ParameterFieldDefinitions

    Dim CRPTDoc As New ReportDocument
    Dim CRPTViewer As New CrystalReportViewer

    Public Sub New(ByRef CReport As CrystalDecisions.Windows.Forms.CrystalReportViewer)

        CRPTViewer = CReport
        CRPTDoc = CReport.ReportSource
    End Sub
    Public Sub CrystalObjectParam(ByVal CrystalReportObject As String, ByVal Message As String)

        CR_ParamDisVals.Value = Message
        CR_ParamDefs = CRPTDoc.DataDefinition.ParameterFields
        CR_ParamDef = CR_ParamDefs.Item(CrystalReportObject)

        CR_ParamVals = CR_ParamDef.CurrentValues

        CR_ParamVals.Clear()
        CR_ParamVals.Add(CR_ParamDisVals)

        CR_ParamDef.ApplyCurrentValues(CR_ParamVals)

    End Sub

    Public Function GetCrystalReport() As ReportDocument
        Return CRPTDoc
    End Function

End Class
`

then here is the form load

  Private Sub ReportEmployeeList_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    Dim RepDoc As New ReportDocument
    RepDoc = CRPT_Employee.ReportSource
    If Sql.HasConnection() = True Then

        Dim DT As DataTable = Sql.ExecuteDataTableSP("SelectWorking")
        For Each Data As DataRow In DT.Rows

            CRPT.CrystalObjectParam("ID", Data(1))

        Next
    Else
        MsgBox("System Database Cannot be Connected", MsgBoxStyle.Information)
    End If

    CRPT_Employee.ReportSource = CRPT.GetCrystalReport
    CRPT_Employee.Refresh()

End Sub

then i have 1 parameter field in my crystal report, id -> discrete value
what should i do? i already used other methods like this one

Private Sub SetCurrentValuesForParameterField(ByVal myParameterFields As ParameterFields, ByVal myArrayList As ArrayList) Dim currentParameterValues As ParameterValues = New ParameterValues() For Each submittedValue As Object In myArrayList Dim myParameterDiscreteValue As ParameterDiscreteValue = New ParameterDiscreteValue() myParameterDiscreteValue.Value = submittedValue.ToString() currentParameterValues.Add(myParameterDiscreteValue) Next Dim myParameterField As ParameterField = myParameterFields(PARAMETER_FIELD_NAME) myParameterField.CurrentValues = currentParameterValues End Sub


Solution

  • modify your method as below if i understood what do you want>>>

     Dim DT As DataTable = Sql.ExecuteDataTableSP("SelectWorking")
        For Each Data As DataRow In DT.Rows
    
            CRPT.SetParameterValue("ID", Data(1))