Friday, October 03, 2014
BIRT: Fix for Preview Tab After Updating to IE11
I've come across this issue before, but never had a really good fix until now. It seems that Internet Explorer 11 has all sorts of incompatibilities it introduced, and one of which is with Eclipse. I first encountered it when trying to Preview report designs from withing the Eclipse BIRT Report Designer. It just hangs, it never runs the report.
The fix to get preview working again in BIRT is as follows:
Change the following Windows Registry Keys
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main\FeaturControl\FEATURE_BROWSER_EMULATION
jawaw.exe=9000 change to 9999
eclipse.exe=9000 change to 9999
This fixed the Preview issue. Alternatively, you can change to use an External Browser in Window/Preferences/Report Design/Preview. But this will only work if you go to the Run/View in Web Viewer option.
Friday, August 22, 2014
Gaming: NVidia Shield Portable
NVidia just recently released their new gaming portable, the NVidia Tablet. I just picked one up and will give my thoughts on it separately. This article is about it predecessor, the NVidia Shield, recently renamed the NVidia Shield Portable.
Let me first go on to say, after a full year of using this device, I absolutely LOVE, LOVE, LOVE this device. It has become a constant companion for me wherever I go. Seriously. I do a lot of business travel these days, and I bring the NVidia Shield Portable with me more than I do my laptop. When I am around the house, I use the Shield more than I do any of my gaming consoles. I play it from bed, I play it when sitting on the couch. When I travel, the HDMI output goes right into the hotels TV, and if they have something stupid blocking it to try to force hotel content on you, I use my little Brookstone pico projector.
So what makes this device so useful? I could go on about ram, storage, Tegra processors, blah blah blah. This is covered more in depth by the many gaming and tech sites out there. I don't need to cover that, its a dead horse at this point. What makes this so useful to me is games. In particular, emulators. I have been waiting for a device like this since the late 90's when the first emulators for NES and SNES hit the scene, when Nesticle and Genecyst first came out and made light year leaps and bounds over the slow and buggy emulators at the time and made console gaming on a PC a reality, I have been waiting for the day when it would hit a handheld form and have every retro system I love in one package. The PSP did a damned good job of this, but it required a hacked PSP. While nowadays it's childs play to hack the PSP, the Shield does everything I want out of the box and more.
Emulates every system from the 2600 - PSOne full speed? Check. N64 most games at full speed, including Super Smash Bros, check. Netflix? Check. XBMC? Check. Mame arcade emulator? Check. Touch screen for supporting all games available for the Android? Check. A set of exclusives that take advantage of the awesome power of the Tegra processor, including support for the controller built into it? Check. Support for external controllers, through both bluetooth and USB (this includes the two bluetooth controllers that go with the Gamestick?)? Check. Ability to emulate a PC via PC emulators, so I can use a bluetooth keyboard and mouse and play old PC games? Check. All the other Android capabilities, such as web browser, email, and anything else in the App Store?
The next thing is the form factor. A lot of people gripe about the clamshell design. For me, it works surprisingly well. Because it is portable and the screen folds out, I can play this in bed, or close the screen and hook up the HDMI and not have the Shield in the way.
I only have one gripe about the device. 1 Single gripe. And that is the cross on the controller. For everything else that is so perfect about this device, that cross tends to "slide", making control with the cross a huge pain. Sometimes games will register an "up" instead of a "left" push because the cheap plastic on it has shifted to the top left. For most games, this is not a problem. But with certain precision games on the NES and SNES where timing of certain movements is key, it tends to flake, leaving a lot of reloaded save states. I hate having to use save states, but it becomes a necessity when you know that darn cross is going to get you killed. If I am using an XBox wires controller or the Gamesticks bluetooth controller, this isn't a problem. But I shouldn't have to rely on an external controller for precision control.
Overall, this NVidia Shield Portable is, without a doubt, my favorite gaming device of all time. It has replaced my modded Wii and PSP as my goto gaming device for emulation. When I'm stuck in some crappy hotel, and I don't want to game, I can fire up Netflix and watch the new season of the Killing or House of Cards, or fire up XBMC and watch that last episode of Bobs Burgers that is sitting on my DVR at home and I can't get to. While I am excited to try out the NVidia Shield Tablet due to it's increased speed, I don't know that it will be replacing my Shield Portable simply because a tablet form factor isn't more convenient for me. When I spend some time with it I will write up a review and let you know.
Thursday, September 05, 2013
First Tutorial Video Release: BIRT Report Examples View
We started releasing a series of tutorial videos on YouTube. The first one, starring yours truly, is up right now. It covers a little known and under utilized area of the BIRT Designer containing a whole set of example reports. Check it out.
Thursday, August 08, 2013
BIRT: Using JSON
This topic has come up quite a bit. Using JSON in BIRT Reports. This comes up for just about everything, from using as a Data Source to serializing large amounts of parameters for use in a report design. Seriously, lots of stuff.
Since the Rhino engine has not been updated to a version passed 1.7R4, there is no access to the nice Rhino JSON methods. So, we have have a few options. Since Rhino can use anything in the Java JVM, we can use any 3rd party JSON parser out there. My preference is Google GSON library. The caveat is that you must build the object structure beforehand in Java, and then use the GSON to parse a string into the object representation.
There are other options as well, such as these:
http://www.birt-exchange.org/devshare/_/designing-birt-reports/1053-scripted-data-source-using-json
I ran across the old school method of using an eval() statement to do the same thing. While not as safe, this is a much simpler, quicker method, and will suffice in most cases. And example can be found here: http://www.birt-exchange.org/devshare/_/designing-birt-reports/birt-json-scripted-data-set-and-parameter-parsing-r1484
Update: Kristopher Clark, whom is a very talented member of the BIRT community, posted something similar. In his example, he is using Apache Commons to stream in a JSON file and use as a scripted data source. This showcases BIRT's ability to leverage anything within the Java Classpath in a report execution.
Since the Rhino engine has not been updated to a version passed 1.7R4, there is no access to the nice Rhino JSON methods. So, we have have a few options. Since Rhino can use anything in the Java JVM, we can use any 3rd party JSON parser out there. My preference is Google GSON library. The caveat is that you must build the object structure beforehand in Java, and then use the GSON to parse a string into the object representation.
There are other options as well, such as these:
http://www.birt-exchange.org/devshare/_/designing-birt-reports/1053-scripted-data-source-using-json
I ran across the old school method of using an eval() statement to do the same thing. While not as safe, this is a much simpler, quicker method, and will suffice in most cases. And example can be found here: http://www.birt-exchange.org/devshare/_/designing-birt-reports/birt-json-scripted-data-set-and-parameter-parsing-r1484
Update: Kristopher Clark, whom is a very talented member of the BIRT community, posted something similar. In his example, he is using Apache Commons to stream in a JSON file and use as a scripted data source. This showcases BIRT's ability to leverage anything within the Java Classpath in a report execution.
BIRT: BIRT DaVinci Plugin
Recently, I had the opportunity to catch up with the author of BIRT Chart DaVinci, Keith Howard, at a BIRT get together in the Bay Area. I had previously blogged about Chart DaVinci, so it's no secret that I like it. But there was always one little issue for me, and that was the manual application of the scripts. So, after chatting with Keith, we came up with a solution. Why not build a plugin for BIRT that displays all the styles in Chart DaVinci in a gallery that the user can select and apply to a report, and the plug-in does all the work. And that is exactly what I built. So, without further ado, the BIRT Chart DaVinci Plugin is available over at the BIRT Exchange. Follow the instructions and start applying some slick, pre-done styles to your BIRT charts.
Wednesday, July 17, 2013
BIRT: Report to get available Emitter ID's
Below is an example report that demonstrates how to get a list of available Emitters and their ID's and Formats from the Report Engine within a BIRT Report. Good thing the entire Report Engine API and Design Engine API are available within a report.
<?xml version="1.0" encoding="UTF-8"?>
<report xmlns="http://www.eclipse.org/birt/2005/design" version="3.2.23" id="1">
<property name="createdBy">Eclipse BIRT Designer Version 4.2.1.v201209101448 Build <4.2.1.v20120912-1721></property>
<property name="units">in</property>
<property name="iconFile">/templates/blank_report.gif</property>
<property name="bidiLayoutOrientation">ltr</property>
<property name="imageDPI">96</property>
<styles>
<style name="report" id="4">
<property name="fontFamily">sans-serif</property>
<property name="fontSize">10pt</property>
</style>
<style name="crosstab-cell" id="5">
<property name="borderBottomColor">#CCCCCC</property>
<property name="borderBottomStyle">solid</property>
<property name="borderBottomWidth">1pt</property>
<property name="borderLeftColor">#CCCCCC</property>
<property name="borderLeftStyle">solid</property>
<property name="borderLeftWidth">1pt</property>
<property name="borderRightColor">#CCCCCC</property>
<property name="borderRightStyle">solid</property>
<property name="borderRightWidth">1pt</property>
<property name="borderTopColor">#CCCCCC</property>
<property name="borderTopStyle">solid</property>
<property name="borderTopWidth">1pt</property>
</style>
<style name="crosstab" id="6">
<property name="borderBottomColor">#CCCCCC</property>
<property name="borderBottomStyle">solid</property>
<property name="borderBottomWidth">1pt</property>
<property name="borderLeftColor">#CCCCCC</property>
<property name="borderLeftStyle">solid</property>
<property name="borderLeftWidth">1pt</property>
<property name="borderRightColor">#CCCCCC</property>
<property name="borderRightStyle">solid</property>
<property name="borderRightWidth">1pt</property>
<property name="borderTopColor">#CCCCCC</property>
<property name="borderTopStyle">solid</property>
<property name="borderTopWidth">1pt</property>
</style>
</styles>
<page-setup>
<simple-master-page name="Simple MasterPage" id="2">
<page-footer>
<text id="3">
<property name="contentType">html</property>
<text-property name="content"><![CDATA[<value-of>new Date()</value-of>]]></text-property>
</text>
</page-footer>
</simple-master-page>
</page-setup>
<body>
<text-data id="7">
<expression name="valueExpr">var x = 0;
var emitterInfo = reportContext.getReportRunnable().getReportEngine().getEmitterInfo();
var sb = new Packages.java.lang.StringBuilder();
for (x = 0; x < emitterInfo.length; x++)
{
var info = emitterInfo[x];
var id = info.getID();
var format = info.getFormat();
sb.append(id + " - " + format + "<br>\n");
}
sb.toString();</expression>
<property name="contentType">html</property>
</text-data>
</body>
</report>
Thursday, December 13, 2012
BIRT: Writing BIRT ODA's
New article on writing ODA's for BIRT has been published on IBM Developerworks. As an added bonus, learn about the BIRT Data Extraction Task. Two kinds of awesome in one place. Check it out.
http://www.ibm.com/developerworks/library/ba-birtextpoints/
http://www.ibm.com/developerworks/library/ba-birtextpoints/
Tuesday, September 18, 2012
BIRT: Emitters Tutorial Posted
Finally got around to writing some articles. I have one published for IBM DeveloperWorks about writing for the BIRT Emitter Framework. Check it out.
http://www.ibm.com/developerworks/library/ba-birt-emitter/index.html
http://www.ibm.com/developerworks/library/ba-birt-emitter/index.html
Sunday, June 17, 2012
BIRT: The Pipeline
So many different things in the works at the moment. I have several proposals out for articles to be published relating to BIRT. It seems I can't stray too far from BIRT, which is great because now I have the freedom to pick and choose what I do with it. I'm also working with a lot of GWT stuff ramping up for a major development effort with my new job. This is great because I am getting a chance to catch up on a lot of newer technologies that have been introduced into GWT over the past few years that I have fallen behind on, such as the RequestFactory framework. I will also starting writing a little more. I need to keep track of all these new findings, and I enjoyed sharing that work with the community when I was more active in writing. I'll keep things posted here.
Thursday, May 03, 2012
GWT: Getting Maven Generated GWT Project working within Eclipse
Recent events have thrust me back into the world of GWT
Development. So much has changed. RequestFactories, EventBuses, all sorts of
improvements. I haven’t had to dig this deep in a while. But these are great
improvements, and they take GWT that extra mile.
The source of my recent aggravations hasn’t been with GWT.
It has been with Maven. Maven is a wonderful build tool. There is something
really nice about being able to say “Hey, Maven, I want to build this project,
and it has these dependencies”, and having Maven go out and fetch everything,
set up a class path, and build. Awesome. Or at least in theory. One of my
biggest headaches has been building Eclipse Plugins, but that will wait until
another blog post.
This one is about GWT, Eclipse, and Maven. Now my Eclipse
setup is pretty straight forward. I use the BIRT All-In-One 3.7.2 distribution,
with the m2eclipse plugin installed separately (because the BIRT distribution
has an incomplete m2eclipse plugin installed), the GWT Designer and Window
Builder Plugins, and Googles Eclipse GWT Plugin (well, technically GWT Designer
and the GWT Eclipse Plugin are BOTH Googles now….).
“So why so glum, chum?” I ask myself. Well, because things
don’t quite work as advertised out of the box. GWT Designer and the GWT Eclipse
Plugin provide AWESOME support for creating new projects and making things just
work. Maven, no so much. What doesn’t work? Well, besides the thousands of red
‘X’ everywhere in Eclipse, GWT Designer doesn’t work, and the Google Eclipse
Plugin run doesn’t quite work. At least with GWT 2.4, and the 3.7.2 Indigo
setup of Eclipse. So, let me outline how I fixed these annoying issues with a
step by step on creating a new GWT project with Maven and making the necessary
fixes in Eclipse to make things work. I won’t cover getting RequestFactory
working, I’ll leave that for the next post.
4.
On the next screen, for the archetype, enter
“gwt-maven-plugin”. (Note: m2eclipse does something really stupid in my
environment (or maybe all environments in general, I havent investigated it
further) where it will refuse to create more than one project of the same
archtype in my workspace. In order to resolve this, I need to go and completely
delete my .m2 respository, located at /.m2, and let it re-index). If you haven’t indexed your Maven repository
before, it might take a while, so be patient and let it pop up in the grid.
6.
Click Finish.
OK, cool, now we have a GWT project in Eclipse. In fact, you
can run it if you right-mouse click on the project, Run/Maven Build…, and set
the goal to gwt:run.
And it won’t run in Eclipse, which means I can’t debug it. But
it will run just fine in Maven. But I don’t want it to run in Maven, I want it
to run in Eclipse. Why do I want it to run in Eclipse? Because I want to use
all of those really nifty debug capabilities. Otherwise, why bother using GWT,
I could just use some other Javascript framework, like Jquery, or Dojo. So, how
do I get to the point where I can run and debug?
First things last. Lets get rid of all of those ugly errors.
One of the biggest causes of the red ‘X’ is the reliance on the generated
source files that Maven builds for the Internationalization and the Asyncronous
interface. So I need to get these files there. The easiest way is to have Maven
generate the source files for me and copy them over.
This will create the source files under
/target/generated-sources/gwt//. Since most of
these errors are coming from missing client source, I just need to copy them
all over to the /src/main/java//client folder.
Now, I need to tell Maven not to generate these files,
otherwise I will get an error telling me there are duplicate classes. Edit the
POM, and remove the generateAsync and i18n goals. That section should look like
the following when done.
<groupId>org.codehaus.mojogroupId>
<artifactId>gwt-maven-pluginartifactId>
<version>2.4.0version>
<executions>
<execution>
<goals>
<goal>compilegoal>
<goal>testgoal>
goals>
execution>
executions>
But there are still some Red X. Why? The field verifier class is not being found. To fix this, I just went to Project/Clean. Strange, but that fixed it.
So, I still have a red X on my project, but I will ignore
that since this is some Maven specific junk.
So, I want to try to run my project in Eclipse now to see what happens.
So, I want to try to run my project in Eclipse now to see what happens.
This will generate a Launch file. Refresh the project and it
will appear. But there is a problem. If I try to launch it, I will get the
following error.
This will resolve itself if I go to Run Configuration, and
edit the Run configuration for the new project, and go to any of the other tabs. If it doesn't, find the DevMode class from the Search Dialog. But another problem manifests
itself at this point. No modules appear under Available Modules.
You’re killing me… If I try to run this, I just get the help
dialog for the GWT Dev Mode. But this is a simple fix also. All I need to do is
Close this dialog. Right-Mouse click on the project or hit Alt-Enter to bring
up the Projects Property Editor, and go under the Source section. Under the Source
section, select the Excluded item under Sample/src/main/resource, and hit the
Remove button.
And not only did this step fix the problem with the Launch
configuration, it also fixed another issue where files could not be opened with
the GWT Designer Window Builder editor.
I visited a lot of sites researching this issue, and that
last step was nowhere to be found, and was erroneously reported as being some
issue with Eclipse not finding the gwt.xml unless it was in the first source
directory it encounters. This may have been the case in previous version of
Eclipse, but in Indigo this solved my problem.
So there you go. If you followed these steps, you should
have a setup that is as close to the project that Maven generated and still be
able to run in Eclipse so you can use it’s debugging capabilities. This
definitly isn’t as nice as the New Project wizards, but hey, its Mavenized, and
it’s a GWT project. Or at least it’s a GWT-RPC based GWT project, and not a
RequestFactory one. But that’s another story…
Tuesday, April 10, 2012
BIRT: Dynamically Hiding/Showing Table Columns in a Report Design
This question gets asked quite often in the BIRT Exchange Forums. How can I dynamically show/hide columns in a table based on user input/some object property.
The first inclination is to try to dynamically build the table on the fly. This is an often time consuming and cumbersome way of approaching the problem, and will more often than not cause unforeseen errors. The easiest approach is to just have the table display normally, and hide the column using Visibility Expressions.
So for example, I have a table that displays Customer information. I want to give the user the ability to show/hide columns that they want displayed in their reports.
1. Select the table in the report

2. Select a column

3. In the Property Editor, select Visibility Expression.

4. Check the Hide Element option.
5. Enter an expression that will return True when the column should be hidden.

In my case, I have a function defined globally that will check for the existence of a keyed value in a global map. This map gets set in the reports beforeFactory event. Realistically, you would just test the report parameters value, but I am demonstrating this from objects instead of report parameters.
The example report is below. In it, if you check/uncheck a parameter, it will show or hide that field in the table.
The first inclination is to try to dynamically build the table on the fly. This is an often time consuming and cumbersome way of approaching the problem, and will more often than not cause unforeseen errors. The easiest approach is to just have the table display normally, and hide the column using Visibility Expressions.
So for example, I have a table that displays Customer information. I want to give the user the ability to show/hide columns that they want displayed in their reports.
1. Select the table in the report
2. Select a column
3. In the Property Editor, select Visibility Expression.
4. Check the Hide Element option.
5. Enter an expression that will return True when the column should be hidden.
In my case, I have a function defined globally that will check for the existence of a keyed value in a global map. This map gets set in the reports beforeFactory event. Realistically, you would just test the report parameters value, but I am demonstrating this from objects instead of report parameters.
The example report is below. In it, if you check/uncheck a parameter, it will show or hide that field in the table.
<?xml version="1.0" encoding="UTF-8"?>
<report xmlns="http://www.eclipse.org/birt/2005/design" version="3.2.22" id="1">
<property name="createdBy">Eclipse BIRT Designer Version 3.7.1.v20110905 Build <3.7.1.v20110905-1820></property>
<property name="units">in</property>
<method name="initialize"><![CDATA[//
//Predefined function to help check if a field is set to be hidden in the map
//
function checkField(fieldToCheck)
{
//make sure the global variable is not null
if (reportContext.getGlobalVariable("hideMap") != null)
{
//get the appropriate field. If this is set, then we know this is set and
//we can return true. Otherwise return false, meaning we want to show the field.
if (reportContext.getGlobalVariable("hideMap").get(fieldToCheck) != null)
{
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}
]]></method>
<method name="beforeFactory"><![CDATA[//initialize the global variable
reportContext.setGlobalVariable("hideMap", new Packages.java.util.HashMap());
//set the appropriate values in the global HashMap based on if it is set in the report parameter
if (params["ShowCustomerNumber"].value == false)
{
reportContext.getGlobalVariable("hideMap").put("CUSTOMERNUMBER", Boolean.TRUE);
}
if (params["ShowCustomerName"].value == false)
{
reportContext.getGlobalVariable("hideMap").put("CUSTOMERNAME", Boolean.TRUE);
}
if (params["ShowCONTACTLASTNAME"].value == false)
{
reportContext.getGlobalVariable("hideMap").put("CONTACTLASTNAME", Boolean.TRUE);
}
if (params["ShowCONTACTFIRSTNAME"].value == false)
{
reportContext.getGlobalVariable("hideMap").put("CONTACTFIRSTNAME", Boolean.TRUE);
}
if (params["ShowPHONE"].value == false)
{
reportContext.getGlobalVariable("hideMap").put("PHONE", Boolean.TRUE);
}
if (params["ShowADDRESSLINE1"].value == false)
{
reportContext.getGlobalVariable("hideMap").put("ADDRESSLINE1", Boolean.TRUE);
}
if (params["ShowCITY"].value == false)
{
reportContext.getGlobalVariable("hideMap").put("CITY", Boolean.TRUE);
}
if (params["ShowSTATE"].value == false)
{
reportContext.getGlobalVariable("hideMap").put("STATE", Boolean.TRUE);
}
if (params["ShowPOSTALCODE"].value == false)
{
reportContext.getGlobalVariable("hideMap").put("POSTALCODE", Boolean.TRUE);
}]]></method>
<property name="iconFile">/templates/blank_report.gif</property>
<property name="bidiLayoutOrientation">ltr</property>
<property name="imageDPI">96</property>
<parameters>
<scalar-parameter name="ShowCustomerNumber" id="91">
<text-property name="promptText">Uncheck to hide field CustomerNumber</text-property>
<property name="valueType">static</property>
<property name="dataType">boolean</property>
<property name="distinct">true</property>
<simple-property-list name="defaultValue">
<value type="constant">True</value>
</simple-property-list>
<list-property name="selectionList"/>
<property name="paramType">simple</property>
<property name="controlType">check-box</property>
<structure name="format"/>
</scalar-parameter>
<scalar-parameter name="ShowCustomerName" id="92">
<text-property name="promptText">Uncheck to hide field CustomerName</text-property>
<property name="valueType">static</property>
<property name="dataType">boolean</property>
<property name="distinct">true</property>
<simple-property-list name="defaultValue">
<value type="constant">True</value>
</simple-property-list>
<list-property name="selectionList"/>
<property name="paramType">simple</property>
<property name="controlType">check-box</property>
<structure name="format"/>
</scalar-parameter>
<scalar-parameter name="ShowCONTACTLASTNAME" id="93">
<text-property name="promptText">Uncheck to hide field CONTACTLASTNAME</text-property>
<property name="valueType">static</property>
<property name="dataType">boolean</property>
<property name="distinct">true</property>
<simple-property-list name="defaultValue">
<value type="constant">True</value>
</simple-property-list>
<list-property name="selectionList"/>
<property name="paramType">simple</property>
<property name="controlType">check-box</property>
<structure name="format"/>
</scalar-parameter>
<scalar-parameter name="ShowCONTACTFIRSTNAME" id="94">
<text-property name="promptText">Uncheck to hide field CONTACTFIRSTNAME</text-property>
<property name="valueType">static</property>
<property name="dataType">boolean</property>
<property name="distinct">true</property>
<simple-property-list name="defaultValue">
<value type="constant">True</value>
</simple-property-list>
<list-property name="selectionList"/>
<property name="paramType">simple</property>
<property name="controlType">check-box</property>
<structure name="format"/>
</scalar-parameter>
<scalar-parameter name="ShowPHONE" id="95">
<text-property name="promptText">Uncheck to hide field PHONE</text-property>
<property name="valueType">static</property>
<property name="dataType">boolean</property>
<property name="distinct">true</property>
<simple-property-list name="defaultValue">
<value type="constant">True</value>
</simple-property-list>
<list-property name="selectionList"/>
<property name="paramType">simple</property>
<property name="controlType">check-box</property>
<structure name="format"/>
</scalar-parameter>
<scalar-parameter name="ShowADDRESSLINE1" id="96">
<text-property name="promptText">Uncheck to hide field ADDRESSLINE1</text-property>
<property name="valueType">static</property>
<property name="dataType">boolean</property>
<property name="distinct">true</property>
<simple-property-list name="defaultValue">
<value type="constant">True</value>
</simple-property-list>
<list-property name="selectionList"/>
<property name="paramType">simple</property>
<property name="controlType">check-box</property>
<structure name="format"/>
</scalar-parameter>
<scalar-parameter name="ShowCITY" id="97">
<text-property name="promptText">Uncheck to hide field CITY</text-property>
<property name="valueType">static</property>
<property name="dataType">boolean</property>
<property name="distinct">true</property>
<simple-property-list name="defaultValue">
<value type="constant">True</value>
</simple-property-list>
<list-property name="selectionList"/>
<property name="paramType">simple</property>
<property name="controlType">check-box</property>
<structure name="format"/>
</scalar-parameter>
<scalar-parameter name="ShowSTATE" id="98">
<text-property name="promptText">Uncheck to hide field STATE</text-property>
<property name="valueType">static</property>
<property name="dataType">boolean</property>
<property name="distinct">true</property>
<simple-property-list name="defaultValue">
<value type="constant">True</value>
</simple-property-list>
<list-property name="selectionList"/>
<property name="paramType">simple</property>
<property name="controlType">check-box</property>
<structure name="format"/>
</scalar-parameter>
<scalar-parameter name="ShowPOSTALCODE" id="99">
<text-property name="promptText">Uncheck to hide field POSTALCODE</text-property>
<property name="valueType">static</property>
<property name="dataType">boolean</property>
<property name="distinct">true</property>
<simple-property-list name="defaultValue">
<value type="constant">True</value>
</simple-property-list>
<list-property name="selectionList"/>
<property name="paramType">simple</property>
<property name="controlType">check-box</property>
<structure name="format"/>
</scalar-parameter>
</parameters>
<data-sources>
<oda-data-source extensionID="org.eclipse.birt.report.data.oda.jdbc" name="Data Source" id="7">
<list-property name="privateDriverProperties">
<ex-property>
<name>contentBidiFormatStr</name>
<value>ILYNN</value>
</ex-property>
<ex-property>
<name>metadataBidiFormatStr</name>
<value>ILYNN</value>
</ex-property>
</list-property>
<property name="odaDriverClass">org.eclipse.birt.report.data.oda.sampledb.Driver</property>
<property name="odaURL">jdbc:classicmodels:sampledb</property>
<property name="odaUser">ClassicModels</property>
</oda-data-source>
</data-sources>
<data-sets>
<oda-data-set extensionID="org.eclipse.birt.report.data.oda.jdbc.JdbcSelectDataSet" name="setGetCustomers" id="8">
<list-property name="columnHints">
<structure>
<property name="columnName">CUSTOMERNUMBER</property>
<property name="analysis">measure</property>
<text-property name="displayName">CUSTOMERNUMBER</text-property>
<text-property name="heading">CUSTOMERNUMBER</text-property>
</structure>
<structure>
<property name="columnName">CUSTOMERNAME</property>
<property name="analysis">attribute</property>
<text-property name="displayName">CUSTOMERNAME</text-property>
<text-property name="heading">CUSTOMERNAME</text-property>
</structure>
<structure>
<property name="columnName">CONTACTLASTNAME</property>
<property name="analysis">attribute</property>
<text-property name="displayName">CONTACTLASTNAME</text-property>
<text-property name="heading">CONTACTLASTNAME</text-property>
</structure>
<structure>
<property name="columnName">CONTACTFIRSTNAME</property>
<property name="analysis">attribute</property>
<text-property name="displayName">CONTACTFIRSTNAME</text-property>
<text-property name="heading">CONTACTFIRSTNAME</text-property>
</structure>
<structure>
<property name="columnName">PHONE</property>
<property name="analysis">attribute</property>
<text-property name="displayName">PHONE</text-property>
<text-property name="heading">PHONE</text-property>
</structure>
<structure>
<property name="columnName">ADDRESSLINE1</property>
<property name="analysis">attribute</property>
<text-property name="displayName">ADDRESSLINE1</text-property>
<text-property name="heading">ADDRESSLINE1</text-property>
</structure>
<structure>
<property name="columnName">ADDRESSLINE2</property>
<property name="analysis">attribute</property>
<text-property name="displayName">ADDRESSLINE2</text-property>
<text-property name="heading">ADDRESSLINE2</text-property>
</structure>
<structure>
<property name="columnName">CITY</property>
<property name="analysis">attribute</property>
<text-property name="displayName">CITY</text-property>
<text-property name="heading">CITY</text-property>
</structure>
<structure>
<property name="columnName">STATE</property>
<property name="analysis">attribute</property>
<text-property name="displayName">STATE</text-property>
<text-property name="heading">STATE</text-property>
</structure>
<structure>
<property name="columnName">POSTALCODE</property>
<property name="analysis">attribute</property>
<text-property name="displayName">POSTALCODE</text-property>
<text-property name="heading">POSTALCODE</text-property>
</structure>
<structure>
<property name="columnName">COUNTRY</property>
<property name="analysis">attribute</property>
<text-property name="displayName">COUNTRY</text-property>
<text-property name="heading">COUNTRY</text-property>
</structure>
<structure>
<property name="columnName">SALESREPEMPLOYEENUMBER</property>
<property name="analysis">measure</property>
<text-property name="displayName">SALESREPEMPLOYEENUMBER</text-property>
<text-property name="heading">SALESREPEMPLOYEENUMBER</text-property>
</structure>
<structure>
<property name="columnName">CREDITLIMIT</property>
<property name="analysis">measure</property>
<text-property name="displayName">CREDITLIMIT</text-property>
<text-property name="heading">CREDITLIMIT</text-property>
</structure>
</list-property>
<structure name="cachedMetaData">
<list-property name="resultSet">
<structure>
<property name="position">1</property>
<property name="name">CUSTOMERNUMBER</property>
<property name="dataType">integer</property>
</structure>
<structure>
<property name="position">2</property>
<property name="name">CUSTOMERNAME</property>
<property name="dataType">string</property>
</structure>
<structure>
<property name="position">3</property>
<property name="name">CONTACTLASTNAME</property>
<property name="dataType">string</property>
</structure>
<structure>
<property name="position">4</property>
<property name="name">CONTACTFIRSTNAME</property>
<property name="dataType">string</property>
</structure>
<structure>
<property name="position">5</property>
<property name="name">PHONE</property>
<property name="dataType">string</property>
</structure>
<structure>
<property name="position">6</property>
<property name="name">ADDRESSLINE1</property>
<property name="dataType">string</property>
</structure>
<structure>
<property name="position">7</property>
<property name="name">ADDRESSLINE2</property>
<property name="dataType">string</property>
</structure>
<structure>
<property name="position">8</property>
<property name="name">CITY</property>
<property name="dataType">string</property>
</structure>
<structure>
<property name="position">9</property>
<property name="name">STATE</property>
<property name="dataType">string</property>
</structure>
<structure>
<property name="position">10</property>
<property name="name">POSTALCODE</property>
<property name="dataType">string</property>
</structure>
<structure>
<property name="position">11</property>
<property name="name">COUNTRY</property>
<property name="dataType">string</property>
</structure>
<structure>
<property name="position">12</property>
<property name="name">SALESREPEMPLOYEENUMBER</property>
<property name="dataType">integer</property>
</structure>
<structure>
<property name="position">13</property>
<property name="name">CREDITLIMIT</property>
<property name="dataType">float</property>
</structure>
</list-property>
</structure>
<property name="dataSource">Data Source</property>
<list-property name="resultSet">
<structure>
<property name="position">1</property>
<property name="name">CUSTOMERNUMBER</property>
<property name="nativeName">CUSTOMERNUMBER</property>
<property name="dataType">integer</property>
<property name="nativeDataType">4</property>
</structure>
<structure>
<property name="position">2</property>
<property name="name">CUSTOMERNAME</property>
<property name="nativeName">CUSTOMERNAME</property>
<property name="dataType">string</property>
<property name="nativeDataType">12</property>
</structure>
<structure>
<property name="position">3</property>
<property name="name">CONTACTLASTNAME</property>
<property name="nativeName">CONTACTLASTNAME</property>
<property name="dataType">string</property>
<property name="nativeDataType">12</property>
</structure>
<structure>
<property name="position">4</property>
<property name="name">CONTACTFIRSTNAME</property>
<property name="nativeName">CONTACTFIRSTNAME</property>
<property name="dataType">string</property>
<property name="nativeDataType">12</property>
</structure>
<structure>
<property name="position">5</property>
<property name="name">PHONE</property>
<property name="nativeName">PHONE</property>
<property name="dataType">string</property>
<property name="nativeDataType">12</property>
</structure>
<structure>
<property name="position">6</property>
<property name="name">ADDRESSLINE1</property>
<property name="nativeName">ADDRESSLINE1</property>
<property name="dataType">string</property>
<property name="nativeDataType">12</property>
</structure>
<structure>
<property name="position">7</property>
<property name="name">ADDRESSLINE2</property>
<property name="nativeName">ADDRESSLINE2</property>
<property name="dataType">string</property>
<property name="nativeDataType">12</property>
</structure>
<structure>
<property name="position">8</property>
<property name="name">CITY</property>
<property name="nativeName">CITY</property>
<property name="dataType">string</property>
<property name="nativeDataType">12</property>
</structure>
<structure>
<property name="position">9</property>
<property name="name">STATE</property>
<property name="nativeName">STATE</property>
<property name="dataType">string</property>
<property name="nativeDataType">12</property>
</structure>
<structure>
<property name="position">10</property>
<property name="name">POSTALCODE</property>
<property name="nativeName">POSTALCODE</property>
<property name="dataType">string</property>
<property name="nativeDataType">12</property>
</structure>
<structure>
<property name="position">11</property>
<property name="name">COUNTRY</property>
<property name="nativeName">COUNTRY</property>
<property name="dataType">string</property>
<property name="nativeDataType">12</property>
</structure>
<structure>
<property name="position">12</property>
<property name="name">SALESREPEMPLOYEENUMBER</property>
<property name="nativeName">SALESREPEMPLOYEENUMBER</property>
<property name="dataType">integer</property>
<property name="nativeDataType">4</property>
</structure>
<structure>
<property name="position">13</property>
<property name="name">CREDITLIMIT</property>
<property name="nativeName">CREDITLIMIT</property>
<property name="dataType">float</property>
<property name="nativeDataType">8</property>
</structure>
</list-property>
<xml-property name="queryText"><![CDATA[select *
from CLASSICMODELS.CUSTOMERS]]></xml-property>
<xml-property name="designerValues"><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
<model:DesignValues xmlns:design="http://www.eclipse.org/datatools/connectivity/oda/design" xmlns:model="http://www.eclipse.org/birt/report/model/adapter/odaModel">
<Version>2.0</Version>
<design:ResultSets derivedMetaData="true">
<design:resultSetDefinitions>
<design:resultSetColumns>
<design:resultColumnDefinitions>
<design:attributes>
<design:identifier>
<design:name>CUSTOMERNUMBER</design:name>
<design:position>1</design:position>
</design:identifier>
<design:nativeDataTypeCode>4</design:nativeDataTypeCode>
<design:precision>10</design:precision>
<design:scale>0</design:scale>
<design:nullability>Nullable</design:nullability>
<design:uiHints>
<design:displayName>CUSTOMERNUMBER</design:displayName>
</design:uiHints>
</design:attributes>
<design:usageHints>
<design:label>CUSTOMERNUMBER</design:label>
<design:formattingHints>
<design:displaySize>11</design:displaySize>
</design:formattingHints>
</design:usageHints>
</design:resultColumnDefinitions>
<design:resultColumnDefinitions>
<design:attributes>
<design:identifier>
<design:name>CUSTOMERNAME</design:name>
<design:position>2</design:position>
</design:identifier>
<design:nativeDataTypeCode>12</design:nativeDataTypeCode>
<design:precision>50</design:precision>
<design:scale>0</design:scale>
<design:nullability>Nullable</design:nullability>
<design:uiHints>
<design:displayName>CUSTOMERNAME</design:displayName>
</design:uiHints>
</design:attributes>
<design:usageHints>
<design:label>CUSTOMERNAME</design:label>
<design:formattingHints>
<design:displaySize>50</design:displaySize>
</design:formattingHints>
</design:usageHints>
</design:resultColumnDefinitions>
<design:resultColumnDefinitions>
<design:attributes>
<design:identifier>
<design:name>CONTACTLASTNAME</design:name>
<design:position>3</design:position>
</design:identifier>
<design:nativeDataTypeCode>12</design:nativeDataTypeCode>
<design:precision>50</design:precision>
<design:scale>0</design:scale>
<design:nullability>Nullable</design:nullability>
<design:uiHints>
<design:displayName>CONTACTLASTNAME</design:displayName>
</design:uiHints>
</design:attributes>
<design:usageHints>
<design:label>CONTACTLASTNAME</design:label>
<design:formattingHints>
<design:displaySize>50</design:displaySize>
</design:formattingHints>
</design:usageHints>
</design:resultColumnDefinitions>
<design:resultColumnDefinitions>
<design:attributes>
<design:identifier>
<design:name>CONTACTFIRSTNAME</design:name>
<design:position>4</design:position>
</design:identifier>
<design:nativeDataTypeCode>12</design:nativeDataTypeCode>
<design:precision>50</design:precision>
<design:scale>0</design:scale>
<design:nullability>Nullable</design:nullability>
<design:uiHints>
<design:displayName>CONTACTFIRSTNAME</design:displayName>
</design:uiHints>
</design:attributes>
<design:usageHints>
<design:label>CONTACTFIRSTNAME</design:label>
<design:formattingHints>
<design:displaySize>50</design:displaySize>
</design:formattingHints>
</design:usageHints>
</design:resultColumnDefinitions>
<design:resultColumnDefinitions>
<design:attributes>
<design:identifier>
<design:name>PHONE</design:name>
<design:position>5</design:position>
</design:identifier>
<design:nativeDataTypeCode>12</design:nativeDataTypeCode>
<design:precision>50</design:precision>
<design:scale>0</design:scale>
<design:nullability>Nullable</design:nullability>
<design:uiHints>
<design:displayName>PHONE</design:displayName>
</design:uiHints>
</design:attributes>
<design:usageHints>
<design:label>PHONE</design:label>
<design:formattingHints>
<design:displaySize>50</design:displaySize>
</design:formattingHints>
</design:usageHints>
</design:resultColumnDefinitions>
<design:resultColumnDefinitions>
<design:attributes>
<design:identifier>
<design:name>ADDRESSLINE1</design:name>
<design:position>6</design:position>
</design:identifier>
<design:nativeDataTypeCode>12</design:nativeDataTypeCode>
<design:precision>50</design:precision>
<design:scale>0</design:scale>
<design:nullability>Nullable</design:nullability>
<design:uiHints>
<design:displayName>ADDRESSLINE1</design:displayName>
</design:uiHints>
</design:attributes>
<design:usageHints>
<design:label>ADDRESSLINE1</design:label>
<design:formattingHints>
<design:displaySize>50</design:displaySize>
</design:formattingHints>
</design:usageHints>
</design:resultColumnDefinitions>
<design:resultColumnDefinitions>
<design:attributes>
<design:identifier>
<design:name>ADDRESSLINE2</design:name>
<design:position>7</design:position>
</design:identifier>
<design:nativeDataTypeCode>12</design:nativeDataTypeCode>
<design:precision>50</design:precision>
<design:scale>0</design:scale>
<design:nullability>Nullable</design:nullability>
<design:uiHints>
<design:displayName>ADDRESSLINE2</design:displayName>
</design:uiHints>
</design:attributes>
<design:usageHints>
<design:label>ADDRESSLINE2</design:label>
<design:formattingHints>
<design:displaySize>50</design:displaySize>
</design:formattingHints>
</design:usageHints>
</design:resultColumnDefinitions>
<design:resultColumnDefinitions>
<design:attributes>
<design:identifier>
<design:name>CITY</design:name>
<design:position>8</design:position>
</design:identifier>
<design:nativeDataTypeCode>12</design:nativeDataTypeCode>
<design:precision>50</design:precision>
<design:scale>0</design:scale>
<design:nullability>Nullable</design:nullability>
<design:uiHints>
<design:displayName>CITY</design:displayName>
</design:uiHints>
</design:attributes>
<design:usageHints>
<design:label>CITY</design:label>
<design:formattingHints>
<design:displaySize>50</design:displaySize>
</design:formattingHints>
</design:usageHints>
</design:resultColumnDefinitions>
<design:resultColumnDefinitions>
<design:attributes>
<design:identifier>
<design:name>STATE</design:name>
<design:position>9</design:position>
</design:identifier>
<design:nativeDataTypeCode>12</design:nativeDataTypeCode>
<design:precision>50</design:precision>
<design:scale>0</design:scale>
<design:nullability>Nullable</design:nullability>
<design:uiHints>
<design:displayName>STATE</design:displayName>
</design:uiHints>
</design:attributes>
<design:usageHints>
<design:label>STATE</design:label>
<design:formattingHints>
<design:displaySize>50</design:displaySize>
</design:formattingHints>
</design:usageHints>
</design:resultColumnDefinitions>
<design:resultColumnDefinitions>
<design:attributes>
<design:identifier>
<design:name>POSTALCODE</design:name>
<design:position>10</design:position>
</design:identifier>
<design:nativeDataTypeCode>12</design:nativeDataTypeCode>
<design:precision>15</design:precision>
<design:scale>0</design:scale>
<design:nullability>Nullable</design:nullability>
<design:uiHints>
<design:displayName>POSTALCODE</design:displayName>
</design:uiHints>
</design:attributes>
<design:usageHints>
<design:label>POSTALCODE</design:label>
<design:formattingHints>
<design:displaySize>15</design:displaySize>
</design:formattingHints>
</design:usageHints>
</design:resultColumnDefinitions>
<design:resultColumnDefinitions>
<design:attributes>
<design:identifier>
<design:name>COUNTRY</design:name>
<design:position>11</design:position>
</design:identifier>
<design:nativeDataTypeCode>12</design:nativeDataTypeCode>
<design:precision>50</design:precision>
<design:scale>0</design:scale>
<design:nullability>Nullable</design:nullability>
<design:uiHints>
<design:displayName>COUNTRY</design:displayName>
</design:uiHints>
</design:attributes>
<design:usageHints>
<design:label>COUNTRY</design:label>
<design:formattingHints>
<design:displaySize>50</design:displaySize>
</design:formattingHints>
</design:usageHints>
</design:resultColumnDefinitions>
<design:resultColumnDefinitions>
<design:attributes>
<design:identifier>
<design:name>SALESREPEMPLOYEENUMBER</design:name>
<design:position>12</design:position>
</design:identifier>
<design:nativeDataTypeCode>4</design:nativeDataTypeCode>
<design:precision>10</design:precision>
<design:scale>0</design:scale>
<design:nullability>Nullable</design:nullability>
<design:uiHints>
<design:displayName>SALESREPEMPLOYEENUMBER</design:displayName>
</design:uiHints>
</design:attributes>
<design:usageHints>
<design:label>SALESREPEMPLOYEENUMBER</design:label>
<design:formattingHints>
<design:displaySize>11</design:displaySize>
</design:formattingHints>
</design:usageHints>
</design:resultColumnDefinitions>
<design:resultColumnDefinitions>
<design:attributes>
<design:identifier>
<design:name>CREDITLIMIT</design:name>
<design:position>13</design:position>
</design:identifier>
<design:nativeDataTypeCode>8</design:nativeDataTypeCode>
<design:precision>15</design:precision>
<design:scale>0</design:scale>
<design:nullability>Nullable</design:nullability>
<design:uiHints>
<design:displayName>CREDITLIMIT</design:displayName>
</design:uiHints>
</design:attributes>
<design:usageHints>
<design:label>CREDITLIMIT</design:label>
<design:formattingHints>
<design:displaySize>22</design:displaySize>
</design:formattingHints>
</design:usageHints>
</design:resultColumnDefinitions>
</design:resultSetColumns>
<design:criteria/>
</design:resultSetDefinitions>
</design:ResultSets>
</model:DesignValues>]]></xml-property>
</oda-data-set>
</data-sets>
<styles>
<style name="report" id="4">
<property name="fontFamily">sans-serif</property>
<property name="fontSize">10pt</property>
</style>
<style name="crosstab-cell" id="5">
<property name="borderBottomColor">#CCCCCC</property>
<property name="borderBottomStyle">solid</property>
<property name="borderBottomWidth">1pt</property>
<property name="borderLeftColor">#CCCCCC</property>
<property name="borderLeftStyle">solid</property>
<property name="borderLeftWidth">1pt</property>
<property name="borderRightColor">#CCCCCC</property>
<property name="borderRightStyle">solid</property>
<property name="borderRightWidth">1pt</property>
<property name="borderTopColor">#CCCCCC</property>
<property name="borderTopStyle">solid</property>
<property name="borderTopWidth">1pt</property>
</style>
<style name="crosstab" id="6">
<property name="borderBottomColor">#CCCCCC</property>
<property name="borderBottomStyle">solid</property>
<property name="borderBottomWidth">1pt</property>
<property name="borderLeftColor">#CCCCCC</property>
<property name="borderLeftStyle">solid</property>
<property name="borderLeftWidth">1pt</property>
<property name="borderRightColor">#CCCCCC</property>
<property name="borderRightStyle">solid</property>
<property name="borderRightWidth">1pt</property>
<property name="borderTopColor">#CCCCCC</property>
<property name="borderTopStyle">solid</property>
<property name="borderTopWidth">1pt</property>
</style>
</styles>
<page-setup>
<simple-master-page name="Simple MasterPage" id="2">
<page-footer>
<text id="3">
<property name="contentType">html</property>
<text-property name="content"><![CDATA[<value-of>new Date()</value-of>]]></text-property>
</text>
</page-footer>
</simple-master-page>
</page-setup>
<body>
<table id="9">
<property name="dataSet">setGetCustomers</property>
<list-property name="boundDataColumns">
<structure>
<property name="name">CUSTOMERNUMBER</property>
<text-property name="displayName">CUSTOMERNUMBER</text-property>
<expression name="expression" type="javascript">dataSetRow["CUSTOMERNUMBER"]</expression>
<property name="dataType">integer</property>
</structure>
<structure>
<property name="name">CUSTOMERNAME</property>
<text-property name="displayName">CUSTOMERNAME</text-property>
<expression name="expression" type="javascript">dataSetRow["CUSTOMERNAME"]</expression>
<property name="dataType">string</property>
</structure>
<structure>
<property name="name">CONTACTLASTNAME</property>
<text-property name="displayName">CONTACTLASTNAME</text-property>
<expression name="expression" type="javascript">dataSetRow["CONTACTLASTNAME"]</expression>
<property name="dataType">string</property>
</structure>
<structure>
<property name="name">CONTACTFIRSTNAME</property>
<text-property name="displayName">CONTACTFIRSTNAME</text-property>
<expression name="expression" type="javascript">dataSetRow["CONTACTFIRSTNAME"]</expression>
<property name="dataType">string</property>
</structure>
<structure>
<property name="name">PHONE</property>
<text-property name="displayName">PHONE</text-property>
<expression name="expression" type="javascript">dataSetRow["PHONE"]</expression>
<property name="dataType">string</property>
</structure>
<structure>
<property name="name">ADDRESSLINE1</property>
<text-property name="displayName">ADDRESSLINE1</text-property>
<expression name="expression" type="javascript">dataSetRow["ADDRESSLINE1"]</expression>
<property name="dataType">string</property>
</structure>
<structure>
<property name="name">ADDRESSLINE2</property>
<text-property name="displayName">ADDRESSLINE2</text-property>
<expression name="expression" type="javascript">dataSetRow["ADDRESSLINE2"]</expression>
<property name="dataType">string</property>
</structure>
<structure>
<property name="name">CITY</property>
<text-property name="displayName">CITY</text-property>
<expression name="expression" type="javascript">dataSetRow["CITY"]</expression>
<property name="dataType">string</property>
</structure>
<structure>
<property name="name">STATE</property>
<text-property name="displayName">STATE</text-property>
<expression name="expression" type="javascript">dataSetRow["STATE"]</expression>
<property name="dataType">string</property>
</structure>
<structure>
<property name="name">POSTALCODE</property>
<text-property name="displayName">POSTALCODE</text-property>
<expression name="expression" type="javascript">dataSetRow["POSTALCODE"]</expression>
<property name="dataType">string</property>
</structure>
<structure>
<property name="name">COUNTRY</property>
<text-property name="displayName">COUNTRY</text-property>
<expression name="expression" type="javascript">dataSetRow["COUNTRY"]</expression>
<property name="dataType">string</property>
</structure>
<structure>
<property name="name">SALESREPEMPLOYEENUMBER</property>
<text-property name="displayName">SALESREPEMPLOYEENUMBER</text-property>
<expression name="expression" type="javascript">dataSetRow["SALESREPEMPLOYEENUMBER"]</expression>
<property name="dataType">integer</property>
</structure>
<structure>
<property name="name">CREDITLIMIT</property>
<text-property name="displayName">CREDITLIMIT</text-property>
<expression name="expression" type="javascript">dataSetRow["CREDITLIMIT"]</expression>
<property name="dataType">float</property>
</structure>
</list-property>
<column id="78">
<list-property name="visibility">
<structure>
<property name="format">all</property>
<expression name="valueExpr" type="javascript">checkField("CUSTOMERNUMBER");</expression>
</structure>
</list-property>
</column>
<column id="79">
<list-property name="visibility">
<structure>
<property name="format">all</property>
<expression name="valueExpr" type="javascript">checkField("CUSTOMERNAME")</expression>
</structure>
</list-property>
</column>
<column id="80">
<list-property name="visibility">
<structure>
<property name="format">all</property>
<expression name="valueExpr" type="javascript">checkField("CONTACTLASTNAME")</expression>
</structure>
</list-property>
</column>
<column id="81">
<list-property name="visibility">
<structure>
<property name="format">all</property>
<expression name="valueExpr" type="javascript">checkField("CONTACTFIRSTNAME")</expression>
</structure>
</list-property>
</column>
<column id="82">
<list-property name="visibility">
<structure>
<property name="format">all</property>
<expression name="valueExpr" type="javascript">checkField("PHONE")</expression>
</structure>
</list-property>
</column>
<column id="83">
<list-property name="visibility">
<structure>
<property name="format">all</property>
<expression name="valueExpr" type="javascript">checkField("ADDRESSLINE1")</expression>
</structure>
</list-property>
</column>
<column id="85">
<list-property name="visibility">
<structure>
<property name="format">all</property>
<expression name="valueExpr" type="javascript">checkField("CITY")</expression>
</structure>
</list-property>
</column>
<column id="86">
<list-property name="visibility">
<structure>
<property name="format">all</property>
<expression name="valueExpr" type="javascript">checkField("STATE")</expression>
</structure>
</list-property>
</column>
<column id="87">
<list-property name="visibility">
<structure>
<property name="format">all</property>
<expression name="valueExpr" type="javascript">checkField("POSTALCODE")</expression>
</structure>
</list-property>
</column>
<header>
<row id="10">
<cell id="11">
<label id="12">
<text-property name="text">CUSTOMERNUMBER</text-property>
</label>
</cell>
<cell id="13">
<label id="14">
<text-property name="text">CUSTOMERNAME</text-property>
</label>
</cell>
<cell id="15">
<label id="16">
<text-property name="text">CONTACTLASTNAME</text-property>
</label>
</cell>
<cell id="17">
<label id="18">
<text-property name="text">CONTACTFIRSTNAME</text-property>
</label>
</cell>
<cell id="19">
<label id="20">
<text-property name="text">PHONE</text-property>
</label>
</cell>
<cell id="21">
<label id="22">
<text-property name="text">ADDRESSLINE1</text-property>
</label>
</cell>
<cell id="25">
<label id="26">
<text-property name="text">CITY</text-property>
</label>
</cell>
<cell id="27">
<label id="28">
<text-property name="text">STATE</text-property>
</label>
</cell>
<cell id="29">
<label id="30">
<text-property name="text">POSTALCODE</text-property>
</label>
</cell>
</row>
</header>
<detail>
<row id="37">
<cell id="38">
<data id="39">
<property name="resultSetColumn">CUSTOMERNUMBER</property>
</data>
</cell>
<cell id="40">
<data id="41">
<property name="resultSetColumn">CUSTOMERNAME</property>
</data>
</cell>
<cell id="42">
<data id="43">
<property name="resultSetColumn">CONTACTLASTNAME</property>
</data>
</cell>
<cell id="44">
<data id="45">
<property name="resultSetColumn">CONTACTFIRSTNAME</property>
</data>
</cell>
<cell id="46">
<data id="47">
<property name="resultSetColumn">PHONE</property>
</data>
</cell>
<cell id="48">
<data id="49">
<property name="resultSetColumn">ADDRESSLINE1</property>
</data>
</cell>
<cell id="52">
<data id="53">
<property name="resultSetColumn">CITY</property>
</data>
</cell>
<cell id="54">
<data id="55">
<property name="resultSetColumn">STATE</property>
</data>
</cell>
<cell id="56">
<data id="57">
<property name="resultSetColumn">POSTALCODE</property>
</data>
</cell>
</row>
</detail>
<footer>
<row id="64">
<cell id="65"/>
<cell id="66"/>
<cell id="67"/>
<cell id="68"/>
<cell id="69"/>
<cell id="70"/>
<cell id="72"/>
<cell id="73"/>
<cell id="74"/>
</row>
</footer>
</table>
</body>
</report>
Subscribe to:
Posts (Atom)
















