Solved

Visual studio 2008: passing parameters to crystal reports  for VS2008 from asp.net 2.0 Web From using VB.net 2008

Posted on 2012-03-16
6
472 Views
Last Modified: 2012-04-19
I have modified a crystal reports for VS2008 label report to print membership cards on business card stock.  Using the crystal report default parameter prompt, I am able to enter member Id and the report is displayed.  When I click on the crystal report viewer's print icon the export pop-up is displayed.  However when I click on the export button, the default prompt screen is displayed and the report is not printed.

 See the attached document for screen prints and my asp.net vb code.  

The reports record selection is  retrieving the data from a SQL2008 Server DB based upon the membersIDs  parameter that contains the ID's entered in the report default parameter prompt in the crystal report viewer.  Can anyone advise me what I have to do to get the report to print.  

Do I have to modify my ASP.net screen to add an ASP.net listbox od CheckListBox linked to the MemberID column of the DBTable to collect the ID's?  If so can anyone provide me with a code sample for collecting and passing mutiple  selected ID's
MembersCardsreport.doc
0
Comment
Question by:pgkdavefdd
  • 3
6 Comments
 
LVL 100

Expert Comment

by:mlmcc
ID: 37730651
From the preview, arer you clicking the export or print button?

mlmcc
0
 

Author Comment

by:pgkdavefdd
ID: 37730772
The print button.  I have also clicked on the export button and it does not work either.
0
 

Author Comment

by:pgkdavefdd
ID: 37730834
The following is code I modified from another form in which I pre-fill a list box  with numbers to select a report number and the numbers are put into an array.  See GetDefaultValuesFromParameterField(MemberTransmittalReport)
            defaultParameterValuesList.DataBind() Bolded in code sample below:

Imports System.Collections
Imports System.Web.UI.WebControls
Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared


Partial Class MemberTransmittal
    Inherits System.Web.UI.Page

    Private MemberTransmittalReport As ReportDocument
    Private Const PARAMETER_FIELD_NAME As String = "MemberIDs"
    Private Sub SetTableLocation(ByVal tables As Tables)
        Dim connectionInfo As New ConnectionInfo()
        connectionInfo.ServerName = "MYServer.com"
        connectionInfo.DatabaseName = "CWVNat"
        connectionInfo.UserID = "MY_ID"
        connectionInfo.Password = "MY_Password"
        For Each table As CrystalDecisions.CrystalReports.Engine.Table In tables
            Dim tableLogOnInfo As TableLogOnInfo = table.LogOnInfo
            tableLogOnInfo.ConnectionInfo = connectionInfo
            table.ApplyLogOnInfo(tableLogOnInfo)
        Next
    End Sub
    Private Sub ConfigureCrystalReports()
        MemberTransmittalReport = New ReportDocument()
  Dim reportPath As String =  Server.MapPath("SelectCWVMembershipCards.rpt")
        MemberTransmittalReport.Load(reportPath)
        SetTableLocation(MemberTransmittalReport.Database.Tables)
        Dim myArrayList As ArrayList = New ArrayList()

       If Not IsPostBack Then
            defaultParameterValuesList.DataSource = GetDefaultValuesFromParameterField(MemberTransmittalReport)
            defaultParameterValuesList.DataBind()
            myArrayList.Add("1176")
            myArrayList.Add("1389")
            myArrayList.Add("1450")
            myArrayList.Add("1563")
            myArrayList.Add("1690")
            myArrayList.Add("2801")
            myArrayList.Add("4942")
            myArrayList.Add("11855")
            myArrayList.Add("11895")
            myArrayList.Add("11898")
            Session("myArrayList") = myArrayList
        Else
            myArrayList = CType(Session("myArrayList"), ArrayList)
        End If


        SetCurrentValuesForParameterField(MemberTransmittalReport, myArrayList)
        CrystalReportViewer1.ReportSource = MemberTransmittalReport
    End Sub

    Private Sub Page_Init(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Init
        ConfigureCrystalReports()
    End Sub

    Private Sub SetCurrentValuesForParameterField(ByVal myReportDocument As ReportDocument, 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 myParameterFieldDefinitions As ParameterFieldDefinitions = myReportDocument.DataDefinition.ParameterFields
        Dim myParameterFieldDefinition As ParameterFieldDefinition = myParameterFieldDefinitions(PARAMETER_FIELD_NAME)
        myParameterFieldDefinition.ApplyCurrentValues(currentParameterValues)
    End Sub

    Private Function GetDefaultValuesFromParameterField(ByVal myReportDocument As ReportDocument) As ArrayList
        Dim myParameterFieldDefinitions As ParameterFieldDefinitions = myReportDocument.DataDefinition.ParameterFields
        Dim myParameterFieldDefinition As ParameterFieldDefinition = myParameterFieldDefinitions(PARAMETER_FIELD_NAME)
        Dim defaultParameterValues As ParameterValues = myParameterFieldDefinition.DefaultValues
        Dim myArrayList As ArrayList = New ArrayList()

        For Each myParameterValue As ParameterValue In defaultParameterValues
            If (Not myParameterValue.IsRange) Then
                Dim myParameterDiscreteValue As ParameterDiscreteValue = CType(myParameterValue, ParameterDiscreteValue)
                myArrayList.Add(myParameterDiscreteValue.Value.ToString())
            End If
        Next

        Return myArrayList
    End Function


    Protected Sub redisplay_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles redisplay.Click
        Dim myArrayList As ArrayList = New ArrayList()
        For Each item As ListItem In defaultParameterValuesList.Items
            If item.Selected Then
                myArrayList.Add(item.Value)
            End If
        Next
        Session("myArrayList") = myArrayList
        ConfigureCrystalReports()
    End Sub
End Class

Can Anyone advise me how to modify this to pass the selected values directly from the listbox if I bind it to the database.  The list box is called "myArrayList"
0
 

Accepted Solution

by:
pgkdavefdd earned 0 total points
ID: 37731810
By changing
 If Not IsPostBack Then
            defaultParameterValuesList.DataSource = GetDefaultValuesFromParameterField(MemberTransmittalReport)
            defaultParameterValuesList.DataBind()
            myArrayList.Add("1176")
            myArrayList.Add("1389")
            myArrayList.Add("1450")
            myArrayList.Add("1563")
            myArrayList.Add("1690")
            myArrayList.Add("2801")
            myArrayList.Add("4942")
            myArrayList.Add("11855")
            myArrayList.Add("11895")
            myArrayList.Add("11898")
            Session("myArrayList") = myArrayList
        Else
            myArrayList = CType(Session("myArrayList"), ArrayList)
        End If

To
        If Not IsPostBack Then
            defaultParameterValuesList.DataBind()
            Session("myArrayList") = myArrayList
        Else
            myArrayList = CType(Session("myArrayList"), ArrayList)
        End If
I was able to get my asp.net form to work with the bound listbox and the report now prints.
0

Featured Post

Free Tool: SSL Checker

Scans your site and returns information about your SSL implementation and certificate. Helpful for debugging and validating your SSL configuration.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

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

ASP.Net to Oracle Connectivity Recently I had to develop an ASP.NET application connecting to an Oracle database.As I am doing it first time ,I had to solve several problems. This article will help to such developers  to develop an ASP.NET client…
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.
Email security requires an ever evolving service that stays up to date with counter-evolving threats. The Email Laundry perform Research and Development to ensure their email security service evolves faster than cyber criminals. We apply our Threat…
Nobody understands Phishing better than an anti-spam company. That’s why we are providing Phishing Awareness Training to our customers. According to a report by Verizon, only 3% of targeted users report malicious emails to management. With compan…

856 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