How to bypass crystal login information, set parameters and print to pdf?

1) Create a page with a print button, a submitt button, and
a crytal report viewer we are naming it CVWSales

2)Create a Crystal report [.RPT] file with its SQL connection.

Here is the code.

Imports System.Data.SqlClient
Imports CrystalDecisions.CrystalReports.Engine
Imports CrystalDecisions.Shared
Imports CrystalDecisions.CrystalReports.Engine.PrintOptions

Partial Class ReportViewer
    Inherits System.Web.UI.Page

   
    Dim cbsMAin3 As New ReportDocument
    Dim Print As Boolean = False


  
    
 
   
    Private Sub Dailysales()
        Dim tbCurrent As CrystalDecisions.CrystalReports.Engine.Table
        Dim tliCurrent As CrystalDecisions.Shared.TableLogOnInfo

        Dim appPath As String
        Dim reportPath As String
        '***********
        Dim crParameterDiscreteValue As New CrystalDecisions.Shared.ParameterDiscreteValue
        Dim crParameterFieldDefinitions As ParameterFieldDefinitions
        Dim crParameterFieldLocation As ParameterFieldDefinition
        Dim crParameterValues As CrystalDecisions.Shared.ParameterValues
        Dim ParametersS(11) As String
        Dim RptDateValues As New BitArray(7)
        Dim Fields(5) As String
        Dim FldCnt As Integer
        FldCnt = 0

        RptDateValues = CType(Session("RptDateValues"), BitArray)
        ParametersS = CType(Session("ParametersS"), Array)

        appPath = MapPath(".")
        reportPath = appPath + "\FOLDERNAMEIFANY\" + "YOURREPORT.rpt"
        cbsMAin3.Load(reportPath)

'IF YOUR REPORT HAS ANY GROUPING THAT YOU MAY CHANGE DINAMICALLY ENTER IT HERE
        'cbsMAin3.DataDefinition.SortFields(0).Field = cbsMAin3.Database.Tables(0).Fields("GROUP1")
        'cbsMAin3.DataDefinition.SortFields(1).Field = cbsMAin3.Database.Tables(0).Fields("GROUP2") ' group by

'THIS IS THE LOGIN INFORMATION OF YOUR REPORT.

        crParameterFieldDefinitions = cbsMAin3.DataDefinition.ParameterFields

        For Each tbCurrent In cbsMAin3.Database.Tables
            tliCurrent = tbCurrent.LogOnInfo
            With tliCurrent.ConnectionInfo
                .ServerName = "SERVERNAME"
                .UserID = "DATABASEUSERNAME"
                .Password = "DATABASEPASSWORD"
                .DatabaseName = "DATABASENAME EX-NORTHWIND"
            End With
            tbCurrent.ApplyLogOnInfo(tliCurrent)
        Next tbCurrent

 
        'Parameter used by Crystal's Store procedure.


        crParameterFieldLocation = crParameterFieldDefinitions.Item("@CUSTOMERID")
        crParameterValues = crParameterFieldLocation.CurrentValues
        crParameterDiscreteValue = New CrystalDecisions.Shared.ParameterDiscreteValue
        crParameterDiscreteValue.Value = "3" 'CUSTOMERID IT COULD BE A VB CONTROL
        crParameterValues.Add(crParameterDiscreteValue)
        crParameterFieldLocation.ApplyCurrentValues(crParameterValues)

    




        If Print = False Then
            Me.cvwSales.ReportSource = cbsMAin3
        ElseIf Print = True Then
            'This code will send directly to default printer-no good on server side
            'cbsMAin3.PrintToPrinter(1, True, 1, 0)
            'cvwSales.ReportSource = cbsMAin3


            'this code prints to PDF
            Dim oStream As System.IO.MemoryStream = DirectCast(cbsMAin3.ExportToStream(CrystalDecisions.[Shared].ExportFormatType.PortableDocFormat), System.IO.MemoryStream)

            Response.Clear()

            Response.Buffer = True

            Response.ContentType = "application/pdf"

            Response.BinaryWrite(oStream.ToArray())

            Response.[End]()



        End If


    End Sub
   

    Protected Sub ButtonPrint_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles ButtonPrint.Click
        Print = True
        Dailysales()
    End Sub

    Protected Sub Buttonsubmit_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Buttonsubmit.Click
        Dailysales()
    End Sub


End Class

Related Posts

No Comments Yet.

Leave a reply

You must be logged in to post a comment.