B4J Library jCrystalReports Library

Discussion in 'B4J Libraries & Classes' started by Juan Marrero, Sep 27, 2018.

  1. Juan Marrero

    Juan Marrero Active Member Licensed User

    Hi all.
    I would like to share this jCrystalReports Library. (For now it supports MS SQL JTDS, MS SQL SQLJDBC, MySQL, Oracle and SQLite) I think I'm wrong, the java code in this library doesn't restrict to any jdbc connection and you can configure any jdbc in crystal reports as long is in the classpath (step 3). Please test everything.
    Steps:
    1. Copy all jdbc libraries to "C:\Program Files (x86)\Business Objects\Common\3.5\java\lib" (optional) or you just can specify jars' path explained in step 3.
    2. Copy all crystal report jars to your B4j additional libraries folder. Link
    3. In the CRConfig.xml you need to add the jars locations to <Classpath> under <DataDriverCommon> section using same format as all other entries (use \ and / in the path).
    4. Also you need to change <JavaDir> from the dafault location to your Java JRE or JDK bin folder (it has to be the 32bit one). For example mine is "C:\Program Files (x86)\Java\jre1.8.0_181\bin". I found on the internet that the default java directory from crystal reports is not working.
    5. Create a Crystal Report using JDBC as your data connection. (If you can't find JDBC (JNDI) in your connections use your Crystal Reports installation program to add that feature).
    6. Create a B4J project and add the following in the #Region Project Attributes:
    #AdditionalJar: CrystalCommon2
    #AdditionalJar: DatabaseConnectors
    7. Open the example to fill all variables and launch the report.

    I attached the library files, an example and a copy of my CRConfig.xml located in "C:\Program Files (x86)\Business Objects\Common\3.5\java" (could be "\4.0\java") as an example of my configuration.

    v1.00 - Release.
    v1.01 - Added methods PrintReport and ExportReport.
     

    Attached Files:

    Last edited: Oct 11, 2018
  2. Juan Marrero

    Juan Marrero Active Member Licensed User

    v1.01 - Added methods to print directly to a printer (PrintReport) and to export the report to PDF, XML, Excel, Word, etc..

    PrintReport:
    Code:
    Dim cr As CrystalReports
       
       cr.REPORT_NAME = 
    "path to report"
       cr.USERNAME = 
    "username"
       cr.PASSWORD = 
    "password"
       cr.TRUSTED_CONN = 
    "false" 'or "true"
       cr.CONN_URL = "jdbc:jtds:sqlserver://<servername>:<port>"
       cr.DB_NAME = 
    "database name"
       cr.DB_CLASS_NAME = 
    "net.sourceforge.jtds.jdbc.Driver"
       cr.SERVER_NAME = 
    "server name"
       cr.SELECTION_FORMULA = 
    ""
       
       
    Dim service As CR_PrintService
       
       cr.InitializePrintServices
       
       
    Dim printerList() As String = cr.GetPrintServices
       
    Dim printers As List
       
    Dim selPrinter As String
       
       printers.Initialize
       
       
    For i = 0 To printerList.Length - 1
           printers.Add(printerList(i))   
       
    Next
       
       
    Dim sel As Int = fx.InputList(MainForm, printers, "Select Printer:""Printers", -1)
       
       
    If sel <> fx.DialogResponse.CANCEL Then
           selPrinter = printers.Get(sel)
       
    End If
       
       
    If selPrinter <> "" Then
           
    service = cr.SelectPrintService(cr.PrintServices, selPrinter)
           cr.PrintReport(
    service, cr.PAPER_LETTER, 1)
       
    Else
           cr.LaunchReport
       
    End If
    ExportReport:
    Code:
    Dim cr As CrystalReports
       
       cr.REPORT_NAME = 
    "path to report"
       cr.USERNAME = 
    "username"
       cr.PASSWORD = 
    "password"
       cr.TRUSTED_CONN = 
    "false" 'or "true"
       cr.CONN_URL = "jdbc:jtds:sqlserver://<servername>:<port>"
       cr.DB_NAME = 
    "database name"
       cr.DB_CLASS_NAME = 
    "net.sourceforge.jtds.jdbc.Driver"
       cr.SERVER_NAME = 
    "server name"
       cr.SELECTION_FORMULA = 
    "{Table.ID} = 10"
       
       
    Dim ans As Int = fx.Msgbox2(MainForm, "Export or View?""Report""Export""Cancel""View", fx.MSGBOX_CONFIRMATION)
       
       
    If ans = fx.DialogResponse.POSITIVE Then
           cr.ExportReport(cr.format_PDF, 
    "C:\exportedreport.pdf")
       
    Else if fx.DialogResponse.NEGATIVE Then
           cr.LaunchReport
       
    End If
     
    hibrid0 likes this.
Loading...
  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice