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
462 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

Back Up Your Microsoft Windows Server®

Back up all your Microsoft Windows Server – on-premises, in remote locations, in private and hybrid clouds. Your entire Windows Server will be backed up in one easy step with patented, block-level disk imaging. We achieve RTOs (recovery time objectives) as low as 15 seconds.

Question has a verified solution.

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

Just a quick little trick I learned recently.  Now that I'm using jQuery with abandon in my asp.net applications, I have grown tired of the following syntax:      (CODE) I suppose it just offends my sense of decency to put inline VBScript on a…
The article shows the basic steps of integrating an HTML theme template into an ASP.NET MVC project
Two types of users will appreciate AOMEI Backupper Pro: 1 - Those with PCIe drives (and haven't found cloning software that works on them). 2 - Those who want a fast clone of their boot drive (no re-boots needed) and it can clone your drive wh…
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…

809 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