@ baggypants - thanks for the link, very helpful @ giulio - list component is great. means I dont have to do a sub-report for minor reasons anymore, brilliant!!!
Are you using a hostname or IP address? if using a hostname check to see if you can resolve the name to an IP using nslookup or digg. otherwise try using the actual dbhost IP address. If it is a remote host you could have any number of issues like firewalls etc so check if you can connect to the db from your local machine e.g. from the command line run 'telnet [dbhostname or IP] [dbport]'. You should get something like this: Trying 127.0.0.1... Connected to localhost. Escape character is '^]' That would indicate network access is available.
is this a report you developed yourself? check the fields in the report are large enough to hold the data (height & length) - maybe set Stretch with overflow property on the field? to test try static text and see if you get the same result or try a sample report from the JasperReports project.
so your file locations should then be in your classpath in which case just remove $P{BaseDir} so the expression class should be string and value="mysubreport.jasper" if you dont specify the location jasper will look in the same location as the parent report and if not found it will then search your class path.
try a CASE statement in the order by clause of your query - this is dependant on the database and version of SQL. just google 'SQL CASE statement' for examples
your statement looked correct to me so i checked with the java guru in our office .... he agrees it is correct so it's most likely that the value of $V{SUM_NET_ORDER_BY_MO_GRP7} is not actually zero. Can also try: ($V{SUM_NET_ORDER_BY_MO_GRP7}.intValue() > 0 ? ($F{NET_ORDER_N_7}/ $V{SUM_NET_ORDER_BY_MO_GRP7}) : " " )
there are some samples under the jasperreports project: http://jasperforge.org/website/jasperreportswebsite/trunk/samples.html?group_id=252 re casting - an int is not the same as an Integer and you have to ensure the data types from the database matches the java data types (or Expression Class property) you set on the fields in the report. If you get an int from the database but try to insert the data into an Integer type field you will get a class cast exception.
Try running the query directly against the database (independantly of iReport) - you should be able to do this with most SQL query tools. Hopefully this way you will get a diffferent error message that will pinpoint the issue.