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

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

A quick way to get a menu to work on our website, is using the Menu control and assign it to a web.sitemap using SiteMapDataSource. Example of web.sitemap file: (CODE) Sample code to add to the page menu: (CODE) Running the application, we wi…
Creating an analog clock UserControl seems fairly straight forward.  It is, after all, essentially just a circle with several lines in it!  Two common approaches for rendering an analog clock typically involve either manually calculating points with…
In this video I am going to show you how to back up and restore Office 365 mailboxes using CodeTwo Backup for Office 365. Learn more about the tool used in this video here: http://www.codetwo.com/backup-for-office-365/ (http://www.codetwo.com/ba…
As a trusted technology advisor to your customers you are likely getting the daily question of, ‘should I put this in the cloud?’ As customer demands for cloud services increases, companies will see a shift from traditional buying patterns to new…

896 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

15 Experts available now in Live!

Get 1:1 Help Now