Solved

Pass a parameter from a Windows form to a crystal report in VB.NET

Posted on 2016-09-14
8
63 Views
Last Modified: 2016-09-29
Caution - I need very specific instructions as I am not at all proficient in VB.net or CR.  
I want to enter a strNumber in a textbox on a windows form, and have it passed to a Crystal Report parameter for sorting (CR report is on the same form).

I'm using Visual Studio 2015/VB.net

I created a Windows form named frmSubSpecsReport
I created a Textbox on the form named txtJobNumber and a variable strJobNumber to hold the value that is typed into the textbox
I created a parameter in the report named JobNumber, which I will use to sort through all the jobs to find the correct one
I want to capture the number that a user types into the textbox and pass it to the JobNumber parameter in CR

I've used the Imports at the top of the form:
Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared

I've added this code for the button click event -

        Dim ParameterFields As CrystalDecisions.Shared.ParameterFields
        Dim ParameterField As CrystalDecisions.Shared.ParameterField
        Dim ParameterDiscreteValue As CrystalDecisions.Shared.ParameterDiscreteValue
        Dim strJobNumber As String = txtJobNumber.Text

'assign a report object to the viewer
        Dim crSubSpecsReport As New CrystalReport1    
  I got an error using CrystalReport1 as not being referenced ?? So I added the following to get the error to go away, but really don't know what it does:
Private Class CrystalReport1
    End Class

Then the code continues as follows:
        CrystalReportViewer1.ReportSource = New crSubSpecsReport

        'reference the parameterfields collection
        ParameterFields = CrystalReportViewer1.ParameterFieldInfo

        'reference the ParameterField object (name of the parameter i CR)
        ParameterField = ParameterFields("JobNumber")

        'create a parameterValue object
        ParameterDiscreteValue = New ParameterDiscreteValue

        'assign a default value
        ParameterDiscreteValue.Value = "strJobNumber"

        'add the ParameterValue object to the CurrentValues or DefaultValues collection
        ParameterField.CurrentValues.Add(ParameterDiscreteValue)

When I run the program, the CR parameter input form appears (not what I want) and when I enter a number, it does appear on the report, but if I use the textbox and click the button, then "strJobNumber" appears instead of the number entered.

Thanks very much for taking a look at this!
0
Comment
Question by:Gary Demos
  • 5
  • 3
8 Comments
 

Author Comment

by:Gary Demos
ID: 41798432
I have found another template which works using the ReportDocument class, but it still displays the CR parameter input form first, then after entering a string it moves to the report form where I can enter a string in the textbox, and then click the button and it does display on the report.

My problem now is this - I would like to go directly to the form and bypass the CR parameter dialog.
Here is the code that I changed to:

Private Sub btnViewReport_Click(sender As Object, e As EventArgs) Handles btnViewReport.Click

        Dim crSubSpecsReport As New ReportDocument
        crSubSpecsReport.Load("D:\Visual Studio 2015 Projects\Production Reports\Production Reports\crSubSpecsReport.rpt")
        Dim crParameterFieldDefinitions As ParameterFieldDefinitions
        Dim crParameterFieldDefinition As ParameterFieldDefinition
        Dim crParameterValues As New ParameterValues
        Dim crParameterDiscreteValue As New ParameterDiscreteValue
        crParameterDiscreteValue.Value = txtJobNumber.Text
        crParameterFieldDefinitions = crSubSpecsReport.DataDefinition.ParameterFields
        crParameterFieldDefinition =
            crParameterFieldDefinitions.Item("JobNumber")
        crParameterValues = crParameterFieldDefinition.CurrentValues
        crParameterValues.Clear()
        crParameterValues.Add(crParameterDiscreteValue)
        crParameterFieldDefinition.ApplyCurrentValues(crParameterValues)
        CrystalReportViewer1.ReportSource = crSubSpecsReport
        CrystalReportViewer1.Refresh()


    End Sub
0
 
LVL 100

Expert Comment

by:mlmcc
ID: 41798899
0
 

Author Comment

by:Gary Demos
ID: 41804601
Thanks for the link - I will try it out today!
0
 

Author Comment

by:Gary Demos
ID: 41805187
The link above was to a program written in VS 2005 and it would not update to VS2015. I found the code difficult to follow as well since it was using a Dataset and I am using OLE DB connection since I'm connecting to a SQL 2000 DB. I don't know enough to fill in the blanks in coding, and if someone could show me how I need to modify my code above that would be very helpful.

Thanks, Gary
0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 
LVL 100

Expert Comment

by:mlmcc
ID: 41805592
I will look into it but I am not a .Net programmer so I will have similar problems.

mlmcc
0
 

Author Comment

by:Gary Demos
ID: 41812805
Yes the .NET is the part I need help with.
0
 
LVL 100

Accepted Solution

by:
mlmcc earned 500 total points
ID: 41813078
This article from SAP on parameters may help

http://scn.sap.com/docs/DOC-70646

http://scn.sap.com/thread/3942873

mlmcc
0
 

Author Comment

by:Gary Demos
ID: 41816827
Thank you - the first link looks very interesing and informative. I'll dig into it and see how it goes.
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Hot fix for .Net Crystal Reports 10.2.3600.0 to fix problems with sub reports running on 64 bit operating systems ISSUE: Reports which contain subreports fail with error "Missing Parameter Value" DEPLOYMENT SERVER OS: Windows 2008 with 64 bi…
Calculating holidays and working days is a function that is often needed yet it is not one found within the Framework. This article presents one approach to building a working-day calculator for use in .NET.
This tutorial gives a high-level tour of the interface of Marketo (a marketing automation tool to help businesses track and engage prospective customers and drive them to purchase). You will see the main areas including Marketing Activities, Design …
Many functions in Excel can make decisions. The most simple of these is the IF function: it returns a value depending on whether a condition you describe is true or false. Once you get the hang of using the IF function, you will find it easier to us…

863 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

24 Experts available now in Live!

Get 1:1 Help Now