<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Ad Hoc and Embedded Reporting Solutions</title>
	<atom:link href="http://ad-hoc-reporting-blog.exagoinc.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://ad-hoc-reporting-blog.exagoinc.com</link>
	<description>In-depth Insights and Information about eWebReports, the Ad Hoc and Embedded Reporting Solution</description>
	<lastBuildDate>Wed, 25 Apr 2012 16:57:17 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Make a Break: Where to Put Page Breaks in Reports</title>
		<link>http://ad-hoc-reporting-blog.exagoinc.com/2012/04/25/make-a-break-where-to-put-page-breaks-in-reports/</link>
		<comments>http://ad-hoc-reporting-blog.exagoinc.com/2012/04/25/make-a-break-where-to-put-page-breaks-in-reports/#comments</comments>
		<pubDate>Wed, 25 Apr 2012 16:57:17 +0000</pubDate>
		<dc:creator>travism</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://ad-hoc-reporting-blog.exagoinc.com/?p=786</guid>
		<description><![CDATA[Page breaks tell eWebReports to start a new page even if there is space remaining on the current page. When using page breaks in eWebReports, make sure to place them at the top of  Group Headers.  In this post we&#8217;ll explain why. The Problem with Breaking at the Bottom For purposes of example suppose the report you&#8217;re building is [...]]]></description>
			<content:encoded><![CDATA[<p>Page breaks tell eWebReports to start a new page even if there is space remaining on the current page. <strong>When using page breaks in eWebReports, make sure to place them at the top of  Group Headers.  </strong>In this post we&#8217;ll explain why.</p>
<p><strong>The Problem with Breaking at the Bottom</strong></p>
<p>For purposes of example suppose the report you&#8217;re building is a large receipt reflecting several customer orders.  It would be nice to show each order on its own page.  The image below shows an example the report design for our receipt. Notice that the page break is at the bottom of a Group Footer section and much of the information is in the Page Header section.</p>
<p><a href="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2012/03/0_break-at-bottom.png"><img class="aligncenter size-medium wp-image-788" title="Page Break at Bottom of Report Designer" src="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2012/03/0_break-at-bottom-300x117.png" alt="" width="300" height="117" /></a></p>
<p>When we run this report the first page comes out correctly.</p>
<p><a href="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2012/03/1_first-page.png"><img class="aligncenter size-medium wp-image-789" title="First Page of Report" src="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2012/03/1_first-page-300x162.png" alt="" width="300" height="162" /></a>However looking carefully we notice that page 2 has the same header information as page 1! In fact each page gets the labels for the order detailed on the page before it. Also the last page contains a header but no detail information.</p>
<p><a href="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2012/03/2_misheader.png"><img class="aligncenter size-medium wp-image-791" title="Incorrect Header on Page 2" src="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2012/03/2_misheader-300x157.png" alt="" width="300" height="157" /></a><a href="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2012/03/3_blank-end-page1.png"><img class="aligncenter size-medium wp-image-792" title="Extra End Page" src="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2012/03/3_blank-end-page1-300x167.png" alt="" width="300" height="167" /></a></p>
<p><strong>The Solution</strong></p>
<p>To avoid these mislabels and blank pages we create a Group Header on OrderID. As shown in the image below we can click on the top row of this section and add a page break. This will tell eWebReports to start a new page for each order.</p>
<p><a href="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2012/03/4_break-at-top.png"><img class="aligncenter size-medium wp-image-793" title="Putting Page Break At Top" src="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2012/03/4_break-at-top-300x127.png" alt="" width="300" height="127" /></a><a href="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2012/03/5_break-at-top2.png"><img class="aligncenter size-medium wp-image-794" title="Break at Top of Group Header" src="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2012/03/5_break-at-top2-300x127.png" alt="" width="300" height="127" /></a></p>
<p>Running the report we can see that each page has the correct headers and the last page is not blank.</p>
<p>&nbsp;</p>
<p><a href="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2012/03/6_top-break-output.png"><img class="aligncenter size-medium wp-image-795" title="Correct Last Page" src="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2012/03/6_top-break-output-300x152.png" alt="" width="300" height="152" /></a></p>
<p><strong>Summary</strong></p>
<p>If you want a separate page for each item of a specific field, make a Group Header for that field and place a page break at the top.</p>
<p>Happy Reporting.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://ad-hoc-reporting-blog.exagoinc.com/2012/04/25/make-a-break-where-to-put-page-breaks-in-reports/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>All About Parameters</title>
		<link>http://ad-hoc-reporting-blog.exagoinc.com/2012/02/03/all-about-parameters/</link>
		<comments>http://ad-hoc-reporting-blog.exagoinc.com/2012/02/03/all-about-parameters/#comments</comments>
		<pubDate>Fri, 03 Feb 2012 21:18:45 +0000</pubDate>
		<dc:creator>travism</dc:creator>
				<category><![CDATA[Administrators]]></category>
		<category><![CDATA[ad-hoc reporting]]></category>
		<category><![CDATA[parameters]]></category>

		<guid isPermaLink="false">http://ad-hoc-reporting-blog.exagoinc.com/?p=773</guid>
		<description><![CDATA[Parameters This post will discuss several uses of Parameters in eWebReports. Parameters serve as place holders for values that will be set at runtime by your application. In a previous post we detailed how parameters can be used in a multi-tenant environment to filter data. In this post we will start by demonstrating how administrators [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Parameters</strong></p>
<p>This post will discuss several uses of Parameters in eWebReports. Parameters serve as place holders for values that will be set at runtime by your application. In <a title="Ad-Hoc and Embedded Reporting in Multi-Tenant Environments" href="http://ad-hoc-reporting-blog.exagoinc.com/2011/11/10/ad-hoc-and-embedded-reporting-in-multi-tenant-environments/">a previous post</a> we detailed how parameters can be used in a multi-tenant environment to filter data. In this post we will start by demonstrating how administrators create dynamic SQL with hidden parameters. The second example will show how Report Designers and Power Users can utilize non-hidden parameters in filters and formulas. Hidden parameters are also utilized by Stored Procedures but that is a topic that for a future post.</p>
<p><strong>Creating Parameters</strong></p>
<p>Parameters are created in the data tab of the Administartion Console. Click the ‘New’ button and enter a name to create a parameter. You may specify the type of data tough this is more important for Stored Procedures. In the value column a parameter can be given a default value.  Using the check box you can make a parameter hidden or non-hidden. Non-hidden parameters can be seen by end users if added to any cell of a report. If you want a user to give a value when a report is run, write a prompt text for an unhidden parameter.</p>
<p><a href="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2012/02/Parameters-Menu.png"><img class="aligncenter size-medium wp-image-774" title="Parameters Menu" src="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2012/02/Parameters-Menu-300x53.png" alt="" width="300" height="53" /></a></p>
<p><strong>Dynamic SQL</strong></p>
<p>Generally data objects are simple tables or views. However in some situations you may want eWebReports to create a data object from SQL. To allow these commands to be dynamic with you application you can insert parameters. To do this click ‘New’ in the Data Object Menu. A blank row will appear, click in it to open the data object pop-up and click ‘Create/Edit SQL Statement’.</p>
<p align="center"><a href="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2012/02/Data-Object-Menu.png"><img class="aligncenter size-medium wp-image-775" title="Data Object Menu" src="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2012/02/Data-Object-Menu-300x233.png" alt="" width="300" height="233" /></a></p>
<p>In the SQL Data Object menu enter you SQL commands. To insert a parameter select it from the dropdown list and click ‘Insert’. Be sure to put the parameter inside single quotes if its used as a value in the SQL (see image below). When the sql is run eWebReports will fill in the parameter for its value.</p>
<p align="center"><a href="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2012/02/parameterized-SQL.png"><img class="aligncenter size-medium wp-image-776" title="parameterized SQL" src="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2012/02/parameterized-SQL-300x207.png" alt="" width="300" height="207" /></a></p>
<p><strong> </strong></p>
<p><strong>Parameters in Reports</strong></p>
<p>Parameters can also be used in filters, formulas or cells of a report. These parameters will only display their value if Hidden is unchecked in the Admin Console.</p>
<p>To put a parameter in a cell or formula type ‘=’ then enter parameter name inside of @ symbols (remember: parameters ARE case sensitive).</p>
<p><a href="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2012/02/Designer.png"><img class="aligncenter size-medium wp-image-777" title="Designer" src="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2012/02/Designer-300x143.png" alt="" width="300" height="143" /></a></p>
<p>If the parameter was given a Prompt Text in the Admin Console a menu will appear when the report is run and prompt the user for a value.</p>
<p><a href="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2012/02/parameter-prompt.png"><img class="aligncenter size-medium wp-image-778" title="parameter prompt" src="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2012/02/parameter-prompt-300x208.png" alt="" width="300" height="208" /></a></p>
<p>Parameters can also be accessed by filters. Select the filter you want and type the parameter name between @ symbols instead of a specific value.</p>
<p><a href="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2012/02/Filter-menu.png"><img class="aligncenter size-medium wp-image-779" title="Filter menu" src="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2012/02/Filter-menu-300x207.png" alt="" width="300" height="207" /></a><strong>Conclusion</strong></p>
<p>Wether you use them for dynamic SQL, multi-tenant databases, functions , filters or simply to display on a report, parameters are an important tool to integrate eWebReports into your application.</p>
<p>&nbsp;</p>
<p>Happy Reporting!</p>
]]></content:encoded>
			<wfw:commentRss>http://ad-hoc-reporting-blog.exagoinc.com/2012/02/03/all-about-parameters/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Controlling a User’s Data in the API</title>
		<link>http://ad-hoc-reporting-blog.exagoinc.com/2012/01/11/controlling-a-user%e2%80%99s-data-in-the-api/</link>
		<comments>http://ad-hoc-reporting-blog.exagoinc.com/2012/01/11/controlling-a-user%e2%80%99s-data-in-the-api/#comments</comments>
		<pubDate>Wed, 11 Jan 2012 23:46:03 +0000</pubDate>
		<dc:creator>travism</dc:creator>
				<category><![CDATA[Administrators]]></category>
		<category><![CDATA[ad-hoc reporting]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[roles]]></category>
		<category><![CDATA[single sign on]]></category>
		<category><![CDATA[user specific security]]></category>

		<guid isPermaLink="false">http://ad-hoc-reporting-blog.exagoinc.com/?p=754</guid>
		<description><![CDATA[In a previous post we detailed how roles control which reports a user can run and what data he/she can access. In that post we mentioned that while roles can be set up in the Admin Console they are designed to be used through code at run time. This post will give examples of the [...]]]></description>
			<content:encoded><![CDATA[<p>In <span style="color: #ff6600;"><a title="User Specific Control and Security" href="http://ad-hoc-reporting-blog.exagoinc.com/2011/09/09/user-specific-control-and-security/"><span style="color: #ff6600;">a previous post</span></a></span> we detailed how roles control which reports a user can run and what data he/she can access. In that post we mentioned that while roles can be set up in the Admin Console they are designed to be used through code at run time. This post will give examples of the .NET API calls necessary to create, modify, and activate a Role when a user signs in.</p>
<p><strong>Creating a Role</strong></p>
<p>Roles can be created using the code:</p>
<p align="center"><span style="color: #800080;">Role</span> role = api.Roles.NewRole();</p>
<p>The role will automatically be active. If you want to use a role you already created in the Admin Console you can use the method Get Role(‘role id’) and then activate it with the method Activate().</p>
<p><strong>Controlling Folders and Reports</strong></p>
<p>Initially users will have access to all the folders in the report path. You can hide all folders using the code:</p>
<p align="center">role.Security.Folders.IncludeAll = <span style="color: #0000ff;">false</span>;</p>
<p>If IncludeAll is false then a specific folder can be displayed by the api call:</p>
<p align="center"><span style="color: #800080;">Folder</span> folder = role.Security.Folders.NewFolder();<br />
folder.Name = &#8220;<span style="color: #ff0000;">Travis&#8217; Reports</span>&#8220;;</p>
<p>Alternatively if Include all is true the above code will hide that folder.</p>
<p>An individual folder can be made read only to prevent users from editing reports.</p>
<p align="center"><span style="color: #800080;">Folder</span> folder = role.Security.Folders.NewFolder();<br />
folder.Name = &#8220;<span style="color: #ff0000;">Travis&#8217; Reports</span>&#8220;;<br />
folder.ReadOnly = <span style="color: #0000ff;">true</span>;</p>
<p>To make all the folders read only use:</p>
<p align="center">role.Security.Folders.ReadOnly = <span style="color: #0000ff;">true</span>;</p>
<p>&nbsp;</p>
<p><strong>Setting Data Access</strong></p>
<p>Initially users will have access to all data objects. You can hide all of them using the code:</p>
<p align="center">role.Security.DataObjects.IncludeAll = <span style="color: #0000ff;">false</span>;</p>
<p>To then give access to an individual data object use the call:</p>
<p align="center"><span style="color: #800080;">DataObject</span> dataObject = role.Security.DataObjects.NewDataObject();<br />
dataObject.Name = &#8220;<span style="color: #ff0000;">&lt;Data Object&gt;</span>&#8220;;</p>
<p>If IncludeAll is true then the above code will hide the data object instead.</p>
<p>A data object can be filtered on the row level using the call:</p>
<p align="center"><span style="color: #800080;">DataObjectRow</span> dataObjectRow = role.Security.DataObjectRows.NewDataObjectRow();<br />
dataObjectRow.ObjectName = &#8220;&lt;Data Object&gt;&#8221;;<br />
dataObjectRow.FilterString =  &#8221;<span style="color: #ff0000;">&#8220;&lt;Data Field&gt;” = &#8217;10,250&#8242;</span> &#8220;;</p>
<p><strong>Summary</strong></p>
<p>Using these code examples above, you can control each user’s access to data programatically. Because the role is created through your application the user experiences eWebReports as a single sign on.</p>
<p>Happy Reporting.</p>
]]></content:encoded>
			<wfw:commentRss>http://ad-hoc-reporting-blog.exagoinc.com/2012/01/11/controlling-a-user%e2%80%99s-data-in-the-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Load Balancing the Execution of Your Ad-Hoc Reports</title>
		<link>http://ad-hoc-reporting-blog.exagoinc.com/2011/12/16/load-balancing-the-execution-of-your-ad-hoc-reports/</link>
		<comments>http://ad-hoc-reporting-blog.exagoinc.com/2011/12/16/load-balancing-the-execution-of-your-ad-hoc-reports/#comments</comments>
		<pubDate>Fri, 16 Dec 2011 13:53:02 +0000</pubDate>
		<dc:creator>travism</dc:creator>
				<category><![CDATA[Administrators]]></category>
		<category><![CDATA[ad-hoc reporting]]></category>
		<category><![CDATA[load balancing]]></category>
		<category><![CDATA[performance]]></category>

		<guid isPermaLink="false">http://ad-hoc-reporting-blog.exagoinc.com/?p=731</guid>
		<description><![CDATA[This post will cover how to set eWebReports so it balances execution across multiple servers. This assures performance and is done in two easy steps. This post will be very brief to emphasize how simple this change is . Installing the Scheduler For each Remote Execution Server download the installation file from Exágo support. Run [...]]]></description>
			<content:encoded><![CDATA[<p>This post will cover how to set eWebReports so it balances execution across multiple servers. This assures performance and is done in two easy steps. This post will be very brief to emphasize how simple this change is .</p>
<p><strong>Installing the Scheduler<br />
</strong></p>
<p>For each Remote Execution Server download the installation file from <a href="http://www.exagosupport.com/support/index.php">Exágo support</a>. Run the installer and you will see the menu shown below. Choose the Scheduler option and follow the prompts until the scheduler is installed.</p>
<p align="center"><a href="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/12/install.png"><img class="aligncenter size-medium wp-image-732" title="install" src="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/12/install-300x296.png" alt="" width="300" height="296" /></a></p>
<p><strong>Admin Console</strong></p>
<p>In the General tab of the Admin Console set ‘Enable Remote Report Execution’ to True in the Admin Console</p>
<p>In  ‘Remote Execution Remoting Host’ list the servers you want to use separated by commas (ex. http://MyHttpServer1:2001,tcp://MyTcpServer:2001).</p>
<p>&nbsp;</p>
<p><a href="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/12/Admn-Console.png"><img class="aligncenter size-medium wp-image-733" title="Admn Console" src="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/12/Admn-Console-300x91.png" alt="" width="300" height="91" /></a></p>
<p>&nbsp;</p>
<p>That’s it. It’s really that easy.</p>
<p>&nbsp;</p>
<p>Happy Reporting.</p>
]]></content:encoded>
			<wfw:commentRss>http://ad-hoc-reporting-blog.exagoinc.com/2011/12/16/load-balancing-the-execution-of-your-ad-hoc-reports/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Intelligent Filters: Avoiding Blank Ad-Hoc Reports</title>
		<link>http://ad-hoc-reporting-blog.exagoinc.com/2011/12/09/intelligent-filters-avoiding-blank-ad-hoc-reports/</link>
		<comments>http://ad-hoc-reporting-blog.exagoinc.com/2011/12/09/intelligent-filters-avoiding-blank-ad-hoc-reports/#comments</comments>
		<pubDate>Fri, 09 Dec 2011 16:51:21 +0000</pubDate>
		<dc:creator>travism</dc:creator>
				<category><![CDATA[Administrators]]></category>
		<category><![CDATA[ad-hoc reporting]]></category>
		<category><![CDATA[filters]]></category>

		<guid isPermaLink="false">http://ad-hoc-reporting-blog.exagoinc.com/?p=702</guid>
		<description><![CDATA[eWebReports makes it easy for end users to create reports that follow your business logic. This post will cover how Filter Dependencies make sure Report Designers and Power Users follow your logic when creating filters. Problem In the Filter menu below there are two filters; States and Cities. The user has set the filters to [...]]]></description>
			<content:encoded><![CDATA[<p>eWebReports makes it easy for end users to create reports that follow your business logic. This post will cover how Filter Dependencies make sure Report Designers and Power Users follow your logic when creating filters.</p>
<p><strong>Problem</strong></p>
<p>In the Filter menu below there are two filters; States and Cities. The user has set the filters to exclude everything that is not in the State of New York and not the city  Bridge Port. However we know that Bridgeport is not in New York, or at least it wasn&#8217;t the last time we checked!</p>
<p align="center"> <a href="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/12/before_city-statefilters2.png"><img class="aligncenter size-medium wp-image-726" title="before_city statefilters" src="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/12/before_city-statefilters2-300x209.png" alt="" width="300" height="209" /></a><a href="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/12/before_city-statefilters.png"><br />
</a></p>
<p>This means when the report is run no data will qualify. Sure enough when we try and execute the report we see this.</p>
<p align="center"><a href="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/12/No-data-error.png"><img class="aligncenter size-full wp-image-704" title="No data error" src="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/12/No-data-error.png" alt="" width="287" height="190" /></a></p>
<p><strong>Solution</strong></p>
<p>To solve this dilemma we use a feature called Filter Dependency. In the General Tab of the Admin console set ‘Allow Filter Dependencies’ to True.</p>
<p align="center"><a href="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/12/admin-console1.png"><img class="aligncenter size-medium wp-image-713" title="admin console" src="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/12/admin-console1-300x77.png" alt="" width="300" height="77" /></a></p>
<p>This setting changes the drop down values of filters. Now users will only be able to select values that have not been excluded by the previous filters.</p>
<p>As you can see from the image below we set the first Filter on State  to ‘NY’.</p>
<p align="center"><a href="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/12/after_State1.png"><img class="aligncenter size-medium wp-image-727" title="after_State" src="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/12/after_State1-300x209.png" alt="" width="300" height="209" /></a><a href="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/12/after_State.png"><br />
</a></p>
<p>Now drag and drop Cities.City into the filter list and select the drop down. Only cities in New York will appear because the filter is now dependent on the state set above it.</p>
<p align="center"><a href="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/12/after_City1.png"><img class="aligncenter size-medium wp-image-728" title="after_City" src="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/12/after_City1-300x207.png" alt="" width="300" height="207" /></a><a href="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/12/after_City.png"><br />
</a><a href="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/12/before_city-statefilters1.png"><br />
</a></p>
<p><strong>Conclusion</strong></p>
<p>Filter dependency are just one of the many ways eWebReports helps assure that end users create valid logical reports without knowing how your data is set up.</p>
<p>Happy Reporting.</p>
]]></content:encoded>
			<wfw:commentRss>http://ad-hoc-reporting-blog.exagoinc.com/2011/12/09/intelligent-filters-avoiding-blank-ad-hoc-reports/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Setting Up Document Templates: Word vs. PDF</title>
		<link>http://ad-hoc-reporting-blog.exagoinc.com/2011/11/17/setting-up-document-templates-word-vs-pdf/</link>
		<comments>http://ad-hoc-reporting-blog.exagoinc.com/2011/11/17/setting-up-document-templates-word-vs-pdf/#comments</comments>
		<pubDate>Thu, 17 Nov 2011 16:47:42 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Overview]]></category>
		<category><![CDATA[ad-hoc reporting]]></category>
		<category><![CDATA[embedded reporting]]></category>
		<category><![CDATA[filling in pdf]]></category>
		<category><![CDATA[forms]]></category>
		<category><![CDATA[reports]]></category>
		<category><![CDATA[templates]]></category>

		<guid isPermaLink="false">http://exagoinc.wordpress.com/?p=634</guid>
		<description><![CDATA[Yesterday a user sent me a question as a follow up to this blog post on Auto-Filling Templates. He had successfully made a report that fills in a PDF template but wanted to avoid using Adobe Acrobat. His request was for an explanation of how to fill in a Word template. As such this blog [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday a user sent me a question as a follow up to <a title="Thinking Outside the Ad Hoc Report: Auto Filling Forms" href="http://ad-hoc-reporting-blog.exagoinc.com/2011/08/24/thinking-outside-the-report-auto-filling-forms/">this blog post on Auto-Filling Templates</a>. He had successfully made a report that fills in a PDF template but wanted to avoid using Adobe Acrobat. His request was for an explanation of how to fill in a Word template. As such this blog post will cover the elements used to set up both a PDF and Word template.</p>
<p><strong>Directing the Data</strong><br />
Before you can tell eWebReports which cell goes where on the report, you must set up targets on the template. In PDF templates these targets are called <strong>fields</strong>. Acrobat Pro can make them for you very easily and PDFs provided by outside agencies probably already have them. In Word however these targets are called <strong>bookmarks</strong>. To create a bookmark select the area where you want data to go, click Insert then click bookmark (see picture below). Targets in word do not have to be blank. eWebReports will replace bookmarked text so we recommend writing labels to show what type of data will go there later.</p>
<p><a href="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/11/wordtemplate1.png"><img class="alignnone size-medium wp-image-669" title="wordtemplate1" src="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/11/wordtemplate1-300x273.png" alt="" width="300" height="273" /></a></p>
<p><strong><br />
Repeating Data</strong></p>
<p>The other key step in setting up templates is using proper naming convention. For fields/bookmarks that will only appear once on the template the only consideration is how understandable the name will be to the end user. However for <strong>data that repeats </strong>must follow a naming convention. Generally repeating data means the data that will be mapped to cells in the Details section of the Report Designer. For PDF  such fields are named <strong>name.0, name.1</strong> etc. In Word templates the bookmarks are named <strong>name_0, name_1, name_2</strong> etc.</p>
<p><strong>Conclusion</strong></p>
<p>The image above shows a good example of a Word Template being set up. Because there may be multiple discounts on each receipt the Discount bookmarks are named Discount_0, Discount_1, and Discount_2 etc. Once these bookmarks are in place the template gets saved in the Report Path and it can be filled in by eWebReports.</p>
<p>Happy Reporting!</p>
]]></content:encoded>
			<wfw:commentRss>http://ad-hoc-reporting-blog.exagoinc.com/2011/11/17/setting-up-document-templates-word-vs-pdf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ad-Hoc and Embedded Reporting in Multi-Tenant Environments</title>
		<link>http://ad-hoc-reporting-blog.exagoinc.com/2011/11/10/ad-hoc-and-embedded-reporting-in-multi-tenant-environments/</link>
		<comments>http://ad-hoc-reporting-blog.exagoinc.com/2011/11/10/ad-hoc-and-embedded-reporting-in-multi-tenant-environments/#comments</comments>
		<pubDate>Thu, 10 Nov 2011 19:35:30 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Overview]]></category>
		<category><![CDATA[ad-hoc reporting]]></category>
		<category><![CDATA[embedded reporting]]></category>
		<category><![CDATA[multi-tenant database]]></category>
		<category><![CDATA[stored procedures]]></category>

		<guid isPermaLink="false">http://exagoinc.wordpress.com/?p=597</guid>
		<description><![CDATA[Many of our clients maintain multi-tenant data, where a common data store (such as a set of database tables) houses data for many of their clients.  Each of their clients is considered a &#8220;tenant&#8221; of the data store.  For reporting purposes, it is of course necessary to restrict access to the data by client.  There [...]]]></description>
			<content:encoded><![CDATA[<p>Many of our clients maintain multi-tenant data, where a common data store (such as a set of database tables) houses data for many of their clients.  Each of their clients is considered a &#8220;tenant&#8221; of the data store.  For reporting purposes, it is of course necessary to restrict access to the data by client.  There are many ways to architect this&#8230;we commonly see three:</p>
<p>1) Tenant marshaling is handled by a stored procedure.</p>
<p>2) Mapping parameters to tenant keys in eWebReports.</p>
<p>3) Each client has a separate schema, accessed by changing the connection string.</p>
<p>Number 2 is the most common case, is very simple to implement and is covered in this post.  Numbers 1 and 3 are also fairly straightforward and will be covered in future posts.</p>
<p><strong>Example Data</strong></p>
<p>Consider the following example. A single database houses information for both Exágo University and the School of Reporting Technology (SoRT). The ‘University’ column is used to specify which row belongs to which fictitious college.</p>
<p><a href="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/11/database.png"><img class="aligncenter size-medium wp-image-598" title="database" src="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/11/database.png?w=300" alt="" width="300" height="55" /></a></p>
<p><strong>Whither eWebReports?</strong></p>
<p>To enable tenant-based access by the &#8216;University&#8217; column we use an eWebReports <em>parameter</em>.  Parameter values are used fairly frequently in eWebReports for things like runtime filtering, dynamic SQL statements and of course multi-tenancy.  They are defined either in the <a title="Administration Console" href="http://exagoinc.wordpress.com/administrative-set-up/">Administration Console</a> or at runtime using the eWebReports <a title="API Synopsis" href="http://exagoinc.wordpress.com/2011/10/27/api-integrating-ad-hoc-and-embedded-reporting/">API</a>. In this case we&#8217;ll use the Administration Console. We create a parameter “collegeID” and set its initial value to “Exago U”.</p>
<p><a href="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/11/college_parameter3.png"><img class="aligncenter size-full wp-image-625" title="College_parameter" src="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/11/college_parameter3.png" alt="" width="500" height="52" /></a></p>
<p>For each Data Object listed in the administration console, there is a &#8216;Tenants&#8217; field in the row for that Data Object.  Clicking in the &#8216;Tenants&#8217; field for a Data Object brings up a dialog for matching Parameters to Data Columns.  You can add as many as you need to reflect the tenant keys (only one in this case).</p>
<p><a href="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/11/tenant2.png"><img class="aligncenter size-medium wp-image-622" title="tenant" src="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/11/tenant2.png?w=300" alt="" width="300" height="292" /></a></p>
<p>Once we complete our actions in the dialog, the Data Object row reflects the new tenant/key matching.</p>
<p><a href="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/11/college_tenantscirc1.png"><img class="aligncenter size-large wp-image-624" title="College_tenantsCirc" src="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/11/college_tenantscirc1.png?w=1024" alt="" width="1024" height="50" /></a><a href="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/11/college_tenants1.png"><br />
</a>Note: for this example you can ignore the &#8216;Parameters&#8217; column next to the &#8216;Tenants&#8217; column; it is used for associating parameter values with programmable data objects like stored procedures or MSSQL table-valued functions.</p>
<p>We save the configuration and eWebReports is ready to report for Exágo U.</p>
<p><strong>Results </strong></p>
<p>Below is an example report design to produce a list of students. Because the parameter value is set to &#8220;Exágo U&#8221;, only data for Exágo University will appear in the report.</p>
<p><a href="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/11/report_designer1.png"><img class="aligncenter size-medium wp-image-612" title="report_designer" src="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/11/report_designer1.png?w=300" alt="" width="300" height="96" /></a><a href="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/11/exagou_student_list1.png"><img class="aligncenter size-medium wp-image-613" title="ExagoU_Student_List" src="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/11/exagou_student_list1.png?w=300" alt="" width="300" height="124" /></a></p>
<p>Changing the value of the parameter to &#8220;School of Reporting Technology&#8221; will cause the report to display only data for students of SoRT.</p>
<p><a href="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/11/sirt_student_list1.png"><img class="aligncenter size-medium wp-image-614" title="SIRT_Student_List" src="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/11/sirt_student_list1.png?w=300" alt="" width="300" height="109" /></a></p>
<p>In an embedded reporting scenario your application can set the parameter value on-the-fly through the eWebReports API, enabling you to base the tenant information on whatever authentication method your application is already using.</p>
<p>Happy Reporting!</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://ad-hoc-reporting-blog.exagoinc.com/2011/11/10/ad-hoc-and-embedded-reporting-in-multi-tenant-environments/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Conquering the UNKOWN: Null values in Ad-Hoc Reporting</title>
		<link>http://ad-hoc-reporting-blog.exagoinc.com/2011/11/02/conquering-the-unkown-null-values-in-ad-hoc-reporting/</link>
		<comments>http://ad-hoc-reporting-blog.exagoinc.com/2011/11/02/conquering-the-unkown-null-values-in-ad-hoc-reporting/#comments</comments>
		<pubDate>Wed, 02 Nov 2011 22:00:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Administrators]]></category>
		<category><![CDATA[Advanced Users]]></category>
		<category><![CDATA[Power Users]]></category>
		<category><![CDATA[Report Designers]]></category>
		<category><![CDATA[ad-hoc reporting]]></category>
		<category><![CDATA[embedded reporting]]></category>
		<category><![CDATA[null]]></category>
		<category><![CDATA[null data]]></category>

		<guid isPermaLink="false">http://exagoinc.wordpress.com/?p=586</guid>
		<description><![CDATA[As every database administrator knows sometimes data is uncertain. For example some people write their middle names and some have middle names but do not write them and some do not have middle names. Almost all databases allow such values to be Null. While Null data works well with business logic it is not obvious [...]]]></description>
			<content:encoded><![CDATA[<p>As every database administrator knows sometimes data is uncertain. For example some people write their middle names and some have middle names but do not write them and some do not have middle names. Almost all databases allow such values to be Null. While Null data works well with business logic it is not obvious to most end users. To help end-users avoid mistakes common to Null data eWebReports treats null values as blank. This post will show how to handle situations when Null values raise issues in a formula.</p>
<p><strong>Example</strong></p>
<p>For our data we will return to the non-existent Exágo University. Dean Wormer would like a list of students that displays their age. From the student data we can see that there is not an age column but instead birthdays. Also it seems that some students did not provide a birthday (null data).</p>
<p align="center"><a href="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/11/student-table.png"><img class="aligncenter size-medium wp-image-587" title="student table" src="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/11/student-table.png?w=300" alt="" width="300" height="146" /></a></p>
<p>Using the function DateDiff we can find the age of each student. DateDiff takes three inputs; the desired unit of measurement (in this case ‘yyyy’ for years), and the two dates in question. For our example the final formula will be ‘ =DateDiff(‘yyyy’,{Students.Birthday}, today()) ’. Using this formula we see there is an issue with our report.</p>
<p align="center"> <a href="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/11/initial-output.png"><img class="aligncenter size-medium wp-image-588" title="initial output" src="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/11/initial-output.png?w=300" alt="" width="300" height="155" /></a></p>
<p>The formula is displays the error #NUM! for students that did not write their birthday because it is trying to take the difference of a time and a blank string.</p>
<p><strong>Solution</strong></p>
<p>Because eWebReports converts Null data to blank strings we can handle this case in one of two ways. Either we can use {Students.Birthday} = ‘’ or isBlank({Students.Birthday}). Both statements will return True if the birthday is Null and False if there is a date. We can use either check as the condition of an IF function to handle the error. Click <a title="Weights and Joins: Avoiding Cartesian Products in Ad-Hoc Reports" href="http://exagoinc.wordpress.com/2011/10/06/weights-and-joins-avoiding-cartesian-products-in-ad-hoc-reports/">HERE</a> for more help with the IF function. The full formula will be:</p>
<p>=if({Students.Birthday}=&#8221;, ‘NA’, DateDiff(&#8216;yyyy&#8217; ,{Students.Birthday}, today()))</p>
<p>Using this formula the report looks much better.</p>
<p align="center"><a href="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/11/forumla_output.png"><img class="aligncenter size-medium wp-image-589" title="forumla_output" src="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/11/forumla_output.png?w=300" alt="" width="300" height="153" /></a></p>
<p><strong>Filtering Null Values</strong></p>
<p>Null values could also require attention in the filter menu. In this case filter on the empty string and eWebReports will understand to exclude null values.  Below is a picture showing the filter and the filtered report.</p>
<p align="center"><a href="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/11/filter.png"><img class="aligncenter size-medium wp-image-591" title="filter" src="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/11/filter.png?w=300" alt="" width="300" height="208" /></a></p>
<p align="center"><a href="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/11/filter_output.png"><img class="aligncenter size-medium wp-image-590" title="filter_output" src="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/11/filter_output.png?w=300" alt="" width="300" height="118" /></a></p>
<p><strong>Conclusion</strong></p>
<p>eWebReport is designed to benefit end users by separating ad-hoc reporting from database logic. To achieve this eWebReports makes it easy for end users to filter and check for null values.</p>
<p>Happy Reporting.</p>
]]></content:encoded>
			<wfw:commentRss>http://ad-hoc-reporting-blog.exagoinc.com/2011/11/02/conquering-the-unkown-null-values-in-ad-hoc-reporting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>API Synopsis</title>
		<link>http://ad-hoc-reporting-blog.exagoinc.com/2011/10/27/api-integrating-ad-hoc-and-embedded-reporting/</link>
		<comments>http://ad-hoc-reporting-blog.exagoinc.com/2011/10/27/api-integrating-ad-hoc-and-embedded-reporting/#comments</comments>
		<pubDate>Thu, 27 Oct 2011 19:22:48 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Administrators]]></category>
		<category><![CDATA[Overview]]></category>
		<category><![CDATA[ad-hoc reporting]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[aplication programmer interface]]></category>
		<category><![CDATA[embedded reporting]]></category>

		<guid isPermaLink="false">http://exagoinc.wordpress.com/?p=563</guid>
		<description><![CDATA[eWebReports runs atop an Application Programmer Interface (API). This means through code developers can utilize the capabilities of eWebReports inside your application. Programmers can use either the .NET API or the Web Service API to integrate into your application. .NET API vs. Web Service Developers working in C# use the .NET API. The standard user [...]]]></description>
			<content:encoded><![CDATA[<p>eWebReports runs atop an Application Programmer Interface (API). This means through code developers can utilize the capabilities of eWebReports inside your application. Programmers can use either the .NET API or the Web Service API to integrate into your application.</p>
<p><strong>.NET API vs. Web Service</strong></p>
<p>Developers working in C# use the .NET API. The standard user interface is built upon the .NET API. This means all the functionality of eWebReports is available as code. If your developers do not work in C# you can utilize the web service API. This option offers the flexibility to integrate eWebReports using any high level language. As a tradeoff for the flexibility, the web service offers slightly less functionality and a small dip in performance.</p>
<p><strong>Web Service Example</strong></p>
<p>Here is a sample of code that uses the web service API. This PHP program sets a role (<a title="User Specific Control and Security" href="http://exagoinc.wordpress.com/2011/09/09/user-specific-control-and-security/">for user specific security</a>) and then executes a report. The file could be called when a user clicks a link or button.<a href="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/10/phpwebsvc.png"><img class="aligncenter size-medium wp-image-565" title="phpWebSvc" src="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/10/phpwebsvc.png?w=300" alt="" width="300" height="259" /></a></p>
<p><strong>Conclusion</strong></p>
<p>The example above is a very simple demonstration and could be extended to set report types, filters, sorts and much more. All of these features can be dynamic to work with the sign on and user information that already exists within your application. Using either API, eWebReports <a title="Shaping a Single User Experience: Embedded Reporting Integration" href="http://exagoinc.wordpress.com/2011/08/17/shaping-a-single-user-experience-ewebreports-integration/">blends into your application</a> to provide powerful reporting to your end users with a single user experience. <strong></strong></p>
<p>Happy Reporting.</p>
]]></content:encoded>
			<wfw:commentRss>http://ad-hoc-reporting-blog.exagoinc.com/2011/10/27/api-integrating-ad-hoc-and-embedded-reporting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Breaking Data into Columns</title>
		<link>http://ad-hoc-reporting-blog.exagoinc.com/2011/10/20/breaking-data-into-rows/</link>
		<comments>http://ad-hoc-reporting-blog.exagoinc.com/2011/10/20/breaking-data-into-rows/#comments</comments>
		<pubDate>Thu, 20 Oct 2011 20:22:03 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[New Users]]></category>
		<category><![CDATA[Overview]]></category>
		<category><![CDATA[Power Users]]></category>
		<category><![CDATA[Report Designers]]></category>
		<category><![CDATA[Walkthroughs]]></category>
		<category><![CDATA[ad-hoc reporting]]></category>
		<category><![CDATA[embedded reporting]]></category>
		<category><![CDATA[shifting data to columns]]></category>

		<guid isPermaLink="false">http://exagoinc.wordpress.com/?p=509</guid>
		<description><![CDATA[Suppose you have a report like the one below showing customers and how many purchases they have made in the past year. This report may be simple and easy to understand but by no means has it extracted real business value from your data. For instance it would certainly help to know that B’s Beverages [...]]]></description>
			<content:encoded><![CDATA[<p>Suppose you have a report like the one below showing customers and how many purchases they have made in the past year.</p>
<p align="center"><a href="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/10/0_initial-report.png"><img class="aligncenter size-full wp-image-510" title="0_initial report" src="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/10/0_initial-report.png" alt="" width="222" height="149" /></a></p>
<p>This report may be simple and easy to understand but by no means has it extracted real business value from your data. For instance it would certainly help to know that B’s Beverages makes all its purchases in the beginning of spring or that last year there were no purchases in February.</p>
<p>This post will walk through modifying the report to show sales broken down by month. In the process we will also highlight a few tips for using the report designer.</p>
<p><strong>Adding Columns and Formatting</strong></p>
<p>The image below shows the report designer for the original report.</p>
<p align="center"><a href="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/10/1_initial-designer.png"><img class="aligncenter size-medium wp-image-511" title="1_initial designer" src="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/10/1_initial-designer.png?w=300" alt="" width="300" height="108" /></a></p>
<p>Normally to add a column we would click at the top of a column and select ‘Insert Columns Before’ (see below). This command would add a singular column between A and B.</p>
<p align="center"><a href="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/10/2_-insert-before-b.png"><img class="aligncenter size-medium wp-image-512" title="2_ insert before B" src="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/10/2_-insert-before-b.png?w=300" alt="" width="300" height="114" /></a></p>
<p>To save time we can add multiple columns at once. Click on A, then while holding shift click the last column (E).  Now when you select ‘Insert columns After’ five columns will be added. Repeat this until there are twelve columns between the customer name and the number of purchases.</p>
<p align="center"><a href="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/10/3_-insert-after-many.png"><img class="aligncenter size-medium wp-image-513" title="3_ insert after many" src="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/10/3_-insert-after-many.png?w=300" alt="" width="300" height="67" /></a></p>
<p>To fit all the columns on a single page we can re-size each column by click and dragging on the right side. Don’t worry about matching the width each column we will do that shortly.</p>
<p><a href="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/10/4_-resized-columns.png"><img class="aligncenter size-medium wp-image-514" title="4_ resized columns" src="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/10/4_-resized-columns.png?w=300" alt="" width="300" height="84" /></a></p>
<p>Next we want the title to spread from columns A to N. Shift click to select all of row one and then click the ‘Merge selected button.</p>
<p><a href="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/10/5_-merge-title.png"><img class="aligncenter size-medium wp-image-515" title="5_ merge title" src="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/10/5_-merge-title.png?w=300" alt="" width="300" height="79" /></a></p>
<p>Type the abbreviations of each month in the appropriate column. Select columns B – M and click ‘Set All Width Identical’.</p>
<p align="center"><a href="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/10/6_-addmonths-set-witdth.png"><img class="aligncenter size-medium wp-image-516" title="6_ addmonths set witdth" src="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/10/6_-addmonths-set-witdth.png?w=300" alt="" width="300" height="90" /></a></p>
<p>As a final touch of formatting use the Cell Format menu (below) to add borders to the report.</p>
<p align="center"><a href="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/10/7-0_-borders.png"><img class="aligncenter size-medium wp-image-517" title="7.0_ borders" src="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/10/7-0_-borders.png?w=300" alt="" width="300" height="279" /></a></p>
<p>With all these modifications done the report looks ready to have the data added.</p>
<p><a href="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/10/7-1_-borders.png"><img class="aligncenter size-medium wp-image-518" title="7.1_ borders" src="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/10/7-1_-borders.png?w=300" alt="" width="300" height="75" /></a></p>
<p><strong>Putting Data into Rows</strong></p>
<p>Since we are already in a group footer that sorts by Customer the relevant data is the date of each order. For each Date we want to check if the month corresponds to the column we are in then add 1 to the number of purchases if it does. This can be done in the formula editor. Since we are embedding functions, start with the Sum function to keep the total. Drag in the If then the Month function to check the month of the order. The resulting formula is “=Sum( If(Month({Orders.OrderDate})= 01, 1, 0))”. For more help with functions click <a title="Focusing on Formulas" href="http://exagoinc.wordpress.com/2011/09/29/focusing-on-formulas/">here</a>.</p>
<p><a href="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/10/8_-making-formula.png"><img class="aligncenter size-medium wp-image-519" title="8_ making formula" src="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/10/8_-making-formula.png?w=300" alt="" width="300" height="207" /></a></p>
<p>Clicking OK will add the formula to the selected cell. Instead of using the formula editor eleven more times hold CTRL click the formula and drag it to each of the other cells.</p>
<p><a href="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/10/9_ctrl-drag-copy.png"><img class="aligncenter size-medium wp-image-520" title="9_ctrl drag copy" src="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/10/9_ctrl-drag-copy.png?w=300" alt="" width="300" height="51" /></a></p>
<p>Now each cell checks if the month is January and does the sum accordingly. To fix this click on each cell and change the if condition to the appropriate month.</p>
<p><a href="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/10/10_modifying-formula.png"><img class="aligncenter size-medium wp-image-521" title="10_modifying formula" src="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/10/10_modifying-formula.png?w=300" alt="" width="300" height="59" /></a></p>
<p>Running the report now we see that we are almost done, but the chart has a lot of zeros that make it look cluttered. Also we would like to see the totals for each month at the bottom of the report.</p>
<p><a href="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/10/11_almost-done.png"><img class="aligncenter size-medium wp-image-522" title="11_almost done" src="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/10/11_almost-done.png?w=300" alt="" width="300" height="71" /></a></p>
<p>Add a report footer by clicking in the left most column. Using the CTRL drag  copy row three into the new section.</p>
<p align="center"><a href="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/10/12_-report-footer.png"><img class="aligncenter size-medium wp-image-523" title="12_ report footer" src="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/10/12_-report-footer.png?w=300" alt="" width="300" height="111" /></a></p>
<p>To remove the zeros hold shift and select the formulas in the Company Name Footer. Click the format cells menu. In the number tab check the ‘Blank When Zero’ and make sure the decimal places are set to 0.</p>
<p><a href="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/10/14_-blank-zeros.png"><img class="aligncenter size-medium wp-image-524" title="14_ blank zeros" src="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/10/14_-blank-zeros.png?w=300" alt="" width="300" height="262" /></a></p>
<p>Clicking ok and run the report.</p>
<p><a href="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/10/15_final.png"><img class="aligncenter size-medium wp-image-525" title="15_final" src="http://ad-hoc-reporting-blog.exagoinc.com/wp-content/uploads/2011/10/15_final.png?w=300" alt="" width="300" height="64" /></a></p>
<p>It is clear from the output that with just a few formulas and a little formatting we extracted much more value from our data.</p>
<p>Happy Reporting!</p>
]]></content:encoded>
			<wfw:commentRss>http://ad-hoc-reporting-blog.exagoinc.com/2011/10/20/breaking-data-into-rows/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

