<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns:georss="http://www.georss.org/georss" xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr="http://purl.org/syndication/thread/1.0" gd:etag="W/&quot;CUcGQHc6fip7ImA9WhVQF0s.&quot;"><id>tag:blogger.com,1999:blog-16506996</id><updated>2012-04-06T19:43:41.916-06:00</updated><category term="VMWare" /><category term="BIRT Web Viewer POST BUG report parameters" /><category term="Windows" /><category term="Eclipsecon" /><category term="Digital Voice BIRT Web Application web.xml configuration" /><category term="Services" /><category term="BIRT table hide label scripting expression visible no data returned" /><category term="Batch Files" /><category term="BIRT" /><category term="NET" /><title>The Digital Voice</title><subtitle type="html">News Relating to Programming, Network Security, and Technology</subtitle><link rel="http://schemas.google.com/g/2005#feed" type="application/atom+xml" href="http://digiassn.blogspot.com/feeds/posts/default" /><link rel="alternate" type="text/html" href="http://digiassn.blogspot.com/" /><link rel="next" type="application/atom+xml" href="http://www.blogger.com/feeds/16506996/posts/default?start-index=26&amp;max-results=25&amp;redirect=false&amp;v=2" /><author><name>John Ward</name><uri>http://www.blogger.com/profile/10741149622435353727</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><generator version="7.00" uri="http://www.blogger.com">Blogger</generator><openSearch:totalResults>315</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/TheDigitalVoice" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="thedigitalvoice" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry gd:etag="W/&quot;CUQEQXs9cCp7ImA9WhVTGUs.&quot;"><id>tag:blogger.com,1999:blog-16506996.post-8155049503400304148</id><published>2012-03-05T08:54:00.003-07:00</published><updated>2012-03-05T09:01:40.568-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-03-05T09:01:40.568-07:00</app:edited><title>BIRT: Running a Multi-Select Parameter Report from Java</title><content type="html">Below is an example of how to call a multi-select parameter report from Java using the BIRT Report Engine API.&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;&lt;br /&gt;import org.eclipse.birt.core.exception.BirtException;&lt;br /&gt;import org.eclipse.birt.core.framework.Platform;&lt;br /&gt;import org.eclipse.birt.report.engine.api.EngineConfig;&lt;br /&gt;import org.eclipse.birt.report.engine.api.EngineException;&lt;br /&gt;import org.eclipse.birt.report.engine.api.IReportRunnable;&lt;br /&gt;import org.eclipse.birt.report.engine.api.IRunAndRenderTask;&lt;br /&gt;import org.eclipse.birt.report.engine.api.PDFRenderOption;&lt;br /&gt;import org.eclipse.birt.report.engine.api.impl.ReportEngine;&lt;br /&gt;&lt;br /&gt;public class MultiParamCall {&lt;br /&gt;public static void main(String[] args) {&lt;br /&gt; try {&lt;br /&gt;  String designFIle = "C:\\Users\\jwward\\workspace\\Examples\\MultiValue.rptdesign";&lt;br /&gt; &lt;br /&gt;  //create engine config, start engine and platform&lt;br /&gt;  EngineConfig config = new EngineConfig();&lt;br /&gt;  Platform.startup();&lt;br /&gt;  ReportEngine engine = new ReportEngine(config);&lt;br /&gt; &lt;br /&gt;  //open the report design and create a new run task&lt;br /&gt;  IReportRunnable reportDesign = engine.openReportDesign(designFIle);&lt;br /&gt;  IRunAndRenderTask runTask = engine.createRunAndRenderTask(reportDesign);&lt;br /&gt; &lt;br /&gt;  //the multi-select values to use. This just needs to be Object[].&lt;br /&gt;  String[] values = {"V1", "V2", "V3"};&lt;br /&gt;  runTask.setParameterValue("ListParam", values);&lt;br /&gt; &lt;br /&gt;  //set the render outputs&lt;br /&gt;  PDFRenderOption renderOption = new PDFRenderOption();&lt;br /&gt;  renderOption.setOutputFileName("C:/TEMP/output.pdf");&lt;br /&gt;  renderOption.setOutputFormat("PDF");&lt;br /&gt;  runTask.setRenderOption(renderOption);&lt;br /&gt; &lt;br /&gt;  //run report, close the task, and destroy the engine.&lt;br /&gt;  runTask.run();&lt;br /&gt;  runTask.close();&lt;br /&gt;  engine.destroy();&lt;br /&gt; } catch (EngineException e) {&lt;br /&gt;  e.printStackTrace();&lt;br /&gt; } catch (BirtException e) {&lt;br /&gt;  e.printStackTrace();&lt;br /&gt; }&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;The XML for the report design is below.&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;&amp;lt;report xmlns=&amp;quot;http://www.eclipse.org/birt/2005/design&amp;quot; version=&amp;quot;3.2.22&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;    &amp;lt;property name=&amp;quot;createdBy&amp;quot;&amp;gt;Eclipse BIRT Designer Version 3.7.1.v20110905 Build &amp;amp;lt;3.7.1.v20110905-1820&amp;gt;&amp;lt;/property&amp;gt;&lt;br /&gt;    &amp;lt;property name=&amp;quot;units&amp;quot;&amp;gt;in&amp;lt;/property&amp;gt;&lt;br /&gt;    &amp;lt;property name=&amp;quot;iconFile&amp;quot;&amp;gt;/templates/blank_report.gif&amp;lt;/property&amp;gt;&lt;br /&gt;    &amp;lt;property name=&amp;quot;bidiLayoutOrientation&amp;quot;&amp;gt;ltr&amp;lt;/property&amp;gt;&lt;br /&gt;    &amp;lt;property name=&amp;quot;imageDPI&amp;quot;&amp;gt;96&amp;lt;/property&amp;gt;&lt;br /&gt;    &amp;lt;parameters&amp;gt;&lt;br /&gt;        &amp;lt;scalar-parameter name=&amp;quot;ListParam&amp;quot; id=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;valueType&amp;quot;&amp;gt;static&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;dataType&amp;quot;&amp;gt;string&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;distinct&amp;quot;&amp;gt;true&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;list-property name=&amp;quot;selectionList&amp;quot;&amp;gt;&lt;br /&gt;                &amp;lt;structure&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;value&amp;quot;&amp;gt;V1&amp;lt;/property&amp;gt;&lt;br /&gt;                &amp;lt;/structure&amp;gt;&lt;br /&gt;                &amp;lt;structure&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;value&amp;quot;&amp;gt;V2&amp;lt;/property&amp;gt;&lt;br /&gt;                &amp;lt;/structure&amp;gt;&lt;br /&gt;                &amp;lt;structure&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;value&amp;quot;&amp;gt;V3&amp;lt;/property&amp;gt;&lt;br /&gt;                &amp;lt;/structure&amp;gt;&lt;br /&gt;            &amp;lt;/list-property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;paramType&amp;quot;&amp;gt;multi-value&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;controlType&amp;quot;&amp;gt;list-box&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;mustMatch&amp;quot;&amp;gt;true&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;fixedOrder&amp;quot;&amp;gt;true&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;structure name=&amp;quot;format&amp;quot;&amp;gt;&lt;br /&gt;                &amp;lt;property name=&amp;quot;category&amp;quot;&amp;gt;Unformatted&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;/structure&amp;gt;&lt;br /&gt;        &amp;lt;/scalar-parameter&amp;gt;&lt;br /&gt;    &amp;lt;/parameters&amp;gt;&lt;br /&gt;    &amp;lt;styles&amp;gt;&lt;br /&gt;        &amp;lt;style name=&amp;quot;report&amp;quot; id=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;fontFamily&amp;quot;&amp;gt;sans-serif&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;fontSize&amp;quot;&amp;gt;10pt&amp;lt;/property&amp;gt;&lt;br /&gt;        &amp;lt;/style&amp;gt;&lt;br /&gt;        &amp;lt;style name=&amp;quot;crosstab-cell&amp;quot; id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderBottomColor&amp;quot;&amp;gt;#CCCCCC&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderBottomStyle&amp;quot;&amp;gt;solid&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderBottomWidth&amp;quot;&amp;gt;1pt&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderLeftColor&amp;quot;&amp;gt;#CCCCCC&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderLeftStyle&amp;quot;&amp;gt;solid&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderLeftWidth&amp;quot;&amp;gt;1pt&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderRightColor&amp;quot;&amp;gt;#CCCCCC&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderRightStyle&amp;quot;&amp;gt;solid&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderRightWidth&amp;quot;&amp;gt;1pt&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderTopColor&amp;quot;&amp;gt;#CCCCCC&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderTopStyle&amp;quot;&amp;gt;solid&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderTopWidth&amp;quot;&amp;gt;1pt&amp;lt;/property&amp;gt;&lt;br /&gt;        &amp;lt;/style&amp;gt;&lt;br /&gt;        &amp;lt;style name=&amp;quot;crosstab&amp;quot; id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderBottomColor&amp;quot;&amp;gt;#CCCCCC&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderBottomStyle&amp;quot;&amp;gt;solid&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderBottomWidth&amp;quot;&amp;gt;1pt&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderLeftColor&amp;quot;&amp;gt;#CCCCCC&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderLeftStyle&amp;quot;&amp;gt;solid&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderLeftWidth&amp;quot;&amp;gt;1pt&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderRightColor&amp;quot;&amp;gt;#CCCCCC&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderRightStyle&amp;quot;&amp;gt;solid&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderRightWidth&amp;quot;&amp;gt;1pt&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderTopColor&amp;quot;&amp;gt;#CCCCCC&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderTopStyle&amp;quot;&amp;gt;solid&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderTopWidth&amp;quot;&amp;gt;1pt&amp;lt;/property&amp;gt;&lt;br /&gt;        &amp;lt;/style&amp;gt;&lt;br /&gt;    &amp;lt;/styles&amp;gt;&lt;br /&gt;    &amp;lt;page-setup&amp;gt;&lt;br /&gt;        &amp;lt;simple-master-page name=&amp;quot;Simple MasterPage&amp;quot; id=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;            &amp;lt;page-footer&amp;gt;&lt;br /&gt;                &amp;lt;text id=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;contentType&amp;quot;&amp;gt;html&amp;lt;/property&amp;gt;&lt;br /&gt;                    &amp;lt;text-property name=&amp;quot;content&amp;quot;&amp;gt;&amp;lt;![CDATA[&amp;lt;value-of&amp;gt;new Date()&amp;lt;/value-of&amp;gt;]]&amp;gt;&amp;lt;/text-property&amp;gt;&lt;br /&gt;                &amp;lt;/text&amp;gt;&lt;br /&gt;            &amp;lt;/page-footer&amp;gt;&lt;br /&gt;        &amp;lt;/simple-master-page&amp;gt;&lt;br /&gt;    &amp;lt;/page-setup&amp;gt;&lt;br /&gt;    &amp;lt;body&amp;gt;&lt;br /&gt;        &amp;lt;data id=&amp;quot;8&amp;quot;&amp;gt;&lt;br /&gt;            &amp;lt;list-property name=&amp;quot;boundDataColumns&amp;quot;&amp;gt;&lt;br /&gt;                &amp;lt;structure&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;name&amp;quot;&amp;gt;ListParam&amp;lt;/property&amp;gt;&lt;br /&gt;                    &amp;lt;expression name=&amp;quot;expression&amp;quot; type=&amp;quot;javascript&amp;quot;&amp;gt;params[&amp;quot;ListParam&amp;quot;].toString()&amp;lt;/expression&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;dataType&amp;quot;&amp;gt;string&amp;lt;/property&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;allowExport&amp;quot;&amp;gt;true&amp;lt;/property&amp;gt;&lt;br /&gt;                &amp;lt;/structure&amp;gt;&lt;br /&gt;            &amp;lt;/list-property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;resultSetColumn&amp;quot;&amp;gt;ListParam&amp;lt;/property&amp;gt;&lt;br /&gt;        &amp;lt;/data&amp;gt;&lt;br /&gt;    &amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/report&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16506996-8155049503400304148?l=digiassn.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=3d22HAc-cCQ:R6gxxGX1Dtg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=3d22HAc-cCQ:R6gxxGX1Dtg:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=3d22HAc-cCQ:R6gxxGX1Dtg:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://digiassn.blogspot.com/feeds/8155049503400304148/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=16506996&amp;postID=8155049503400304148&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/16506996/posts/default/8155049503400304148?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/16506996/posts/default/8155049503400304148?v=2" /><link rel="alternate" type="text/html" href="http://digiassn.blogspot.com/2012/03/birt-running-multi-select-parameter.html" title="BIRT: Running a Multi-Select Parameter Report from Java" /><author><name>John Ward</name><uri>http://www.blogger.com/profile/10741149622435353727</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DE4GSXw8fyp7ImA9WhVTEU0.&quot;"><id>tag:blogger.com,1999:blog-16506996.post-4269024271402425644</id><published>2012-02-24T10:58:00.002-07:00</published><updated>2012-02-24T11:08:48.277-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-24T11:08:48.277-07:00</app:edited><title>BIRT: Showing Top 10 and Still Displaying Total Count</title><content type="html">A question on the BIRT Exchange asked how could you display the top 10, but still show the total count for the entire table.&lt;br /&gt;&lt;br /&gt;This is fairly easy, and uses a combination of Aggregations, the Visibility Expression, Sorts, and the row._rownum property of a table.&lt;br /&gt;&lt;br /&gt;So, lets say I have a query like: &lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;select &lt;br /&gt;    CLASSICMODELS.CUSTOMERS.CUSTOMERNAME,&lt;br /&gt;    CLASSICMODELS.CUSTOMERS.CUSTOMERNUMBER,&lt;br /&gt;    sum(CLASSICMODELS.ORDERDETAILS.PRICEEACH * CLASSICMODELS.ORDERDETAILS.QUANTITYORDERED) totalOrders&lt;br /&gt;from &lt;br /&gt;    CLASSICMODELS.CUSTOMERS,&lt;br /&gt;    CLASSICMODELS.ORDERS,&lt;br /&gt;    CLASSICMODELS.ORDERDETAILS&lt;br /&gt;where&lt;br /&gt;    CLASSICMODELS.ORDERS.ORDERNUMBER = CLASSICMODELS.ORDERDETAILS.ORDERNUMBER&lt;br /&gt;    and CLASSICMODELS.ORDERS.CUSTOMERNUMBER = CLASSICMODELS.CUSTOMERS.CUSTOMERNUMBER&lt;br /&gt;group by&lt;br /&gt;    CLASSICMODELS.CUSTOMERS.CUSTOMERNUMBER,&lt;br /&gt;    CLASSICMODELS.CUSTOMERS.CUSTOMERNAME&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;My total sales for each customer is handled in the query. What I want is to display the Top 10 Customers. So, I will create a data set, and drag that data set over to the report designer. Once there, I will add a sort in descending order based on the totalOrders column. This will list all customers in descending order based on total sales, leaving the top buying customers at the top.&lt;br /&gt;&lt;br /&gt;If I add a Count Aggregation to the table and put it in the footer, it will display the total count of customers. The next step is to filter on the Top 10. The way I would do this is select the Detail row in the table, and set a Visibility expression like so:&lt;br /&gt;&lt;br /&gt;row.__rownum &gt; 9&lt;br /&gt;&lt;br /&gt;__rownum is based on the order it is in the Tables binding, and gets set on fetch. So why use a Visibility Expression instead of a Filter? Because Filter does not have access to the __rownum property, and it would affect the Tables aggregation, so there would be an inaccurate count of customers. &lt;br /&gt;&lt;br /&gt;The resulting Top 10 can now be used in a Dashboard by being called as a Reportlet, and the Total Count aggregation can be set as the drill down link for the full list.&lt;br /&gt;&lt;br /&gt;The example reports XML is below.&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;&amp;lt;report xmlns=&amp;quot;http://www.eclipse.org/birt/2005/design&amp;quot; version=&amp;quot;3.2.22&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;    &amp;lt;property name=&amp;quot;createdBy&amp;quot;&amp;gt;Eclipse BIRT Designer Version 3.7.1.v20110905 Build &amp;amp;lt;3.7.1.v20110905-1820&amp;gt;&amp;lt;/property&amp;gt;&lt;br /&gt;    &amp;lt;property name=&amp;quot;units&amp;quot;&amp;gt;in&amp;lt;/property&amp;gt;&lt;br /&gt;    &amp;lt;property name=&amp;quot;iconFile&amp;quot;&amp;gt;/templates/blank_report.gif&amp;lt;/property&amp;gt;&lt;br /&gt;    &amp;lt;property name=&amp;quot;bidiLayoutOrientation&amp;quot;&amp;gt;ltr&amp;lt;/property&amp;gt;&lt;br /&gt;    &amp;lt;property name=&amp;quot;imageDPI&amp;quot;&amp;gt;96&amp;lt;/property&amp;gt;&lt;br /&gt;    &amp;lt;data-sources&amp;gt;&lt;br /&gt;        &amp;lt;oda-data-source extensionID=&amp;quot;org.eclipse.birt.report.data.oda.jdbc&amp;quot; name=&amp;quot;Data Source&amp;quot; id=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;            &amp;lt;list-property name=&amp;quot;privateDriverProperties&amp;quot;&amp;gt;&lt;br /&gt;                &amp;lt;ex-property&amp;gt;&lt;br /&gt;                    &amp;lt;name&amp;gt;contentBidiFormatStr&amp;lt;/name&amp;gt;&lt;br /&gt;                    &amp;lt;value&amp;gt;ILYNN&amp;lt;/value&amp;gt;&lt;br /&gt;                &amp;lt;/ex-property&amp;gt;&lt;br /&gt;                &amp;lt;ex-property&amp;gt;&lt;br /&gt;                    &amp;lt;name&amp;gt;metadataBidiFormatStr&amp;lt;/name&amp;gt;&lt;br /&gt;                    &amp;lt;value&amp;gt;ILYNN&amp;lt;/value&amp;gt;&lt;br /&gt;                &amp;lt;/ex-property&amp;gt;&lt;br /&gt;            &amp;lt;/list-property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;odaDriverClass&amp;quot;&amp;gt;org.eclipse.birt.report.data.oda.sampledb.Driver&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;odaURL&amp;quot;&amp;gt;jdbc:classicmodels:sampledb&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;odaUser&amp;quot;&amp;gt;ClassicModels&amp;lt;/property&amp;gt;&lt;br /&gt;        &amp;lt;/oda-data-source&amp;gt;&lt;br /&gt;    &amp;lt;/data-sources&amp;gt;&lt;br /&gt;    &amp;lt;data-sets&amp;gt;&lt;br /&gt;        &amp;lt;oda-data-set extensionID=&amp;quot;org.eclipse.birt.report.data.oda.jdbc.JdbcSelectDataSet&amp;quot; name=&amp;quot;totalDataSet&amp;quot; id=&amp;quot;8&amp;quot;&amp;gt;&lt;br /&gt;            &amp;lt;list-property name=&amp;quot;columnHints&amp;quot;&amp;gt;&lt;br /&gt;                &amp;lt;structure&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;columnName&amp;quot;&amp;gt;CUSTOMERNAME&amp;lt;/property&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;analysis&amp;quot;&amp;gt;attribute&amp;lt;/property&amp;gt;&lt;br /&gt;                    &amp;lt;text-property name=&amp;quot;displayName&amp;quot;&amp;gt;CUSTOMERNAME&amp;lt;/text-property&amp;gt;&lt;br /&gt;                    &amp;lt;text-property name=&amp;quot;heading&amp;quot;&amp;gt;CUSTOMERNAME&amp;lt;/text-property&amp;gt;&lt;br /&gt;                &amp;lt;/structure&amp;gt;&lt;br /&gt;                &amp;lt;structure&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;columnName&amp;quot;&amp;gt;CUSTOMERNUMBER&amp;lt;/property&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;analysis&amp;quot;&amp;gt;measure&amp;lt;/property&amp;gt;&lt;br /&gt;                    &amp;lt;text-property name=&amp;quot;displayName&amp;quot;&amp;gt;CUSTOMERNUMBER&amp;lt;/text-property&amp;gt;&lt;br /&gt;                    &amp;lt;text-property name=&amp;quot;heading&amp;quot;&amp;gt;CUSTOMERNUMBER&amp;lt;/text-property&amp;gt;&lt;br /&gt;                &amp;lt;/structure&amp;gt;&lt;br /&gt;                &amp;lt;structure&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;columnName&amp;quot;&amp;gt;TOTALORDERS&amp;lt;/property&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;analysis&amp;quot;&amp;gt;measure&amp;lt;/property&amp;gt;&lt;br /&gt;                    &amp;lt;text-property name=&amp;quot;displayName&amp;quot;&amp;gt;TOTALORDERS&amp;lt;/text-property&amp;gt;&lt;br /&gt;                    &amp;lt;text-property name=&amp;quot;heading&amp;quot;&amp;gt;TOTALORDERS&amp;lt;/text-property&amp;gt;&lt;br /&gt;                &amp;lt;/structure&amp;gt;&lt;br /&gt;            &amp;lt;/list-property&amp;gt;&lt;br /&gt;            &amp;lt;list-property name=&amp;quot;parameters&amp;quot;/&amp;gt;&lt;br /&gt;            &amp;lt;structure name=&amp;quot;cachedMetaData&amp;quot;&amp;gt;&lt;br /&gt;                &amp;lt;list-property name=&amp;quot;resultSet&amp;quot;&amp;gt;&lt;br /&gt;                    &amp;lt;structure&amp;gt;&lt;br /&gt;                        &amp;lt;property name=&amp;quot;position&amp;quot;&amp;gt;1&amp;lt;/property&amp;gt;&lt;br /&gt;                        &amp;lt;property name=&amp;quot;name&amp;quot;&amp;gt;CUSTOMERNAME&amp;lt;/property&amp;gt;&lt;br /&gt;                        &amp;lt;property name=&amp;quot;dataType&amp;quot;&amp;gt;string&amp;lt;/property&amp;gt;&lt;br /&gt;                    &amp;lt;/structure&amp;gt;&lt;br /&gt;                    &amp;lt;structure&amp;gt;&lt;br /&gt;                        &amp;lt;property name=&amp;quot;position&amp;quot;&amp;gt;2&amp;lt;/property&amp;gt;&lt;br /&gt;                        &amp;lt;property name=&amp;quot;name&amp;quot;&amp;gt;CUSTOMERNUMBER&amp;lt;/property&amp;gt;&lt;br /&gt;                        &amp;lt;property name=&amp;quot;dataType&amp;quot;&amp;gt;integer&amp;lt;/property&amp;gt;&lt;br /&gt;                    &amp;lt;/structure&amp;gt;&lt;br /&gt;                    &amp;lt;structure&amp;gt;&lt;br /&gt;                        &amp;lt;property name=&amp;quot;position&amp;quot;&amp;gt;3&amp;lt;/property&amp;gt;&lt;br /&gt;                        &amp;lt;property name=&amp;quot;name&amp;quot;&amp;gt;TOTALORDERS&amp;lt;/property&amp;gt;&lt;br /&gt;                        &amp;lt;property name=&amp;quot;dataType&amp;quot;&amp;gt;float&amp;lt;/property&amp;gt;&lt;br /&gt;                    &amp;lt;/structure&amp;gt;&lt;br /&gt;                &amp;lt;/list-property&amp;gt;&lt;br /&gt;            &amp;lt;/structure&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;dataSource&amp;quot;&amp;gt;Data Source&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;list-property name=&amp;quot;resultSet&amp;quot;&amp;gt;&lt;br /&gt;                &amp;lt;structure&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;position&amp;quot;&amp;gt;1&amp;lt;/property&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;name&amp;quot;&amp;gt;CUSTOMERNAME&amp;lt;/property&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;nativeName&amp;quot;&amp;gt;CUSTOMERNAME&amp;lt;/property&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;dataType&amp;quot;&amp;gt;string&amp;lt;/property&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;nativeDataType&amp;quot;&amp;gt;12&amp;lt;/property&amp;gt;&lt;br /&gt;                &amp;lt;/structure&amp;gt;&lt;br /&gt;                &amp;lt;structure&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;position&amp;quot;&amp;gt;2&amp;lt;/property&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;name&amp;quot;&amp;gt;CUSTOMERNUMBER&amp;lt;/property&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;nativeName&amp;quot;&amp;gt;CUSTOMERNUMBER&amp;lt;/property&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;dataType&amp;quot;&amp;gt;integer&amp;lt;/property&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;nativeDataType&amp;quot;&amp;gt;4&amp;lt;/property&amp;gt;&lt;br /&gt;                &amp;lt;/structure&amp;gt;&lt;br /&gt;                &amp;lt;structure&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;position&amp;quot;&amp;gt;3&amp;lt;/property&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;name&amp;quot;&amp;gt;TOTALORDERS&amp;lt;/property&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;nativeName&amp;quot;&amp;gt;TOTALORDERS&amp;lt;/property&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;dataType&amp;quot;&amp;gt;float&amp;lt;/property&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;nativeDataType&amp;quot;&amp;gt;8&amp;lt;/property&amp;gt;&lt;br /&gt;                &amp;lt;/structure&amp;gt;&lt;br /&gt;            &amp;lt;/list-property&amp;gt;&lt;br /&gt;            &amp;lt;xml-property name=&amp;quot;queryText&amp;quot;&amp;gt;&amp;lt;![CDATA[select &lt;br /&gt;    CLASSICMODELS.CUSTOMERS.CUSTOMERNAME,&lt;br /&gt;    CLASSICMODELS.CUSTOMERS.CUSTOMERNUMBER,&lt;br /&gt;    sum(CLASSICMODELS.ORDERDETAILS.PRICEEACH * CLASSICMODELS.ORDERDETAILS.QUANTITYORDERED) totalOrders&lt;br /&gt;from &lt;br /&gt;    CLASSICMODELS.CUSTOMERS,&lt;br /&gt;    CLASSICMODELS.ORDERS,&lt;br /&gt;    CLASSICMODELS.ORDERDETAILS&lt;br /&gt;where&lt;br /&gt;    CLASSICMODELS.ORDERS.ORDERNUMBER = CLASSICMODELS.ORDERDETAILS.ORDERNUMBER&lt;br /&gt;    and CLASSICMODELS.ORDERS.CUSTOMERNUMBER = CLASSICMODELS.CUSTOMERS.CUSTOMERNUMBER&lt;br /&gt;group by&lt;br /&gt;    CLASSICMODELS.CUSTOMERS.CUSTOMERNUMBER,&lt;br /&gt;    CLASSICMODELS.CUSTOMERS.CUSTOMERNAME&lt;br /&gt;    ]]&amp;gt;&amp;lt;/xml-property&amp;gt;&lt;br /&gt;            &amp;lt;xml-property name=&amp;quot;designerValues&amp;quot;&amp;gt;&amp;lt;![CDATA[&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;&amp;lt;model:DesignValues xmlns:design=&amp;quot;http://www.eclipse.org/datatools/connectivity/oda/design&amp;quot; xmlns:model=&amp;quot;http://www.eclipse.org/birt/report/model/adapter/odaModel&amp;quot;&amp;gt;&lt;br /&gt;  &amp;lt;Version&amp;gt;2.0&amp;lt;/Version&amp;gt;&lt;br /&gt;  &amp;lt;design:ResultSets derivedMetaData=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;    &amp;lt;design:resultSetDefinitions&amp;gt;&lt;br /&gt;      &amp;lt;design:resultSetColumns&amp;gt;&lt;br /&gt;        &amp;lt;design:resultColumnDefinitions&amp;gt;&lt;br /&gt;          &amp;lt;design:attributes&amp;gt;&lt;br /&gt;            &amp;lt;design:identifier&amp;gt;&lt;br /&gt;              &amp;lt;design:name&amp;gt;CUSTOMERNAME&amp;lt;/design:name&amp;gt;&lt;br /&gt;              &amp;lt;design:position&amp;gt;1&amp;lt;/design:position&amp;gt;&lt;br /&gt;            &amp;lt;/design:identifier&amp;gt;&lt;br /&gt;            &amp;lt;design:nativeDataTypeCode&amp;gt;12&amp;lt;/design:nativeDataTypeCode&amp;gt;&lt;br /&gt;            &amp;lt;design:precision&amp;gt;50&amp;lt;/design:precision&amp;gt;&lt;br /&gt;            &amp;lt;design:scale&amp;gt;0&amp;lt;/design:scale&amp;gt;&lt;br /&gt;            &amp;lt;design:nullability&amp;gt;Nullable&amp;lt;/design:nullability&amp;gt;&lt;br /&gt;            &amp;lt;design:uiHints&amp;gt;&lt;br /&gt;              &amp;lt;design:displayName&amp;gt;CUSTOMERNAME&amp;lt;/design:displayName&amp;gt;&lt;br /&gt;            &amp;lt;/design:uiHints&amp;gt;&lt;br /&gt;          &amp;lt;/design:attributes&amp;gt;&lt;br /&gt;          &amp;lt;design:usageHints&amp;gt;&lt;br /&gt;            &amp;lt;design:label&amp;gt;CUSTOMERNAME&amp;lt;/design:label&amp;gt;&lt;br /&gt;            &amp;lt;design:formattingHints&amp;gt;&lt;br /&gt;              &amp;lt;design:displaySize&amp;gt;50&amp;lt;/design:displaySize&amp;gt;&lt;br /&gt;            &amp;lt;/design:formattingHints&amp;gt;&lt;br /&gt;          &amp;lt;/design:usageHints&amp;gt;&lt;br /&gt;        &amp;lt;/design:resultColumnDefinitions&amp;gt;&lt;br /&gt;        &amp;lt;design:resultColumnDefinitions&amp;gt;&lt;br /&gt;          &amp;lt;design:attributes&amp;gt;&lt;br /&gt;            &amp;lt;design:identifier&amp;gt;&lt;br /&gt;              &amp;lt;design:name&amp;gt;CUSTOMERNUMBER&amp;lt;/design:name&amp;gt;&lt;br /&gt;              &amp;lt;design:position&amp;gt;2&amp;lt;/design:position&amp;gt;&lt;br /&gt;            &amp;lt;/design:identifier&amp;gt;&lt;br /&gt;            &amp;lt;design:nativeDataTypeCode&amp;gt;4&amp;lt;/design:nativeDataTypeCode&amp;gt;&lt;br /&gt;            &amp;lt;design:precision&amp;gt;10&amp;lt;/design:precision&amp;gt;&lt;br /&gt;            &amp;lt;design:scale&amp;gt;0&amp;lt;/design:scale&amp;gt;&lt;br /&gt;            &amp;lt;design:nullability&amp;gt;Nullable&amp;lt;/design:nullability&amp;gt;&lt;br /&gt;            &amp;lt;design:uiHints&amp;gt;&lt;br /&gt;              &amp;lt;design:displayName&amp;gt;CUSTOMERNUMBER&amp;lt;/design:displayName&amp;gt;&lt;br /&gt;            &amp;lt;/design:uiHints&amp;gt;&lt;br /&gt;          &amp;lt;/design:attributes&amp;gt;&lt;br /&gt;          &amp;lt;design:usageHints&amp;gt;&lt;br /&gt;            &amp;lt;design:label&amp;gt;CUSTOMERNUMBER&amp;lt;/design:label&amp;gt;&lt;br /&gt;            &amp;lt;design:formattingHints&amp;gt;&lt;br /&gt;              &amp;lt;design:displaySize&amp;gt;11&amp;lt;/design:displaySize&amp;gt;&lt;br /&gt;            &amp;lt;/design:formattingHints&amp;gt;&lt;br /&gt;          &amp;lt;/design:usageHints&amp;gt;&lt;br /&gt;        &amp;lt;/design:resultColumnDefinitions&amp;gt;&lt;br /&gt;        &amp;lt;design:resultColumnDefinitions&amp;gt;&lt;br /&gt;          &amp;lt;design:attributes&amp;gt;&lt;br /&gt;            &amp;lt;design:identifier&amp;gt;&lt;br /&gt;              &amp;lt;design:name&amp;gt;ORDERNUMBER&amp;lt;/design:name&amp;gt;&lt;br /&gt;              &amp;lt;design:position&amp;gt;3&amp;lt;/design:position&amp;gt;&lt;br /&gt;            &amp;lt;/design:identifier&amp;gt;&lt;br /&gt;            &amp;lt;design:nativeDataTypeCode&amp;gt;4&amp;lt;/design:nativeDataTypeCode&amp;gt;&lt;br /&gt;            &amp;lt;design:precision&amp;gt;10&amp;lt;/design:precision&amp;gt;&lt;br /&gt;            &amp;lt;design:scale&amp;gt;0&amp;lt;/design:scale&amp;gt;&lt;br /&gt;            &amp;lt;design:nullability&amp;gt;Nullable&amp;lt;/design:nullability&amp;gt;&lt;br /&gt;            &amp;lt;design:uiHints&amp;gt;&lt;br /&gt;              &amp;lt;design:displayName&amp;gt;ORDERNUMBER&amp;lt;/design:displayName&amp;gt;&lt;br /&gt;            &amp;lt;/design:uiHints&amp;gt;&lt;br /&gt;          &amp;lt;/design:attributes&amp;gt;&lt;br /&gt;          &amp;lt;design:usageHints&amp;gt;&lt;br /&gt;            &amp;lt;design:label&amp;gt;ORDERNUMBER&amp;lt;/design:label&amp;gt;&lt;br /&gt;            &amp;lt;design:formattingHints&amp;gt;&lt;br /&gt;              &amp;lt;design:displaySize&amp;gt;11&amp;lt;/design:displaySize&amp;gt;&lt;br /&gt;            &amp;lt;/design:formattingHints&amp;gt;&lt;br /&gt;          &amp;lt;/design:usageHints&amp;gt;&lt;br /&gt;        &amp;lt;/design:resultColumnDefinitions&amp;gt;&lt;br /&gt;        &amp;lt;design:resultColumnDefinitions&amp;gt;&lt;br /&gt;          &amp;lt;design:attributes&amp;gt;&lt;br /&gt;            &amp;lt;design:identifier&amp;gt;&lt;br /&gt;              &amp;lt;design:name&amp;gt;PRICEEACH&amp;lt;/design:name&amp;gt;&lt;br /&gt;              &amp;lt;design:position&amp;gt;4&amp;lt;/design:position&amp;gt;&lt;br /&gt;            &amp;lt;/design:identifier&amp;gt;&lt;br /&gt;            &amp;lt;design:nativeDataTypeCode&amp;gt;8&amp;lt;/design:nativeDataTypeCode&amp;gt;&lt;br /&gt;            &amp;lt;design:precision&amp;gt;15&amp;lt;/design:precision&amp;gt;&lt;br /&gt;            &amp;lt;design:scale&amp;gt;0&amp;lt;/design:scale&amp;gt;&lt;br /&gt;            &amp;lt;design:nullability&amp;gt;Nullable&amp;lt;/design:nullability&amp;gt;&lt;br /&gt;            &amp;lt;design:uiHints&amp;gt;&lt;br /&gt;              &amp;lt;design:displayName&amp;gt;PRICEEACH&amp;lt;/design:displayName&amp;gt;&lt;br /&gt;            &amp;lt;/design:uiHints&amp;gt;&lt;br /&gt;          &amp;lt;/design:attributes&amp;gt;&lt;br /&gt;          &amp;lt;design:usageHints&amp;gt;&lt;br /&gt;            &amp;lt;design:label&amp;gt;PRICEEACH&amp;lt;/design:label&amp;gt;&lt;br /&gt;            &amp;lt;design:formattingHints&amp;gt;&lt;br /&gt;              &amp;lt;design:displaySize&amp;gt;22&amp;lt;/design:displaySize&amp;gt;&lt;br /&gt;            &amp;lt;/design:formattingHints&amp;gt;&lt;br /&gt;          &amp;lt;/design:usageHints&amp;gt;&lt;br /&gt;        &amp;lt;/design:resultColumnDefinitions&amp;gt;&lt;br /&gt;        &amp;lt;design:resultColumnDefinitions&amp;gt;&lt;br /&gt;          &amp;lt;design:attributes&amp;gt;&lt;br /&gt;            &amp;lt;design:identifier&amp;gt;&lt;br /&gt;              &amp;lt;design:name&amp;gt;QUANTITYORDERED&amp;lt;/design:name&amp;gt;&lt;br /&gt;              &amp;lt;design:position&amp;gt;5&amp;lt;/design:position&amp;gt;&lt;br /&gt;            &amp;lt;/design:identifier&amp;gt;&lt;br /&gt;            &amp;lt;design:nativeDataTypeCode&amp;gt;4&amp;lt;/design:nativeDataTypeCode&amp;gt;&lt;br /&gt;            &amp;lt;design:precision&amp;gt;10&amp;lt;/design:precision&amp;gt;&lt;br /&gt;            &amp;lt;design:scale&amp;gt;0&amp;lt;/design:scale&amp;gt;&lt;br /&gt;            &amp;lt;design:nullability&amp;gt;Nullable&amp;lt;/design:nullability&amp;gt;&lt;br /&gt;            &amp;lt;design:uiHints&amp;gt;&lt;br /&gt;              &amp;lt;design:displayName&amp;gt;QUANTITYORDERED&amp;lt;/design:displayName&amp;gt;&lt;br /&gt;            &amp;lt;/design:uiHints&amp;gt;&lt;br /&gt;          &amp;lt;/design:attributes&amp;gt;&lt;br /&gt;          &amp;lt;design:usageHints&amp;gt;&lt;br /&gt;            &amp;lt;design:label&amp;gt;QUANTITYORDERED&amp;lt;/design:label&amp;gt;&lt;br /&gt;            &amp;lt;design:formattingHints&amp;gt;&lt;br /&gt;              &amp;lt;design:displaySize&amp;gt;11&amp;lt;/design:displaySize&amp;gt;&lt;br /&gt;            &amp;lt;/design:formattingHints&amp;gt;&lt;br /&gt;          &amp;lt;/design:usageHints&amp;gt;&lt;br /&gt;        &amp;lt;/design:resultColumnDefinitions&amp;gt;&lt;br /&gt;      &amp;lt;/design:resultSetColumns&amp;gt;&lt;br /&gt;      &amp;lt;design:criteria/&amp;gt;&lt;br /&gt;    &amp;lt;/design:resultSetDefinitions&amp;gt;&lt;br /&gt;  &amp;lt;/design:ResultSets&amp;gt;&lt;br /&gt;&amp;lt;/model:DesignValues&amp;gt;]]&amp;gt;&amp;lt;/xml-property&amp;gt;&lt;br /&gt;        &amp;lt;/oda-data-set&amp;gt;&lt;br /&gt;    &amp;lt;/data-sets&amp;gt;&lt;br /&gt;    &amp;lt;styles&amp;gt;&lt;br /&gt;        &amp;lt;style name=&amp;quot;report&amp;quot; id=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;fontFamily&amp;quot;&amp;gt;sans-serif&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;fontSize&amp;quot;&amp;gt;10pt&amp;lt;/property&amp;gt;&lt;br /&gt;        &amp;lt;/style&amp;gt;&lt;br /&gt;        &amp;lt;style name=&amp;quot;crosstab-cell&amp;quot; id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderBottomColor&amp;quot;&amp;gt;#CCCCCC&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderBottomStyle&amp;quot;&amp;gt;solid&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderBottomWidth&amp;quot;&amp;gt;1pt&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderLeftColor&amp;quot;&amp;gt;#CCCCCC&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderLeftStyle&amp;quot;&amp;gt;solid&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderLeftWidth&amp;quot;&amp;gt;1pt&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderRightColor&amp;quot;&amp;gt;#CCCCCC&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderRightStyle&amp;quot;&amp;gt;solid&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderRightWidth&amp;quot;&amp;gt;1pt&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderTopColor&amp;quot;&amp;gt;#CCCCCC&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderTopStyle&amp;quot;&amp;gt;solid&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderTopWidth&amp;quot;&amp;gt;1pt&amp;lt;/property&amp;gt;&lt;br /&gt;        &amp;lt;/style&amp;gt;&lt;br /&gt;        &amp;lt;style name=&amp;quot;crosstab&amp;quot; id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderBottomColor&amp;quot;&amp;gt;#CCCCCC&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderBottomStyle&amp;quot;&amp;gt;solid&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderBottomWidth&amp;quot;&amp;gt;1pt&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderLeftColor&amp;quot;&amp;gt;#CCCCCC&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderLeftStyle&amp;quot;&amp;gt;solid&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderLeftWidth&amp;quot;&amp;gt;1pt&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderRightColor&amp;quot;&amp;gt;#CCCCCC&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderRightStyle&amp;quot;&amp;gt;solid&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderRightWidth&amp;quot;&amp;gt;1pt&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderTopColor&amp;quot;&amp;gt;#CCCCCC&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderTopStyle&amp;quot;&amp;gt;solid&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderTopWidth&amp;quot;&amp;gt;1pt&amp;lt;/property&amp;gt;&lt;br /&gt;        &amp;lt;/style&amp;gt;&lt;br /&gt;    &amp;lt;/styles&amp;gt;&lt;br /&gt;    &amp;lt;page-setup&amp;gt;&lt;br /&gt;        &amp;lt;simple-master-page name=&amp;quot;Simple MasterPage&amp;quot; id=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;            &amp;lt;page-footer&amp;gt;&lt;br /&gt;                &amp;lt;text id=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;contentType&amp;quot;&amp;gt;html&amp;lt;/property&amp;gt;&lt;br /&gt;                    &amp;lt;text-property name=&amp;quot;content&amp;quot;&amp;gt;&amp;lt;![CDATA[&amp;lt;value-of&amp;gt;new Date()&amp;lt;/value-of&amp;gt;]]&amp;gt;&amp;lt;/text-property&amp;gt;&lt;br /&gt;                &amp;lt;/text&amp;gt;&lt;br /&gt;            &amp;lt;/page-footer&amp;gt;&lt;br /&gt;        &amp;lt;/simple-master-page&amp;gt;&lt;br /&gt;    &amp;lt;/page-setup&amp;gt;&lt;br /&gt;    &amp;lt;body&amp;gt;&lt;br /&gt;        &amp;lt;table id=&amp;quot;77&amp;quot;&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;dataSet&amp;quot;&amp;gt;totalDataSet&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;list-property name=&amp;quot;boundDataColumns&amp;quot;&amp;gt;&lt;br /&gt;                &amp;lt;structure&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;name&amp;quot;&amp;gt;CUSTOMERNAME&amp;lt;/property&amp;gt;&lt;br /&gt;                    &amp;lt;text-property name=&amp;quot;displayName&amp;quot;&amp;gt;CUSTOMERNAME&amp;lt;/text-property&amp;gt;&lt;br /&gt;                    &amp;lt;expression name=&amp;quot;expression&amp;quot; type=&amp;quot;javascript&amp;quot;&amp;gt;dataSetRow[&amp;quot;CUSTOMERNAME&amp;quot;]&amp;lt;/expression&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;dataType&amp;quot;&amp;gt;string&amp;lt;/property&amp;gt;&lt;br /&gt;                &amp;lt;/structure&amp;gt;&lt;br /&gt;                &amp;lt;structure&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;name&amp;quot;&amp;gt;CUSTOMERNUMBER&amp;lt;/property&amp;gt;&lt;br /&gt;                    &amp;lt;text-property name=&amp;quot;displayName&amp;quot;&amp;gt;CUSTOMERNUMBER&amp;lt;/text-property&amp;gt;&lt;br /&gt;                    &amp;lt;expression name=&amp;quot;expression&amp;quot; type=&amp;quot;javascript&amp;quot;&amp;gt;dataSetRow[&amp;quot;CUSTOMERNUMBER&amp;quot;]&amp;lt;/expression&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;dataType&amp;quot;&amp;gt;integer&amp;lt;/property&amp;gt;&lt;br /&gt;                &amp;lt;/structure&amp;gt;&lt;br /&gt;                &amp;lt;structure&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;name&amp;quot;&amp;gt;TOTALORDERS&amp;lt;/property&amp;gt;&lt;br /&gt;                    &amp;lt;text-property name=&amp;quot;displayName&amp;quot;&amp;gt;TOTALORDERS&amp;lt;/text-property&amp;gt;&lt;br /&gt;                    &amp;lt;expression name=&amp;quot;expression&amp;quot; type=&amp;quot;javascript&amp;quot;&amp;gt;dataSetRow[&amp;quot;TOTALORDERS&amp;quot;]&amp;lt;/expression&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;dataType&amp;quot;&amp;gt;float&amp;lt;/property&amp;gt;&lt;br /&gt;                &amp;lt;/structure&amp;gt;&lt;br /&gt;                &amp;lt;structure&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;name&amp;quot;&amp;gt;TotalCustomerCount&amp;lt;/property&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;dataType&amp;quot;&amp;gt;integer&amp;lt;/property&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;aggregateFunction&amp;quot;&amp;gt;COUNT&amp;lt;/property&amp;gt;&lt;br /&gt;                    &amp;lt;list-property name=&amp;quot;arguments&amp;quot;&amp;gt;&lt;br /&gt;                        &amp;lt;structure&amp;gt;&lt;br /&gt;                            &amp;lt;property name=&amp;quot;name&amp;quot;&amp;gt;Expression&amp;lt;/property&amp;gt;&lt;br /&gt;                        &amp;lt;/structure&amp;gt;&lt;br /&gt;                    &amp;lt;/list-property&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;allowExport&amp;quot;&amp;gt;true&amp;lt;/property&amp;gt;&lt;br /&gt;                &amp;lt;/structure&amp;gt;&lt;br /&gt;            &amp;lt;/list-property&amp;gt;&lt;br /&gt;            &amp;lt;list-property name=&amp;quot;sort&amp;quot;&amp;gt;&lt;br /&gt;                &amp;lt;structure&amp;gt;&lt;br /&gt;                    &amp;lt;expression name=&amp;quot;key&amp;quot; type=&amp;quot;javascript&amp;quot;&amp;gt;row[&amp;quot;TOTALORDERS&amp;quot;]&amp;lt;/expression&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;direction&amp;quot;&amp;gt;desc&amp;lt;/property&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;strength&amp;quot;&amp;gt;-1&amp;lt;/property&amp;gt;&lt;br /&gt;                &amp;lt;/structure&amp;gt;&lt;br /&gt;            &amp;lt;/list-property&amp;gt;&lt;br /&gt;            &amp;lt;column id=&amp;quot;103&amp;quot;/&amp;gt;&lt;br /&gt;            &amp;lt;column id=&amp;quot;96&amp;quot;/&amp;gt;&lt;br /&gt;            &amp;lt;column id=&amp;quot;97&amp;quot;/&amp;gt;&lt;br /&gt;            &amp;lt;column id=&amp;quot;98&amp;quot;/&amp;gt;&lt;br /&gt;            &amp;lt;header&amp;gt;&lt;br /&gt;                &amp;lt;row id=&amp;quot;78&amp;quot;&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;backgroundColor&amp;quot;&amp;gt;#808080&amp;lt;/property&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;fontWeight&amp;quot;&amp;gt;bold&amp;lt;/property&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;textAlign&amp;quot;&amp;gt;left&amp;lt;/property&amp;gt;&lt;br /&gt;                    &amp;lt;cell id=&amp;quot;100&amp;quot;&amp;gt;&lt;br /&gt;                        &amp;lt;label id=&amp;quot;105&amp;quot;&amp;gt;&lt;br /&gt;                            &amp;lt;text-property name=&amp;quot;text&amp;quot;&amp;gt;LINE NUMBER&amp;lt;/text-property&amp;gt;&lt;br /&gt;                        &amp;lt;/label&amp;gt;&lt;br /&gt;                    &amp;lt;/cell&amp;gt;&lt;br /&gt;                    &amp;lt;cell id=&amp;quot;79&amp;quot;&amp;gt;&lt;br /&gt;                        &amp;lt;label id=&amp;quot;82&amp;quot;&amp;gt;&lt;br /&gt;                            &amp;lt;text-property name=&amp;quot;text&amp;quot;&amp;gt;CUSTOMER NUMBER&amp;lt;/text-property&amp;gt;&lt;br /&gt;                        &amp;lt;/label&amp;gt;&lt;br /&gt;                    &amp;lt;/cell&amp;gt;&lt;br /&gt;                    &amp;lt;cell id=&amp;quot;81&amp;quot;&amp;gt;&lt;br /&gt;                        &amp;lt;label id=&amp;quot;99&amp;quot;&amp;gt;&lt;br /&gt;                            &amp;lt;text-property name=&amp;quot;text&amp;quot;&amp;gt;CUSTOMER NAME&amp;lt;/text-property&amp;gt;&lt;br /&gt;                        &amp;lt;/label&amp;gt;&lt;br /&gt;                    &amp;lt;/cell&amp;gt;&lt;br /&gt;                    &amp;lt;cell id=&amp;quot;83&amp;quot;&amp;gt;&lt;br /&gt;                        &amp;lt;label id=&amp;quot;84&amp;quot;&amp;gt;&lt;br /&gt;                            &amp;lt;text-property name=&amp;quot;text&amp;quot;&amp;gt;TOTAL ORDERS&amp;lt;/text-property&amp;gt;&lt;br /&gt;                        &amp;lt;/label&amp;gt;&lt;br /&gt;                    &amp;lt;/cell&amp;gt;&lt;br /&gt;                &amp;lt;/row&amp;gt;&lt;br /&gt;            &amp;lt;/header&amp;gt;&lt;br /&gt;            &amp;lt;detail&amp;gt;&lt;br /&gt;                &amp;lt;row id=&amp;quot;85&amp;quot;&amp;gt;&lt;br /&gt;                    &amp;lt;list-property name=&amp;quot;highlightRules&amp;quot;&amp;gt;&lt;br /&gt;                        &amp;lt;structure&amp;gt;&lt;br /&gt;                            &amp;lt;property name=&amp;quot;operator&amp;quot;&amp;gt;eq&amp;lt;/property&amp;gt;&lt;br /&gt;                            &amp;lt;property name=&amp;quot;backgroundColor&amp;quot;&amp;gt;#C0C0C0&amp;lt;/property&amp;gt;&lt;br /&gt;                            &amp;lt;property name=&amp;quot;fontSize&amp;quot;&amp;gt;10pt&amp;lt;/property&amp;gt;&lt;br /&gt;                            &amp;lt;expression name=&amp;quot;testExpr&amp;quot; type=&amp;quot;javascript&amp;quot;&amp;gt;row.__rownum % 2&amp;lt;/expression&amp;gt;&lt;br /&gt;                            &amp;lt;simple-property-list name=&amp;quot;value1&amp;quot;&amp;gt;&lt;br /&gt;                                &amp;lt;value type=&amp;quot;javascript&amp;quot;&amp;gt;1&amp;lt;/value&amp;gt;&lt;br /&gt;                            &amp;lt;/simple-property-list&amp;gt;&lt;br /&gt;                        &amp;lt;/structure&amp;gt;&lt;br /&gt;                    &amp;lt;/list-property&amp;gt;&lt;br /&gt;                    &amp;lt;list-property name=&amp;quot;visibility&amp;quot;&amp;gt;&lt;br /&gt;                        &amp;lt;structure&amp;gt;&lt;br /&gt;                            &amp;lt;property name=&amp;quot;format&amp;quot;&amp;gt;all&amp;lt;/property&amp;gt;&lt;br /&gt;                            &amp;lt;expression name=&amp;quot;valueExpr&amp;quot; type=&amp;quot;javascript&amp;quot;&amp;gt;row.__rownum &amp;gt; 9&amp;lt;/expression&amp;gt;&lt;br /&gt;                        &amp;lt;/structure&amp;gt;&lt;br /&gt;                    &amp;lt;/list-property&amp;gt;&lt;br /&gt;                    &amp;lt;cell id=&amp;quot;101&amp;quot;&amp;gt;&lt;br /&gt;                        &amp;lt;text-data id=&amp;quot;104&amp;quot;&amp;gt;&lt;br /&gt;                            &amp;lt;expression name=&amp;quot;valueExpr&amp;quot;&amp;gt;row.__rownum + 1&amp;lt;/expression&amp;gt;&lt;br /&gt;                            &amp;lt;property name=&amp;quot;contentType&amp;quot;&amp;gt;html&amp;lt;/property&amp;gt;&lt;br /&gt;                        &amp;lt;/text-data&amp;gt;&lt;br /&gt;                    &amp;lt;/cell&amp;gt;&lt;br /&gt;                    &amp;lt;cell id=&amp;quot;86&amp;quot;&amp;gt;&lt;br /&gt;                        &amp;lt;data id=&amp;quot;89&amp;quot;&amp;gt;&lt;br /&gt;                            &amp;lt;property name=&amp;quot;resultSetColumn&amp;quot;&amp;gt;CUSTOMERNUMBER&amp;lt;/property&amp;gt;&lt;br /&gt;                        &amp;lt;/data&amp;gt;&lt;br /&gt;                    &amp;lt;/cell&amp;gt;&lt;br /&gt;                    &amp;lt;cell id=&amp;quot;88&amp;quot;&amp;gt;&lt;br /&gt;                        &amp;lt;data id=&amp;quot;87&amp;quot;&amp;gt;&lt;br /&gt;                            &amp;lt;property name=&amp;quot;resultSetColumn&amp;quot;&amp;gt;CUSTOMERNAME&amp;lt;/property&amp;gt;&lt;br /&gt;                        &amp;lt;/data&amp;gt;&lt;br /&gt;                    &amp;lt;/cell&amp;gt;&lt;br /&gt;                    &amp;lt;cell id=&amp;quot;90&amp;quot;&amp;gt;&lt;br /&gt;                        &amp;lt;data id=&amp;quot;91&amp;quot;&amp;gt;&lt;br /&gt;                            &amp;lt;structure name=&amp;quot;numberFormat&amp;quot;&amp;gt;&lt;br /&gt;                                &amp;lt;property name=&amp;quot;category&amp;quot;&amp;gt;Currency&amp;lt;/property&amp;gt;&lt;br /&gt;                                &amp;lt;property name=&amp;quot;pattern&amp;quot;&amp;gt;$#,##0.00{RoundingMode=HALF_UP}&amp;lt;/property&amp;gt;&lt;br /&gt;                            &amp;lt;/structure&amp;gt;&lt;br /&gt;                            &amp;lt;property name=&amp;quot;resultSetColumn&amp;quot;&amp;gt;TOTALORDERS&amp;lt;/property&amp;gt;&lt;br /&gt;                        &amp;lt;/data&amp;gt;&lt;br /&gt;                    &amp;lt;/cell&amp;gt;&lt;br /&gt;                &amp;lt;/row&amp;gt;&lt;br /&gt;            &amp;lt;/detail&amp;gt;&lt;br /&gt;            &amp;lt;footer&amp;gt;&lt;br /&gt;                &amp;lt;row id=&amp;quot;92&amp;quot;&amp;gt;&lt;br /&gt;                    &amp;lt;cell id=&amp;quot;102&amp;quot;&amp;gt;&lt;br /&gt;                        &amp;lt;property name=&amp;quot;backgroundColor&amp;quot;&amp;gt;yellow&amp;lt;/property&amp;gt;&lt;br /&gt;                        &amp;lt;property name=&amp;quot;fontWeight&amp;quot;&amp;gt;bold&amp;lt;/property&amp;gt;&lt;br /&gt;                        &amp;lt;label id=&amp;quot;106&amp;quot;&amp;gt;&lt;br /&gt;                            &amp;lt;text-property name=&amp;quot;text&amp;quot;&amp;gt;Total Customers:&amp;lt;/text-property&amp;gt;&lt;br /&gt;                        &amp;lt;/label&amp;gt;&lt;br /&gt;                    &amp;lt;/cell&amp;gt;&lt;br /&gt;                    &amp;lt;cell id=&amp;quot;93&amp;quot;&amp;gt;&lt;br /&gt;                        &amp;lt;data id=&amp;quot;107&amp;quot;&amp;gt;&lt;br /&gt;                            &amp;lt;property name=&amp;quot;resultSetColumn&amp;quot;&amp;gt;TotalCustomerCount&amp;lt;/property&amp;gt;&lt;br /&gt;                        &amp;lt;/data&amp;gt;&lt;br /&gt;                    &amp;lt;/cell&amp;gt;&lt;br /&gt;                    &amp;lt;cell id=&amp;quot;94&amp;quot;/&amp;gt;&lt;br /&gt;                    &amp;lt;cell id=&amp;quot;95&amp;quot;/&amp;gt;&lt;br /&gt;                &amp;lt;/row&amp;gt;&lt;br /&gt;            &amp;lt;/footer&amp;gt;&lt;br /&gt;        &amp;lt;/table&amp;gt;&lt;br /&gt;    &amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/report&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16506996-4269024271402425644?l=digiassn.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=kCSu8Z6tnyY:RibcR55K_vw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=kCSu8Z6tnyY:RibcR55K_vw:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=kCSu8Z6tnyY:RibcR55K_vw:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://digiassn.blogspot.com/feeds/4269024271402425644/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=16506996&amp;postID=4269024271402425644&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/16506996/posts/default/4269024271402425644?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/16506996/posts/default/4269024271402425644?v=2" /><link rel="alternate" type="text/html" href="http://digiassn.blogspot.com/2012/02/birt-showing-top-10-and-still.html" title="BIRT: Showing Top 10 and Still Displaying Total Count" /><author><name>John Ward</name><uri>http://www.blogger.com/profile/10741149622435353727</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;AkEHQng8cCp7ImA9WhVTEE8.&quot;"><id>tag:blogger.com,1999:blog-16506996.post-3145102053471847894</id><published>2012-02-23T13:23:00.001-07:00</published><updated>2012-02-23T13:23:53.678-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-02-23T13:23:53.678-07:00</app:edited><title>BIRT: Dynamic Hide Table and Not Execute Dataset</title><content type="html">An interesting question came up on the BIRT Exchange. Given a particular parameter or some business logic, how could you “hide” a table. And by hide, we mean remove a table so that it does not execute the Data Set it is bound to. This is actually pretty simple. The below report demonstrates removing a table dynamically based on a parameter set to true or false. The catch is that you need to give the table a name in the Property Editor. &lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;&amp;lt;report xmlns=&amp;quot;http://www.eclipse.org/birt/2005/design&amp;quot; version=&amp;quot;3.2.22&amp;quot; id=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;    &amp;lt;property name=&amp;quot;createdBy&amp;quot;&amp;gt;Eclipse BIRT Designer Version 3.7.1.v20110905 Build &amp;amp;lt;3.7.1.v20110905-1820&amp;gt;&amp;lt;/property&amp;gt;&lt;br /&gt;    &amp;lt;property name=&amp;quot;units&amp;quot;&amp;gt;in&amp;lt;/property&amp;gt;&lt;br /&gt;    &amp;lt;method name=&amp;quot;beforeFactory&amp;quot;&amp;gt;&amp;lt;![CDATA[if (params[&amp;quot;prmHideTable&amp;quot;].value)&lt;br /&gt;{&lt;br /&gt;    reportContext.getDesignHandle().findElement(&amp;quot;TableToHide&amp;quot;).drop();&lt;br /&gt;}]]&amp;gt;&amp;lt;/method&amp;gt;&lt;br /&gt;    &amp;lt;property name=&amp;quot;iconFile&amp;quot;&amp;gt;/templates/blank_report.gif&amp;lt;/property&amp;gt;&lt;br /&gt;    &amp;lt;property name=&amp;quot;bidiLayoutOrientation&amp;quot;&amp;gt;ltr&amp;lt;/property&amp;gt;&lt;br /&gt;    &amp;lt;property name=&amp;quot;imageDPI&amp;quot;&amp;gt;96&amp;lt;/property&amp;gt;&lt;br /&gt;    &amp;lt;parameters&amp;gt;&lt;br /&gt;        &amp;lt;scalar-parameter name=&amp;quot;prmHideTable&amp;quot; id=&amp;quot;7&amp;quot;&amp;gt;&lt;br /&gt;            &amp;lt;text-property name=&amp;quot;promptText&amp;quot;&amp;gt;Should we hide the table?&amp;lt;/text-property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;valueType&amp;quot;&amp;gt;static&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;dataType&amp;quot;&amp;gt;boolean&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;distinct&amp;quot;&amp;gt;true&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;simple-property-list name=&amp;quot;defaultValue&amp;quot;&amp;gt;&lt;br /&gt;                &amp;lt;value type=&amp;quot;constant&amp;quot;&amp;gt;False&amp;lt;/value&amp;gt;&lt;br /&gt;            &amp;lt;/simple-property-list&amp;gt;&lt;br /&gt;            &amp;lt;list-property name=&amp;quot;selectionList&amp;quot;/&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;paramType&amp;quot;&amp;gt;simple&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;controlType&amp;quot;&amp;gt;check-box&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;structure name=&amp;quot;format&amp;quot;/&amp;gt;&lt;br /&gt;        &amp;lt;/scalar-parameter&amp;gt;&lt;br /&gt;    &amp;lt;/parameters&amp;gt;&lt;br /&gt;    &amp;lt;data-sources&amp;gt;&lt;br /&gt;        &amp;lt;oda-data-source extensionID=&amp;quot;org.eclipse.birt.report.data.oda.jdbc&amp;quot; name=&amp;quot;srcClassicModels&amp;quot; id=&amp;quot;9&amp;quot;&amp;gt;&lt;br /&gt;            &amp;lt;list-property name=&amp;quot;privateDriverProperties&amp;quot;&amp;gt;&lt;br /&gt;                &amp;lt;ex-property&amp;gt;&lt;br /&gt;                    &amp;lt;name&amp;gt;contentBidiFormatStr&amp;lt;/name&amp;gt;&lt;br /&gt;                    &amp;lt;value&amp;gt;ILYNN&amp;lt;/value&amp;gt;&lt;br /&gt;                &amp;lt;/ex-property&amp;gt;&lt;br /&gt;                &amp;lt;ex-property&amp;gt;&lt;br /&gt;                    &amp;lt;name&amp;gt;metadataBidiFormatStr&amp;lt;/name&amp;gt;&lt;br /&gt;                    &amp;lt;value&amp;gt;ILYNN&amp;lt;/value&amp;gt;&lt;br /&gt;                &amp;lt;/ex-property&amp;gt;&lt;br /&gt;            &amp;lt;/list-property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;odaDriverClass&amp;quot;&amp;gt;org.eclipse.birt.report.data.oda.sampledb.Driver&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;odaURL&amp;quot;&amp;gt;jdbc:classicmodels:sampledb&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;odaUser&amp;quot;&amp;gt;ClassicModels&amp;lt;/property&amp;gt;&lt;br /&gt;        &amp;lt;/oda-data-source&amp;gt;&lt;br /&gt;    &amp;lt;/data-sources&amp;gt;&lt;br /&gt;    &amp;lt;data-sets&amp;gt;&lt;br /&gt;        &amp;lt;oda-data-set extensionID=&amp;quot;org.eclipse.birt.report.data.oda.jdbc.JdbcSelectDataSet&amp;quot; name=&amp;quot;setCustomers&amp;quot; id=&amp;quot;10&amp;quot;&amp;gt;&lt;br /&gt;            &amp;lt;list-property name=&amp;quot;columnHints&amp;quot;&amp;gt;&lt;br /&gt;                &amp;lt;structure&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;columnName&amp;quot;&amp;gt;CUSTOMERNUMBER&amp;lt;/property&amp;gt;&lt;br /&gt;                    &amp;lt;text-property name=&amp;quot;displayName&amp;quot;&amp;gt;CUSTOMERNUMBER&amp;lt;/text-property&amp;gt;&lt;br /&gt;                    &amp;lt;text-property name=&amp;quot;heading&amp;quot;&amp;gt;CUSTOMERNUMBER&amp;lt;/text-property&amp;gt;&lt;br /&gt;                &amp;lt;/structure&amp;gt;&lt;br /&gt;                &amp;lt;structure&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;columnName&amp;quot;&amp;gt;CUSTOMERNAME&amp;lt;/property&amp;gt;&lt;br /&gt;                    &amp;lt;text-property name=&amp;quot;displayName&amp;quot;&amp;gt;CUSTOMERNAME&amp;lt;/text-property&amp;gt;&lt;br /&gt;                    &amp;lt;text-property name=&amp;quot;heading&amp;quot;&amp;gt;CUSTOMERNAME&amp;lt;/text-property&amp;gt;&lt;br /&gt;                &amp;lt;/structure&amp;gt;&lt;br /&gt;            &amp;lt;/list-property&amp;gt;&lt;br /&gt;            &amp;lt;structure name=&amp;quot;cachedMetaData&amp;quot;&amp;gt;&lt;br /&gt;                &amp;lt;list-property name=&amp;quot;resultSet&amp;quot;&amp;gt;&lt;br /&gt;                    &amp;lt;structure&amp;gt;&lt;br /&gt;                        &amp;lt;property name=&amp;quot;position&amp;quot;&amp;gt;1&amp;lt;/property&amp;gt;&lt;br /&gt;                        &amp;lt;property name=&amp;quot;name&amp;quot;&amp;gt;CUSTOMERNUMBER&amp;lt;/property&amp;gt;&lt;br /&gt;                        &amp;lt;property name=&amp;quot;dataType&amp;quot;&amp;gt;integer&amp;lt;/property&amp;gt;&lt;br /&gt;                    &amp;lt;/structure&amp;gt;&lt;br /&gt;                    &amp;lt;structure&amp;gt;&lt;br /&gt;                        &amp;lt;property name=&amp;quot;position&amp;quot;&amp;gt;2&amp;lt;/property&amp;gt;&lt;br /&gt;                        &amp;lt;property name=&amp;quot;name&amp;quot;&amp;gt;CUSTOMERNAME&amp;lt;/property&amp;gt;&lt;br /&gt;                        &amp;lt;property name=&amp;quot;dataType&amp;quot;&amp;gt;string&amp;lt;/property&amp;gt;&lt;br /&gt;                    &amp;lt;/structure&amp;gt;&lt;br /&gt;                &amp;lt;/list-property&amp;gt;&lt;br /&gt;            &amp;lt;/structure&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;dataSource&amp;quot;&amp;gt;srcClassicModels&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;list-property name=&amp;quot;resultSet&amp;quot;&amp;gt;&lt;br /&gt;                &amp;lt;structure&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;position&amp;quot;&amp;gt;1&amp;lt;/property&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;name&amp;quot;&amp;gt;CUSTOMERNUMBER&amp;lt;/property&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;nativeName&amp;quot;&amp;gt;CUSTOMERNUMBER&amp;lt;/property&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;dataType&amp;quot;&amp;gt;integer&amp;lt;/property&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;nativeDataType&amp;quot;&amp;gt;4&amp;lt;/property&amp;gt;&lt;br /&gt;                &amp;lt;/structure&amp;gt;&lt;br /&gt;                &amp;lt;structure&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;position&amp;quot;&amp;gt;2&amp;lt;/property&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;name&amp;quot;&amp;gt;CUSTOMERNAME&amp;lt;/property&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;nativeName&amp;quot;&amp;gt;CUSTOMERNAME&amp;lt;/property&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;dataType&amp;quot;&amp;gt;string&amp;lt;/property&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;nativeDataType&amp;quot;&amp;gt;12&amp;lt;/property&amp;gt;&lt;br /&gt;                &amp;lt;/structure&amp;gt;&lt;br /&gt;            &amp;lt;/list-property&amp;gt;&lt;br /&gt;            &amp;lt;xml-property name=&amp;quot;queryText&amp;quot;&amp;gt;&amp;lt;![CDATA[select &lt;br /&gt;    CLASSICMODELS.CUSTOMERS.CUSTOMERNUMBER,&lt;br /&gt;    CLASSICMODELS.CUSTOMERS.CUSTOMERNAME&lt;br /&gt;from &lt;br /&gt;    CLASSICMODELS.CUSTOMERS]]&amp;gt;&amp;lt;/xml-property&amp;gt;&lt;br /&gt;            &amp;lt;xml-property name=&amp;quot;designerValues&amp;quot;&amp;gt;&amp;lt;![CDATA[&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;UTF-8&amp;quot;?&amp;gt;&lt;br /&gt;&amp;lt;model:DesignValues xmlns:design=&amp;quot;http://www.eclipse.org/datatools/connectivity/oda/design&amp;quot; xmlns:model=&amp;quot;http://www.eclipse.org/birt/report/model/adapter/odaModel&amp;quot;&amp;gt;&lt;br /&gt;  &amp;lt;Version&amp;gt;2.0&amp;lt;/Version&amp;gt;&lt;br /&gt;  &amp;lt;design:ResultSets derivedMetaData=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;    &amp;lt;design:resultSetDefinitions&amp;gt;&lt;br /&gt;      &amp;lt;design:resultSetColumns&amp;gt;&lt;br /&gt;        &amp;lt;design:resultColumnDefinitions&amp;gt;&lt;br /&gt;          &amp;lt;design:attributes&amp;gt;&lt;br /&gt;            &amp;lt;design:identifier&amp;gt;&lt;br /&gt;              &amp;lt;design:name&amp;gt;CUSTOMERNUMBER&amp;lt;/design:name&amp;gt;&lt;br /&gt;              &amp;lt;design:position&amp;gt;1&amp;lt;/design:position&amp;gt;&lt;br /&gt;            &amp;lt;/design:identifier&amp;gt;&lt;br /&gt;            &amp;lt;design:nativeDataTypeCode&amp;gt;4&amp;lt;/design:nativeDataTypeCode&amp;gt;&lt;br /&gt;            &amp;lt;design:precision&amp;gt;10&amp;lt;/design:precision&amp;gt;&lt;br /&gt;            &amp;lt;design:scale&amp;gt;0&amp;lt;/design:scale&amp;gt;&lt;br /&gt;            &amp;lt;design:nullability&amp;gt;Nullable&amp;lt;/design:nullability&amp;gt;&lt;br /&gt;            &amp;lt;design:uiHints&amp;gt;&lt;br /&gt;              &amp;lt;design:displayName&amp;gt;CUSTOMERNUMBER&amp;lt;/design:displayName&amp;gt;&lt;br /&gt;            &amp;lt;/design:uiHints&amp;gt;&lt;br /&gt;          &amp;lt;/design:attributes&amp;gt;&lt;br /&gt;          &amp;lt;design:usageHints&amp;gt;&lt;br /&gt;            &amp;lt;design:label&amp;gt;CUSTOMERNUMBER&amp;lt;/design:label&amp;gt;&lt;br /&gt;            &amp;lt;design:formattingHints&amp;gt;&lt;br /&gt;              &amp;lt;design:displaySize&amp;gt;11&amp;lt;/design:displaySize&amp;gt;&lt;br /&gt;            &amp;lt;/design:formattingHints&amp;gt;&lt;br /&gt;          &amp;lt;/design:usageHints&amp;gt;&lt;br /&gt;        &amp;lt;/design:resultColumnDefinitions&amp;gt;&lt;br /&gt;        &amp;lt;design:resultColumnDefinitions&amp;gt;&lt;br /&gt;          &amp;lt;design:attributes&amp;gt;&lt;br /&gt;            &amp;lt;design:identifier&amp;gt;&lt;br /&gt;              &amp;lt;design:name&amp;gt;CUSTOMERNAME&amp;lt;/design:name&amp;gt;&lt;br /&gt;              &amp;lt;design:position&amp;gt;2&amp;lt;/design:position&amp;gt;&lt;br /&gt;            &amp;lt;/design:identifier&amp;gt;&lt;br /&gt;            &amp;lt;design:nativeDataTypeCode&amp;gt;12&amp;lt;/design:nativeDataTypeCode&amp;gt;&lt;br /&gt;            &amp;lt;design:precision&amp;gt;50&amp;lt;/design:precision&amp;gt;&lt;br /&gt;            &amp;lt;design:scale&amp;gt;0&amp;lt;/design:scale&amp;gt;&lt;br /&gt;            &amp;lt;design:nullability&amp;gt;Nullable&amp;lt;/design:nullability&amp;gt;&lt;br /&gt;            &amp;lt;design:uiHints&amp;gt;&lt;br /&gt;              &amp;lt;design:displayName&amp;gt;CUSTOMERNAME&amp;lt;/design:displayName&amp;gt;&lt;br /&gt;            &amp;lt;/design:uiHints&amp;gt;&lt;br /&gt;          &amp;lt;/design:attributes&amp;gt;&lt;br /&gt;          &amp;lt;design:usageHints&amp;gt;&lt;br /&gt;            &amp;lt;design:label&amp;gt;CUSTOMERNAME&amp;lt;/design:label&amp;gt;&lt;br /&gt;            &amp;lt;design:formattingHints&amp;gt;&lt;br /&gt;              &amp;lt;design:displaySize&amp;gt;50&amp;lt;/design:displaySize&amp;gt;&lt;br /&gt;            &amp;lt;/design:formattingHints&amp;gt;&lt;br /&gt;          &amp;lt;/design:usageHints&amp;gt;&lt;br /&gt;        &amp;lt;/design:resultColumnDefinitions&amp;gt;&lt;br /&gt;      &amp;lt;/design:resultSetColumns&amp;gt;&lt;br /&gt;      &amp;lt;design:criteria/&amp;gt;&lt;br /&gt;    &amp;lt;/design:resultSetDefinitions&amp;gt;&lt;br /&gt;  &amp;lt;/design:ResultSets&amp;gt;&lt;br /&gt;&amp;lt;/model:DesignValues&amp;gt;]]&amp;gt;&amp;lt;/xml-property&amp;gt;&lt;br /&gt;        &amp;lt;/oda-data-set&amp;gt;&lt;br /&gt;    &amp;lt;/data-sets&amp;gt;&lt;br /&gt;    &amp;lt;styles&amp;gt;&lt;br /&gt;        &amp;lt;style name=&amp;quot;report&amp;quot; id=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;fontFamily&amp;quot;&amp;gt;sans-serif&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;fontSize&amp;quot;&amp;gt;10pt&amp;lt;/property&amp;gt;&lt;br /&gt;        &amp;lt;/style&amp;gt;&lt;br /&gt;        &amp;lt;style name=&amp;quot;crosstab-cell&amp;quot; id=&amp;quot;5&amp;quot;&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderBottomColor&amp;quot;&amp;gt;#CCCCCC&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderBottomStyle&amp;quot;&amp;gt;solid&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderBottomWidth&amp;quot;&amp;gt;1pt&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderLeftColor&amp;quot;&amp;gt;#CCCCCC&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderLeftStyle&amp;quot;&amp;gt;solid&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderLeftWidth&amp;quot;&amp;gt;1pt&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderRightColor&amp;quot;&amp;gt;#CCCCCC&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderRightStyle&amp;quot;&amp;gt;solid&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderRightWidth&amp;quot;&amp;gt;1pt&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderTopColor&amp;quot;&amp;gt;#CCCCCC&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderTopStyle&amp;quot;&amp;gt;solid&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderTopWidth&amp;quot;&amp;gt;1pt&amp;lt;/property&amp;gt;&lt;br /&gt;        &amp;lt;/style&amp;gt;&lt;br /&gt;        &amp;lt;style name=&amp;quot;crosstab&amp;quot; id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderBottomColor&amp;quot;&amp;gt;#CCCCCC&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderBottomStyle&amp;quot;&amp;gt;solid&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderBottomWidth&amp;quot;&amp;gt;1pt&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderLeftColor&amp;quot;&amp;gt;#CCCCCC&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderLeftStyle&amp;quot;&amp;gt;solid&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderLeftWidth&amp;quot;&amp;gt;1pt&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderRightColor&amp;quot;&amp;gt;#CCCCCC&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderRightStyle&amp;quot;&amp;gt;solid&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderRightWidth&amp;quot;&amp;gt;1pt&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderTopColor&amp;quot;&amp;gt;#CCCCCC&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderTopStyle&amp;quot;&amp;gt;solid&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;borderTopWidth&amp;quot;&amp;gt;1pt&amp;lt;/property&amp;gt;&lt;br /&gt;        &amp;lt;/style&amp;gt;&lt;br /&gt;    &amp;lt;/styles&amp;gt;&lt;br /&gt;    &amp;lt;page-setup&amp;gt;&lt;br /&gt;        &amp;lt;simple-master-page name=&amp;quot;Simple MasterPage&amp;quot; id=&amp;quot;2&amp;quot;&amp;gt;&lt;br /&gt;            &amp;lt;page-footer&amp;gt;&lt;br /&gt;                &amp;lt;text id=&amp;quot;3&amp;quot;&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;contentType&amp;quot;&amp;gt;html&amp;lt;/property&amp;gt;&lt;br /&gt;                    &amp;lt;text-property name=&amp;quot;content&amp;quot;&amp;gt;&amp;lt;![CDATA[&amp;lt;value-of&amp;gt;new Date()&amp;lt;/value-of&amp;gt;]]&amp;gt;&amp;lt;/text-property&amp;gt;&lt;br /&gt;                &amp;lt;/text&amp;gt;&lt;br /&gt;            &amp;lt;/page-footer&amp;gt;&lt;br /&gt;        &amp;lt;/simple-master-page&amp;gt;&lt;br /&gt;    &amp;lt;/page-setup&amp;gt;&lt;br /&gt;    &amp;lt;body&amp;gt;&lt;br /&gt;        &amp;lt;label id=&amp;quot;8&amp;quot;&amp;gt;&lt;br /&gt;            &amp;lt;text-property name=&amp;quot;text&amp;quot;&amp;gt;I am a report. I have a table that will display if my hide parameter is set to false.&amp;lt;/text-property&amp;gt;&lt;br /&gt;        &amp;lt;/label&amp;gt;&lt;br /&gt;        &amp;lt;table name=&amp;quot;TableToHide&amp;quot; id=&amp;quot;11&amp;quot;&amp;gt;&lt;br /&gt;            &amp;lt;property name=&amp;quot;dataSet&amp;quot;&amp;gt;setCustomers&amp;lt;/property&amp;gt;&lt;br /&gt;            &amp;lt;list-property name=&amp;quot;boundDataColumns&amp;quot;&amp;gt;&lt;br /&gt;                &amp;lt;structure&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;name&amp;quot;&amp;gt;CUSTOMERNUMBER&amp;lt;/property&amp;gt;&lt;br /&gt;                    &amp;lt;text-property name=&amp;quot;displayName&amp;quot;&amp;gt;CUSTOMERNUMBER&amp;lt;/text-property&amp;gt;&lt;br /&gt;                    &amp;lt;expression name=&amp;quot;expression&amp;quot; type=&amp;quot;javascript&amp;quot;&amp;gt;dataSetRow[&amp;quot;CUSTOMERNUMBER&amp;quot;]&amp;lt;/expression&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;dataType&amp;quot;&amp;gt;integer&amp;lt;/property&amp;gt;&lt;br /&gt;                &amp;lt;/structure&amp;gt;&lt;br /&gt;                &amp;lt;structure&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;name&amp;quot;&amp;gt;CUSTOMERNAME&amp;lt;/property&amp;gt;&lt;br /&gt;                    &amp;lt;text-property name=&amp;quot;displayName&amp;quot;&amp;gt;CUSTOMERNAME&amp;lt;/text-property&amp;gt;&lt;br /&gt;                    &amp;lt;expression name=&amp;quot;expression&amp;quot; type=&amp;quot;javascript&amp;quot;&amp;gt;dataSetRow[&amp;quot;CUSTOMERNAME&amp;quot;]&amp;lt;/expression&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;dataType&amp;quot;&amp;gt;string&amp;lt;/property&amp;gt;&lt;br /&gt;                &amp;lt;/structure&amp;gt;&lt;br /&gt;            &amp;lt;/list-property&amp;gt;&lt;br /&gt;            &amp;lt;column id=&amp;quot;25&amp;quot;/&amp;gt;&lt;br /&gt;            &amp;lt;column id=&amp;quot;26&amp;quot;/&amp;gt;&lt;br /&gt;            &amp;lt;header&amp;gt;&lt;br /&gt;                &amp;lt;row id=&amp;quot;12&amp;quot;&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;backgroundColor&amp;quot;&amp;gt;silver&amp;lt;/property&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;fontWeight&amp;quot;&amp;gt;bold&amp;lt;/property&amp;gt;&lt;br /&gt;                    &amp;lt;property name=&amp;quot;textAlign&amp;quot;&amp;gt;left&amp;lt;/property&amp;gt;&lt;br /&gt;                    &amp;lt;cell id=&amp;quot;13&amp;quot;&amp;gt;&lt;br /&gt;                        &amp;lt;label id=&amp;quot;14&amp;quot;&amp;gt;&lt;br /&gt;                            &amp;lt;text-property name=&amp;quot;text&amp;quot;&amp;gt;CUSTOMERNUMBER&amp;lt;/text-property&amp;gt;&lt;br /&gt;                        &amp;lt;/label&amp;gt;&lt;br /&gt;                    &amp;lt;/cell&amp;gt;&lt;br /&gt;                    &amp;lt;cell id=&amp;quot;15&amp;quot;&amp;gt;&lt;br /&gt;                        &amp;lt;label id=&amp;quot;16&amp;quot;&amp;gt;&lt;br /&gt;                            &amp;lt;text-property name=&amp;quot;text&amp;quot;&amp;gt;CUSTOMERNAME&amp;lt;/text-property&amp;gt;&lt;br /&gt;                        &amp;lt;/label&amp;gt;&lt;br /&gt;                    &amp;lt;/cell&amp;gt;&lt;br /&gt;                &amp;lt;/row&amp;gt;&lt;br /&gt;            &amp;lt;/header&amp;gt;&lt;br /&gt;            &amp;lt;detail&amp;gt;&lt;br /&gt;                &amp;lt;row id=&amp;quot;17&amp;quot;&amp;gt;&lt;br /&gt;                    &amp;lt;list-property name=&amp;quot;highlightRules&amp;quot;&amp;gt;&lt;br /&gt;                        &amp;lt;structure&amp;gt;&lt;br /&gt;                            &amp;lt;property name=&amp;quot;operator&amp;quot;&amp;gt;eq&amp;lt;/property&amp;gt;&lt;br /&gt;                            &amp;lt;property name=&amp;quot;backgroundColor&amp;quot;&amp;gt;#E1E1E1&amp;lt;/property&amp;gt;&lt;br /&gt;                            &amp;lt;expression name=&amp;quot;testExpr&amp;quot; type=&amp;quot;javascript&amp;quot;&amp;gt;row.__rownum % 2&amp;lt;/expression&amp;gt;&lt;br /&gt;                            &amp;lt;simple-property-list name=&amp;quot;value1&amp;quot;&amp;gt;&lt;br /&gt;                                &amp;lt;value type=&amp;quot;javascript&amp;quot;&amp;gt;0&amp;lt;/value&amp;gt;&lt;br /&gt;                            &amp;lt;/simple-property-list&amp;gt;&lt;br /&gt;                        &amp;lt;/structure&amp;gt;&lt;br /&gt;                    &amp;lt;/list-property&amp;gt;&lt;br /&gt;                    &amp;lt;cell id=&amp;quot;18&amp;quot;&amp;gt;&lt;br /&gt;                        &amp;lt;data id=&amp;quot;19&amp;quot;&amp;gt;&lt;br /&gt;                            &amp;lt;property name=&amp;quot;resultSetColumn&amp;quot;&amp;gt;CUSTOMERNUMBER&amp;lt;/property&amp;gt;&lt;br /&gt;                        &amp;lt;/data&amp;gt;&lt;br /&gt;                    &amp;lt;/cell&amp;gt;&lt;br /&gt;                    &amp;lt;cell id=&amp;quot;20&amp;quot;&amp;gt;&lt;br /&gt;                        &amp;lt;data id=&amp;quot;21&amp;quot;&amp;gt;&lt;br /&gt;                            &amp;lt;property name=&amp;quot;resultSetColumn&amp;quot;&amp;gt;CUSTOMERNAME&amp;lt;/property&amp;gt;&lt;br /&gt;                        &amp;lt;/data&amp;gt;&lt;br /&gt;                    &amp;lt;/cell&amp;gt;&lt;br /&gt;                &amp;lt;/row&amp;gt;&lt;br /&gt;            &amp;lt;/detail&amp;gt;&lt;br /&gt;            &amp;lt;footer&amp;gt;&lt;br /&gt;                &amp;lt;row id=&amp;quot;22&amp;quot;&amp;gt;&lt;br /&gt;                    &amp;lt;cell id=&amp;quot;23&amp;quot;/&amp;gt;&lt;br /&gt;                    &amp;lt;cell id=&amp;quot;24&amp;quot;/&amp;gt;&lt;br /&gt;                &amp;lt;/row&amp;gt;&lt;br /&gt;            &amp;lt;/footer&amp;gt;&lt;br /&gt;        &amp;lt;/table&amp;gt;&lt;br /&gt;    &amp;lt;/body&amp;gt;&lt;br /&gt;&amp;lt;/report&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16506996-3145102053471847894?l=digiassn.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=0fPiNbKayz0:A-7vMgX2lbE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=0fPiNbKayz0:A-7vMgX2lbE:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=0fPiNbKayz0:A-7vMgX2lbE:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://digiassn.blogspot.com/feeds/3145102053471847894/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=16506996&amp;postID=3145102053471847894&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/16506996/posts/default/3145102053471847894?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/16506996/posts/default/3145102053471847894?v=2" /><link rel="alternate" type="text/html" href="http://digiassn.blogspot.com/2012/02/birt-dynamic-hide-table-and-not-execute.html" title="BIRT: Dynamic Hide Table and Not Execute Dataset" /><author><name>John Ward</name><uri>http://www.blogger.com/profile/10741149622435353727</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DkICQ307fip7ImA9WhRVF00.&quot;"><id>tag:blogger.com,1999:blog-16506996.post-4875885441357344899</id><published>2012-01-16T01:57:00.002-07:00</published><updated>2012-01-16T02:02:42.306-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2012-01-16T02:02:42.306-07:00</app:edited><title>Things in the works.</title><content type="html">Lots of changes recently. I am unemployed now. Could not have come at a worst time, but at the same time I have made good use of my free time. Read lots of books, specifically about Specification by Example to address some of the short comings I have encountered with Agile methodologies, and I have taken the time to learn a few new languages. Groovy, Ruby, and a few others. Learned a lot about Magento as an eCommerce platform, and surprisingly it is very comparable to some of the big boys, even in its community edition. I have also refreshed my memory on Solr/Lucene. &lt;br /&gt;&lt;br /&gt;I will have some new articles coming up. I let too much B.S. keep me from maintaining this site previously, which is a shame because I really enjoyed it. Onward and upward.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16506996-4875885441357344899?l=digiassn.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=NSdsUmYhiRA:w2OP2-VtM9g:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=NSdsUmYhiRA:w2OP2-VtM9g:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=NSdsUmYhiRA:w2OP2-VtM9g:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://digiassn.blogspot.com/feeds/4875885441357344899/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=16506996&amp;postID=4875885441357344899&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/16506996/posts/default/4875885441357344899?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/16506996/posts/default/4875885441357344899?v=2" /><link rel="alternate" type="text/html" href="http://digiassn.blogspot.com/2012/01/things-in-works.html" title="Things in the works." /><author><name>John Ward</name><uri>http://www.blogger.com/profile/10741149622435353727</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;C04EQ345eyp7ImA9WhdUEEg.&quot;"><id>tag:blogger.com,1999:blog-16506996.post-209232136625373639</id><published>2011-09-21T21:10:00.006-06:00</published><updated>2011-09-26T09:45:02.023-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-09-26T09:45:02.023-06:00</app:edited><title>BIRT: Using Resource Bundles</title><content type="html">A question that has recently been posted on the BIRT Exchange has got me revisiting an old problem with BIRT, localization. BIRT has a localization mechanism built in, but this only works for labels with the UI. You can also use Javascript and the report context to access messages. But I wanted to look at another way to accomplish this same task? It would stand to reason that since BIRT is running inside OSGi, and OSGi is just a fancy layer on top of Java, that we should have access to the localization features in Java, right? That would be correct.&lt;br /&gt;&lt;br /&gt;I prefer to use Java Event Handlers for this. It is possible using Javascript event handlers, but that is a bit of a pain. So, in the following example, I will show a simple Java Report Event Adapter that will load up a Resource Bundle based on the Locale passed in from BIRT, and initialize a HashMap that can be used in BIRT to retrieve those values. &lt;br /&gt;&lt;br /&gt;The first thing I do is create a separate Java project, and extend the ReportEventAdapter class. I then created a initialize event, although this would work in the beforeFactory event as well. All you need to do is use the same coding you would use in Java to load the ResourceBundle, and retrieve your keys and values. Using the reportContext passed in, you can load the Locale, and set a global variable that can be used in the report design to retrieve those values. The Java code is below.&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;package com.digiassn.blogspot.birt.event.handlers;&lt;br /&gt;&lt;br /&gt;import java.util.HashMap;&lt;br /&gt;import java.util.ResourceBundle;&lt;br /&gt;&lt;br /&gt;import org.eclipse.birt.report.engine.api.script.IReportContext;&lt;br /&gt;import org.eclipse.birt.report.engine.api.script.ScriptException;&lt;br /&gt;import org.eclipse.birt.report.engine.api.script.eventadapter.ReportEventAdapter;&lt;br /&gt;&lt;br /&gt;public class ResourceReportEventAdapter extends ReportEventAdapter {&lt;br /&gt;    private static String LABEL_KEY = &amp;quot;myLabel&amp;quot;;&lt;br /&gt;    private static String RESOURCE_NAME = &amp;quot;myResource&amp;quot;;&lt;br /&gt;    &lt;br /&gt;    @Override&lt;br /&gt;    public void initialize(IReportContext reportContext) throws ScriptException {&lt;br /&gt;        super.initialize(reportContext);&lt;br /&gt;        &lt;br /&gt;        ResourceBundle resourceBundle = ResourceBundle.getBundle(RESOURCE_NAME, reportContext.getLocale());&lt;br /&gt;&lt;br /&gt;        String stringValue = resourceBundle.getString(LABEL_KEY);&lt;br /&gt;        &lt;br /&gt;        HashMap&amp;lt;String, String&amp;gt; resourceValues = new HashMap&amp;lt;String, String&amp;gt;();&lt;br /&gt;        resourceValues.put(LABEL_KEY, stringValue);&lt;br /&gt;        &lt;br /&gt;        reportContext.setGlobalVariable(&amp;quot;resources&amp;quot;, resourceValues);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The next piece of the puzzle is where to put the .properties files. You should put them into the projects /src folder. If you put them under a package, you would reflect that in the getBundle call above. I just kept mine at the root. &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-AsXZxbT8PqA/TnqoG4OZe9I/AAAAAAAAAaw/aq_JR8DZmso/s1600/resources.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 130px;" src="http://1.bp.blogspot.com/-AsXZxbT8PqA/TnqoG4OZe9I/AAAAAAAAAaw/aq_JR8DZmso/s320/resources.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5655017118242536402" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;So now, how do you leverage this in a report? Create a new report project. Right-mouse click in the Navigator, and go to Properties. Select Report Design/Classpath. Click on the Add Projects button, and select the Java project with your Event Adapter. &lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/-5ybE4omAPCg/TnqoaFXIbKI/AAAAAAAAAa4/Ra0XfY8UrTg/s1600/classpath.png"&gt;&lt;img style="cursor:pointer; cursor:hand;width: 320px; height: 246px;" src="http://1.bp.blogspot.com/-5ybE4omAPCg/TnqoaFXIbKI/AAAAAAAAAa4/Ra0XfY8UrTg/s320/classpath.png" border="0" alt=""id="BLOGGER_PHOTO_ID_5655017448186342562" /&gt;&lt;/a&gt;&lt;br /&gt;  &lt;br /&gt;In my example report, I dropped a Dynamic Text Element in, and used the following expression:&lt;br /&gt;&lt;br /&gt;var resourceMap = reportContext.getGlobalVariable("resources");&lt;br /&gt;&lt;br /&gt;resourceMap.get("myLabel");&lt;br /&gt;&lt;br /&gt;And that’s it. Its read for preview. I can now localize this however I choose. If I wanted to, in my data set, I could have an additional column with the key to retrieve, and just retrieve it from my map. This allows for external localization.&lt;br /&gt;&lt;br /&gt;Be sure to check the BIRT Internationalization FAQ at http://wiki.eclipse.org/BIRT/FAQ/Internationalization. You can use a standard reportContext.getMessage call in a similar manner.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16506996-209232136625373639?l=digiassn.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=Qqr_49nfrX8:sLNvizTPyBo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=Qqr_49nfrX8:sLNvizTPyBo:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=Qqr_49nfrX8:sLNvizTPyBo:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://digiassn.blogspot.com/feeds/209232136625373639/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=16506996&amp;postID=209232136625373639&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/16506996/posts/default/209232136625373639?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/16506996/posts/default/209232136625373639?v=2" /><link rel="alternate" type="text/html" href="http://digiassn.blogspot.com/2011/09/birt-using-resource-bundles.html" title="BIRT: Using Resource Bundles" /><author><name>John Ward</name><uri>http://www.blogger.com/profile/10741149622435353727</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-AsXZxbT8PqA/TnqoG4OZe9I/AAAAAAAAAaw/aq_JR8DZmso/s72-c/resources.png" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DkIGR385cCp7ImA9WhZbF0o.&quot;"><id>tag:blogger.com,1999:blog-16506996.post-7094074386954855389</id><published>2011-06-22T14:27:00.003-06:00</published><updated>2011-06-22T14:28:46.128-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-06-22T14:28:46.128-06:00</app:edited><title>BIRT 3.7 Released</title><content type="html">Imagine my surprise, BIRT 3.7 was released today. I didn't even know until a client pointed it out to me =)&lt;br /&gt;&lt;br /&gt;You can get it over at the Eclipse BIRT Homepage at http://www.eclipse.org/birt, along with a list of what is new and notable in this release.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16506996-7094074386954855389?l=digiassn.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=fNQCSS8rq_M:PgVXdklyOiI:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=fNQCSS8rq_M:PgVXdklyOiI:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=fNQCSS8rq_M:PgVXdklyOiI:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://digiassn.blogspot.com/feeds/7094074386954855389/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=16506996&amp;postID=7094074386954855389&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/16506996/posts/default/7094074386954855389?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/16506996/posts/default/7094074386954855389?v=2" /><link rel="alternate" type="text/html" href="http://digiassn.blogspot.com/2011/06/birt-37-released.html" title="BIRT 3.7 Released" /><author><name>John Ward</name><uri>http://www.blogger.com/profile/10741149622435353727</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CE8BQHk4fSp7ImA9WhZSE0g.&quot;"><id>tag:blogger.com,1999:blog-16506996.post-7623079265480387476</id><published>2011-03-28T16:34:00.003-06:00</published><updated>2011-03-28T16:54:11.735-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-28T16:54:11.735-06:00</app:edited><title>Tech: Nintendo 3DS</title><content type="html">I am once again crossing that threshold between professional writings and personal for this article. It has been over a day since I purchased the Nintendo 3DS, the newest hand held gaming device by big N. Let me cut to the chase. Is it worth it? In the short term, no. But this has nothing to do with the hardware, or the novelty of the 3D, which is, in a word, phenomenal.  No, the shortcoming is with the game library that came out at launch. Don't get me wrong, Super Street Fighter 4 was the tipping point for me, but as of this writing, that all there really is. I'm thinking of getting Ridge Racer, and Pilotwings, but truth be told, I'm only considering that as a justification to use more of the 3D features. In the long run, this is more evolutionary than revolutionary, and when Zelda comes out, along with several other titles, this will be the device to be had, even if it will be in its inevitable 3Ds Lite form.&lt;br /&gt;&lt;br /&gt;Now for the long description. I purchased the 3DS since I am a pretty heavy mobile gamer due to my traveling schedule. I usually carry on me my DS Lite, and my original PSP fat (hacked of course) so that I can keep myself entertained on planes, airports, and hotels. So the 3DS was an enticing option.&lt;br /&gt;&lt;br /&gt;The 3DS is, in a nutshell, an updated version in the DS and DSi line. All titles for those platforms are playable, with the addition of the new 3DS titles. Covering 3 generations of the platform is pretty impressive, considering that the DS only covered the DS and Gameboy Advance, and the DSi dropped the Advance and only played DS and DSi titles. The problem for me, however, is that I do still have a good collection of Advance titles, such as the re-releases of Zelda 1 and 2, Phantasy Star, and several Final Fantasy installments. So, for me, it looks like I'll still be carrying around the DS Lite. Which brings up a major issue with the 3DS, the battery. The battery, for me, lasted around 3 - 4 hours. Of course, I did crank the 3D the entire time, but from what I have read, turning the 3D off doesn't make that big of a difference. So on a plane ride for me its no big deal, but I might be switching over to the Lite mid flight.&lt;br /&gt;&lt;br /&gt;Once the 3Ds is turned on, it borrows a lot of its "feel" from the Wii. Thats hard to describe in words, but the overall tone, color schemes, and sound effects seemed very Wii'ish. Thats not a bad thing by any means, and navigating the menus is a very intuitive. The 3D camera is really slick, as is the AR games.&lt;br /&gt;&lt;br /&gt;But the real meat is in the gaming. I spent all my time playing Street Fighter, of course. And to be honest, I was blown away by the 3D. It really is unlike any gaming experience I have ever had. Just something about landing that final special move, and the camera panning around with real perceived depth is just breath taking. I was a little disappointed that the two hood rats were missing from the background of the North American Diner stage, but I suppose there is only so much processing power in this handheld, and processing the "Oh Snaps" might have been too much.&lt;br /&gt;&lt;br /&gt;There are several features that have a notice that it will be featured in some future update, such as the web browser, which means there are pieces of the entire 3DS experience that are missing. But I guess thats what I get for being an early adopter.&lt;br /&gt;&lt;br /&gt;Like I said above, this is a really neat device. But the short term benefit just seems lacking. Long term this can really be THE device to have, especially once the game library grows, especially considering that DS and DSi titles cannot take advantage of the 3D capabilities. But once the Zelda, Mario, and Laytons come out that do take advantage of these features, this is going to be a great system. And something about the Professor Laytons stylized art might be really slick with the 3D option turned on =)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16506996-7623079265480387476?l=digiassn.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=vZCSuUYH_lo:_SQWc2fnXrE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=vZCSuUYH_lo:_SQWc2fnXrE:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=vZCSuUYH_lo:_SQWc2fnXrE:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://digiassn.blogspot.com/feeds/7623079265480387476/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=16506996&amp;postID=7623079265480387476&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/16506996/posts/default/7623079265480387476?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/16506996/posts/default/7623079265480387476?v=2" /><link rel="alternate" type="text/html" href="http://digiassn.blogspot.com/2011/03/tech-nintendo-3ds.html" title="Tech: Nintendo 3DS" /><author><name>John Ward</name><uri>http://www.blogger.com/profile/10741149622435353727</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CkQGR3s8fip7ImA9Wx9aF0k.&quot;"><id>tag:blogger.com,1999:blog-16506996.post-121472595348818834</id><published>2011-03-09T23:53:00.003-07:00</published><updated>2011-03-09T23:58:46.576-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-09T23:58:46.576-07:00</app:edited><title>BIRT: Connecting to MS Sql Server Database</title><content type="html">&lt;!--[if !mso]&gt; &lt;style&gt; v\:* {behavior:url(#default#VML);} o\:* {behavior:url(#default#VML);} w\:* {behavior:url(#default#VML);} .shape {behavior:url(#default#VML);} &lt;/style&gt; &lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" latentstylecount="156"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Table Normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-parent:"";  mso-padding-alt:0mm 5.4pt 0mm 5.4pt;  mso-para-margin:0mm;  mso-para-margin-bottom:.0001pt;  mso-pagination:widow-orphan;  font-size:10.0pt;  font-family:"Times New Roman";  mso-ansi-language:#0400;  mso-fareast-language:#0400;  mso-bidi-language:#0400;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;ol style="margin-top: 0mm;" start="1" type="1"&gt;&lt;li class="MsoNormal" style=""&gt;Download      the Microsoft JDBC driver from &lt;a href="http://msdn.microsoft.com/en-us/sqlserver/aa937724"&gt;http://msdn.microsoft.com/en-us/sqlserver/aa937724&lt;/a&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Note:      If youre using Java 1.5, you will use sqljdbc.jar, if your using Java 1.6,      you will use sqljdbc4.jar.&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Open      Eclipse&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Create      a new Report or open an existing report&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Open      the Data Explorer Tab&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;If      this is an existing report, Double Click on an existing Data Source,      otherwise create a new Data Source. Call it whatever.&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;From      the Data Source editor, click on the Manage Drivers button.&lt;/li&gt;&lt;/ol&gt;  &lt;p class="MsoNormal" style="margin-left: 18pt;"&gt;&lt;a href="http://1.bp.blogspot.com/-Dl7-JhzR1T4/TXh2UH_miqI/AAAAAAAAAZw/tmH7zIPqQAo/s1600/image001.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 107px;" src="http://1.bp.blogspot.com/-Dl7-JhzR1T4/TXh2UH_miqI/AAAAAAAAAZw/tmH7zIPqQAo/s320/image001.png" alt="" id="BLOGGER_PHOTO_ID_5582341826241006242" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;ol style="margin-top: 0mm;" start="8" type="1"&gt;&lt;li class="MsoNormal" style=""&gt;In      the Manage JDBC Drivers Dialog, click on Add…&lt;/li&gt;&lt;/ol&gt;  &lt;p class="MsoNormal" style="margin-left: 18pt;"&gt;&lt;a href="http://3.bp.blogspot.com/-pTSe9cMILwQ/TXh2UEAUMdI/AAAAAAAAAZ4/y_J9g7nTkhM/s1600/image003.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 215px;" src="http://3.bp.blogspot.com/-pTSe9cMILwQ/TXh2UEAUMdI/AAAAAAAAAZ4/y_J9g7nTkhM/s320/image003.png" alt="" id="BLOGGER_PHOTO_ID_5582341825170256338" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;ol style="margin-top: 0mm;" start="9" type="1"&gt;&lt;li class="MsoNormal" style=""&gt;Navigate      to where you have either the sqljdbc.jar or sqljdbc4.jar file, and click      Open. This will add the driver to the BIRT Designer.&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Now,      click on the Drivers Tab.&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Double      click on the SqlServerDriver entry to edit it. Put in a name, and a URL      template that will prompt you on the correct URL pattern to use.&lt;/li&gt;&lt;/ol&gt;  &lt;p class="MsoNormal" style="margin-left: 18pt;"&gt;&lt;a href="http://4.bp.blogspot.com/-zz7wd3oZdkc/TXh2URc0haI/AAAAAAAAAaA/0kcTciKlQA8/s1600/image005.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 188px;" src="http://4.bp.blogspot.com/-zz7wd3oZdkc/TXh2URc0haI/AAAAAAAAAaA/0kcTciKlQA8/s320/image005.png" alt="" id="BLOGGER_PHOTO_ID_5582341828779476386" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;ol style="margin-top: 0mm;" start="12" type="1"&gt;&lt;li class="MsoNormal" style=""&gt;Click      on OK, and OK, until you get to the Data Source Editor Dialog.&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Select      the SQL Server driver from the drop down list. It will automatically put      in the template. Replace the IP Address, and Database name with the ip of      your Sql Server Database, and the name of the database.&lt;/li&gt;&lt;/ol&gt;  &lt;p class="MsoNormal" style="margin-left: 18pt;"&gt;&lt;a href="http://4.bp.blogspot.com/-61p0s4-jp-I/TXh2UYcMAjI/AAAAAAAAAaI/nQQimqWymdM/s1600/image007.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 200px;" src="http://4.bp.blogspot.com/-61p0s4-jp-I/TXh2UYcMAjI/AAAAAAAAAaI/nQQimqWymdM/s320/image007.png" alt="" id="BLOGGER_PHOTO_ID_5582341830655869490" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;ol style="margin-top: 0mm;" start="14" type="1"&gt;&lt;li class="MsoNormal" style=""&gt;Enter      the correct User Name and Password.&lt;/li&gt;&lt;/ol&gt;  &lt;p class="MsoNormal"&gt; &lt;/p&gt;  &lt;p class="MsoNormal"&gt;That’s it, your done. Test Connection to make sure the information is correct, and hit OK.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16506996-121472595348818834?l=digiassn.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=d8skAdQ3cZI:GpRbVE-JBts:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=d8skAdQ3cZI:GpRbVE-JBts:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=d8skAdQ3cZI:GpRbVE-JBts:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://digiassn.blogspot.com/feeds/121472595348818834/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=16506996&amp;postID=121472595348818834&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/16506996/posts/default/121472595348818834?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/16506996/posts/default/121472595348818834?v=2" /><link rel="alternate" type="text/html" href="http://digiassn.blogspot.com/2011/03/birt-connecting-to-ms-sql-server.html" title="BIRT: Connecting to MS Sql Server Database" /><author><name>John Ward</name><uri>http://www.blogger.com/profile/10741149622435353727</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/-Dl7-JhzR1T4/TXh2UH_miqI/AAAAAAAAAZw/tmH7zIPqQAo/s72-c/image001.png" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;Dk8BQn48eCp7ImA9Wx9aEU0.&quot;"><id>tag:blogger.com,1999:blog-16506996.post-6278466464581950297</id><published>2011-03-02T15:24:00.001-07:00</published><updated>2011-03-02T15:27:33.070-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-03-02T15:27:33.070-07:00</app:edited><title>Tech: Asus Motherboard Box Doubles as PC Case</title><content type="html">In the "Why didn't they think of this before" category, Asus is beginning a trial where they ship some of their motherboards in a box that, when opened post shipping, just needs you to add components and doubles as the PC case itself. While not exactly the most visually appealing design, it REALLY is something that is worth looking into, especially if your building your own PC and aren't too concerned with the visuals of an all black case and adding "das blinking lights".&lt;br /&gt;&lt;br /&gt;http://www.itworld.com/hardware/138740/asus-motherboard-box-doubles-a-pc-case&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16506996-6278466464581950297?l=digiassn.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=K-oY0gtsh-o:ROv-20eVDbc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=K-oY0gtsh-o:ROv-20eVDbc:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=K-oY0gtsh-o:ROv-20eVDbc:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://digiassn.blogspot.com/feeds/6278466464581950297/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=16506996&amp;postID=6278466464581950297&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/16506996/posts/default/6278466464581950297?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/16506996/posts/default/6278466464581950297?v=2" /><link rel="alternate" type="text/html" href="http://digiassn.blogspot.com/2011/03/tech-asus-motherboard-box-doubles-as-pc.html" title="Tech: Asus Motherboard Box Doubles as PC Case" /><author><name>John Ward</name><uri>http://www.blogger.com/profile/10741149622435353727</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DE8DSHc_cCp7ImA9Wx9bGUg.&quot;"><id>tag:blogger.com,1999:blog-16506996.post-5191112641345539576</id><published>2011-02-28T22:16:00.002-07:00</published><updated>2011-02-28T22:21:19.948-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-02-28T22:21:19.948-07:00</app:edited><title>BIRT: The Arctorus BIRT Emitters</title><content type="html">While doing some research for some work on an emitter for a client, I came across the Arctorus BIRT Emitters. I'd never heard of these guys, just the standard OSS BIRT Emitters, the Commercial BIRT Emitters, and the Tribix Emitters. While these are commercial emitters, and are not free, they do offer a 30 day trial. These are the formats that are supported.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;DOCX&lt;/li&gt;&lt;li&gt;XLSX&lt;/li&gt;&lt;li&gt;PPTX&lt;/li&gt;&lt;li&gt;ODT&lt;/li&gt;&lt;li&gt;ODS&lt;/li&gt;&lt;li&gt;ODP&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;I intend to do a review of them and see how well they work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16506996-5191112641345539576?l=digiassn.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=Bycszzcg96E:YOYurvBxqyg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=Bycszzcg96E:YOYurvBxqyg:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=Bycszzcg96E:YOYurvBxqyg:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://digiassn.blogspot.com/feeds/5191112641345539576/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=16506996&amp;postID=5191112641345539576&amp;isPopup=true" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/16506996/posts/default/5191112641345539576?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/16506996/posts/default/5191112641345539576?v=2" /><link rel="alternate" type="text/html" href="http://digiassn.blogspot.com/2011/02/birt-arctorus-birt-emitters.html" title="BIRT: The Arctorus BIRT Emitters" /><author><name>John Ward</name><uri>http://www.blogger.com/profile/10741149622435353727</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total></entry><entry gd:etag="W/&quot;DkQGR3c6eCp7ImA9Wx9VEkg.&quot;"><id>tag:blogger.com,1999:blog-16506996.post-8237002886669405775</id><published>2011-01-28T15:31:00.002-07:00</published><updated>2011-01-28T15:38:46.910-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-28T15:38:46.910-07:00</app:edited><title>BIRT: Chart DaVinci</title><content type="html">I don't know how I missed &lt;a href="http://www.birt-exchange.org/org/devshare/designing-birt-reports/1313-build-professional-looking-charts-with-birt-chart-da-vinci/"&gt;this post&lt;/a&gt; over at the BIRT Exchange. This is a really great drop in script that you can use in your charts that will instantly spruce them up. Takes a lot of manual picking at charts to get that professional look out of the design process. Definitively well worth a look if your doing any kind of chart work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16506996-8237002886669405775?l=digiassn.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=IjgTr2m1qUI:M2wdzsueMro:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=IjgTr2m1qUI:M2wdzsueMro:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=IjgTr2m1qUI:M2wdzsueMro:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://digiassn.blogspot.com/feeds/8237002886669405775/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=16506996&amp;postID=8237002886669405775&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/16506996/posts/default/8237002886669405775?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/16506996/posts/default/8237002886669405775?v=2" /><link rel="alternate" type="text/html" href="http://digiassn.blogspot.com/2011/01/birt-chart-davinci.html" title="BIRT: Chart DaVinci" /><author><name>John Ward</name><uri>http://www.blogger.com/profile/10741149622435353727</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DUUEQXk6fip7ImA9Wx9VEUU.&quot;"><id>tag:blogger.com,1999:blog-16506996.post-4281490536885046939</id><published>2011-01-27T20:56:00.004-07:00</published><updated>2011-01-27T21:00:00.716-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-27T21:00:00.716-07:00</app:edited><title>BIRT: Dynamically Adding a Data Set to a Report</title><content type="html">So a co-worker asked me today to help him by dynamically adding a data set to a report. He ended up going a slightly different route using the StructureElementFactory class, but this is what I came up with using the reports existing ElementFactory, and dynamically adding in the parameters and query text. This example can be expanded upon of course to set this up in whatever way you need, in coordination with using the DEAPI to dynamically add a table for a more dynamic report. It will even save off the report design at the end for future reference. I used the beforeFactory event, but this will work just as well in the Initialize event as well.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: Andale Mono, Lucida Console, Monaco, fixed, monospace; color: #000000; background-color: #eee;font-size: 12px;border: 1px dashed #999999;line-height: 14px;padding: 5px; overflow: auto; width: 100%"&gt;&lt;code&gt;public class ReportEventHandler extends ReportEventAdapter {&lt;br /&gt;&lt;br /&gt;    @Override&lt;br /&gt;    public void beforeFactory(IReportDesign report, IReportContext reportContext) {&lt;br /&gt;        super.beforeFactory(report, reportContext);&lt;br /&gt;            &lt;br /&gt;        try {&lt;br /&gt;            ReportDesignHandle reportDesign = reportContext.getDesignHandle();&lt;br /&gt;            OdaDataSetHandle dataSet = reportDesign.getElementFactory().newOdaDataSet(&amp;quot;Data Set&amp;quot;, &amp;quot;org.eclipse.birt.report.data.oda.jdbc.JdbcSelectDataSet&amp;quot;);&lt;br /&gt;            &lt;br /&gt;            dataSet.setDataSource(&amp;quot;Data Source&amp;quot;);&lt;br /&gt;            dataSet.setQueryText(&amp;quot;select employeenumber from employees where employeenumber = ?&amp;quot;);&lt;br /&gt;            &lt;br /&gt;            OdaDataSetParameter param = new OdaDataSetParameter();&lt;br /&gt;            &lt;br /&gt;            param.setName(&amp;quot;param_1&amp;quot;);&lt;br /&gt;            param.setParamName(&amp;quot;empNo&amp;quot;);&lt;br /&gt;            param.setNativeName(&amp;quot;&amp;quot;);&lt;br /&gt;            param.setDataType(&amp;quot;integer&amp;quot;);&lt;br /&gt;            param.setNativeDataType(4);&lt;br /&gt;            param.setPosition(1);&lt;br /&gt;            param.setIsInput(true);&lt;br /&gt;            param.setIsOutput(false);&lt;br /&gt;            &lt;br /&gt;            dataSet.getPropertyHandle(DataSetHandle.PARAMETERS_PROP).addItem(param);&lt;br /&gt;            &lt;br /&gt;            OdaResultSetColumn result = new OdaResultSetColumn();&lt;br /&gt;            result.setColumnName(&amp;quot;EMPLOYEENUMBER&amp;quot;);&lt;br /&gt;            result.setNativeName(&amp;quot;EMPLOYEENUMBER&amp;quot;);&lt;br /&gt;            result.setDataType(&amp;quot;integer&amp;quot;);&lt;br /&gt;            result.setPosition(1);&lt;br /&gt;            result.setNativeDataType(4);&lt;br /&gt;            dataSet.getPropertyHandle(DataSetHandle.RESULT_SET_PROP).addItem(result);&lt;br /&gt;            &lt;br /&gt;            ColumnHint resultHint = new ColumnHint();&lt;br /&gt;            resultHint.setProperty(ColumnHint.COLUMN_NAME_MEMBER, &amp;quot;EMPLOYEENUMBER&amp;quot;);&lt;br /&gt;            resultHint.setProperty(ColumnHint.COLUMN_NAME_MEMBER, &amp;quot;integer&amp;quot;);&lt;br /&gt;            &lt;br /&gt;            dataSet.getPropertyHandle(DataSet.COLUMN_HINTS_PROP).addItem(resultHint);&lt;br /&gt;            &lt;br /&gt;            //this works&lt;br /&gt;            reportDesign.getDataSets().add(dataSet);&lt;br /&gt;            &lt;br /&gt;            //and so does this&lt;br /&gt;            //reportDesign.getSlot(ReportDesignHandle.DATA_SET_SLOT).add(dataSet);&lt;br /&gt;            &lt;br /&gt;            //just saving for debug purposes, you can ignore this&lt;br /&gt;            reportDesign.saveAs(&amp;quot;C:/TEMP/MyTestDesign.rptdesign&amp;quot;);&lt;br /&gt;        } catch (ContentException e) {&lt;br /&gt;            e.printStackTrace();&lt;br /&gt;        } catch (NameException e) {&lt;br /&gt;            e.printStackTrace();&lt;br /&gt;        } catch (SemanticException e) {&lt;br /&gt;            e.printStackTrace();&lt;br /&gt;        } catch (IOException e) {&lt;br /&gt;            e.printStackTrace();&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16506996-4281490536885046939?l=digiassn.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=ynlbQBrcNpU:QxukPFYzGhw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=ynlbQBrcNpU:QxukPFYzGhw:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=ynlbQBrcNpU:QxukPFYzGhw:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://digiassn.blogspot.com/feeds/4281490536885046939/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=16506996&amp;postID=4281490536885046939&amp;isPopup=true" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/16506996/posts/default/4281490536885046939?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/16506996/posts/default/4281490536885046939?v=2" /><link rel="alternate" type="text/html" href="http://digiassn.blogspot.com/2011/01/birt-dynamically-adding-data-set-to.html" title="BIRT: Dynamically Adding a Data Set to a Report" /><author><name>John Ward</name><uri>http://www.blogger.com/profile/10741149622435353727</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total></entry><entry gd:etag="W/&quot;Ak4ERXc8fip7ImA9Wx9VEEw.&quot;"><id>tag:blogger.com,1999:blog-16506996.post-3423467807139459911</id><published>2011-01-25T22:08:00.003-07:00</published><updated>2011-01-25T22:15:04.976-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-25T22:15:04.976-07:00</app:edited><title>BIRT: Connecting Data Elements to Existing Table Bindings</title><content type="html">Not sure how I never knew this existed before, but I discovered a really cool little feature in BIRT. Lets say you have an existing table binding in a report. For me, I ran across this when I went into the XML source and copied a binding multiple times to duplicate it and make minor changes. Or, lets say you just added an Aggregation via the Property Editors binding tab instead of dragging and dropping. Now you want to add in a data element to display it. If you try to drop in a new Data Element, it will create a new binding, even if you are just referencing an existing table binding. Thats no good, you dont want duplicates, you just want to reference an existing binding. There is always the option of using a Dynamic Text element, but what if you want to change the underlying expression in the future, and you find the Property Editor tedious. Well, there is a quick way.&lt;br /&gt;&lt;br /&gt;Add a Data element in the report designer. Do not change the name or add an expression, just his Escape. It will create a blank placeholder. Then, right-mouse click on this blank data element, and choose Change Data Column. The Select Data Binding dialog will pop up, and you can select which Data Binding to use. Once you hit OK, it will act just like an original Data Report Item. Again, not sure how I never came across that before...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16506996-3423467807139459911?l=digiassn.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=MeUGx4vdv58:WM3IRznE_dc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=MeUGx4vdv58:WM3IRznE_dc:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=MeUGx4vdv58:WM3IRznE_dc:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://digiassn.blogspot.com/feeds/3423467807139459911/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=16506996&amp;postID=3423467807139459911&amp;isPopup=true" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/16506996/posts/default/3423467807139459911?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/16506996/posts/default/3423467807139459911?v=2" /><link rel="alternate" type="text/html" href="http://digiassn.blogspot.com/2011/01/birt-connecting-data-elements-to.html" title="BIRT: Connecting Data Elements to Existing Table Bindings" /><author><name>John Ward</name><uri>http://www.blogger.com/profile/10741149622435353727</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total></entry><entry gd:etag="W/&quot;DU8HQHs6eyp7ImA9Wx9WGU4.&quot;"><id>tag:blogger.com,1999:blog-16506996.post-3317517615779966097</id><published>2011-01-24T23:43:00.001-07:00</published><updated>2011-01-24T23:43:51.513-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-24T23:43:51.513-07:00</app:edited><title>BIRT: BIRT Helper Functions</title><content type="html">&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;  &lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" latentstylecount="156"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable  {mso-style-name:"Table Normal";  mso-tstyle-rowband-size:0;  mso-tstyle-colband-size:0;  mso-style-noshow:yes;  mso-style-parent:"";  mso-padding-alt:0mm 5.4pt 0mm 5.4pt;  mso-para-margin:0mm;  mso-para-margin-bottom:.0001pt;  mso-pagination:widow-orphan;  font-size:10.0pt;  font-family:"Times New Roman";  mso-ansi-language:#0400;  mso-fareast-language:#0400;  mso-bidi-language:#0400;} &lt;/style&gt; &lt;![endif]--&gt;  &lt;p class="MsoNormal"&gt;The BIRT Functions provide a wealth of useful functionality that typically gets overlooked by developers. Simple operations such as compares, divides, string functions are handled by these functions with special handling for those really annoying gotchas that are typical.&lt;/p&gt;  &lt;p class="MsoNormal"&gt; &lt;/p&gt;  &lt;p class="MsoNormal"&gt;Consider the following example. Lets say you have a real simple divide expression, such as:&lt;/p&gt;  &lt;p class="MsoNormal"&gt; &lt;/p&gt;  &lt;p class="MsoNormal"&gt;numA / numB&lt;/p&gt;  &lt;p class="MsoNormal"&gt; &lt;/p&gt;  &lt;p class="MsoNormal"&gt;That’s simple enough, right? But that’s assuming that numb is never 0, otherwise you have to worry about the dreaded divide by 0 error. Or better yet, what if one of the values is null because it is not present in the dataset? Normally you would need to change the expression to look like:&lt;/p&gt;  &lt;p class="MsoNormal"&gt;if ((numA != null) &amp;amp;&amp;amp; (numB &gt; 0))&lt;/p&gt;  &lt;p class="MsoNormal"&gt;{&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;            &lt;/span&gt;numA / numB&lt;/p&gt;  &lt;p class="MsoNormal"&gt;}&lt;/p&gt;  &lt;p class="MsoNormal"&gt;else&lt;/p&gt;  &lt;p class="MsoNormal"&gt;{&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;            &lt;/span&gt;null;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;}&lt;/p&gt;  &lt;p class="MsoNormal"&gt; &lt;/p&gt;    &lt;p class="MsoNormal"&gt;But that gets tedious, especially if you have a lot of divide expressions. That’s where the BIRT Functions come into play. In the above scenario, the BirtMath.safeDivide() method can help alleviate the need to do that. So, in the above example, I would basically just use the following:&lt;br /&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;BirtMath.safeDivide(numA, numB, 0);&lt;/p&gt;    &lt;p class="MsoNormal"&gt;BIRT is full of helpful functions such as this, such as Round, RoundUp, RoundDown, different comparison functions, and Date Time functions to work with anything from Years, Quarters, down to seconds. Plus, this functionality is expandable via the BIRT Script Library extension point. I typically recommend that most report writers use these functions in favor of the native Javascript functions.&lt;/p&gt;  &lt;p class="MsoNormal"&gt; &lt;/p&gt;  &lt;p class="MsoNormal"&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16506996-3317517615779966097?l=digiassn.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=6vgn2HxWqtw:7pecTijjw0Q:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=6vgn2HxWqtw:7pecTijjw0Q:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=6vgn2HxWqtw:7pecTijjw0Q:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://digiassn.blogspot.com/feeds/3317517615779966097/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=16506996&amp;postID=3317517615779966097&amp;isPopup=true" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/16506996/posts/default/3317517615779966097?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/16506996/posts/default/3317517615779966097?v=2" /><link rel="alternate" type="text/html" href="http://digiassn.blogspot.com/2011/01/birt-birt-helper-functions.html" title="BIRT: BIRT Helper Functions" /><author><name>John Ward</name><uri>http://www.blogger.com/profile/10741149622435353727</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total></entry><entry gd:etag="W/&quot;C0AMQHw_eyp7ImA9Wx9XFk8.&quot;"><id>tag:blogger.com,1999:blog-16506996.post-140156837201498086</id><published>2011-01-09T17:58:00.002-07:00</published><updated>2011-01-09T18:09:41.243-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2011-01-09T18:09:41.243-07:00</app:edited><title>EclipseCon 2011: Getting Started with BIRT</title><content type="html">I have been approved and scheduled for another year at EclipseCon. This year I only have 1 talk, despite having some really good proposals about writing plugins for BIRT. But the&lt;a href="https://www.eclipsecon.org/submissions/2011/view_talk.php?id=1995"&gt; Getting Started with BIRT&lt;/a&gt; talk is always a good one for new users to BIRT, I always enjoy presenting it and getting to know the folks in the crowd, and I always welcome interaction during and after the talk from attendees.&lt;br /&gt;&lt;br /&gt;With only 1 talk scheduled for me this year, this provides me with a great chance to attend a lot of talks. Last year the talks I attended steered me towards EMF, which was helpful in helping some of my paying clients. I am really looking forward to a lot of the talks scheduled for this year. I will probably continue my EMF studying by attending &lt;a href="https://www.eclipsecon.org/submissions/2011/view_talk.php?id=2245"&gt;this talk&lt;/a&gt; by Kenn Hussey, who was helping with a BIRT ODA, and Ed Merks. since GWT is familiar territory for me already, I look forward to the marriage of these two to drive some EMF points home for me. There are some good Window Builder talks on the program, which is exciting for me since I have been a user of Window Builder for years, and this is the first year that they are doing talks after being bought by Google. My friend Benny has a &lt;a href="https://www.eclipsecon.org/submissions/2011/view_talk.php?id=2068"&gt;great talk planned about GIT&lt;/a&gt;. Benny has had a lot of experience with GIT, and his involvement as a contributor stemmed from his frustration with shortcomings in the Eclipse implementation, so it will be interesting to hear what he has to say on progress with the plugins. Lots of good talks =)&lt;br /&gt;&lt;br /&gt;If your planing on attending, feel free to mozy on by my talk or the BIRT booth and say hi!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16506996-140156837201498086?l=digiassn.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=uYX1UkbShHg:4mwLvZRIUAA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=uYX1UkbShHg:4mwLvZRIUAA:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=uYX1UkbShHg:4mwLvZRIUAA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://digiassn.blogspot.com/feeds/140156837201498086/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=16506996&amp;postID=140156837201498086&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/16506996/posts/default/140156837201498086?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/16506996/posts/default/140156837201498086?v=2" /><link rel="alternate" type="text/html" href="http://digiassn.blogspot.com/2011/01/eclipsecon-2011-getting-started-with.html" title="EclipseCon 2011: Getting Started with BIRT" /><author><name>John Ward</name><uri>http://www.blogger.com/profile/10741149622435353727</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;C0MMQng-eCp7ImA9Wx5aEUU.&quot;"><id>tag:blogger.com,1999:blog-16506996.post-6908773110872898009</id><published>2010-11-07T18:56:00.002-07:00</published><updated>2010-11-07T18:58:03.650-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-11-07T18:58:03.650-07:00</app:edited><title>Blah</title><content type="html">Getting focus back. Being pulled in way too many directions again. Got EclipseCon presentations I'm waiting to see if they get accepted. Got a lot of really cool projects I am working on. And I've got a ton of notes to pour through and write up to post...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16506996-6908773110872898009?l=digiassn.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=IxvF3tkxouY:BLzrimCNveY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=IxvF3tkxouY:BLzrimCNveY:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=IxvF3tkxouY:BLzrimCNveY:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://digiassn.blogspot.com/feeds/6908773110872898009/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=16506996&amp;postID=6908773110872898009&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/16506996/posts/default/6908773110872898009?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/16506996/posts/default/6908773110872898009?v=2" /><link rel="alternate" type="text/html" href="http://digiassn.blogspot.com/2010/11/blah.html" title="Blah" /><author><name>John Ward</name><uri>http://www.blogger.com/profile/10741149622435353727</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CUEDRH45fip7ImA9Wx5WEU0.&quot;"><id>tag:blogger.com,1999:blog-16506996.post-949826949000854196</id><published>2010-09-21T15:07:00.003-06:00</published><updated>2010-09-21T15:14:35.026-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-21T15:14:35.026-06:00</app:edited><title>Eclipse: WindowBuilder Pro and GWT Designer now free.</title><content type="html">I've been a user of GWT Designer and Window Builder Pro for a few years now. In terms of a WYSIWYG interface for any Eclipse based development and GWT interface development, they are really second to none. Earlier this year the company that makes the products, Instantiations, was purchased by Google. I was curious to see what would become of these tools. In a surprising move, &lt;a href="http://code.google.com/webtoolkit/download.html#gwtdesigner"&gt;Google has released them for free&lt;/a&gt;. Thats right, their entire product lineup, for free, including their code testing tools WindowTester Pro and CodePro AnalytiX. While everyone was excited about Instant Search, to me this is much bigger news if your a Java Developer, or an Eclipse developer specifically. Its like its my birthday or something.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16506996-949826949000854196?l=digiassn.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=C-6EGtkr8iY:Y81PD_X2wtk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=C-6EGtkr8iY:Y81PD_X2wtk:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=C-6EGtkr8iY:Y81PD_X2wtk:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://digiassn.blogspot.com/feeds/949826949000854196/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=16506996&amp;postID=949826949000854196&amp;isPopup=true" title="1 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/16506996/posts/default/949826949000854196?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/16506996/posts/default/949826949000854196?v=2" /><link rel="alternate" type="text/html" href="http://digiassn.blogspot.com/2010/09/eclipse-windowbuilder-pro-and-gwt.html" title="Eclipse: WindowBuilder Pro and GWT Designer now free." /><author><name>John Ward</name><uri>http://www.blogger.com/profile/10741149622435353727</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>1</thr:total></entry><entry gd:etag="W/&quot;DkIAQXc-cCp7ImA9Wx5QGEQ.&quot;"><id>tag:blogger.com,1999:blog-16506996.post-910145741979143227</id><published>2010-09-07T15:20:00.003-06:00</published><updated>2010-09-07T15:22:20.958-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-09-07T15:22:20.958-06:00</app:edited><title>Review of BIRT 2.6 Data Analysis and Reporting</title><content type="html">I was pleasantly surprised to find a review of my recent edition of the &lt;a href="http://www.birtreporting.com/BIRT-Book-Reviews.html"&gt;BIRT book online here&lt;/a&gt;. I'm very excited to have gotten such a favorable review from another author. =)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16506996-910145741979143227?l=digiassn.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=n5VxWfHMaqg:xcOSF0TEK0U:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=n5VxWfHMaqg:xcOSF0TEK0U:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=n5VxWfHMaqg:xcOSF0TEK0U:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://digiassn.blogspot.com/feeds/910145741979143227/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=16506996&amp;postID=910145741979143227&amp;isPopup=true" title="6 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/16506996/posts/default/910145741979143227?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/16506996/posts/default/910145741979143227?v=2" /><link rel="alternate" type="text/html" href="http://digiassn.blogspot.com/2010/09/review-of-birt-26-data-analysis-and.html" title="Review of BIRT 2.6 Data Analysis and Reporting" /><author><name>John Ward</name><uri>http://www.blogger.com/profile/10741149622435353727</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>6</thr:total></entry><entry gd:etag="W/&quot;CEIMSHo9cSp7ImA9Wx5RF0s.&quot;"><id>tag:blogger.com,1999:blog-16506996.post-6511020255148003505</id><published>2010-08-25T11:08:00.029-06:00</published><updated>2010-08-25T12:56:29.469-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-25T12:56:29.469-06:00</app:edited><title>BIRT: All About Crosstabs</title><content type="html">It was recently brought to my attention that I overlooked discussing Data Cubes and Crosstabs in the new edition of Data Analysis and Reporting. While I remember writing it, the content might have been cut due to size constraints.   &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;So, to help the user understand what these features are, I will discuss them here. &lt;span style=""&gt; &lt;/span&gt;Cross Tabs are typically a way to illustrate data in a 3 dimensional, sliceable manner. What does that mean exactly? Well, lets say, for example, that we have the following table:&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;      &lt;/span&gt;(City)C1 &lt;span style=""&gt;     &lt;/span&gt;(State)C2&lt;span style=""&gt;     &lt;/span&gt;(Country)C3&lt;span style=""&gt;   &lt;/span&gt;Sales Figure(C4)&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;st1:city st="on"&gt;Austin&lt;/st1:city&gt;&lt;span style=""&gt;         &lt;/span&gt;&lt;st1:state st="on"&gt;Texas&lt;/st1:state&gt;&lt;span style=""&gt;           &lt;/span&gt;&lt;st1:country-region st="on"&gt;&lt;st1:place st="on"&gt;USA&lt;/st1:place&gt;&lt;/st1:country-region&gt;&lt;span style=""&gt;                &lt;/span&gt;10&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;st1:place st="on"&gt;&lt;st1:city st="on"&gt;Dallas&lt;/st1:city&gt;&lt;span style=""&gt;          &lt;/span&gt;&lt;st1:state st="on"&gt;Texas&lt;/st1:state&gt;&lt;span style=""&gt;           &lt;/span&gt;&lt;st1:country-region st="on"&gt;USA&lt;/st1:country-region&gt;&lt;/st1:place&gt;&lt;span style=""&gt;                &lt;/span&gt;20&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;st1:place st="on"&gt;&lt;st1:city st="on"&gt;New York&lt;/st1:city&gt;&lt;span style=""&gt;   &lt;/span&gt;&lt;st1:state st="on"&gt;New York&lt;/st1:state&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;st1:country-region st="on"&gt;USA&lt;/st1:country-region&gt;&lt;/st1:place&gt;&lt;span style=""&gt;                &lt;/span&gt;30&lt;/p&gt;  &lt;p class="MsoNormal"&gt;R4&lt;span style=""&gt;  &lt;/span&gt;&lt;st1:place st="on"&gt;&lt;st1:city st="on"&gt;Toronto&lt;/st1:city&gt;&lt;span style=""&gt;       &lt;/span&gt;&lt;st1:state st="on"&gt;Ontario&lt;/st1:state&gt;&lt;span style=""&gt;         &lt;/span&gt;&lt;st1:country-region st="on"&gt;Canada&lt;/st1:country-region&gt;&lt;/st1:place&gt;&lt;span style=""&gt;  &lt;/span&gt;&lt;span style=""&gt;          &lt;/span&gt;15&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Now, lets say we want to slice this up in such a way that we take out rows, and we want to slice this up to show sales figures across State. If this were multi country, we might want an output with something like:&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=""&gt;                     &lt;/span&gt;&lt;span style=""&gt;      &lt;/span&gt;&lt;st1:state st="on"&gt;Texas&lt;/st1:state&gt;&lt;span style=""&gt;    &lt;/span&gt;&lt;st1:state st="on"&gt;New York&lt;/st1:state&gt;&lt;span style=""&gt;   &lt;/span&gt;&lt;st1:city st="on"&gt;&lt;st1:place st="on"&gt;Toronto&lt;/st1:place&gt;&lt;/st1:city&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;st1:country-region st="on"&gt;&lt;st1:place st="on"&gt;USA&lt;/st1:place&gt;&lt;/st1:country-region&gt;&lt;span style=""&gt;          &lt;/span&gt;30&lt;span style=""&gt;                 &lt;/span&gt;30&lt;span style=""&gt;                             &lt;/span&gt;0&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;st1:place st="on"&gt;Europe&lt;/st1:place&gt;&lt;span style=""&gt;       &lt;/span&gt;0&lt;span style=""&gt;                &lt;/span&gt;0&lt;span style=""&gt;                                  &lt;/span&gt;0&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;st1:place st="on"&gt;&lt;st1:country-region st="on"&gt;Canada&lt;/st1:country-region&gt;&lt;/st1:place&gt;&lt;span style=""&gt;      &lt;/span&gt;0&lt;span style=""&gt;                &lt;/span&gt;0&lt;span style=""&gt;                                 &lt;/span&gt;15&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;There are multiple variations of the above we could slice this into, but that is the basic idea. So the next question is, what is a Data Cube in BIRT? To give a simple answer, a Data Cube is a Data Source for Cross Tabs. Data Cubes define the slice axis used in the above example. A Cross Tab would be the visual representation used in a report to display your slices. In the following examples, we will look at some uses of cross tabs, and show some real world examples of how cross tabs have been used, including the little discussed uses of Attributes for groups.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Lets walk through an example. &lt;/p&gt;  &lt;ol style="margin-top: 0mm;" start="1" type="1"&gt;&lt;li class="MsoNormal" style=""&gt;Create      a new empty report called CrossTabExample.rptDesign&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Connect      to the Classic Models sample database, and use the following query:&lt;/li&gt;&lt;/ol&gt;  &lt;p class="MsoNormal" style=""&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;select&lt;br /&gt;&lt;br /&gt;CUSTOMERS.CITY,&lt;br /&gt;&lt;br /&gt;CUSTOMERS.STATE,&lt;br /&gt;&lt;br /&gt;CUSTOMERS.COUNTRY,&lt;br /&gt;&lt;br /&gt;(ORDERDETAILS.PRICEEACH * ORDERDETAILS.QUANTITYORDERED) salesSum&lt;br /&gt;&lt;br /&gt;from&lt;br /&gt;&lt;br /&gt;CUSTOMERS,&lt;br /&gt;&lt;br /&gt;ORDERDETAILS,&lt;br /&gt;&lt;br /&gt;ORDERS&lt;br /&gt;&lt;br /&gt;where&lt;br /&gt;&lt;br /&gt;ORDERS.ORDERNUMBER = ORDERDETAILS.ORDERNUMBER&lt;br /&gt;&lt;br /&gt;and ORDERS.CUSTOMERNUMBER = CUSTOMERS.CUSTOMERNUMBER&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;In      the Data Explorer, create a new Data Cube  &lt;p class="MsoNormal" style="margin-left: 18pt;"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shapetype id="_x0000_t75" coordsize="21600,21600" spt="75" preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"&gt;  &lt;v:stroke joinstyle="miter"&gt;  &lt;v:formulas&gt;   &lt;v:f eqn="if lineDrawn pixelLineWidth 0"&gt;   &lt;v:f eqn="sum @0 1 0"&gt;   &lt;v:f eqn="sum 0 0 @1"&gt;   &lt;v:f eqn="prod @2 1 2"&gt;   &lt;v:f eqn="prod @3 21600 pixelWidth"&gt;   &lt;v:f eqn="prod @3 21600 pixelHeight"&gt;   &lt;v:f eqn="sum @0 0 1"&gt;   &lt;v:f eqn="prod @6 1 2"&gt;   &lt;v:f eqn="prod @7 21600 pixelWidth"&gt;   &lt;v:f eqn="sum @8 21600 0"&gt;   &lt;v:f eqn="prod @7 21600 pixelHeight"&gt;   &lt;v:f eqn="sum @10 21600 0"&gt;  &lt;/v:formulas&gt;  &lt;v:path extrusionok="f" gradientshapeok="t" connecttype="rect"&gt;  &lt;o:lock ext="edit" aspectratio="t"&gt; &lt;/v:shapetype&gt;&lt;v:shape id="_x0000_i1025" type="#_x0000_t75" style="'width:204.75pt;"&gt;  &lt;v:imagedata src="file:///C:\Users\JOHNWA~1\AppData\Local\Temp\msohtml1\01\clip_image001.png" title="newDataCube"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_vWcPU_Sx6fE/THVRFKdOIaI/AAAAAAAAAWw/1q-9p6MuAZM/s1600/newDataCube.png"&gt;&lt;img style="cursor: pointer; width: 221px; height: 320px;" src="http://2.bp.blogspot.com/_vWcPU_Sx6fE/THVRFKdOIaI/AAAAAAAAAWw/1q-9p6MuAZM/s320/newDataCube.png" alt="" id="BLOGGER_PHOTO_ID_5509398868305781154" border="0" /&gt;&lt;/a&gt;&lt;!--[endif]--&gt;&lt;/p&gt;  &lt;ol style="margin-top: 0mm;" start="4" type="1"&gt;&lt;li class="MsoNormal" style=""&gt;In      the data cube, create the following groupings by dragging and dropping      fields. For example, in the Available Fields box, drag the City column      over to the Groups, where it says Drop a field here to create a group, and      call that grouping GroupByCity.&lt;br /&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1026" type="#_x0000_t75" style="'width:203.25pt;"&gt;       &lt;v:imagedata src="file:///C:\Users\JOHNWA~1\AppData\Local\Temp\msohtml1\01\clip_image003.gif" title="groupingInDataCube"&gt;      &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_vWcPU_Sx6fE/THVRM09wr8I/AAAAAAAAAW4/7C8bsWaDMMc/s1600/groupingInDataCube.png"&gt;&lt;img style="cursor: pointer; width: 271px; height: 231px;" src="http://3.bp.blogspot.com/_vWcPU_Sx6fE/THVRM09wr8I/AAAAAAAAAW4/7C8bsWaDMMc/s320/groupingInDataCube.png" alt="" id="BLOGGER_PHOTO_ID_5509398999975636930" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;!--[endif]--&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Drag      the newly created Cube to the report designer. This will automatically      create a Crosstab Report Item.&lt;br /&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1027" type="#_x0000_t75" style="'width:431.25pt;"&gt;       &lt;v:imagedata src="file:///C:\Users\JOHNWA~1\AppData\Local\Temp\msohtml1\01\clip_image004.png" title="createCrossTab"&gt;      &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_vWcPU_Sx6fE/THVRUTVSBbI/AAAAAAAAAXA/M_KKJieIFE8/s1600/createCrossTab.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 251px;" src="http://3.bp.blogspot.com/_vWcPU_Sx6fE/THVRUTVSBbI/AAAAAAAAAXA/M_KKJieIFE8/s320/createCrossTab.png" alt="" id="BLOGGER_PHOTO_ID_5509399128386438578" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;!--[endif]--&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Drag      the State grouping to the Column area.&lt;br /&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1028" type="#_x0000_t75" style="'width:431.25pt;"&gt;       &lt;v:imagedata src="file:///C:\Users\JOHNWA~1\AppData\Local\Temp\msohtml1\01\clip_image006.png" title="dragStateOver"&gt;      &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_vWcPU_Sx6fE/THVRcA8eclI/AAAAAAAAAXI/njvms-uvhdQ/s1600/dragStateOver.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 177px;" src="http://2.bp.blogspot.com/_vWcPU_Sx6fE/THVRcA8eclI/AAAAAAAAAXI/njvms-uvhdQ/s320/dragStateOver.png" alt="" id="BLOGGER_PHOTO_ID_5509399260889510482" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;!--[endif]--&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Delete      the City grouping (this will just save space for this example).&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;Preview      the report.&lt;br /&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1029" type="#_x0000_t75" style="'width:6in;"&gt;       &lt;v:imagedata src="file:///C:\Users\JOHNWA~1\AppData\Local\Temp\msohtml1\01\clip_image008.png" title="1stPreview"&gt;      &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_vWcPU_Sx6fE/THVRj3j2-fI/AAAAAAAAAXQ/Tk-cP7QbEk0/s1600/1stPreview.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 165px;" src="http://1.bp.blogspot.com/_vWcPU_Sx6fE/THVRj3j2-fI/AAAAAAAAAXQ/Tk-cP7QbEk0/s320/1stPreview.png" alt="" id="BLOGGER_PHOTO_ID_5509399395809294834" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;!--[endif]--&gt;&lt;/li&gt;&lt;/ol&gt;  &lt;p class="MsoNormal" style="margin-left: 18pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 18pt;"&gt;That is a pretty simplistic example. A more relevant one would be a display of quarter sales per country. So, lets modify the above example.&lt;/p&gt;  &lt;ol style="margin-top: 0mm;" start="1" type="1"&gt;&lt;li class="MsoNormal" style=""&gt;Modify the query to the      following, adding the date field:&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;   1. select&lt;br /&gt;&lt;br /&gt;CUSTOMERS.CITY,&lt;br /&gt;&lt;br /&gt;CUSTOMERS.STATE,&lt;br /&gt;&lt;br /&gt;CUSTOMERS.COUNTRY,&lt;br /&gt;&lt;br /&gt;(ORDERDETAILS.PRICEEACH * ORDERDETAILS.QUANTITYORDERED) salesSum,&lt;br /&gt;&lt;br /&gt;CLASSICMODELS.ORDERS.ORDERDATE&lt;br /&gt;&lt;br /&gt;from&lt;br /&gt;&lt;br /&gt;CUSTOMERS,&lt;br /&gt;&lt;br /&gt;ORDERDETAILS,&lt;br /&gt;&lt;br /&gt;ORDERS&lt;br /&gt;&lt;br /&gt;where&lt;br /&gt;&lt;br /&gt;ORDERS.ORDERNUMBER = ORDERDETAILS.ORDERNUMBER&lt;br /&gt;&lt;br /&gt;and ORDERS.CUSTOMERNUMBER = CUSTOMERS.CUSTOMERNUMBER&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;  &lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;ol style="margin-top: 0mm;" start="2" type="1"&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;li class="MsoNormal" style=""&gt;&lt;b&gt;&lt;b&gt;In      the Data Cube, add the ORDERDATE as a group, and set the grouping to      Quarter. This prompt is unique to dates.&lt;br /&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1030" type="#_x0000_t75" style="'width:359.25pt;"&gt;       &lt;v:imagedata src="file:///C:\Users\JOHNWA~1\AppData\Local\Temp\msohtml1\01\clip_image010.png" title="quarterGRouping"&gt;      &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;/b&gt;&lt;/b&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_vWcPU_Sx6fE/THVj8hQ7zfI/AAAAAAAAAXY/HP5AmtSJon4/s1600/dateGroupByQuarter.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 267px;" src="http://1.bp.blogspot.com/_vWcPU_Sx6fE/THVj8hQ7zfI/AAAAAAAAAXY/HP5AmtSJon4/s320/dateGroupByQuarter.png" alt="" id="BLOGGER_PHOTO_ID_5509419610530369010" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;b&gt;&lt;b&gt;Remove      the State column from the Crosstab.&lt;/b&gt;&lt;/b&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;b&gt;&lt;b&gt;Drag      the ORderDate Group to the newly empty Column.&lt;br /&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1031" type="#_x0000_t75" style="'width:6in;"&gt;       &lt;v:imagedata src="file:///C:\Users\JOHNWA~1\AppData\Local\Temp\msohtml1\01\clip_image012.png" title="dragOrderDateGroup"&gt;      &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;/b&gt;&lt;/b&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_vWcPU_Sx6fE/THVkT21G0DI/AAAAAAAAAXo/bueQxMsYcqw/s1600/dragOrderDateGroup.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 223px;" src="http://1.bp.blogspot.com/_vWcPU_Sx6fE/THVkT21G0DI/AAAAAAAAAXo/bueQxMsYcqw/s320/dragOrderDateGroup.png" alt="" id="BLOGGER_PHOTO_ID_5509420011456221234" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li class="MsoNormal" style=""&gt;&lt;b&gt;&lt;b&gt;Preview      the report&lt;/b&gt;&lt;/b&gt;&lt;/li&gt;&lt;/span&gt;&lt;/ol&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;  &lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;p class="MsoNormal" style="margin-left: 18pt;"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1032" type="#_x0000_t75" style="'width:6in;height:261pt'"&gt;  &lt;v:imagedata src="file:///C:\Users\JOHNWA~1\AppData\Local\Temp\msohtml1\01\clip_image014.png" title="salesByQuarter"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_vWcPU_Sx6fE/THVkeGfDAbI/AAAAAAAAAXw/ZmzEHbCgGFw/s1600/salesByQuarter.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 194px;" src="http://3.bp.blogspot.com/_vWcPU_Sx6fE/THVkeGfDAbI/AAAAAAAAAXw/ZmzEHbCgGFw/s320/salesByQuarter.png" alt="" id="BLOGGER_PHOTO_ID_5509420187457356210" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;  &lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;p class="MsoNormal" style="margin-left: 18pt;"&gt;&lt;o:p&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt; &lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;  &lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;p class="MsoNormal" style="margin-left: 18pt;"&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;Now that is a cross tab that is a little more usable. Here we can see sales for each country based on Quarter of the year.&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;/p&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;  &lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;p class="MsoNormal" style="margin-left: 18pt;"&gt;&lt;o:p&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt; &lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;  &lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;p class="MsoNormal" style="margin-left: 18pt;"&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;Cross tabs also have some really interesting uses that are not very apparent. For example, lets say you want to display the values of rows as columns. This works just fine. In the following example, lets say we want the names of employees to show as column, with tables below each name showing their customers.&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;/p&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;  &lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;p class="MsoNormal" style="margin-left: 54pt; text-indent: -18pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;span style=""&gt;1.&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;      &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Create a new report called EmployeeCustomers.rptDesign.&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;/p&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;  &lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;p class="MsoNormal" style="margin-left: 54pt; text-indent: -18pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;span style=""&gt;2.&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;      &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Create a Data Source connecting to the Classic Models example database, and a new data set using the following query:&lt;br /&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;select &lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;/p&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;  &lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;p class="MsoNormal" style=""&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;color:black;"   &gt;&lt;span style=""&gt;      &lt;/span&gt;&lt;span style=""&gt;      &lt;/span&gt;CLASSICMODELS.EMPLOYEES.EMPLOYEENUMBER,&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;/p&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;  &lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;p class="MsoNormal" style=""&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;color:black;"   &gt;&lt;span style=""&gt;      &lt;/span&gt;&lt;span style=""&gt;      &lt;/span&gt;CLASSICMODELS.EMPLOYEES.LASTNAME,&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;/p&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;  &lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;p class="MsoNormal" style=""&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;color:black;"   &gt;&lt;span style=""&gt;      &lt;/span&gt;&lt;span style=""&gt;      &lt;/span&gt;CLASSICMODELS.EMPLOYEES.FIRSTNAME&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;/p&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;  &lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;p class="MsoNormal" style="text-indent: 36pt;"&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;from &lt;/span&gt;&lt;/b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;/p&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;  &lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;p class="MsoNormal" style="margin-left: 36pt;"&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;color:black;"   &gt;&lt;span style=""&gt;      &lt;/span&gt;CLASSICMODELS.EMPLOYEES&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;/p&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;  &lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;p class="MsoNormal" style="margin-left: 54pt; text-indent: -18pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;span style=""&gt;3.&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;      &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Create a new Data Cube. Drag over the LastName as a grouping.&lt;br /&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1033" type="#_x0000_t75" style="'width:6in;"&gt;  &lt;v:imagedata src="file:///C:\Users\JOHNWA~1\AppData\Local\Temp\msohtml1\01\clip_image016.png" title="dragLastName"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_vWcPU_Sx6fE/THVkxnPwL-I/AAAAAAAAAYA/mM8wd8MQS8U/s1600/dragLastName.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 234px;" src="http://2.bp.blogspot.com/_vWcPU_Sx6fE/THVkxnPwL-I/AAAAAAAAAYA/mM8wd8MQS8U/s320/dragLastName.png" alt="" id="BLOGGER_PHOTO_ID_5509420522669092834" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;  &lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;p class="MsoNormal" style="margin-left: 54pt; text-indent: -18pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;span style=""&gt;4.&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;      &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Double click on the LastName grouping to open the editor. For the display field use the following expression:&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_vWcPU_Sx6fE/THVk-ubatjI/AAAAAAAAAYI/HHxCCy6J4kE/s1600/fullNameExpression.png"&gt;&lt;img style="cursor: pointer; width: 281px; height: 320px;" src="http://4.bp.blogspot.com/_vWcPU_Sx6fE/THVk-ubatjI/AAAAAAAAAYI/HHxCCy6J4kE/s320/fullNameExpression.png" alt="" id="BLOGGER_PHOTO_ID_5509420747935364658" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;  &lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;p class="MsoNormal" style="margin-left: 54pt; text-indent: -18pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;span style=""&gt;5.&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;      &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Click on the Add for Attributes. Add in the EmployeeNumber. The reason for this is that we will need to be able to access the EmployeeNumber in the crosstab to filter the child tables.&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;/p&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;  &lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;p class="MsoNormal" style="margin-left: 36pt;"&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;br /&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1035" type="#_x0000_t75" style="'width:262.5pt;"&gt;  &lt;v:imagedata src="file:///C:\Users\JOHNWA~1\AppData\Local\Temp\msohtml1\01\clip_image020.png" title="employeeNumberAttribute"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_vWcPU_Sx6fE/THVlOd-F1sI/AAAAAAAAAYQ/d4F-yPLJb7Q/s1600/employeeNumberAttribute.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 105px;" src="http://2.bp.blogspot.com/_vWcPU_Sx6fE/THVlOd-F1sI/AAAAAAAAAYQ/d4F-yPLJb7Q/s320/employeeNumberAttribute.png" alt="" id="BLOGGER_PHOTO_ID_5509421018395301570" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;  &lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;p class="MsoNormal" style="margin-left: 54pt; text-indent: -18pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;span style=""&gt;6.&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;      &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Drag the newly created Data Cube to the report designer. Drag the LastName column over to the Column Area. This will display all employee names as columns instead of rows. &lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;/p&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;  &lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;p class="MsoNormal" style="margin-left: 36pt;"&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;br /&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1036" type="#_x0000_t75" style="'width:6in;"&gt;  &lt;v:imagedata src="file:///C:\Users\JOHNWA~1\AppData\Local\Temp\msohtml1\01\clip_image022.png" title="lastNameAsColumn"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_vWcPU_Sx6fE/THVlXlj6gHI/AAAAAAAAAYY/O9eWoLEUH0Y/s1600/LastNameAsColumn.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 78px;" src="http://4.bp.blogspot.com/_vWcPU_Sx6fE/THVlXlj6gHI/AAAAAAAAAYY/O9eWoLEUH0Y/s320/LastNameAsColumn.png" alt="" id="BLOGGER_PHOTO_ID_5509421175051812978" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;  &lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;p class="MsoNormal" style="margin-left: 54pt; text-indent: -18pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;span style=""&gt;7.&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;    &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Create a new Data Set. Use the following query. Be sure to leave the parameter as empty, as it will be set by our Crosstab.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;select &lt;/span&gt;&lt;/b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;/p&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;  &lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;p class="MsoNormal" style=""&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;color:black;"   &gt;&lt;span style=""&gt;      &lt;/span&gt;CUSTOMERS.CUSTOMERNAME&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;/p&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;  &lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;p class="MsoNormal" style=""&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;from &lt;/span&gt;&lt;/b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;/p&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;  &lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;p class="MsoNormal" style=""&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;color:black;"   &gt;&lt;span style=""&gt;      &lt;/span&gt;CUSTOMERS&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;/p&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;  &lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;p class="MsoNormal" style=""&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;where&lt;/span&gt;&lt;/b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;/p&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;  &lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;p class="MsoNormal" style="margin-left: 36pt;"&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;color:black;"   &gt;&lt;span style=""&gt;      &lt;/span&gt;CUSTOMERS.SALESREPEMPLOYEENUMBER &lt;/span&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;= &lt;/span&gt;&lt;/b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;color:black;"   &gt;?&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;/p&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;  &lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;p class="MsoNormal" style="margin-left: 54pt; text-indent: -18pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;span style=""&gt;8.&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;      &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;From the outline view, select the cell that the LastName element is in for the cross tab, right-mouse click, and choose Insert/Table.&lt;br /&gt;&lt;br /&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1037" type="#_x0000_t75" style="'width:204.75pt;"&gt;  &lt;v:imagedata src="file:///C:\Users\JOHNWA~1\AppData\Local\Temp\msohtml1\01\clip_image024.png" title="insertTable"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_vWcPU_Sx6fE/THVljW4-BvI/AAAAAAAAAYg/Bppv0QQQR5w/s1600/insertTable.png"&gt;&lt;img style="cursor: pointer; width: 245px; height: 320px;" src="http://3.bp.blogspot.com/_vWcPU_Sx6fE/THVljW4-BvI/AAAAAAAAAYg/Bppv0QQQR5w/s320/insertTable.png" alt="" id="BLOGGER_PHOTO_ID_5509421377272022770" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;  &lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;p class="MsoNormal" style="margin-left: 54pt; text-indent: -18pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;span style=""&gt;9.&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;      &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Create the table as 1 row, 1 column, and Data Set to the employeeCustomers table that was create in step 2.&lt;br /&gt;&lt;br /&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1038" type="#_x0000_t75" style="'width:204.75pt;"&gt;  &lt;v:imagedata src="file:///C:\Users\JOHNWA~1\AppData\Local\Temp\msohtml1\01\clip_image026.png" title="setTableToEmployeeCustomers"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_vWcPU_Sx6fE/THVlsEwNIfI/AAAAAAAAAYo/CtvrA9reqvU/s1600/setTableToEmployeeCustomers.png"&gt;&lt;img style="cursor: pointer; width: 273px; height: 243px;" src="http://1.bp.blogspot.com/_vWcPU_Sx6fE/THVlsEwNIfI/AAAAAAAAAYo/CtvrA9reqvU/s320/setTableToEmployeeCustomers.png" alt="" id="BLOGGER_PHOTO_ID_5509421527022248434" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;  &lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;p class="MsoNormal" style="margin-left: 54pt; text-indent: -18pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;span style=""&gt;10.&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Now, we need to do something a little tricky here to filter this table. Select the table in the Report Editor. In the Property view, select Bindings.&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;/p&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;  &lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;p class="MsoNormal" style="margin-left: 36pt;"&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;br /&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1039" type="#_x0000_t75" style="'width:431.25pt;"&gt;  &lt;v:imagedata src="file:///C:\Users\JOHNWA~1\AppData\Local\Temp\msohtml1\01\clip_image028.png" title="TABLeBinding"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_vWcPU_Sx6fE/THVl1p03VFI/AAAAAAAAAYw/RYfqOmQg-XI/s1600/tableBinding.png"&gt;&lt;img style="cursor: pointer; width: 293px; height: 320px;" src="http://1.bp.blogspot.com/_vWcPU_Sx6fE/THVl1p03VFI/AAAAAAAAAYw/RYfqOmQg-XI/s320/tableBinding.png" alt="" id="BLOGGER_PHOTO_ID_5509421691592725586" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;  &lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;p class="MsoNormal" style="margin-left: 54pt; text-indent: -18pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;span style=""&gt;11.&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Open the Data Set Parameter Binding dialog by clicking on the button.&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;/p&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;  &lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;p class="MsoNormal" style="margin-left: 54pt; text-indent: -18pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;span style=""&gt;12.&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;select Param_1, and click Edit.&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;/p&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;  &lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;p class="MsoNormal" style="margin-left: 54pt; text-indent: -18pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;span style=""&gt;13.&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Click on the Function button in the Edit Data Set Parameter Binding dialog&lt;br /&gt;&lt;br /&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1040" type="#_x0000_t75" style="'width:6in;"&gt;  &lt;v:imagedata src="file:///C:\Users\JOHNWA~1\AppData\Local\Temp\msohtml1\01\clip_image030.png" title="functionButton"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_vWcPU_Sx6fE/THVmCtmcEiI/AAAAAAAAAY4/PYWOAeMo1lc/s1600/functionButton.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 178px;" src="http://2.bp.blogspot.com/_vWcPU_Sx6fE/THVmCtmcEiI/AAAAAAAAAY4/PYWOAeMo1lc/s320/functionButton.png" alt="" id="BLOGGER_PHOTO_ID_5509421915944260130" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;  &lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;p class="MsoNormal" style="margin-left: 54pt; text-indent: -18pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;span style=""&gt;14.&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;We will need to add a new data binding for our cross tab. So Select edit bindings.&lt;br /&gt;&lt;br /&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1041" type="#_x0000_t75" style="'width:6in;"&gt;  &lt;v:imagedata src="file:///C:\Users\JOHNWA~1\AppData\Local\Temp\msohtml1\01\clip_image032.png" title="editBindingForCrossTab"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_vWcPU_Sx6fE/THVmLzS5D4I/AAAAAAAAAZA/Dv-qAb2z5Rg/s1600/editBindingForCrossTab.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 275px;" src="http://4.bp.blogspot.com/_vWcPU_Sx6fE/THVmLzS5D4I/AAAAAAAAAZA/Dv-qAb2z5Rg/s320/editBindingForCrossTab.png" alt="" id="BLOGGER_PHOTO_ID_5509422072091709314" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;  &lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;p class="MsoNormal" style="margin-left: 54pt; text-indent: -18pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;span style=""&gt;15.&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;From the Edit Data Binding dialog, click on Add.&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;/p&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;  &lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;p class="MsoNormal" style="margin-left: 54pt; text-indent: -18pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;span style=""&gt;16.&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Set the name to employeeNumber, type to Integer, and expression to dimension["GroupByLastName"]["LASTNAME"]["EMPLOYEENUMBER"]. You can use the Expression Editor to set this expression. When you go through the navigation, you will notice that EmployeeNumber is listed under the group. The reason being, we added it as an attribute for the LAstName grouping.&lt;br /&gt;&lt;br /&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1042" type="#_x0000_t75" style="'width:6in;"&gt;  &lt;v:imagedata src="file:///C:\Users\JOHNWA~1\AppData\Local\Temp\msohtml1\01\clip_image034.png" title="employeeNumberAttributeasBinding"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_vWcPU_Sx6fE/THVmW4Vz6SI/AAAAAAAAAZI/jXjpajPdyjU/s1600/employeeNumberAttributeAsBinding.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 275px;" src="http://2.bp.blogspot.com/_vWcPU_Sx6fE/THVmW4Vz6SI/AAAAAAAAAZI/jXjpajPdyjU/s320/employeeNumberAttributeAsBinding.png" alt="" id="BLOGGER_PHOTO_ID_5509422262424693026" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;  &lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;p class="MsoNormal" style="margin-left: 54pt; text-indent: -18pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;span style=""&gt;17.&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Now that the crosstab binding has been created, we can hit OK for the dialogs until we get back to the Expression Editor for the Parameter Binding. The employeeNumber field is now available.&lt;br /&gt;&lt;br /&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1043" type="#_x0000_t75" style="'width:6in;"&gt;  &lt;v:imagedata src="file:///C:\Users\JOHNWA~1\AppData\Local\Temp\msohtml1\01\clip_image036.png" title="employeeNumberField"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_vWcPU_Sx6fE/THVmhDf0ZUI/AAAAAAAAAZQ/uTMUB90W7yY/s1600/employeeNumberField.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 275px;" src="http://4.bp.blogspot.com/_vWcPU_Sx6fE/THVmhDf0ZUI/AAAAAAAAAZQ/uTMUB90W7yY/s320/employeeNumberField.png" alt="" id="BLOGGER_PHOTO_ID_5509422437218149698" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;  &lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;p class="MsoNormal" style="margin-left: 54pt; text-indent: -18pt;"&gt;&lt;!--[if !supportLists]--&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;span style=""&gt;18.&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Now, drag the CustomerName field into the detail section of the table.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_vWcPU_Sx6fE/THVm3Zs91-I/AAAAAAAAAZY/dNG29PCFGZY/s1600/dragCustomerName.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 223px;" src="http://2.bp.blogspot.com/_vWcPU_Sx6fE/THVm3Zs91-I/AAAAAAAAAZY/dNG29PCFGZY/s320/dragCustomerName.png" alt="" id="BLOGGER_PHOTO_ID_5509422821135996898" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/p&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;  &lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt; &lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;  &lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;p class="MsoNormal"&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;And once you apply some formatting, you are set. You are now using the rows of a table as columns, and driving a detail table with that.&lt;br /&gt;&lt;!--[if !supportLineBreakNewLine]--&gt;&lt;br /&gt;&lt;!--[endif]--&gt;&lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;/p&gt;&lt;b&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;  &lt;/span&gt;&lt;/b&gt;&lt;/b&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16506996-6511020255148003505?l=digiassn.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=x-bd5usFLFg:PIgh-j_XdYU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=x-bd5usFLFg:PIgh-j_XdYU:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=x-bd5usFLFg:PIgh-j_XdYU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://digiassn.blogspot.com/feeds/6511020255148003505/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=16506996&amp;postID=6511020255148003505&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/16506996/posts/default/6511020255148003505?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/16506996/posts/default/6511020255148003505?v=2" /><link rel="alternate" type="text/html" href="http://digiassn.blogspot.com/2010/08/birt-all-about-crosstabs.html" title="BIRT: All About Crosstabs" /><author><name>John Ward</name><uri>http://www.blogger.com/profile/10741149622435353727</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://2.bp.blogspot.com/_vWcPU_Sx6fE/THVRFKdOIaI/AAAAAAAAAWw/1q-9p6MuAZM/s72-c/newDataCube.png" height="72" width="72" /><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;DkEFRn4_fSp7ImA9Wx5TGUQ.&quot;"><id>tag:blogger.com,1999:blog-16506996.post-2569520519456610077</id><published>2010-08-05T01:45:00.002-06:00</published><updated>2010-08-05T01:50:17.045-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-08-05T01:50:17.045-06:00</app:edited><title>BIRT: My New Book is Out</title><content type="html">My new book, covering up to BIRT 2.6, has been released.&lt;br /&gt;&lt;br /&gt;&lt;a href="https://www.packtpub.com/birt-2-6-data-analysis-and-reporting/book"&gt;https://www.packtpub.com/birt-2-6-data-analysis-and-reporting/book&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Right now, they are running a special, 33.74 for the book, 30 for the eBook, and 39 for the pair!!!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16506996-2569520519456610077?l=digiassn.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=NHfM5IluVJI:BKoVtAZs_jA:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=NHfM5IluVJI:BKoVtAZs_jA:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=NHfM5IluVJI:BKoVtAZs_jA:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://digiassn.blogspot.com/feeds/2569520519456610077/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=16506996&amp;postID=2569520519456610077&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/16506996/posts/default/2569520519456610077?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/16506996/posts/default/2569520519456610077?v=2" /><link rel="alternate" type="text/html" href="http://digiassn.blogspot.com/2010/08/birt-my-new-book-is-out.html" title="BIRT: My New Book is Out" /><author><name>John Ward</name><uri>http://www.blogger.com/profile/10741149622435353727</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;C04MQXs6fip7ImA9WxFaE0s.&quot;"><id>tag:blogger.com,1999:blog-16506996.post-3857419601592327371</id><published>2010-07-17T04:16:00.001-06:00</published><updated>2010-07-17T04:19:40.516-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-07-17T04:19:40.516-06:00</app:edited><title>BIRT: Articles Posted</title><content type="html">If you've noticed I've been silent, its because I've been busy updating the BIRT book to cover 2.3.x, 2.5.x, and now 2.6. Due to page number constraints, we had to cut two chapters from the book. But their loss is your gain. Those two chapters have now been released, free of charge, to the public thanks to my publisher. These chapters cover how to build stylesheets, templates, libraries in one article, and building a Bugzilla reporting site in the other (unrelated to my jobs BIRT demo site, BIRT4Bugz).&lt;br /&gt;&lt;br /&gt;Check out the articles here:&lt;br /&gt;http://www.packtpub.com/article/use-stylesheets-report-designing-using-birt&lt;br /&gt;http://www.packtpub.com/article/creating-reporting-site-birt&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16506996-3857419601592327371?l=digiassn.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=gcI2jWrvH1M:s7ysj0XfwhU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=gcI2jWrvH1M:s7ysj0XfwhU:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=gcI2jWrvH1M:s7ysj0XfwhU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://digiassn.blogspot.com/feeds/3857419601592327371/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=16506996&amp;postID=3857419601592327371&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/16506996/posts/default/3857419601592327371?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/16506996/posts/default/3857419601592327371?v=2" /><link rel="alternate" type="text/html" href="http://digiassn.blogspot.com/2010/07/birt-articles-posted.html" title="BIRT: Articles Posted" /><author><name>John Ward</name><uri>http://www.blogger.com/profile/10741149622435353727</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;C0UAQXw-fSp7ImA9WxFVGE0.&quot;"><id>tag:blogger.com,1999:blog-16506996.post-7340571863893527460</id><published>2010-06-17T12:41:00.002-06:00</published><updated>2010-06-17T13:00:40.255-06:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-06-17T13:00:40.255-06:00</app:edited><title>Droid: Using a Wii Controller on an Android Phone</title><content type="html">Busy period for me again, thats why posts have been few and far between. I have  a whole stack of posts slated to write, I just need time to do them.&lt;br /&gt;&lt;br /&gt;Since I have been doing so much traveling lately, it leaves me with a lot of idle time in places like airports. while I always have my trusty Nintendo Ds with me, there are times where I don't want to lug around the carrying case with all my games. This is where my cell phone, a Motorola Droid, has come into play. Once again, I can't help but marvel at how powerful these devices have become.&lt;br /&gt;&lt;br /&gt;I have gotten a interest in retro gaming. I grew up on the old school NES, SNES, and Sega Genesis games. And since the Droid is powerful enough, it can run emulators of these old school systems at full speed. The only problem is the control scheme leaves a little something to be desired. the onscreen controls just suck since you have no tactile feedback that you pushed a button (except for a vibration). the keyboard is awkward, so a gaming controller would be ideal here.&lt;br /&gt;&lt;br /&gt;Well, there are a few options. First is the &lt;a href="http://sites.google.com/site/gamegripper/"&gt;Game Gripper&lt;/a&gt;. This looks promising. I ordered one, but it hasn't arrived yet. There are two drawbacks to this. First, it only supports the Droid and the Backflip. Second, since it is basically a plastic insert that just pushes the buttons on your keyboard for you, I wonder if it will eventually wear down the thin plastic cover on the keyboard, or leave indentations.&lt;br /&gt;&lt;br /&gt;The second option is the &lt;a href="http://www.zeemote.com/"&gt;Zeemote&lt;/a&gt;. While the Droid is not explicitly listed on their site, there is a app in the marketplace called Gamepro that will interface with it.&lt;br /&gt;&lt;br /&gt;The option I am using right now is the Nintendo Wii controller. There is an app in the Market called Wii Controller IME. This interfaces with the Wii controller (and the Wii Remotes Classic Controller) to allow you to use a Wii remote on the Droid. You assign keypresses to keyboard buttons, and your good to go. I tested it with NESoid and it worked flawlessly as long as I had the "Use Input Device" option selected. It even processed two button presses at the same time, something the keyboard had a hard time with. This is important if your playing a game that requires diagonal movement. the only drawback is that I have to carry a Wii remote with me, and that it uses Bluetooth, so battery life is much lower. One thing to keep in mind, it is reported that this app has a hard time with HTC phones, or phones using HTC Sense. So the Incredible, EVO, and Eris might have a hard time with it. Now I just need a phone with video out like the EVO and I'd be all set for when I travel =)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16506996-7340571863893527460?l=digiassn.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=2HxH2IqwlDU:gWlFFzWUb5c:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=2HxH2IqwlDU:gWlFFzWUb5c:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=2HxH2IqwlDU:gWlFFzWUb5c:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://digiassn.blogspot.com/feeds/7340571863893527460/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=16506996&amp;postID=7340571863893527460&amp;isPopup=true" title="0 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/16506996/posts/default/7340571863893527460?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/16506996/posts/default/7340571863893527460?v=2" /><link rel="alternate" type="text/html" href="http://digiassn.blogspot.com/2010/06/droid-using-wii-controller-on-android.html" title="Droid: Using a Wii Controller on an Android Phone" /><author><name>John Ward</name><uri>http://www.blogger.com/profile/10741149622435353727</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>0</thr:total></entry><entry gd:etag="W/&quot;CEADRXw_eSp7ImA9WxBVFEs.&quot;"><id>tag:blogger.com,1999:blog-16506996.post-936199842299903554</id><published>2010-02-17T20:07:00.004-07:00</published><updated>2010-02-17T20:12:54.241-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-17T20:12:54.241-07:00</app:edited><title>BIRT: BIRT Report Item Extensions Released by Innovent Solutions</title><content type="html">As part of its commitment and involvement with the BIRT project Innovent Solutions, the company I work for, has created a project that offers a few graphical controls to illustrate BIRTs report item extension point. There are two extensions offered in these libraries. The first one is a Dot Bar. The Dot bar provides a quick visual representation of numeric values. This is useful for a quick, at a glance, representation, rather than overwhelm users with numbers everywhere in a report. The second is a Rotating Text graphic element, based off the original rotating text example illustrated in “Integrating and Extending BIRT”. The rotating text is useful when you are trying to conserve space on a report.  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;These extension elements are available at &lt;a href="http://code.google.com/p/birt-controls-lib/"&gt;http://code.google.com/p/birt-controls-lib/&lt;/a&gt;. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Installation instructions are provided on the above link, but we will cover this real quick. There are two components necessary to install these into the BIRT Report Designer. There is a bb.birt.controls.xxx.jar, and a bb.birt.controler.ui.xxx.jar. The UI component is necessary for the BIRT report designer to show these new elements in the palette. The other jar contains the necessary runtime libraries for BIRT to know how to use these elements in a report. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;The easiest installation method is to use the update site. The update site is provided in the instructions. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Once installed, you will have the two new components available on the Palette.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shapetype id="_x0000_t75" coordsize="21600,21600" spt="75" preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f"&gt;  &lt;v:stroke joinstyle="miter"&gt;  &lt;v:formulas&gt;   &lt;v:f eqn="if lineDrawn pixelLineWidth 0"&gt;   &lt;v:f eqn="sum @0 1 0"&gt;   &lt;v:f eqn="sum 0 0 @1"&gt;   &lt;v:f eqn="prod @2 1 2"&gt;   &lt;v:f eqn="prod @3 21600 pixelWidth"&gt;   &lt;v:f eqn="prod @3 21600 pixelHeight"&gt;   &lt;v:f eqn="sum @0 0 1"&gt;   &lt;v:f eqn="prod @6 1 2"&gt;   &lt;v:f eqn="prod @7 21600 pixelWidth"&gt;   &lt;v:f eqn="sum @8 21600 0"&gt;   &lt;v:f eqn="prod @7 21600 pixelHeight"&gt;   &lt;v:f eqn="sum @10 21600 0"&gt;  &lt;/v:formulas&gt;  &lt;v:path extrusionok="f" gradientshapeok="t" connecttype="rect"&gt;  &lt;o:lock ext="edit" aspectratio="t"&gt; &lt;/v:shapetype&gt;&lt;v:shape id="_x0000_i1025" type="#_x0000_t75" style="'width:244.5pt;"&gt;  &lt;v:imagedata src="file:///C:\Users\JOHNWA~1\AppData\Local\Temp\msohtml1\01\clip_image001.png" title="newPalette"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_vWcPU_Sx6fE/S3yvvrB45VI/AAAAAAAAAWQ/mfTP_dAjh0g/s1600-h/newPalette.png"&gt;&lt;img style="cursor: pointer; width: 247px; height: 320px;" src="http://1.bp.blogspot.com/_vWcPU_Sx6fE/S3yvvrB45VI/AAAAAAAAAWQ/mfTP_dAjh0g/s320/newPalette.png" alt="" id="BLOGGER_PHOTO_ID_5439415683496076626" border="0" /&gt;&lt;/a&gt;&lt;!--[endif]--&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;So, lets say I want to demonstrate these. In the following example, I will create a simple report that will show the offices and employee count for the Classic Cars sample database. Assume I already have the above components installed, and I am using BIRT 2.5.1.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 39pt; text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=""&gt;1.&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;      &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Create a new report called newComponentTest.rptDesign.&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 39pt; text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=""&gt;2.&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;      &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Create a new Data Source using the Classic Cars example database.&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 39pt; text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=""&gt;3.&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;      &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Create a new dataset from the following query:&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;select &lt;/span&gt;&lt;/b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;color:black;"   &gt;&lt;span style=""&gt;      &lt;/span&gt;CLASSICMODELS.OFFICES.OFFICECODE,&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;color:black;"   &gt;&lt;span style=""&gt;      &lt;/span&gt;CLASSICMODELS.OFFICES.CITY,&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;color:black;"   &gt;&lt;span style=""&gt;      &lt;/span&gt;(select count(&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;'1'&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;color:black;"   &gt;) &lt;/span&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;from &lt;/span&gt;&lt;/b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;color:black;"   &gt;employees &lt;/span&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;where &lt;/span&gt;&lt;/b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;color:black;"   &gt;officecode &lt;/span&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;= &lt;/span&gt;&lt;/b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;color:black;"   &gt;CLASSICMODELS.OFFICES.OFFICECODE) officecount&lt;/span&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 0.5in;"&gt;&lt;b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;from &lt;/span&gt;&lt;/b&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 57pt;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:10pt;color:black;"   &gt;&lt;span style=""&gt;   &lt;/span&gt;CLASSICMODELS.OFFICES&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 39pt; text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=""&gt;4.&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;      &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Right-mouse click on the data set, and choose Insert in Layout.&lt;br /&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 39pt; text-indent: -0.25in;"&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_vWcPU_Sx6fE/S3yva1Y9tXI/AAAAAAAAAWA/IKvUnlmYiIs/s1600-h/insertInLayout.png"&gt;&lt;img style="cursor: pointer; width: 218px; height: 283px;" src="http://3.bp.blogspot.com/_vWcPU_Sx6fE/S3yva1Y9tXI/AAAAAAAAAWA/IKvUnlmYiIs/s320/insertInLayout.png" alt="" id="BLOGGER_PHOTO_ID_5439415325499962738" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class="MsoNormal" style="margin-left: 39pt; text-indent: -0.25in;"&gt;The report will look like so:&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 21pt;"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1026" type="#_x0000_t75" style="'width:6in;height:90pt'"&gt;  &lt;v:imagedata src="file:///C:\Users\JOHNWA~1\AppData\Local\Temp\msohtml1\01\clip_image003.png" title="subRangeReport"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_vWcPU_Sx6fE/S3yvv8r3CgI/AAAAAAAAAWg/Y_5pN__hwuk/s1600-h/subRangeReport.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 66px;" src="http://1.bp.blogspot.com/_vWcPU_Sx6fE/S3yvv8r3CgI/AAAAAAAAAWg/Y_5pN__hwuk/s320/subRangeReport.png" alt="" id="BLOGGER_PHOTO_ID_5439415688235518466" border="0" /&gt;&lt;/a&gt;&lt;!--[endif]--&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 21pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 39pt; text-indent: -0.25in;"&gt;&lt;span style=""&gt;5.&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;      &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Now, select the OfficeCount detail data component, and delete it.&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 39pt; text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=""&gt;6.&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;      &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Insert a DotBar in the OfficeCount detail cell.&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 39pt; text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=""&gt;7.&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;      &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;In the DotBar dialog, use the following details:&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 21pt;"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1027" type="#_x0000_t75" style="'width:6in;height:240.75pt'"&gt;  &lt;v:imagedata src="file:///C:\Users\JOHNWA~1\AppData\Local\Temp\msohtml1\01\clip_image005.png" title="dotBarDetails"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_vWcPU_Sx6fE/S3yvaFG8WZI/AAAAAAAAAVo/cjXBnZlj6s0/s1600-h/dotBarDetails.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 178px;" src="http://3.bp.blogspot.com/_vWcPU_Sx6fE/S3yvaFG8WZI/AAAAAAAAAVo/cjXBnZlj6s0/s320/dotBarDetails.png" alt="" id="BLOGGER_PHOTO_ID_5439415312539474322" border="0" /&gt;&lt;/a&gt;&lt;!--[endif]--&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 39pt; text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=""&gt;8.&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;      &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Now, remove the OfficeCode column (1&lt;sup&gt;st&lt;/sup&gt; column).&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 39pt; text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=""&gt;9.&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;      &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;In the City Detail cell, remove the City data component.&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 39pt; text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=""&gt;10.&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Insert a Rotated Text component into the cell. &lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 39pt; text-indent: -0.25in;"&gt;&lt;!--[if !supportLists]--&gt;&lt;span style=""&gt;11.&lt;span style=";font-family:&amp;quot;;font-size:7pt;"  &gt;  &lt;/span&gt;&lt;/span&gt;&lt;!--[endif]--&gt;Use the following properties:&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 21pt;"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1028" type="#_x0000_t75" style="'width:6in;height:117pt'"&gt;  &lt;v:imagedata src="file:///C:\Users\JOHNWA~1\AppData\Local\Temp\msohtml1\01\clip_image007.png" title="rotatedTextProperties"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_vWcPU_Sx6fE/S3yvv8MdoRI/AAAAAAAAAWY/NQCCVsPEYaw/s1600-h/rotatedTextProperties.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 86px;" src="http://3.bp.blogspot.com/_vWcPU_Sx6fE/S3yvv8MdoRI/AAAAAAAAAWY/NQCCVsPEYaw/s320/rotatedTextProperties.png" alt="" id="BLOGGER_PHOTO_ID_5439415688103829778" border="0" /&gt;&lt;/a&gt;&lt;!--[endif]--&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 21pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 21pt;"&gt;The final report will look something like this:&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 21pt;"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1029" type="#_x0000_t75" style="'width:6in;height:96pt'"&gt;  &lt;v:imagedata src="file:///C:\Users\JOHNWA~1\AppData\Local\Temp\msohtml1\01\clip_image009.png" title="finalReport"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_vWcPU_Sx6fE/S3yvatZHbtI/AAAAAAAAAV4/pN9QzKZnarU/s1600-h/finalReport.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 71px;" src="http://4.bp.blogspot.com/_vWcPU_Sx6fE/S3yvatZHbtI/AAAAAAAAAV4/pN9QzKZnarU/s320/finalReport.png" alt="" id="BLOGGER_PHOTO_ID_5439415323353116370" border="0" /&gt;&lt;/a&gt;&lt;!--[endif]--&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 21pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 21pt;"&gt;And when you run the report, it should look like so:&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 21pt;"&gt;&lt;!--[if gte vml 1]&gt;&lt;v:shape id="_x0000_i1030" type="#_x0000_t75" style="'width:431.25pt;height:166.5pt'"&gt;  &lt;v:imagedata src="file:///C:\Users\JOHNWA~1\AppData\Local\Temp\msohtml1\01\clip_image011.png" title="executedReport"&gt; &lt;/v:shape&gt;&lt;![endif]--&gt;&lt;!--[if !vml]--&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_vWcPU_Sx6fE/S3yvaRS5iVI/AAAAAAAAAVw/JlV9RWa29qc/s1600-h/executedReport.png"&gt;&lt;img style="cursor: pointer; width: 320px; height: 123px;" src="http://1.bp.blogspot.com/_vWcPU_Sx6fE/S3yvaRS5iVI/AAAAAAAAAVw/JlV9RWa29qc/s320/executedReport.png" alt="" id="BLOGGER_PHOTO_ID_5439415315810847058" border="0" /&gt;&lt;/a&gt;&lt;!--[endif]--&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 21pt;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-left: 21pt;"&gt;The source for these components are available to be extended as well from the above linked Google Code site.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16506996-936199842299903554?l=digiassn.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=S9g0HEWVLmo:djRJwb7nSs8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=S9g0HEWVLmo:djRJwb7nSs8:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=S9g0HEWVLmo:djRJwb7nSs8:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://digiassn.blogspot.com/feeds/936199842299903554/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=16506996&amp;postID=936199842299903554&amp;isPopup=true" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/16506996/posts/default/936199842299903554?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/16506996/posts/default/936199842299903554?v=2" /><link rel="alternate" type="text/html" href="http://digiassn.blogspot.com/2010/02/birt-birt-report-item-extensions.html" title="BIRT: BIRT Report Item Extensions Released by Innovent Solutions" /><author><name>John Ward</name><uri>http://www.blogger.com/profile/10741149622435353727</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://1.bp.blogspot.com/_vWcPU_Sx6fE/S3yvvrB45VI/AAAAAAAAAWQ/mfTP_dAjh0g/s72-c/newPalette.png" height="72" width="72" /><thr:total>4</thr:total></entry><entry gd:etag="W/&quot;AkcESX05eyp7ImA9WxBWF0o.&quot;"><id>tag:blogger.com,1999:blog-16506996.post-9031989843372573300</id><published>2010-02-09T21:53:00.003-07:00</published><updated>2010-02-09T22:00:08.323-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-02-09T22:00:08.323-07:00</app:edited><title>VOIP: Set Up Asterisk and LinkSys 3102 to work with SIPDroid.</title><content type="html">&lt;p class="MsoNormal"&gt;My most recent project has been to set up a VOIP setup on my Droid so that I can VPN into my home network using either my 3G service or WiFi and use the unused landline that I have so that I don’t burn minutes. As a secondary objective, I’d also like to be able to have calls made to my house ring on my cell phone after a few rings on my house phone.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;In order to accomplish this task, I needed 2 things:&lt;/p&gt;  &lt;p class="MsoNormal"&gt;A means to connect my landline to my Asterisk server&lt;/p&gt;  &lt;p class="MsoNormal"&gt;An old machine to run Asterisk on&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;The old machine was easy. I have an old Compaq that has been sitting idle since the early 2006 or 2007. It had Ubuntu Dapper Drake. Although I would have liked to have put something newer, it appears that most newer distributions don’t agree with the hardware, and I really don’t have time to mess around with passing in various kernel parameters in a trial and error manner since the error messages were non-existent. Since this was the case, I enabled the universe repository under /etc/apt/sources.list, and ran the following command to get Asterisk running:&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;apt-get –f install asterisk&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;I didn’t change any of the configuration files, I want to keep them stock since I will use a special configuration wizard.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Now, the hardware I used to connect the phone was a Linksys 3102 ATA. I also did not do anything in configuration outside of enabling configuration through the outside WAN since this is only connected to my Intranet. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Configuration, despite how confusing all this looked initially, turned out to be a piece of cake, thanks to &lt;a href="http://voxilla.com/voxilla/tools/device-configuration-wizard/linksys-spa3102-spa3000-configuration-wizard-for-asterisk"&gt;this handy dandy configuration utility, courtesy of the nice folks at Voxilla&lt;/a&gt;. I simply followed the wizard, which automatically configured the 3102 to work with Asterisk. To configure Asterisk, I made a backup of the sip.conf, voicemail.conf, and extensions.conf, removed them, and copy and pasted in the appropriate configuration sections from the wizard into the appropriate files. So, to do that, it looked something like:&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;root@cloya-desktop:/etc/asterisk# mkdir backup&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;root@cloya-desktop:/etc/asterisk# cp sip.conf backup/&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;root@cloya-desktop:/etc/asterisk# cp extensions.conf backup/&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;root@cloya-desktop:/etc/asterisk# cp voicemail.conf backup/&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;root@cloya-desktop:/etc/asterisk# rm sip.conf&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;root@cloya-desktop:/etc/asterisk# nano sip.conf&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;root@cloya-desktop:/etc/asterisk# rm voicemail.conf&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;root@cloya-desktop:/etc/asterisk# nano voicemail.conf&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;root@cloya-desktop:/etc/asterisk# rm extensions.conf&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;root@cloya-desktop:/etc/asterisk# nano extensions.conf&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;root@cloya-desktop:/etc/asterisk# cat sip.conf&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;[digiassn]&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;type=friend&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;host=dynamic&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;context=home&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;secret=secretPassword&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;mailbox=digiassn&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;dtmfmode=rfc2833&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;disallow=all&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;allow=ulaw&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;[pstn]&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;; If you're using Asterisk, this goes into the Incoming settings&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;; For your Trunk&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;type=friend&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;host=dynamic&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;; If using Asterisk@home, change the below line to context=from-internal&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;context=home&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;secret= secretPassword&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;dtmfmode=rfc2833&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;disallow=all&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;allow=ulaw&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;insecure=very&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;[pstn-spa3k]&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;; If you're using Asterisk, this section goes into the Outgoing Settings&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;; for your trunk.&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;type=peer&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;auth=md5&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;host=192.168.1.110&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;port=5061&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;secret= secretPassword&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;username=asterisk&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;fromuser=asterisk&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;dtmfmode=rfc2833&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;; If using Asterisk@home, change the below line to context=from-internal&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;context=home&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;insecure=very &lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;root@cloya-desktop:/etc/asterisk# cat voicemail.conf&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;[default]&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;digiassn =&gt; digiassn,John Ward,user.com,user-pager.com,tz=pacific&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;root@cloya-desktop:/etc/asterisk# cat extensions.conf&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;[home]&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; digiassn,1,Ringing&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; digiassn,2,Dial(SIP/digiassn,20,T)&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; digiassn,3,Voicemail(udigiassn)&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; digiassn,4,Hangup&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; 911,1,Dial(SIP/911@pstn-spa3k,60,)&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; 911,2,Congestion&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; _XXXXXXX,1,Dial(SIP/${EXTEN}@pstn-spa3k,60,)&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; _XXXXXXX,2,Congestion&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; _1800XXXXXXX,1,Dial(SIP/${EXTEN}@pstn-spa3k,60,)&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; _1800XXXXXXX,2,Congestion&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; _1888XXXXXXX,1,Dial(SIP/${EXTEN}@pstn-spa3k,60,)&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; _1888XXXXXXX,2,Congestion&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; _1877XXXXXXX,1,Dial(SIP/${EXTEN}@pstn-spa3k,60,)&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; _1877XXXXXXX,2,Congestion&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; _1866XXXXXXX,1,Dial(SIP/${EXTEN}@pstn-spa3k,60,)&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; _1866XXXXXXX,2,Congestion&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Then, I need to edit the /etc/default/asterisk file to change the line that says &lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;RUNASTERISK=no&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;to say&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;RUNASTERISK=yes&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Now, before I actually start this up, I needed to make one final change. When I actually started this up and played with it, the dial in from my land line did not ring the VOIP setup on my Droid the way I wanted. The reason is the extension.conf file was not set up correctly from the script. The way it works by default is that any calls coming in the digiassn extension would ring the digiassn extension for 20 seconds then go to voice mail. This is not what I want. I want calls coming in the pstn extension to ring the pstn extension for 20 seconds (which would be the physical home phone line), then ring my VOIP setup on my cell (digiassn) for 10 seconds, then go to voicemail. Most normal configurations won’t require this, but I included it here to show my final configuration. First, go into the SPA configuration utility, and under Voice/Line 1/Proxy and Registration, change the value of Use Outbound Proxy to true. I don’t know why, but the handset wouldn’t ring without this set. Then change the below configuration for extensions.conf:&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;[home]&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; pstn,1,Ringing&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; pstn,2,Dial(SIP/digiassn,20,T) #ring the handset first&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; pstn,3,Dial(SIP/pstn,15,T) #then ring the SIPDroid&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; pstn,4,Voicemail(udigiassn)&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; pstn,5,Hangup&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; 911,1,Dial(SIP/911@pstn-spa3k,60,)&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; 911,2,Congestion&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; _XXXXXXX,1,Dial(SIP/${EXTEN}@pstn-spa3k,60,)&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; _XXXXXXX,2,Congestion&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; _1800XXXXXXX,1,Dial(SIP/${EXTEN}@pstn-spa3k,60,)&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; _1800XXXXXXX,2,Congestion&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; _1888XXXXXXX,1,Dial(SIP/${EXTEN}@pstn-spa3k,60,)&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; _1888XXXXXXX,2,Congestion&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; _1877XXXXXXX,1,Dial(SIP/${EXTEN}@pstn-spa3k,60,)&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; _1877XXXXXXX,2,Congestion&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; _1866XXXXXXX,1,Dial(SIP/${EXTEN}@pstn-spa3k,60,)&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; _1866XXXXXXX,2,Congestion&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Now, I can start up Asterisk by running /etc/init.d/asterisk restart.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Now, I need a VOIP client. I am using SIPDroid to make my connections. To do this, I configure SIPDroid as follows:&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;Under SIP Account Settings:&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;&lt;span style="font-weight: bold;"&gt;Authorization Username&lt;/span&gt;: pstn&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;&lt;span style="font-weight: bold;"&gt;Password&lt;/span&gt;: &lt;set&gt;&lt;/set&gt;&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;&lt;span style="font-weight: bold;"&gt;Server&lt;/span&gt;: 192.168.1.111 (The address of the Asterix box).&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;&lt;span style="font-weight: bold;"&gt;Port&lt;/span&gt;: 5060&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;&lt;span style="font-weight: bold;"&gt;Protocol&lt;/span&gt;: UDP&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Everything else I leave default. That’s it. When I’m connected to my WiFi network, I can use the VoIP setup to connect directly to my landline.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;So, after using this for a day, there were some definite things I wanted to change. The dial plan that is on by default sucked. Since I am using Android and SIPVoice to dial, and by default SIPDroid uses the full number mask stored in contacts (XXX-XXX-XXXX), Asterisk refused to dial. I would see SIPDroid try to dial but hang up immediately without completing the call. Took me a while to figure out what was going on, so some new dial masks needed to be created. Voicemail was not set up correctly. Since I don’t have an answering machine on my landline, I figured Asterisk can play double duty and serve as an answering machine as well. The wizard doesn’t create a workable voicemail password, so that needed to be fixed. Also, after some investigation, it turns out that Asterisk also has a little feature that works just like the Telezapper, and will play the “out of service” tone when you answer a phone so telemarketers and such will register you in the Do Not Call database. This is a feature that I need to have since the National Do Not Call database is such a joke. There are also all sorts of neat scripts you can run to forward telemarketers to annoying endless voice prompt loops, or just hang up on them, but I won’t cover them here.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;So, to accomplish what I wanted, I modified all three configuration files like so.&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Voicemail.conf:&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;[default]&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;digiassn =&gt; 1234,John Ward,john@email,tz=pacific&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Note the 1234. This is the 4 digit numeric password you need to enter to check and manage your voicemailbox. &lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;Extensions.conf:&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;[home]&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; pstn,1,Ringing&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;#add zapateller&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; pstn,2,Zapateller(answer)&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; pstn,3,Dial(SIP/digiassn,15,T)&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; pstn,4,Dial(SIP/pstn,10,T)&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; pstn,5,Voicemail(udigiassn)&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; pstn,6,Hangup&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; 911,1,Dial(SIP/911@pstn-spa3k,60,)&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; 911,2,Congestion&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;#dialing 9999 will get me my voicemail box&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; 9999,1,VoiceMailMain(digiassn)&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;#dialmasks, local calls&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; _XXXXXXX,1,Dial(SIP/${EXTEN}@pstn-spa3k,60,)&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; _XXXXXXX,2,Congestion&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;#if coming from cell phone, only take the phone number, minus the 1 and the area code&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; _1210XXXXXXX,1,Dial(SIP/${EXTEN:-7}@pstn-spa3k,60,)&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; _1210XXXXXXX,2,Congestion&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;#same as above, only without the 1. this is for local calls&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; _210XXXXXXX,1,Dial(SIP/${EXTEN:-7}@pstn-spa3k,60,)&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; _210XXXXXXX,2,Congestion&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;#Any other number, with the 1&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; _1XXXXXXXXXX,1,Dial(SIP/${EXTEN}@pstn-spa3k,60,)&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; _1XXXXXXXXXX,2,Congestion&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;#without the 1&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; _XXXXXXXXXX,1,Dial(SIP/1${EXTEN}@pstn-spa3k,60,)&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; _XXXXXXXXXX,2,Congestion&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;#dont believe the rest need to be here, but I will leave them jic&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; _1800XXXXXXX,1,Dial(SIP/${EXTEN}@pstn-spa3k,60,)&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; _1800XXXXXXX,2,Congestion&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; _1888XXXXXXX,1,Dial(SIP/${EXTEN}@pstn-spa3k,60,)&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; _1888XXXXXXX,2,Congestion&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; _1877XXXXXXX,1,Dial(SIP/${EXTEN}@pstn-spa3k,60,)&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; _1877XXXXXXX,2,Congestion&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; _1866XXXXXXX,1,Dial(SIP/${EXTEN}@pstn-spa3k,60,)&lt;/p&gt;  &lt;p style="font-style: italic;" class="MsoNormal"&gt;exten =&gt; _1866XXXXXXX,2,Congestion&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16506996-9031989843372573300?l=digiassn.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=43Ib3qw20BA:iRBeQSrA0VU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=43Ib3qw20BA:iRBeQSrA0VU:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=43Ib3qw20BA:iRBeQSrA0VU:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://digiassn.blogspot.com/feeds/9031989843372573300/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=16506996&amp;postID=9031989843372573300&amp;isPopup=true" title="4 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/16506996/posts/default/9031989843372573300?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/16506996/posts/default/9031989843372573300?v=2" /><link rel="alternate" type="text/html" href="http://digiassn.blogspot.com/2010/02/voip-set-up-asterisk-and-linksys-3102.html" title="VOIP: Set Up Asterisk and LinkSys 3102 to work with SIPDroid." /><author><name>John Ward</name><uri>http://www.blogger.com/profile/10741149622435353727</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>4</thr:total></entry><entry gd:etag="W/&quot;DkMFRXsyeSp7ImA9WxBXFkg.&quot;"><id>tag:blogger.com,1999:blog-16506996.post-1888659312812755649</id><published>2010-01-27T21:45:00.002-07:00</published><updated>2010-01-27T21:53:34.591-07:00</updated><app:edited xmlns:app="http://www.w3.org/2007/app">2010-01-27T21:53:34.591-07:00</app:edited><title>BIRT: Get Access to Chart Element and Modify Properties from ReportRunnable in BIRT 2.5</title><content type="html">Helping someone out from the forums on BIRT Exchange. The question was how can you get access to a chart in a ReportRunnable object, modify its properties, and run the report with the modified properties. While I have given pieces of how to do that &lt;a href="http://digiassn.blogspot.com/2008/07/birt-reading-chart-from-library-and.html"&gt;here &lt;/a&gt;and &lt;a href="http://digiassn.blogspot.com/2008/03/birt-building-chart-with-chart-engine.html"&gt;here&lt;/a&gt;, I have never put them together in a single example. Below is an example of how to do this.&lt;br /&gt;&lt;br /&gt;&lt;pre style="border: 1px dashed rgb(153, 153, 153); padding: 5px; overflow: auto; font-family: Andale Mono,Lucida Console,Monaco,fixed,monospace; color: rgb(0, 0, 0); background-color: rgb(238, 238, 238); font-size: 12px; line-height: 14px; width: 100%;"&gt;&lt;code&gt;package com.digiassn.blogspot.birt;&lt;br /&gt;&lt;br /&gt;import java.util.logging.Level;&lt;br /&gt;&lt;br /&gt;import org.eclipse.birt.chart.model.ChartWithoutAxes;&lt;br /&gt;import org.eclipse.birt.chart.model.attribute.ChartDimension;&lt;br /&gt;import org.eclipse.birt.core.exception.BirtException;&lt;br /&gt;import org.eclipse.birt.core.framework.Platform;&lt;br /&gt;import org.eclipse.birt.report.engine.api.EngineConfig;&lt;br /&gt;import org.eclipse.birt.report.engine.api.EngineException;&lt;br /&gt;import org.eclipse.birt.report.engine.api.HTMLRenderOption;&lt;br /&gt;import org.eclipse.birt.report.engine.api.IReportEngine;&lt;br /&gt;import org.eclipse.birt.report.engine.api.IReportEngineFactory;&lt;br /&gt;import org.eclipse.birt.report.engine.api.IReportRunnable;&lt;br /&gt;import org.eclipse.birt.report.engine.api.IRunAndRenderTask;&lt;br /&gt;import org.eclipse.birt.report.model.api.ExtendedItemHandle;&lt;br /&gt;import org.eclipse.birt.report.model.api.extension.ExtendedElementException;&lt;br /&gt;&lt;br /&gt;public class ModifyChart {&lt;br /&gt;&lt;br /&gt;   /**&lt;br /&gt;    * @param args&lt;br /&gt;    */&lt;br /&gt;   public static void main(String[] args) {&lt;br /&gt;       try {&lt;br /&gt;           IReportEngine engine = null;&lt;br /&gt;           EngineConfig config = null;&lt;br /&gt;&lt;br /&gt;           // Configure the Engine and start the Platform&lt;br /&gt;           config = new EngineConfig();&lt;br /&gt;           config&lt;br /&gt;                   .setEngineHome("C:/Libraries/birt-runtime-2_5_1/ReportEngine");&lt;br /&gt;           // set log config using ( null, Level ) if you do not want a log file&lt;br /&gt;           config.setLogConfig("C:/temp", Level.FINE);&lt;br /&gt;&lt;br /&gt;           //start birt platform and create factories&lt;br /&gt;           Platform.startup(config);&lt;br /&gt;           IReportEngineFactory factory = (IReportEngineFactory) Platform&lt;br /&gt;                   .createFactoryObject(IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY);&lt;br /&gt;           engine = factory.createReportEngine(config);&lt;br /&gt;           engine.changeLogLevel(Level.WARNING);&lt;br /&gt;&lt;br /&gt;           //open report design&lt;br /&gt;           IReportRunnable design = engine&lt;br /&gt;           .openReportDesign("C:/contracts/BirtExamples/BirtReportEngine/PieChart.rptdesign");&lt;br /&gt;&lt;br /&gt;           //get chart element handle called "PieChart"&lt;br /&gt;           ExtendedItemHandle eih = (ExtendedItemHandle) design.getDesignHandle()&lt;br /&gt;                   .getDesignHandle().findElement("PieChart");&lt;br /&gt;          &lt;br /&gt;           //get the actual chart instance since Charts are extended item handles&lt;br /&gt;           ChartWithoutAxes cwa = (ChartWithoutAxes) eih.getReportItem().getProperty(&lt;br /&gt;                   "chart.instance");&lt;br /&gt;          &lt;br /&gt;           //set title of chart to New Label&lt;br /&gt;           cwa.getTitle().getLabel().getCaption().setValue("New Label");&lt;br /&gt;          &lt;br /&gt;           //set 2d with depth&lt;br /&gt;           cwa.setDimension(ChartDimension.TWO_DIMENSIONAL_WITH_DEPTH_LITERAL);&lt;br /&gt;          &lt;br /&gt;           // Create task to run and render the report,&lt;br /&gt;           IRunAndRenderTask task = engine.createRunAndRenderTask(design);&lt;br /&gt;&lt;br /&gt;           // Set rendering options - such as file or stream output,&lt;br /&gt;           // output format, whether it is embeddable, etc&lt;br /&gt;           HTMLRenderOption options = new HTMLRenderOption();&lt;br /&gt;           options.setBaseURL("http://localhost/");&lt;br /&gt;           options.setBaseImageURL("http://localhost/myimages");&lt;br /&gt;           options.setImageDirectory("C:/xampplite/htdocs/myimages");&lt;br /&gt;           options.setSupportedImageFormats("JPG;PNG;BMP;SVG");&lt;br /&gt;&lt;br /&gt;           options.setOutputStream(System.out);&lt;br /&gt;&lt;br /&gt;           // Set output format&lt;br /&gt;           options.setOutputFormat("html");&lt;br /&gt;           task.setRenderOption(options);&lt;br /&gt;&lt;br /&gt;           // run the report and destroy the engine&lt;br /&gt;           // Note - If the program stays resident do not shutdown the Platform or&lt;br /&gt;           // the Engine&lt;br /&gt;           task.run();&lt;br /&gt;           task.close();&lt;br /&gt;      &lt;br /&gt;           task.close();&lt;br /&gt;           Platform.shutdown();&lt;br /&gt;           System.out.println("Finished");&lt;br /&gt;       } catch (ExtendedElementException e) {&lt;br /&gt;           e.printStackTrace();&lt;br /&gt;       } catch (EngineException e) {&lt;br /&gt;           e.printStackTrace();&lt;br /&gt;       } catch (BirtException e) {&lt;br /&gt;           e.printStackTrace();&lt;br /&gt;       }&lt;br /&gt;&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;The thing to remember about charts in BIRT reports is that they are Chart types stored withing a ExtendedItemHandler. So you need to find the ExtendedItemHandler first, then get the chart inside of it. Charts can be ChartsWithAxis (bar charts, lines charts), or ChartsWithoutAxis (pie charts). Reference on the chart types can be found here.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.birt-exchange.org/documentation/BIRT_231/ChartJavadoc/chart/api/org/eclipse/birt/chart/model/ChartWithAxes.html"&gt;ChartWithAxes&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.birt-exchange.org/documentation/BIRT_231/ChartJavadoc/chart/api/org/eclipse/birt/chart/model/ChartWithoutAxes.html"&gt;ChartWithoutAxes&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/16506996-1888659312812755649?l=digiassn.blogspot.com' alt='' /&gt;&lt;/div&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=aaEE0-jCOPg:XMZOwZReUcg:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=aaEE0-jCOPg:XMZOwZReUcg:63t7Ie-LG7Y"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=63t7Ie-LG7Y" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/TheDigitalVoice?a=aaEE0-jCOPg:XMZOwZReUcg:7Q72WNTAKBA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/TheDigitalVoice?d=7Q72WNTAKBA" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;</content><link rel="replies" type="application/atom+xml" href="http://digiassn.blogspot.com/feeds/1888659312812755649/comments/default" title="Post Comments" /><link rel="replies" type="text/html" href="http://www.blogger.com/comment.g?blogID=16506996&amp;postID=1888659312812755649&amp;isPopup=true" title="5 Comments" /><link rel="edit" type="application/atom+xml" href="http://www.blogger.com/feeds/16506996/posts/default/1888659312812755649?v=2" /><link rel="self" type="application/atom+xml" href="http://www.blogger.com/feeds/16506996/posts/default/1888659312812755649?v=2" /><link rel="alternate" type="text/html" href="http://digiassn.blogspot.com/2010/01/birt-get-access-to-chart-element-and.html" title="BIRT: Get Access to Chart Element and Modify Properties from ReportRunnable in BIRT 2.5" /><author><name>John Ward</name><uri>http://www.blogger.com/profile/10741149622435353727</uri><email>noreply@blogger.com</email><gd:image rel="http://schemas.google.com/g/2005#thumbnail" width="16" height="16" src="http://img2.blogblog.com/img/b16-rounded.gif" /></author><thr:total>5</thr:total></entry></feed>
