on 07-08-2014 6:51 AM
Below is my code in VB.NET 2010 to pass parameters in Crystal Report.
All the way I am able to pass one parameter in report which is packing_size
(I have created packing_size
field in Crystal Reports Parameter Fields
)
Now I want to pass a second parameter with AND
or OR
condition.
Can I get help?
I have come all the way at 99% I want to complete it @100%, PLEASE HELP
Code as below:
Imports System.Data.OleDb
Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared
Public Class frmrptProducts
Private Sub frmrptProducts_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim cryRpt As New ReportDocument
Dim CrTables As Tables
Dim crtableLogoninfo As New TableLogOnInfo
Dim crConnectionInfo As New ConnectionInfo
'load report
cryRpt.Load(ReportPath & "CRproducts.rpt")
'Connection
With crConnectionInfo
.ServerName = My.Application.Info.DirectoryPath.ToString() & "\data\db.mdb"
'.DatabaseName = ""
'.UserID = ""
.Password = ""
End With
'Passing parameters code starts here
Dim crParameterFieldDefinitions As ParameterFieldDefinitions
Dim crParameterFieldDefinition As ParameterFieldDefinition
Dim crParameterValues As New ParameterValues
Dim crParameterDiscreteValue As New ParameterDiscreteValue
crParameterDiscreteValue.Value = "200"
crParameterFieldDefinitions = cryRpt.DataDefinition.ParameterFields
crParameterFieldDefinition = crParameterFieldDefinitions.Item("packing_size")'
crParameterValues = crParameterFieldDefinition.CurrentValues
crParameterValues.Clear()
crParameterValues.Add(crParameterDiscreteValue)
crParameterFieldDefinition.ApplyCurrentValues(crParameterValues)
'Passing parameters code ends here
CRV.ReportSource = cryRpt
CRV.Refresh()
'Catch ex As Exception
' MsgBox(ex.Message)
'End Try
End Sub
End Class
Are you adding a NEW parameter or adding values? If adding NEW then simply repeat the same process, if adding values then use the .Modify method.
And don't call: CRV.Refresh()
It can reload the original collection and wipe out what you just added.
Don
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Something like this:
private void ReportDocumentSetParameters(CrystalDecisions.CrystalReports.Engine.ReportDocument rpt)
{
SetCrystalParam(rpt, "@FirstParam", "StringValue");
SetCrystalParam(rpt, "@SecondParam", "StringValue");
}
private void SetCrystalParam(CrystalDecisions.CrystalReports.Engine.ReportDocument rpt, string parameterName, string listOfValues)
{
int ParCount = rpt.DataDefinition.ParameterFields.Count;
foreach (CrystalDecisions.CrystalReports.Engine.ParameterFieldDefinition crParamField in rpt.DataDefinition.ParameterFields)
{
if ("@" + crParamField.Name.ToLower() == parameterName.ToLower())
{
try
{
CrystalDecisions.Shared.ParameterValues myparameterValues = new CrystalDecisions.Shared.ParameterValues();
CrystalDecisions.Shared.ParameterDiscreteValue crDiscreteValue = new CrystalDecisions.Shared.ParameterDiscreteValue();
// you'll have to adjust this part
crDiscreteValue.Value = listOfValues;
myparameterValues.IndexOf(crParamField.Name);
myparameterValues.Add(crDiscreteValue);
crParamField.ApplyCurrentValues(myparameterValues);
return;
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
return;
}
}
}
}
Don
User | Count |
---|---|
93 | |
10 | |
10 | |
9 | |
9 | |
7 | |
6 | |
5 | |
5 | |
4 |
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.