IReport
From Fishbowl Inventory
Contents |
iReport is a powerful and intuitive visual report builder/designer for JasperReports written in Java. 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.
Setting Up iReport
Installing iReport
The latest iReport can be downloaded here. Simply open the downloaded file and follow the steps to install iReport.
Setup the Classpath
- Open iReport and select the Tools menu then Options.
- Navigate to the iReport Menu, open the Classpath tab, and select the Add JAR button.
- 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.
Connect to a Database
- 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)
- Select "Database JDBC connection" from the menu and click next.
- Put in a name for the connection (ie: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
Username: gone
Password: fishing - Click the Test button (you may be asked to re-enter the fishing password) to ensure your database is setup. Once you receive the Connection Test Successful choose ok and click save back on the JDBC Connection screen.
Configuring Database Service
iReport comes with a database service that can be used to view tables and test queries. The following steps are to setup this service.
NOTE: The database service is not required to setup or create a report. It is simply an option instead of using an additional database utility.
- On the iReport home page choose the Windows | Services option from the Main Toolbar.
- Expand the Databases list and right click on Drivers then select New Driver.
- Add the Fishbowl\lib\firebirdsql-full-2.1.6.jar file. All information should populate automatically on the New JDBC Driver window. Choose Ok.
- Right click on Databases and select New Connection.
- Select the Firebird driver from the name field then enter the same information as above. If you wish to use this connection to update information in the database please enter the sysdba user credentials.
- Click the ok button. It will 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 2009 uses version 2.0.5
- Fishbowl 2010 uses version 3.6.1
- Fishbowl 2010.2 uses version 3.7.0
- Fishbowl 2010.3 uses version 3.7.1
- Fishbowl 2010.4 uses version 3.7.2
- Fishbowl 2010.5 uses version 3.7.2
- Fishbowl 2010.6 uses version 3.7.2
- Fishbowl 2011.4 uses version 3.7.5
- Fishbowl 2011.5 uses version 3.7.6
- Fishbowl 2011.7 uses version 4.0.2
- Fishbowl 2012.2 uses version 4.1.2
- Fishbowl 2012.3 uses version 4.5.0
- Fishbowl 2012.4 uses version 4.5.0
- Fishbowl 2012.6 uses version 4.5.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.
- Prior to Fishbowl 2011, when you add or modify reports in the reports directory, then you must refresh the reports or the changes won't be available in Fishbowl. Open the Report Module. Go to the menu Tools | Module Options.... Run Refresh. Additionally, in order to see the changes all the clients need to be logged out and logged back in. This is also the way to change or undo the effects of Fishbowl parameters. Change the report, compile it and refresh the reports. Once the clients log back in they will be able to see the change.
- If there are parse errors, then the server log should be checked. Misconfigured 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.
- Auto Parameters - Are added (unless told not to) to the Report. These help with common features.
- 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).
- Parameter Class Type java.lang.String - This value is surrounded in Quotes. EXAMPLE:: "This is a Default Value for a String".
- 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 dateRangeNone java.util.Date Not Used Turns off Auto Date Range 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. sortNone java.lang.String Not Used Turns off Auto Sorting.
- Auto Parameters
These Parameters do not have to be added to the Report. They are added automatically.- Auto Date Range - Any Date Fields in your Query will be added to a Parameter. You can choose one of these fields and a Range to Filter your Report by these Values. See dateRangeDefault for how to Set the Default Values for this Parameter. If any dateRange1 Parameter is added or the dateRangeNone Parameter is added then the Auto Date Range will not show.
- Auto Sorting- Sort by the Fields in your Query. This will put all Fields from the Query into a Combo Box to be Sorted by. If any sort Parameter is added or the sortNone Parameter added then this Parameter will not show.
- 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. dateRangeDefault java.lang.String {Default Field Name} {Default Range Name} Populates an Auto Date Range with a Specific Field and Specific Range to Default to. 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. 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 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. pickID[Title] java.lang.String {Default Pick ID} Not Used Will Display the SO/PO Number with the Date and give the User a Search for a Pick. Passes the Pick ID to the Report. 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 QuickBook 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 RMA's. 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