IReport archive

From Fishbowl
Jump to: navigation, search
iReport
Related Pages
What is iReport?
Setting up iReport
Does iReport require additional costs?
How do I integrate Fishbowl and iReport?
How do I use iReport for Report mods?
Is iReport similar to Crystal Reports?
What knowledge do I need to use iReport?
Can I pay Fishbowl to write a report for me?

iReport is a third-party application that can be used to create Fishbowl reports. iReport is not developed or supported by Fishbowl beyond the initial setup. iReport is a powerful and intuitive visual report builder/designer. This tool allows users to visually edit complex reports with charts, images, and sub reports. iReport is integrated with the leading open-source chart libraries for Java. In addition to many included reports, Fishbowl also offers custom reports and reports from the Fishbowl Store.

Setting Up iReport

Installing iReport

To install iReport, run the installer from here or here.

NOTE: iReport has some compatibility issues with Java 8. When using Fishbowl 2016.12 or greater, follow the steps below to properly configure iReport.

  1. If iReport doesn't start, Java 7 may need to be installed from here.
  2. If iReport still doesn't start, open the iReport/etc directory (For example, C:\Program Files (x86)\Jaspersoft\iReport-5.6.0\etc) and copy the ireport.conf file to the desktop. Add the following line to the file and then save the file and paste it back into the iReport/etc directory. Modify the following path as necessary to point to the Java 7 folder.
    jdkhome="C:\Program Files\Java\jre7"
  3. Download the Java 7 version of the Jaybird driver from here or here and paste the jar file into the Fishbowl/lib directory.
  4. Repeat the steps below or update the iReport settings to point to the jaybird-jdk17-2.2.11.jar file. Remove the jaybird-jdk18-2.2.11.jar from the classpath, or verify that jaybird-jdk17 file is higher on the classpath list than the jaybird-jdk18 file.

Set up the classpath

  1. Open iReport and select the Tools menu then Options.
    IReport Tools.Options.png
  2. Navigate to the iReport Menu, open the Classpath tab, and select the Add JAR button.
    IReport.Classpath.Add JAR.png
  3. You will now need to browse from the iReport folder to the Fishbowl\lib directory (by default this is installed C:\Program Files\Fishbowl\lib) and select all the JAR files located within that folder. Choose the Open button. When you are taken back to the Options window choose OK to be taken back to the iReport home screen.
    Add JARs to Fishbowl.lib Classpath.png

Connect to a Database

  1. On the iReport Home screen click the database icon located on Step 1. (Alternately, you may select the Report Datasources icon located on the top toolbar and choose the New option)
    Create a database icon.png
  2. Select Database JDBC connection from the menu and click Next.
    JDBC datasource connection.png
  3. MySQL instructions for Fishbowl 2017 or later can be found here. Put in a name for the connection (for example, Fishbowl) and enter the following information:
    JDBC Driver: org.firebirdsql.jdbc.FBDriver
    JDBC URL: jdbc:firebirdsql://localhost/C:\Program Files\Fishbowl\database\data\EXAMPLE.FDB
        NOTE: If the database is stored on another computer, replace localhost with the IP address of the database computer. The URL may also need to be modified if Fishbowl was installed in another folder.
    Username: gone
    Password: fishing
    Setup JDBC Connection.png
  4. Click the Test button (you may be asked to re-enter the fishing password) to ensure your database is set up. Once you receive the Connection Test Successful choose OK and click Save back on the JDBC Connection screen.
    JDBC connection test successful.png

Configuring Database Service

Fishbowl includes a Small.Data.png Data module that can be used to view tables and test queries. iReport comes with a database service that can do the same, although the Small.Data.png Data module requires no additional setup. The database service is not required to set up or create a report.

  1. On the iReport home page choose the Windows | Services option from the Main Toolbar.
    IReport windows.services option.png
  2. Expand the Databases list and right click on Drivers then select New Driver.
    Window Services New Driver.png
  3. Add the Fishbowl\lib\jaybird-full-x.x.x.jar or the jaybird-jdk17-2.2.11.jar file (don't use the jaybird-jdk18-2.2.11.jar file). All information should populate automatically on the New JDBC Driver window. Choose OK.
    New JDBC Driver.firebirdsql.png
  4. Right click on Databases and select New Connection.
  5. Select the Firebird driver from the name field then enter the same information as above.
    New iReport Database Connection.png
  6. Click the OK button. It may bring up an advanced screen to select a schema, simply click OK again to finish the wizard.

Using iReport for Custom Reports

These are the conventions accepted by Fishbowl for JasperReports. Using these conventions ensures that a custom report will be handled as expected and as desired.

iReport versions

  • Fishbowl 2015.8 through 2019.7 uses version 5.6.0
  • Fishbowl 2015.0 through 2015.7 uses version 5.1.0

Report basics

  • The root report directory is Fishbowl/Server/reports. Custom reports added to this folder or any subdirectory within this folder will be used by Fishbowl.
    - The hierarchy/organization of reports in the Report Module matches the file structure of Fishbowl/Server/reports. For example, if a folder named Customer exists in the reports directory, then there will be a Customer folder in the Report Module. Any reports within that folder will appear in the matching folder of Report Module.
  • Reports are keyed on path. This means that Fishbowl recognizes a report by where it is physically stored. If a report is moved, then Fishbowl assumes that it is a new report. If a report is copied over an old report, Fishbowl assumes that it is the same report, but that it has been modified and will update all relevant settings.
  • Reports are Case Sensitive. This means that "FISHBOWL" is not the same as "Fishbowl".
  • A report must be compiled (.jasper) in order for it to be accessible within Fishbowl. Additionally, the report should be compiled using Java. Reports compiled using Groovy are not supported.
  • If there are parse errors, then the server log should be checked. Mis-configured Fishbowl parameters are a common problem. For example, it may be that one of the listed module names or additional node paths isn't correct, or an additional node path might conflict with another path. These problems will need to be corrected in the reports.
  • Deleting or moving a report from reports directory will remove any record of it from Fishbowl.

Report conventions

  • Name the report using camelback convention. - Camelback convention is joining multiple words together and capitalizing the first letter of each individual word, i.e. CamelBackConvention. Fishbowl goes through and puts in spaces before every capital letter to make it display properly, i.e. Camel Back Convention. Do this via the Project | Project Options dialog. DO NOT include the word "Report" in the name of the report. It's redundant.
  • Name the file the same name as the report name used above.
  • Don't include a date range in the query. - For reports showing date fields, don't include a date range in the query. Allow Fishbowl to apply the date range using its controls.
  • Make the report hyperlink compatible. - Make the report hyperlink compatible if you are displaying fields which can be linked.

Hyperlink Values

You can link to records within Fishbowl from a report by using a hyperlink reference. The valid options are

  • PartNum
  • ProductNum
  • SONum
  • PONum
  • WONum
  • MONum
  • TONum
  • RMANum
  • CustomerName
  • VendorName
  • Report

Fishbowl Parameters

  • To access a report's parameters in iReport, go Report Inspector | Parameters. Using the dialog that appears you can create new parameters, modify existing parameters, and delete parameters.
  • All Parameters are Optional. REPORTDESCRIPTION Parameter will be the most useful, so it is Highly Recommended.
  • Parameter Types
    • Special Parameters - Are used to tell Fishbowl to do something Special with the Report.
    • Standard Parameters - Are used to get Information from the User/Fishbowl into the Report. Used change display of report or added to the Query.
    • Custom Parameters - Are just like Standard Parameters except a specific Naming/Type Convention is used to help the User enter the Correct Type of Information into the Report.
  • Parameter Fields
    • Parameter Name - The name of the Parameter. Some specific names will produce different Results. A list of Special/Custom Parameters follows this section. Use Camelback Convention for a better display in Fishbowl.
    • Titling - Some Parameters have the option of being Titled. This means adding on to the name of a Custom Parameter. The title can be left blank. The title will help to tell the difference if you use more than one of that type of Custom Parameter. The Title is what will display when Fishbowl ask the user to enter information. EXAMPLE: parameter Name: partNumBOMPart will ask the user for a part number but will title it as "BOM Part" instead of the standard "Part Number"
    • Parameter Class Type - The Special and Custom Parameters depend on the Class Type you choose. The Parameter Default Expression also depends on the Class Type. java.lang.String is the default and mostly used.
    • For Prompting - All parameters (Except Special Parameters) are displayed to the user when the report is pulled. This field determines whether this parameter is Required or Optional. If all parameters for the Report are Optional then the report will not ask the user for anything and run the report using all defaults for Parameters. If there are some Required parameters (Is For Prompting checked true) then when the Report is run from the Report Module, Fishbowl will ask the user to enter those Parameters.
    • Parameter Description - This Field is used by a few Custom Parameters. It houses additional Information that the Parameters needs. cb, dateRangeDefault, and sort use this Field.
    • Default Value Expression
      This is the Default value for your Parameter. This is the Value that iReport uses when testing your Reports. It is also the Value that Fishbowl puts in the Parameter (uses it for Optional Parameters, it will not add the default if the Parameter is Required. It makes the User enter the Required Information.). There are 2 types of Default Values:
      • Parameter Class Type java.lang.String - This value is surrounded in Quotes. EXAMPLE: "This is a Default Value for a String".
        For many Custom Parameters, the best way for Optional Parameters is to follow this Template: [FileName] LIKE $P{Parameter} This is because an Optional Parameter will return a % to the report. EXAMPLE: part.num LIKE $P{partNum} This will allow the user to enter a Part Number or not one, and no part number is entered it will pull all parts.
      • Any other Parameter Class Type - This follows standard Java Syntax. EXAMPLE: For a Type java.util.Date with default to Today's Date: new Date(). For a Type java.lang.Integer: new Integer(1).
  • Special Parameters
    These Parameters tell Fishbowl to treat this Report a certain way. The User using Fishbowl will never see these parameters, yet they will see the effects of them.
Parameter Name Class Type Default Value About
module java.lang.Object Not Used Used to pull Information from Fishbowl. Common uses are: Company Logo and Tracking Information.
path java.lang.String Not Used Is populated with the Current Path of the Report. This is needed for any Sub-Reports that the Report uses. The Sub-Reports Require the full path to the Sub-Report, this helps to complete that task.
currentUser java.lang.Integer Not Used Used to automatically populate the user ID for the person running the report.
  • Custom Parameters
    These Parameters will Display additional Information to help the User to input the Correct Desired Information.
Parameter Name Class Type Default Value Description About
accountID[Title] java.lang.String {Default Account ID} Not Used Provides a Search Option for Accounts.
{Boolean Name} java.lang.Boolean {new Boolean(true) or new Boolean(false)} Not Used Displays a simple Check Box with the Parameter Name.
carrier java.lang.String {Default Carrier name} Not Used Displays a list of all Carriers in the system. Returns the Carrier Name.
cb[Title] java.lang.String {Default Value Return} {Comma separated choices like this: "Value Return 1, Value Show 1, Value Return 2, Value Show 2".} Allows a list of Items to be Displayed. First Value in list is Returned to Report, the Second Value is Displayed in the Combo Box. This allows a Readable Value to be Displayed while a more useful value is passed to the report.
ck[Title] java.lang.String {Default Value Return} {Comma separated choices like this: "Value Return 1, Value Return 2".} Allows a Check Box to be displayed and Return of String of One of Two Values.
customerID[Title] java.lang.String {Default Customer ID} Not Used Provides a Search Option for Customers.
customerGroupID[Title] java.lang.String {Default Customer Group ID} Not Used Provides a Search Option for Customer Groups. Caution! This parameter works differently due to security restrictions. Fishbowl will return a list of Valid Customer Group IDs instead of a '%' if no Customer Group is selected. Example for WHERE Clause: (accountgroup.id IN ($P!{customerGroupID}))
{Date Name} java.util.Date {Default Date Value} Not Used Displays Room to enter a Date. Also provides a Button to a Calendar Display.
dateRange1[Title] java.util.Date {Default Value for From Date} Not Used Populates 2 Parameters together to provide a Date Range. Gives a Combo Box of common Date choices - Today, This Week, Last Year, etc. Use the same [Title] for dateRange2.
dateRange2[Title] java.util.Date {Default Value for To Date} Not Used Does nothing by itself. dateRange1[Title] populates this Parameter.
{Double Name} java.lang.Double {Default Double Value} Not Used Display a standard Form Box to add a Double (Number with Decimals). Checks to makes sure Input is Valid.
{Integer Name} java.lang.Integer {Default Integer Value} Not Used Display a standard Form Box to add an Integer (Number without Decimals). Check to make sure Input is Valid.
kitNum[Title] java.lang.String {Default Product Number} Not Used Provides a search option for kit numbers.
locationGroupID[Title] java.lang.String {Default Location Group ID} Not Used Provides a Search Option for Location Groups. Caution! This parameter works differently due to security restrictions. Fishbowl will return a list of Valid Location Group IDs instead of a '%' if no Location Group is selected. Example for WHERE Clause: (locationgroup.id IN ($P!{locationGroupID}))
locationID[Title] java.lang.String {Default Location ID} Not Used Provides a Search Option for Locations
moNum[Title] java.lang.String {Default MO Number} Not Used Provides a search option for MO numbers.
partNum[Title] java.lang.String {Default Part Number} Not Used Provides a Search Option for Part Numbers
paymentMethod[Title] java.lang.String {Default Payment Method ID} Not Used Provides a Search Option for Payment Methods.
pickNum[Title] java.lang.String {Default Pick Number} Not Used Provides a search option for pick numbers.
poNum[Title] java.lang.String {Default PO Number} Not Used Provides a Search Option for PO Numbers.
productNum[Title] java.lang.String {Default Product Number} Not Used Provides a Search Option for Product Numbers.
productTree1[Title] java.lang.String {Default Product Tree Node ID} Not Used Provides a Product Tree that users can select a node to filter by. Returns a list of the ID of the selected node, plus the ID of its children categories.
productTree2[Title] java.lang.String Not Used Not Used Does nothing by itself. When coupled with the productTree1 parameter, it will allow users to view products that are not in the product tree. It returns either % or the selected node ID. Example for WHERE clause: AND ((COALESCE(producttreeid,0) IN ($P!{productTree1})) OR ((COALESCE(producttreeid,0) LIKE $P{productTree2})))
qbClassID[Title] java.lang.String {Default QuickBooks Class ID} Not Used Provides a Search Option for Quick Book Classes.
receiptID[Title] java.lang.String {Default Receipt ID} Not Used Provides a Search Option of r a Receipt. Displays the order number to the user, but passes the ID to the report.
rmaNum[Title] java.lang.String {Default RMA} Not Used Provides a Search Option for RMAs.
salesPerson[Title] java.lang.String {Default Sales Person Name} Not Used Provides a Drop Down of Sales Persons
shipID[Title] java.lang.String {Default Ship ID} Not Used Will Display the SO/PO Number with the Date and give the User a Search for a Ship. Passes the Ship ID to the Report.
soNum[Title] java.lang.String {Default SO Number} Not Used Provides a Search Option for SO Numbers.
sort[Title] java.lang.String {Default Sort Values. Comma separated.} {Comma separated choices for sorting like this: "SQL Name 1, Show Name 1, SQL Name 2, Show Name 2".} Allows a list of items to be displayed in a combo box. Additional sort boxes can be added from the parameter dialog box. The first value is added to a list to return, while the second value is displayed in the combo box. This allows a readable value to be displayed while the SQL value is passed to the report.
{String Name} java.lang.String {Default String Value} Not Used Display a standard Form Box to add a String.
toNum[Title] java.lang.String {Default TO Number} Not Used Provides a Search Option for TO Numbers.
vendorID[Title] java.lang.String {Default Vendor ID} Not Used Provides a Search Option for Vendors.
woNum[Title] java.lang.String {Default WO Number} Not Used Provides a Search Option for WO Numbers.
colName java.lang.boolean {Default true or false} Not Used Adds a table column to the column selector tab of the reports dialog.

iReport is sometimes mistakenly referred to as iReports