kinny Posted July 10, 2007 Share Posted July 10, 2007 Hello, I'm a new user to iReport/JasperReports and Java programming. I have a query name EPL which contains either "FF" or "FE" and it's assigned to $F{EPL}. What I want to do is: if $F{EPL} == "FF" then draw the box. how would I do that? I see there is a "Print when Expression:" but how do I write the code? the following gives me an error:new Boolean($F{EPL}.equals("FF")) Many thanks! Link to comment Share on other sites More sharing options...
codyjasperForge Posted July 10, 2007 Share Posted July 10, 2007 Please post your error...---> If new Boolean($F{EPL}.equals("FF")) does not work. Try using new Boolean($F{EPL}.toString()).equals("FF") This changes whatever value being returned into it's string equivalent, the checks for comparison. HTH... Link to comment Share on other sites More sharing options...
kinny Posted July 10, 2007 Author Share Posted July 10, 2007 actually, it works! Thanks! i'm just wondering, what kind of java language does iReports use? How can't seem to write any if statements and use multiple lines...: if ($V{checkEPL}) {$V{starttime} = $F{starttime}.toString();$V{endtime} = $F{endtime}.toString();} Thanks! Link to comment Share on other sites More sharing options...
codyjasperForge Posted July 10, 2007 Share Posted July 10, 2007 iReport uses java coding language, however, if you are writing code that actually does more that 2-5 lines of functionality, then I would recommend that you use a scriptlet to do so. There are limits to what type of statments you may write inside of your 'textfield/group/print when' expressions. Look at the samples to get an idea of what all you can/can't do. Also, make sure that you have all of the necessary .jar files in the ireport 'lib' directory, and the latest JDK (1.5) to get the most out of your code.Hope this helps. For your statement:if ($V{checkEPL}) {$V{starttime} = $F{starttime}.toString();$V{endtime} = $F{endtime}.toString();} Try this: ($V{checkEPL} == "true") ? ($V{starttime} = $F{starttime.toString()): $V{starttime} = Whatever value you want when 'checkEPL' is false ($V{checkEPL} == "true") ? ($V{endtime} = $F{endtime.toString()): $V{endtime} = Whatever value you want when its false Do this then let me know what happens... Post edited by: codyjasperForge, at: 2007/07/10 15:36Post edited by: codyjasperForge, at: 2007/07/10 18:24 Link to comment Share on other sites More sharing options...
kinny Posted July 11, 2007 Author Share Posted July 11, 2007 yeah, what i'm trying to do is the following: Description: "Start Time": stored in the database as dd/mm/yy hh:mm AM/PM "Stop Time": stored in the db as dd/mm/yy hh:mm AM/PM "Duration": the time elapsed from start to stop time. - Not stored in the database. I guess this is where I need to use Scriptlet to calculate the duration. "Location": stored in the database as (ie:123 Avenue Road) "EPL": check to see if it's "FF" or "FE" <Table Header>Start Time | Stop Time | Duration | Location |EPL</Table Header> so basically in the table data, I would like to check if the EPL is FF or FE. If that is true, create a row and add the corresponding fields along with the calculated Duration (elapsed time). ie:<Table Data>10/07/07 11:01 PM | 10/07/07 11:11 PM| 10 min | 123 Avenue Road | FF </Table Data> thank you very much for the help codyjasperForge!:) Link to comment Share on other sites More sharing options...
kinny Posted July 11, 2007 Author Share Posted July 11, 2007 hmm, i seem to be getting an error. i simply activated the Scriptlet (with no code) and ran it. Compiling scriptlet source file... C:Documents and SettingsKinnyDesktoptestScriptlet.javaError compiling the Scriptlet Java source.net.sf.jasperreports.engine.JRException:ÂErrorÂcompilingÂreportÂjavaÂsourceÂfilesÂ:ÂC:DocumentsÂandÂSettingsKinnyDesktoptestScriptlet.java ÂÂÂÂatÂnet.sf.jasperreports.engine.design.JRJdk13Compiler.compileClasses(JRJdk13Compiler.java:119) ÂÂÂÂatÂnet.sf.jasperreports.engine.design.JRAbstractMultiClassCompiler.compileClass(JRAbstractMultiClassCompiler.java:45) ÂÂÂÂatÂit.businesslogic.ireport.IReportCompiler.run(IReportCompiler.java:357) ÂÂÂÂatÂjava.lang.Thread.run(UnknownÂSource) CausedÂby:Âjava.lang.ClassNotFoundException:Âcom.sun.tools.javac.Main ÂÂÂÂatÂjava.net.URLClassLoader$1.run(UnknownÂSource) ÂÂÂÂatÂjava.security.AccessController.doPrivileged(NativeÂMethod) ÂÂÂÂatÂjava.net.URLClassLoader.findClass(UnknownÂSource) ÂÂÂÂatÂjava.lang.ClassLoader.loadClass(UnknownÂSource) ÂÂÂÂatÂsun.misc.Launcher$AppClassLoader.loadClass(UnknownÂSource) ÂÂÂÂatÂjava.lang.ClassLoader.loadClass(UnknownÂSource) ÂÂÂÂatÂjava.lang.ClassLoader.loadClassInternal(UnknownÂSource) ÂÂÂÂatÂjava.lang.Class.forName0(NativeÂMethod) ÂÂÂÂatÂjava.lang.Class.forName(UnknownÂSource) ÂÂÂÂatÂnet.sf.jasperreports.engine.util.JRClassLoader.loadClassForRealName(JRClassLoader.java:163) ÂÂÂÂatÂnet.sf.jasperreports.engine.design.JRJdk13Compiler.compileClasses(JRJdk13Compiler.java:81) ÂÂÂÂ...Â3Âmore Compilation running time: 110 Link to comment Share on other sites More sharing options...
codyjasperForge Posted July 11, 2007 Share Posted July 11, 2007 Remember that in java language, a newly compiled classname MUST match its filename. So say your filename is abc.java, Then the scriptlet class name must be: public class abc extends... Also, if you are using the internal scriptlet editor, make sure the scriptlet file is saved in the same directory as your .jrxml file(same dir as your report). Finally, there is an option under the 'Options' menu called 'Classpath'. Make sure that you have added the correct directories to it. (tools.jar, etc.) Link to comment Share on other sites More sharing options...
kinny Posted July 11, 2007 Author Share Posted July 11, 2007 hmm, i seem to be still having the same problem? I added the correct directories & .JAR files under my Classpath. The problem is:java.lang.ClassNotFoundException:C:Documents and SettingsKinmonDesktoptest.javaand under Element, it says: /jasperReport???? (from the Problems(1) tab). attached is the code.Code:import java.util.*;import net.sf.jasperreports.engine.*;public class test extends it.businesslogic.ireport.IReportScriptlet { public test() { long l1 = 10; long l2 = 20; long difference = l2 - l1; }}also, my iReport file is called: test.jrxml oh yeah, the error I get is: Compiling to file... C:Documents and SettingsKinmonDesktoptest.jasper -> C:Documents and SettingsKinmonDesktoptest.javanet.sf.jasperreports.engine.design.JRValidationFault@636a7e java.lang.ClassNotFoundException: C:Documents and SettingsKinmonDesktoptest.java Line: 20, Column: 29 JRXML Element: /jasperReport net.sf.jasperreports.engine.design.JRValidationException: Report design not valid : 1. java.lang.ClassNotFoundException: C:Documents and SettingsKinmonDesktoptest.java at net.sf.jasperreports.engine.design.JRAbstractCompiler.verifyDesign(JRAbstractCompiler.java:260) at net.sf.jasperreports.engine.design.JRAbstractCompiler.compileReport(JRAbstractCompiler.java:144) at it.businesslogic.ireport.IReportCompiler.run(IReportCompiler.java:586) at java.lang.Thread.run(Unknown Source) Compilation running time: 266 Thank you very much codyjasperForge. You've been very helpful! :)Post edited by: kinny, at: 2007/07/11 13:36 Link to comment Share on other sites More sharing options...
codyjasperForge Posted July 11, 2007 Share Posted July 11, 2007 One other possibility is to insert the fully qualified classname into the .jrxml source. Under <jasperReport> element there should be an option called 'ScriptletClass'= 1. Either remove it completely and save2. Enter the full classpath to the scriptlet class. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now