cancel
Showing results for 
Search instead for 
Did you mean: 

Crystal Reports .NET In Process RAS (Unmanaged) - Report/SubReport manipulation

nick_coppola
Explorer
0 Kudos

I'm looking to see if there might be any samples available to look at that show the following:

1. Using In Process RAS

2. Build a report dynamically by adding sections to a report container and then adding sub reports to those sections.

I'm looking to rewrite an old RDC implementation and need to use application data to drive the how the report is built, the sections, and subreports to use.

Please note that I do not see such a sample in the SDK samples offered for .NET In Process RAS.

Thank you,

- Nick

Accepted Solutions (1)

Accepted Solutions (1)

0 Kudos

Hi Nick,

This link should get you started:

https://blogs.sap.com/2012/05/30/net-ras-sdk-samples/

Don

nick_coppola
Explorer
0 Kudos

Good Morning,

Again, following up on this after some time. Does anyone know whether it is possible to having existing RDC code and Crystal Reports .NET Ras (Unmanaged ) running in the same project? Specifically, can portions be converted while running old code or might there be conflicts?

Thank you,

- Nick

Answers (1)

Answers (1)

nick_coppola
Explorer
0 Kudos

I realize it has been a long time since this was posted, but I am finally trying to attack this issue after a delay. The RDC example that I am working with involves setting the report document, setting parameters, looping through the main report sections to identify report objects and then to apply the connection and parameters to each report object including the main report.

I was hoping there would be some equivalent code available.

It would be great if there was some guide that said if you were doing this in RDC it is this in Inprocess RAS. For example, the first step of the GenerateProjectReport we are creating an instance of CRAXDDRT.Application and CRAXDDRT.Report. I'm not sure what class or classes are the equivalent and which assemblies to import.

Here is what I have:

#Region " Print "Private Sub ClearTempFilesByUser()
        Dim IAs Integer
        Try
            Dim strFilePattern AsString= ViewState("username") & "_PM*.pdf"
            Dim FileTable()AsString= IO.Directory.GetFiles("C:\project\temp\", strFilePattern)ForI=0To UBound(FileTable)
                IO.File.Delete(FileTable(I))NextCatch ex AsException
            'Do nothing
        Finally
        EndTryEnd Sub
    Sub GenerateProjectReport(ByVal strFilter AsString, ByVal strSortField AsString, ByVal strSortDir AsString, ByVal strCommandName AsString)
        Dim crApp AsNew CRAXDDRT.Application
        Dim crReport AsNew CRAXDDRT.ReportIf cbxPrintMarked.Checked Then
            Dim strMarkFilter AsString=""
            Dim XAs Integer
            Dim objChechBox AsCheckBoxForX=0To dgrProjects.Items.Count-1
                objChechBox = dgrProjects.Items.Item(X).Cells(12).FindControl("cbxMarked")IfNot IsNothing(objChechBox)ThenIf objChechBox.Checked Then strMarkFilter += dgrProjects.Items(X).Cells(1).Text&","
                    objChechBox = Nothing
                EndIfNextIfNot Trim(strMarkFilter)="" _Then strFilter ="WHERE PID IN(" & Mid(strMarkFilter, 1, Len(strMarkFilter) - 1) & ")" _Else lblError.Text="No record was marked for printing." : Exit SubEndIfTry
            '-----------------------------------------------
            ' Open the report
            '-----------------------------------------------SelectCase UCase(strCommandName)Case"SUMMARY" : crReport = crApp.OpenReport("Summary.rpt", 0)Case"SUMMARY2" : crReport = crApp.OpenReport("Summary2.rpt", 0)CaseElse: crReport = crApp.OpenReport("Detail.rpt", 0)EndSelect
            '-------------------------------------------------------------------
            ' Set the ConnectionInfo properties for logging onto the Database 
            '-------------------------------------------------------------------
            SetReportTableProps(crReport)
            PrepareSubReports(crReport)
            '-------------------------------------------------------------------
            ' Set parms based upon needs andincludingall subreports
            '-------------------------------------------------------------------
            Dim oParms As CRAXDDRT.ParameterFieldDefinitions
            Dim oParm As CRAXDDRT.ParameterFieldDefinition
            ' set parms for the mainreport;in this case it has two
            crReport.DiscardSavedData()
            oParms = crReport.ParameterFields
            oParm = oParms.Item(1)
            oParm.ClearCurrentValueAndRange()
            oParm.SetCurrentValue(strFilter)
            oParm = oParms.Item(2)
            oParm.ClearCurrentValueAndRange()
            oParm.SetCurrentValue(strSortField)
            oParm = oParms.Item(3)
            oParm.ClearCurrentValueAndRange()
            oParm.SetCurrentValue(strSortDir)
            oParm = oParms.Item(4)
            oParm.ClearCurrentValueAndRange()If UCase(strCommandName)="SUMMARY" _Then oParm.SetCurrentValue(True) _
                    Else oParm.SetCurrentValue(False)Catch exMain AsExceptionIfNot IsNothing(crApp)Then
                crReport = Nothing
                crApp = Nothing
            EndIf
            Response.Write(exMain.Message)
            Response.End()EndTry
        '-------------------------------------------------------------------
        ' Handle Viewing
        '-------------------------------------------------------------------
        Dim sSaveFileName AsString=""Try
            'Build standard filename and path
            Dim strDateTimeStamp AsString=Format(Date.Now,"MMddyyyy_hhmmss")
            sSaveFileName ="C:\project\temp\" & _
                            ViewState("username") & "_PM" & _
                            ViewState("PIDselected") & "_" & _
                            strDateTimeStamp &"_report.pdf"
            'Call the export
            ExportFile(crReport, sSaveFileName)
            'Manage closing of com objects
            crReport = Nothing
        Catch exMain2 AsExceptionIfNot IsNothing(crApp)Then
                crReport = Nothing
                crApp = Nothing
            EndIf
            Response.Write(exMain2.Message)
            Response.End()EndTry
        '-------------------------------------------
        'Extracting partial path from physical path and forming a virtual path to the file
        'Register javascript to the virtual path
        '---------------------------------------------
        Dim strTable()AsString
        Dim IAsByte, strTemp AsString=""
        ' Reverse left slashes toright
        strTable =Split(sSaveFileName,"\")ForI=4To UBound(strTable): strTemp = strTemp &"/" & strTable(I) : Next
        Dim strURL AsString
        Dim strOptions AsString
        strURL ="http://" & Request.ServerVariables("SERVER_NAME") & "/temp/" & strTemp
        strOptions ="LEFT=10, TOP=10, HEIGHT=650, WIDTH=600, STATUS=no, SCROLLBARS=yes RESIZABLE=yes"Page.ClientScript.RegisterClientScriptBlock(GetType(Main),"ShowReport", "<script language='JavaScript'>" & vbCrLf & _"   window.open('" & strURL & "', '', '" & strOptions & "', 'False')</script>")End Sub
    Sub SetReportTableProps(ByRef objReport As CRAXDDRT.Report)
        'CollectionofTables(reused)
        Dim CrTables As CRAXDDRT.DatabaseTables
        'Indiv Table(reused)
        Dim CrTable As CRAXDDRT.DatabaseTable
        'This code works for both usertablesand stored 
        'procedures.Set the CrTables to the Tablescollection 
        'of the report 
        ' Acquire referencetotablecollection
        CrTables = objReport.Database.Tables
        'Loop through each tablein the reportand apply the 
        'LogonInfo information 
        Dim objProperties As CRAXDDRT.ConnectionProperties
        For Each CrTable In CrTables
            objProperties = CrTable.ConnectionProperties
            SetDBConnProps(objProperties)
            'If your DatabaseName ischangingat runtime, specify 
            'the table location. 
            'For example,when you are reporting offof a 
            'Northwind databaseonSQL server you 
            'should have the following lineofcode: 
            CrTable.Location = AppSettings("Initial Catalog") & ".dbo." & CrTable.Location.Substring(CrTable.Location.LastIndexOf(".") + 1)NextEnd Sub
    Private Sub SetDBConnProps(ByRef objParms As CRAXDDRT.ConnectionProperties)
        objParms.Item("Provider").value = AppSettings("Provider")
        objParms.Item("Data Source").value = AppSettings("Data Source")
        objParms.Item("Initial Catalog").value = AppSettings("Initial Catalog")
        objParms.Item("User ID").value = AppSettings("User ID")
        objParms.Item("Password").value = AppSettings("Password")End Sub
    Sub PrepareSubReports(ByRef objReport As CRAXDDRT.Report)
        Dim CrSections As CRAXDDRT.Sections
        Dim CrSection As CRAXDDRT.Section
        Dim CrReportObjects As CRAXDDRT.ReportObjects
        Dim CrSubReport As CRAXDDRT.SubreportObject
        Dim crCollSubReport AsNewCollection
        'Loop through each sectionto identify subreports
        CrSections = objReport.Sections
        'CrSections = rptBindLetter.ReportDefinition.Sections
        Dim iAs Integer
        For Each CrSection In CrSections
            CrReportObjects = CrSection.ReportObjects
            Fori=1To CrReportObjects.CountIf CrReportObjects.Item(i).Kind= CrystalDecisions.Shared.ReportObjectKind.SubreportObject Then
                    CrSubReport = CrReportObjects.Item(i)
                    'CrSubReport = CType(CrReportObject, CRAXDDRT.SubreportObject)
                    crCollSubReport.Add(objReport.OpenSubreport(CrSubReport.SubreportName))
                    'oSubRpt = CrSubReport.OpenSubreport(CrSubReport.SubreportName)
                    SetReportTableProps(crCollSubReport.Item(crCollSubReport.Count))
                    PrepareSubReports(crCollSubReport.Item(crCollSubReport.Count))EndIfNextNextEnd Sub
    Sub ExportFile(ByVal oRpt AsReport, ByVal sSaveFileName AsString)With oRpt
            .ExportOptions.DiskFileName = sSaveFileName
            .ExportOptions.DestinationType = CRAXDDRT.CRExportDestinationType.crEDTDiskFile
            SelectCase UCase(Right(sSaveFileName,3))Case"PDF".ExportOptions.FormatType = CRAXDDRT.CRExportFormatType.crEFTPortableDocFormat
                Case"DOC".ExportOptions.FormatType = CRAXDDRT.CRExportFormatType.crEFTWordForWindows
                Case"RTF".ExportOptions.FormatType = CRAXDDRT.CRExportFormatType.crEFTRichText
                Case"XLS".ExportOptions.FormatType = CRAXDDRT.CRExportFormatType.crEFTExcel97
            EndSelect.Export(False)EndWithEnd Sub
#End Region