<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-10701745</id><updated>2012-01-21T22:54:09.682+01:00</updated><category term='VBScript'/><category term='Next'/><category term='Printing'/><category term='Trick'/><category term='Calculation'/><category term='SubQueries'/><category term='Performance'/><category term='Lync'/><category term='SQL'/><category term='Universes'/><category term='List of Values'/><category term='SevenToolsOfQuality'/><category term='Scorecards'/><category term='SharePoint'/><category term='KPI'/><category term='WEBI'/><category term='PerformancePoint'/><category term='Math'/><category term='Document Map'/><category term='Previous'/><category term='inlist'/><category term='Reporting Services'/><category term='BusinessObjects'/><category term='CMCApp'/><category term='Null'/><category term='position'/><category term='Dates'/><category term='Functions'/><category term='XI'/><category term='Teaching'/><category term='Reporting'/><category term='filters'/><category term='context operators'/><category term='Charts'/><category term='Month'/><category term='Refresh'/><category term='Layout'/><category term='Install'/><category term='Picklist'/><category term='BUG'/><category term='Drill'/><category term='Reporting Services Report Builder SQL Sorting Sort'/><category term='Time'/><category term='Trendlines'/><category term='Automation'/><category term='LOV'/><category term='Excel'/><title type='text'>My External Memory</title><subtitle type='html'>External memory for my trainings. I teach Business Objects, Internet Development and Hardware at Xylos NV (http://www.xylos.com)</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default?start-index=101&amp;max-results=100'/><author><name>PDeRop</name><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>101</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-10701745.post-7980202864854478130</id><published>2012-01-08T19:47:00.001+01:00</published><updated>2012-01-08T20:12:04.005+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BusinessObjects'/><category scheme='http://www.blogger.com/atom/ns#' term='WEBI'/><category scheme='http://www.blogger.com/atom/ns#' term='Charts'/><category scheme='http://www.blogger.com/atom/ns#' term='Trick'/><title type='text'>A #WaterFall Chart in #BusinessObjects</title><content type='html'>One of my students asked me if it is possible to build a Waterfall chart in BusinessObjects. After some research, I can now tell you : yes, it is possible, and here is how.&lt;br /&gt;First off, here’s our endresult. The chart displayed here is the version in DeskI, but WEBI can do it just as fine. In fact, I’ll be showing the procedure with Rich Client.&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/-U7CVyOealhA/TwnkhNnccMI/AAAAAAAABA0/sL8uDrP4Sjw/s1600-h/image%25255B4%25255D.png"&gt;&lt;img alt="image" border="0" height="192" src="http://lh4.ggpht.com/-QVIBhqNd9IA/Twnkhxlv3pI/AAAAAAAABA8/wNic4gbzH4Q/image_thumb%25255B5%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="473" /&gt;&lt;/a&gt;&lt;br /&gt;In Rich Client, I’m making a query that retrieves the data :&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/-OPNOEcNa4hY/Twnki8WoijI/AAAAAAAABBA/vP5khtt9wf4/s1600-h/image%25255B8%25255D.png"&gt;&lt;img alt="image" border="0" height="233" src="http://lh3.ggpht.com/-j9vHTbNMCjs/TwnkjZfc4BI/AAAAAAAABBI/sWbpDTnyJBM/image_thumb%25255B10%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="244" /&gt;&lt;/a&gt;&lt;br /&gt;It lists a number of components that comprise our revenue. Next, I’m using &lt;a href="http://www.databison.com/index.php/how-to-create-waterfall-chart-in-excel-in-2-minutes/" target="_blank"&gt;the procedure I found here.&lt;/a&gt; The person who wrote that, shows how to make a waterfall chart in Excel. And it works just fine for Business Objects too.&lt;br /&gt;Like for Excel, we’re going to calculate: Datum, Padding Plot and CrossOver.&lt;br /&gt;&lt;br /&gt;First, datum: =RunningSum([Actual value]) – we won’t be displaying this in the end-chart, but it’s needed to calculate the others.&lt;br /&gt;&lt;br /&gt;Second, Crossover : =If((([datum]-[Actual value])*[Actual value])&amp;lt;0 And (Abs([Actual value])-Abs([datum]-[Actual value]))&amp;gt;0) Then( [datum]-[Actual value]) Else(0)&lt;br /&gt;&lt;br /&gt;Third, padding : =If([Crossover]&amp;lt;&amp;gt; 0) Then (0) Else(If(([datum]-[Actual value])*[Actual value]&amp;gt;=0) Then([datum]-[Actual value]) Else([datum]))&lt;br /&gt;&lt;br /&gt;And last but not least, Plot : =If(([datum]-[Actual value])&amp;lt;&amp;gt;0 And [Crossover]=0) Then( If([datum]&amp;lt;0) Then(-1) Else(If([datum]-[Actual value]&amp;lt;0 )Then (-1) Else(1)))*Abs([Actual value])+[Crossover] Else (If([datum]&amp;lt;0)Then(-1)Else(1))*Abs([Actual value])+[Crossover]&lt;br /&gt;For DeskI, all you need to do is replace the “[” and “]”&amp;nbsp; symbols by “&amp;lt;” and “&amp;gt;”.&lt;br /&gt;So far, so good.&lt;br /&gt;Next, we convert our table into a stacked chart :&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/-yKEXwtpOCc8/TwnkkHfIcOI/AAAAAAAABBU/SV9zP60SL9c/s1600-h/image%25255B13%25255D.png"&gt;&lt;img alt="image" border="0" height="230" src="http://lh5.ggpht.com/-JzXWlyc8MrA/Twnkk24gZXI/AAAAAAAABBc/hVjzEiMF3is/image_thumb%25255B16%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="580" /&gt;&lt;/a&gt;&lt;br /&gt;Please note that the actual value and datum are not part of this chart.&lt;br /&gt;Now for the trixy part. Padding needs to be made transparant. In the Properties pane of the chart, change the colour for padding to 240,240,244 – the next two colours need to be set identical. They’re the colour of your actual chart.&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/-dtX4jK_Lgwc/TwnklowVC5I/AAAAAAAABBk/8ahU6Yexa1s/s1600-h/image%25255B18%25255D.png"&gt;&lt;img alt="image" border="0" height="332" src="http://lh5.ggpht.com/-LvZVGrGYibM/Twnko464rlI/AAAAAAAABBs/s8E0FleTKms/image_thumb%25255B22%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="400" /&gt;&lt;/a&gt;&lt;br /&gt;Ah, and last but not least, in DeskI, stacked charts don’t show negatives by default. So, in DeskI, you’ll need to change that :&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/-YsHp3plFM-s/TwnkprNWKyI/AAAAAAAABB0/Q853qudmT-U/s1600-h/image%25255B23%25255D.png"&gt;&lt;img alt="image" border="0" height="265" src="http://lh4.ggpht.com/-pTSJRuzK6xk/Twnkqje0O0I/AAAAAAAABB8/JnHiiyX4Y1s/image_thumb%25255B29%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="425" /&gt;&lt;/a&gt;&lt;br /&gt;There.. check the checkbox “Show Negative values”.&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/-9SIgWthb40k/TwnkrP7QiBI/AAAAAAAABCE/ICoxEI6uzs8/s1600-h/image%25255B28%25255D.png"&gt;&lt;img alt="image" border="0" height="185" src="http://lh3.ggpht.com/-vTJIT__W-Hg/Twnkr0jqP2I/AAAAAAAABCM/gh3whzls5cM/image_thumb%25255B35%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="526" /&gt;&lt;/a&gt;&lt;br /&gt;Looking good &lt;img alt="Glimlach" class="wlEmoticon wlEmoticon-smile" src="http://lh6.ggpht.com/-OMpMgx2MhKc/TwnksjrmFVI/AAAAAAAABCU/EGQeUPM1L_g/wlEmoticon-smile%25255B2%25255D.png?imgmax=800" style="border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none;" /&gt;&lt;br /&gt;Peter De Rop&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-7980202864854478130?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/7980202864854478130/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=7980202864854478130' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/7980202864854478130'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/7980202864854478130'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2012/01/waterfall-chart-in-businessobjects.html' title='A #WaterFall Chart in #BusinessObjects'/><author><name>PDeRop</name><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://lh4.ggpht.com/-QVIBhqNd9IA/Twnkhxlv3pI/AAAAAAAABA8/wNic4gbzH4Q/s72-c/image_thumb%25255B5%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10701745.post-9203949651737186096</id><published>2012-01-04T14:56:00.001+01:00</published><updated>2012-01-04T14:56:42.102+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Teaching'/><category scheme='http://www.blogger.com/atom/ns#' term='Lync'/><category scheme='http://www.blogger.com/atom/ns#' term='Trick'/><title type='text'>Presenting a conference in Lync</title><content type='html'>&lt;p&gt;These are the steps I had to do, in order to get my Lync session up an running.&lt;/p&gt;  &lt;p&gt;Step 1) Invite people into the session:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-gRGRR2xxYYU/TwRairNz9JI/AAAAAAAAA_8/VDuKlzIIjXA/s1600-h/image%25255B9%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-KSizl2kH_5c/TwRajKFQaPI/AAAAAAAABAA/iQx3-f5z6I4/image_thumb%25255B11%25255D.png?imgmax=800" width="337" height="280" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;At the top, make sure you select it to be an online-meeting. This automatically creates the mail and the necessary hyperlinks. In the options of the meeting (Meeting options) it is possible to state that the other attendees should have their mikes muted – which might be the better choice. Of course, the presenter can unmute the mikes if necessary.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-J4vSZm6jlIo/TwRajirvQWI/AAAAAAAABAI/ttDTTuwvZVc/s1600-h/image%25255B15%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-NiBW2EQavpk/TwRakTfoGvI/AAAAAAAABAU/Bo1LNmnhwo4/image_thumb%25255B18%25255D.png?imgmax=800" width="393" height="296" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Step 2) Recording&lt;/p&gt;  &lt;p&gt;The makers of Lync made it somewhat hard to locate the record button.It’s located under the double arrow icon on the chatwindow. Press it. When you with to stop recrding, the stop recording button is also here, after which Lync will ask where you wish to save the .WMV file that is the product of this recording.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-pNb2gBJyWhE/TwRalbQBpCI/AAAAAAAABAY/QHYs3IE4tcY/s1600-h/image%25255B20%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-xHRId1yUCDc/TwRal-7bhsI/AAAAAAAABAg/9yjxhb67uTc/image_thumb%25255B24%25255D.png?imgmax=800" width="407" height="249" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Step 3) Sharing your desktop. From the top menu, choose Share desktop and start presenting yoru material with Powerpoint/applications you wish to explain.&lt;/p&gt;  &lt;p&gt;There, now I’m all set for my first online presentation next week &lt;img style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none" class="wlEmoticon wlEmoticon-smile" alt="Glimlach" src="http://lh6.ggpht.com/-dH5Gr-is7BA/TwRamXIoksI/AAAAAAAABAo/z7twjTXSv6o/wlEmoticon-smile%25255B2%25255D.png?imgmax=800" /&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Cheers&lt;/p&gt;  &lt;p&gt;Peter De Rop&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-9203949651737186096?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/9203949651737186096/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=9203949651737186096' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/9203949651737186096'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/9203949651737186096'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2012/01/presenting-conference-in-lync.html' title='Presenting a conference in Lync'/><author><name>PDeRop</name><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://lh5.ggpht.com/-KSizl2kH_5c/TwRajKFQaPI/AAAAAAAABAA/iQx3-f5z6I4/s72-c/image_thumb%25255B11%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10701745.post-2376025212346393243</id><published>2012-01-04T10:17:00.001+01:00</published><updated>2012-01-04T10:18:55.745+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reporting Services'/><category scheme='http://www.blogger.com/atom/ns#' term='Reporting'/><category scheme='http://www.blogger.com/atom/ns#' term='Functions'/><category scheme='http://www.blogger.com/atom/ns#' term='Trick'/><title type='text'>STRConv function in Reporting Services</title><content type='html'>You learn something every day. This particular function, I had not heard of before, but then again, I had not needed it before either.&lt;br /&gt;&lt;br /&gt;STRCONV&lt;br /&gt;&lt;br /&gt;Of course, as a VBScript user, I’m aware of functions like UCase() and LCase, which will turn a text into a uppercase or lowercase text, but for this particular report, I needed the text to be Capitalized.&lt;br /&gt;So, the first letter of each word needed to be in Caps. In my case : Peter De Rop. But one source provides the text in all caps, another in mixed. They have to aggregate at the report-level.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://support.microsoft.com/kb/298607" target="_blank"&gt;I found the explanation here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;StrConv has three functions. Uppercase, Lowercase and Capitalize. It’s that third one we’re after:&lt;br /&gt;&lt;br /&gt;StrConv(“AbC dEfG”,1) will show : ABC DEFG&lt;br /&gt;StrConv(“AbC dEfG”,2) will show : abc defg&lt;br /&gt;StrConv([fieldname],3) will show the data Capitalized.(Abc Defg)&lt;br /&gt;&lt;br /&gt;Other uses of this function include conversion to &lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.visualbasic.strings.strconv.aspx" target="_blank"&gt;Japanese and Chinese charactersets&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Sweet&lt;br /&gt;&lt;br /&gt;Peter De Rop&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-2376025212346393243?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/2376025212346393243/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=2376025212346393243' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/2376025212346393243'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/2376025212346393243'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2012/01/text-functions-in-reporting-services.html' title='STRConv function in Reporting Services'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-7643747784903057086</id><published>2011-12-21T18:17:00.004+01:00</published><updated>2011-12-21T18:17:42.201+01:00</updated><title type='text'>Seats open for basic training BusinessObjects</title><content type='html'>Still some seats open for the Basic training Business Objects of 19 and 20 january 2012.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.xylos.com/training/cursus/WBUSXIB/Business-Objects-XI-End-User-Report-Design/"&gt;Find the registration form here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Peter De Rop&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-7643747784903057086?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/7643747784903057086/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=7643747784903057086' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/7643747784903057086'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/7643747784903057086'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2011/12/seats-open-for-basic-training.html' title='Seats open for basic training BusinessObjects'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-1467178356988053573</id><published>2011-12-21T15:38:00.001+01:00</published><updated>2011-12-21T15:38:13.322+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reporting'/><category scheme='http://www.blogger.com/atom/ns#' term='BusinessObjects'/><category scheme='http://www.blogger.com/atom/ns#' term='BUG'/><title type='text'>Variance not created as a footer in DeskI</title><content type='html'>&lt;p&gt;This is a minor bug that exists in BusinessObjects XI and Business Objects 6.&lt;/p&gt;  &lt;p&gt;When you add a variance to a table, the variance column isn’t marked as a footer.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-B4axYVmv1gg/TvHvQjXy-2I/AAAAAAAAA-0/iVpktTkG5Bk/s1600-h/image%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-6WMtL8PYqVo/TvHvRHtndBI/AAAAAAAAA-4/gPDJCER7vQ4/image_thumb%25255B5%25255D.png?imgmax=800" width="431" height="257" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I add the variance :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-iP7VO-FSrPg/TvHvRptCggI/AAAAAAAAA_E/DHyBuMXy8Kg/s1600-h/image%25255B9%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-WzEVeReiPzo/TvHvStIuwII/AAAAAAAAA_I/PCktjtMFGr8/image_thumb%25255B11%25255D.png?imgmax=800" width="428" height="212" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;So far, so good.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-LUK0ibjs51g/TvHvSx0cF6I/AAAAAAAAA_U/L8d-rpSuZck/s1600-h/image%25255B14%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-fmv4THGIE6I/TvHvT_NoTrI/AAAAAAAAA_Y/q10tS4qdAIE/image_thumb%25255B17%25255D.png?imgmax=800" width="433" height="186" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;But when I add the sales revenue in a column behind it, it doesn’t aggregate. It just shows the last one.&lt;/p&gt;  &lt;p&gt;Solution :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-V8SyucSBDBk/TvHvUWxSMdI/AAAAAAAAA_g/73KUaLOVdC0/s1600-h/image%25255B19%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-I2UYp45ua6o/TvHvUxho4FI/AAAAAAAAA_o/2tWB9sv3vQg/image_thumb%25255B23%25255D.png?imgmax=800" width="442" height="256" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In the table-properties, manually activate the table footer.&lt;/p&gt;  &lt;p&gt;Peter De Rop&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-1467178356988053573?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/1467178356988053573/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=1467178356988053573' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/1467178356988053573'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/1467178356988053573'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2011/12/variance-not-created-as-footer-in-deski.html' title='Variance not created as a footer in DeskI'/><author><name>PDeRop</name><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://lh5.ggpht.com/-6WMtL8PYqVo/TvHvRHtndBI/AAAAAAAAA-4/gPDJCER7vQ4/s72-c/image_thumb%25255B5%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10701745.post-3935559680485453499</id><published>2011-12-14T13:24:00.001+01:00</published><updated>2011-12-14T13:57:59.524+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='Scorecards'/><category scheme='http://www.blogger.com/atom/ns#' term='PerformancePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='KPI'/><title type='text'>Creating a KPI in PerformancePoint</title><content type='html'>So far, it’s been a love/hate relationship with SharePoint, but a tool like PerformancePoint does get my full attention. So far, I had some trouble getting it to do what I want, so, here I share what I found so far.&lt;br /&gt;1) Deploying a demo-cube&lt;br /&gt;Once I had downloaded the AdventureWorks2008 database, I found a great procedure right here:&lt;br /&gt;&lt;a href="http://techpunch.wordpress.com/2008/09/08/sql-server-2008-how-to-build-and-deploy-adventureworks-olap-cubes/"&gt;http://techpunch.wordpress.com/2008/09/08/sql-server-2008-how-to-build-and-deploy-adventureworks-olap-cubes/&lt;/a&gt;&lt;br /&gt;2) Creating the connection:&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/-E_kpGZbe9aQ/TuiVZsF0yuI/AAAAAAAAA8o/pzchwyu9Xbw/s1600-h/image%25255B4%25255D.png"&gt;&lt;img alt="image" border="0" height="359" src="http://lh6.ggpht.com/-xvYMzxxnogo/TuiVaOmtjRI/AAAAAAAAA8s/gi92BEeUxjs/image_thumb%25255B5%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="313" /&gt;&lt;/a&gt;&lt;br /&gt;I provided the server and instance name. Note the backslash to enter the instance name. Not a forwardslash, which was one of the errors I made.&lt;br /&gt;Secondly, I selected the Database and Cube.&lt;br /&gt;Next, on the properties tab, I provided a name:&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/-X7srbGBM8Kw/TuiVaiaoB_I/AAAAAAAAA80/CadTBADbhvM/s1600-h/image%25255B9%25255D.png"&gt;&lt;img alt="image" border="0" height="329" src="http://lh4.ggpht.com/-t-s1ri6IcCA/TuiVbkQd-wI/AAAAAAAAA88/QhUccAhJLyc/image_thumb%25255B11%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="368" /&gt;&lt;/a&gt;&lt;br /&gt;And last but not least, the Time-tab. So far, it eluded me somewhat.&lt;br /&gt;To get this to work, you need a time-hierarchy in your OLAP cube. Fortunately, the AdventureWorks database has one, in case you want to try it out.&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/-BobvxoAwwlo/TuiVcP6CG9I/AAAAAAAAA9I/MkZnq5pWJ80/s1600-h/image%25255B14%25255D.png"&gt;&lt;img alt="image" border="0" height="277" src="http://lh3.ggpht.com/-GzTZFPQM6t8/TuiVc0I_tYI/AAAAAAAAA9M/dyv-vCzZ-is/image_thumb%25255B17%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="453" /&gt;&lt;/a&gt;&lt;br /&gt;For the Time Dimension, I chose to use Date.Date.Calendar, which points to a time-hierarchy in the AdventureWorks OLAP cube. Secondly, I browsed to a child item I wanted to use as a reference. In this case, I took January,1,2002. And I defined the level to be Day, because the above selection is in fact a day.&lt;br /&gt;Underneath, you then have to choose from a calendar, to what date this particular item maps. I guess Performance Point is trying to work out what format the date is in and I’ve seen more intuitive interfaces to accomplish this.&lt;br /&gt;Below that, you now have the chance to tell Performance Point, which item in your OLAP cube maps to the Year, the Semester, the Quarter the Month, the Day, the hour and the minutes if you have them.&lt;br /&gt;There, that’s the tricky part.&lt;br /&gt;3) Creating the KPI&lt;br /&gt;First, you choose, which measure in your database contains the number you want to show. In my case, that’s going to be the Sales Amount measure. (note the button at the bottom: “Change Source”) Took me a while to locate that one &lt;img alt="Glimlach" class="wlEmoticon wlEmoticon-smile" src="http://lh6.ggpht.com/-MEZD2OK2yQM/TuiVdVoo1QI/AAAAAAAAA9U/NqZnKVIgAag/wlEmoticon-smile%25255B2%25255D.png?imgmax=800" style="border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none;" /&gt;&lt;br /&gt;&lt;a href="http://lh4.ggpht.com/-qQeUEFab5Ok/TuiVeJmfi5I/AAAAAAAAA9Y/_imjxUECgpI/s1600-h/image%25255B19%25255D.png"&gt;&lt;img alt="image" border="0" height="315" src="http://lh4.ggpht.com/-ddA9FPpVqT4/TuiVe0WEZHI/AAAAAAAAA9g/7rpoAYurNA0/image_thumb%25255B23%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="530" /&gt;&lt;/a&gt;&lt;br /&gt;For the filter, I created a Time Inteligence filter. And I entered Year-8 This will return data for the current year,-8 years. My first mistake was to enter Year-1 because I thought the date I had chosen at the datasource, would be used as a reference, not true. It takes the current date.&lt;br /&gt;So, Year-8 it is.&lt;br /&gt;I then did the same for the target. By the way, I renamed them to be This year and last year.&lt;br /&gt;&lt;a href="http://lh5.ggpht.com/-_AiZFQECwCc/TuiVfSX_5GI/AAAAAAAAA9o/uCkXfEogA14/s1600-h/image%25255B25%25255D.png"&gt;&lt;img alt="image" border="0" height="372" src="http://lh3.ggpht.com/-DNv2XaO_2bc/TuiVgKmaqsI/AAAAAAAAA94/DLDFst3aO-U/image_thumb%25255B31%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="581" /&gt;&lt;/a&gt;&lt;br /&gt;And I entered Year-9 for that one. This way, I could compare 2003 to 2002 figures.&lt;br /&gt;After clicking OK, I then proceeded to make a scorecard:&lt;br /&gt;I just dragged the KPI (from the right pane) into the Scorecard and disco :&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/-2Otw0eTBTws/TuiVhKy98TI/AAAAAAAAA-A/kbPD9rhNL-0/s1600-h/image%25255B30%25255D.png"&gt;&lt;img alt="image" border="0" height="331" src="http://lh6.ggpht.com/-ZWc1x9WhZx0/TuiVh1H-iLI/AAAAAAAAA-E/eek3G43w8NI/image_thumb%25255B37%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="342" /&gt;&lt;/a&gt;&lt;br /&gt;No numbers, but lo and behold, when you press save or ctrl-s, they do emerge:&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/-RZ-VdgQ51N0/TuiVibKZV-I/AAAAAAAAA-M/nTMkT5d-7Ds/s1600-h/image%25255B35%25255D.png"&gt;&lt;img alt="image" border="0" height="181" src="http://lh6.ggpht.com/-LILYs9d95x4/TuiViwm2vDI/AAAAAAAAA-U/aEBRSJd27Yo/image_thumb%25255B43%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="377" /&gt;&lt;/a&gt;&lt;br /&gt;Our KPI tells us we did 37% better than last year. Cool. &lt;br /&gt;Last step, we could add the quarter by dragging it again from the right pane:&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/-yhPTItKOG_w/TuiVjoZ_-vI/AAAAAAAAA-c/7NHsiHJhqsE/s1600-h/image%25255B40%25255D.png"&gt;&lt;img alt="image" border="0" height="223" src="http://lh4.ggpht.com/-bvr0Z2f9RfQ/TuiVkBPPgBI/AAAAAAAAA-k/5ZTGJGQcfdU/image_thumb%25255B49%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="669" /&gt;&lt;/a&gt;&lt;br /&gt;Nice&lt;br /&gt;More to come&lt;br /&gt;&lt;br /&gt;Binabik&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-3935559680485453499?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/3935559680485453499/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=3935559680485453499' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/3935559680485453499'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/3935559680485453499'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2011/12/creating-kpi-in-performance-point.html' title='Creating a KPI in PerformancePoint'/><author><name>PDeRop</name><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://lh6.ggpht.com/-xvYMzxxnogo/TuiVaOmtjRI/AAAAAAAAA8s/gi92BEeUxjs/s72-c/image_thumb%25255B5%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10701745.post-4944939301866154844</id><published>2011-12-14T12:04:00.001+01:00</published><updated>2011-12-29T11:03:02.100+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reporting'/><category scheme='http://www.blogger.com/atom/ns#' term='BusinessObjects'/><category scheme='http://www.blogger.com/atom/ns#' term='Calculation'/><category scheme='http://www.blogger.com/atom/ns#' term='Functions'/><category scheme='http://www.blogger.com/atom/ns#' term='inlist'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>@DPValues and @DPEnd</title><content type='html'>A nice little piece of nothing this one. &lt;br /&gt;I noticed on the &lt;a href="http://www.forumtopics.com/busobj/viewtopic.php?p=859888#859888" target="_blank"&gt;forums&lt;/a&gt;, someone asking about these functions. So, I did some digging.&lt;br /&gt;I built a first query that list stores :&lt;br /&gt;The query became something like :&lt;br /&gt;SELECT   &lt;br /&gt;&amp;nbsp; &lt;br /&gt;Agg_yr_qt_mt_mn_wk_rg_cy_sn_sr_qt_ma.Store_name    &lt;br /&gt;FROM    &lt;br /&gt;&amp;nbsp; Agg_yr_qt_mt_mn_wk_rg_cy_sn_sr_qt_ma    &lt;br /&gt;Then, I based a query on it:&lt;br /&gt;&lt;a href="http://lh4.ggpht.com/-ODMIRpFvAfs/TuiCrNlPHDI/AAAAAAAAA8Y/2pttlipmSfk/s1600-h/image%25255B4%25255D.png"&gt;&lt;img alt="image" border="0" height="309" src="http://lh4.ggpht.com/-u3QhvBVaP1E/TuiCrmtdzCI/AAAAAAAAA8c/5OehbjKnGxU/image_thumb%25255B4%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="477" /&gt;&lt;/a&gt;&lt;br /&gt;the query became :&lt;br /&gt;SELECT   &lt;br /&gt;&amp;nbsp; &lt;br /&gt;Article_lookup.Family_name    &lt;br /&gt;FROM    &lt;br /&gt;&amp;nbsp; Article_lookup,    &lt;br /&gt;&amp;nbsp; Outlet_Lookup,    &lt;br /&gt;&amp;nbsp; Shop_facts    &lt;br /&gt;WHERE    &lt;br /&gt;&amp;nbsp; ( Outlet_Lookup.Shop_id=Shop_facts.Shop_id&amp;nbsp; )    &lt;br /&gt;&amp;nbsp; AND&amp;nbsp; ( Article_lookup.Article_id=Shop_facts.Article_id&amp;nbsp; )    &lt;br /&gt;&amp;nbsp; AND&amp;nbsp; (    &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; @dpvalues('    &lt;br /&gt;Outlet_Lookup.Shop_name',9,1)@dpend    &lt;br /&gt;&amp;nbsp; )    &lt;br /&gt;at the next iteration, it became:&lt;br /&gt;@dpvalues('   &lt;br /&gt;Outlet_Lookup.Shop_name',9,7)@dpend&lt;br /&gt;and when I tried filtering for a number, it became:&lt;br /&gt;@dpvalues('   &lt;br /&gt;sum(Agg_yr_qt_rn_st_ln_ca_sr.Sales_revenue)',536870916,12)@dpend&lt;br /&gt;&lt;br /&gt;This tells me, it’s not a user-function. It’s an internal function. The user is expected to use a subquery instead.&lt;br /&gt;Or, as Andreas stated on the forums : &amp;nbsp;query on query, which allows you to filter based on a different datasource.&lt;br /&gt;&lt;br /&gt;Binabik&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-4944939301866154844?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/4944939301866154844/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=4944939301866154844' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/4944939301866154844'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/4944939301866154844'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2011/12/dpvalues-and-dpend.html' title='@DPValues and @DPEnd'/><author><name>PDeRop</name><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://lh4.ggpht.com/-u3QhvBVaP1E/TuiCrmtdzCI/AAAAAAAAA8c/5OehbjKnGxU/s72-c/image_thumb%25255B4%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10701745.post-2625435849001527290</id><published>2011-12-09T09:57:00.001+01:00</published><updated>2011-12-09T09:57:38.031+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reporting'/><category scheme='http://www.blogger.com/atom/ns#' term='BusinessObjects'/><category scheme='http://www.blogger.com/atom/ns#' term='BUG'/><category scheme='http://www.blogger.com/atom/ns#' term='WEBI'/><category scheme='http://www.blogger.com/atom/ns#' term='Trick'/><title type='text'>Table titles, a well hidden feature</title><content type='html'>&lt;p&gt;Imagine that, a feature that is so well hidden, that I only found it after teaching Business Objects for four years. In fact, it has been in Business Objects ever since version 5 as far as I know.&lt;/p&gt;  &lt;p&gt;Here’s the deal :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-UVfIyX31H58/TuHNXUeWoJI/AAAAAAAAA6o/gYGvQiWisPg/s1600-h/image%25255B9%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-qmFaW-7koJQ/TuHNYfkrWsI/AAAAAAAAA6w/gDrjJwsQxSE/image_thumb%25255B11%25255D.png?imgmax=800" width="504" height="142" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;We want to show two values in a cross-tab. In this case, I took Sales revenue and Margin.&lt;/p&gt;  &lt;p&gt;The way it shows, you can’t really make out what each number is. But there is a solution. Both in WEBI and DESKI, you can set an option. So, right-click the table and choose “Format Crosstab” if you’re in DESKI.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-QZA3V0HjdJM/TuHNY7Tmx4I/AAAAAAAAA60/ofu-v64soBM/s1600-h/image%25255B17%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-Rxpy14b4y8o/TuHNZhDulLI/AAAAAAAAA7A/FTzwfDqLQhY/image_thumb%25255B15%25255D.png?imgmax=800" width="423" height="311" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Now, you check: “Show Variable Header”.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-b-iePDBBfmw/TuHNaNmh8xI/AAAAAAAAA7I/-6QRepzrFro/s1600-h/image%25255B22%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-TWcqwtk0yWc/TuHNbRysLMI/AAAAAAAAA7M/8NQOhZmfR_o/image_thumb%25255B21%25255D.png?imgmax=800" width="443" height="123" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;There, the title is showing. (In a minute, I’ll show you how to center the year above those columns) But first, how do you do this in WEBI ?&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-PWrz7EhdCAM/TuHNbyuEylI/AAAAAAAAA7Y/fHiZVMOWIVE/s1600-h/image%25255B27%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-9fBFxkWjZhc/TuHNc3aV97I/AAAAAAAAA7c/ViMQtKeoGV8/image_thumb%25255B28%25255D.png?imgmax=800" width="497" height="168" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In WEBI, on the Properties tab, you check “Show Object Name”.&lt;/p&gt;  &lt;p&gt;So, how do we center the title ? Easy.First, we add a break to the year.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-vc3iC9Lv_KE/TuHNdPE1PkI/AAAAAAAAA7k/3g-iE-uOc7U/s1600-h/image%25255B32%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-HTbk-gJzBYw/TuHNdoVF3II/AAAAAAAAA7s/ew4n7HICVXc/image_thumb%25255B34%25255D.png?imgmax=800" width="470" height="179" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Next, we delete the extra columns, but because of a BUG, you can’t delete these columns if you try it in Rich Client. In stead, go to the properties and deactivate the footer on the break.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-w0fpf6v3Uag/TuHNeYf28QI/AAAAAAAAA70/gfJIywrRn9Q/s1600-h/image%25255B37%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-YRdKAH1Sk3M/TuHNe2uMvkI/AAAAAAAAA78/9Rq7lveDQw0/image_thumb%25255B40%25255D.png?imgmax=800" width="299" height="406" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In DeskI, just delete the columns of course.&lt;/p&gt;  &lt;p&gt;The last step is to Center values across the break as shown above. In DeskI, this is a property of the break, which you can set in Slice and Dice.&lt;/p&gt;  &lt;p&gt;The result :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-tA6tIFh8l94/TuHNfpadaEI/AAAAAAAAA8E/TcrcboKX7Nk/s1600-h/image%25255B42%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-07nfTyL-Xds/TuHNgP7GFUI/AAAAAAAAA8M/Ud7GPu22VRE/image_thumb%25255B47%25255D.png?imgmax=800" width="575" height="144" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;There, a clean table&lt;/p&gt;  &lt;p&gt;Cheers &lt;/p&gt;  &lt;p&gt;Peter De Rop&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-2625435849001527290?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/2625435849001527290/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=2625435849001527290' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/2625435849001527290'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/2625435849001527290'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2011/12/table-titles-well-hidden-feature.html' title='Table titles, a well hidden feature'/><author><name>PDeRop</name><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://lh6.ggpht.com/-qmFaW-7koJQ/TuHNYfkrWsI/AAAAAAAAA6w/gDrjJwsQxSE/s72-c/image_thumb%25255B11%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10701745.post-2232408224547946796</id><published>2011-12-06T17:20:00.001+01:00</published><updated>2011-12-06T17:25:16.621+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reporting'/><category scheme='http://www.blogger.com/atom/ns#' term='BusinessObjects'/><category scheme='http://www.blogger.com/atom/ns#' term='SevenToolsOfQuality'/><category scheme='http://www.blogger.com/atom/ns#' term='Charts'/><title type='text'>A Pareto Chart</title><content type='html'>&lt;p&gt;While I was writing the article about “Control charts”, I found out about “&lt;a href="http://en.wikipedia.org/wiki/Seven_Basic_Tools_of_Quality" target="_blank"&gt;The Seven Basic Tools of Quality&lt;/a&gt;”. It was the first time I learned about that – and I realised that at least 4 of those seven tools can be built in Business Objects DeskI and WebI.&lt;/p&gt;  &lt;p&gt;Those four tools are :&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://pderop.blogspot.com/2011/11/control-chart-in-business-objects.html" target="_blank"&gt;A Control chart&lt;/a&gt; (described in a previous article)&lt;/li&gt;    &lt;li&gt;A Pareto chart&lt;/li&gt;    &lt;li&gt;A Histogram&lt;/li&gt;    &lt;li&gt;A Scatter Diagram&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;In this particular article, I wish to show you a &lt;a href="http://en.wikipedia.org/wiki/Pareto_chart" target="_blank"&gt;Pareto Chart&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Basically, it is a chart that shows a bar and a line, where the line illustrates the importance of each of the bars.&lt;/p&gt;  &lt;p&gt;This is accomplished by sorting the values from high to low and presenting them on a bar-chart. And then, adding the RunningSum/Total on a linechart.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-OYDDaOmHpOc/Tt5Awqml1dI/AAAAAAAAA44/PmF3RttfV4E/s1600-h/image%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-pudj8_SLYrk/Tt5AxIV8F3I/AAAAAAAAA48/7kzFiqbvLTo/image_thumb%25255B5%25255D.png?imgmax=800" width="623" height="166" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;The above chart shows that 50% of our reservations are made in 3 months April, August and February.&lt;/p&gt;  &lt;p&gt;I realise that this isn’t the typical sort of data on which you use this particular chart, but I do believe this can be a useful way of presenting pretty much any kind of number. Where you want to compare your number to a % in total.&lt;/p&gt;  &lt;p&gt;The example used on WikiPedia is various sources of absenteism. In an other source, I found the possible deseases among cattle, in order to find the deseases you want to tackle first.&lt;/p&gt;  &lt;p&gt;So, enough talk. Without any further ado: The Pareto Chart.&lt;/p&gt;  &lt;p&gt;Step 1. List your data in a table and sort it Large to Small :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-28nCA4XHbwk/Tt5B6ZvmCEI/AAAAAAAAA6Y/EPqlktsCoto/s1600-h/image%25255B37%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-OUZ9hRhEvD0/Tt5B6xH5SuI/AAAAAAAAA6c/iIcwQbjZceI/image_thumb%25255B45%25255D.png?imgmax=800" width="267" height="374" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Step 2 : &lt;/p&gt;  &lt;p&gt;Calculate the Runningsum and divide by the total:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-cCOFkFiuV_M/Tt5AzD1q8VI/AAAAAAAAA5U/nt1Tsd3eK_k/s1600-h/image%25255B15%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-eHAdbIimHu8/Tt5Azg4wWbI/AAAAAAAAA5c/9nmKc8TvQh0/image_thumb%25255B18%25255D.png?imgmax=800" width="493" height="452" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;=RunningSum([Future guests])/Sum([Future guests]) in Report * 100&lt;/p&gt;  &lt;p&gt;I multiply times 100 to make it a bit cleaner on the z-axis of the chart.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-237c3lgroGs/Tt5A0uY9OpI/AAAAAAAAA5k/COk9QZBJk2o/s1600-h/image%25255B20%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-80KrCbZNIaw/Tt5A1Nd3BJI/AAAAAAAAA5s/sLeMZkAil7U/image_thumb%25255B24%25255D.png?imgmax=800" width="577" height="348" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;As soon as you do this however, any sorting on the table is gone, so we’ll have to re-sort.&lt;/p&gt;  &lt;p&gt;Step 3: Click View structure, sort the measure you want to have sorted:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-ewjFrlqZaGA/Tt5A1ii51cI/AAAAAAAAA50/-xFd5RPZrwY/s1600-h/image%25255B25%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-bRTiSifMS1M/Tt5A2Dx5vPI/AAAAAAAAA58/jyCVoDpWSa0/image_thumb%25255B30%25255D.png?imgmax=800" width="469" height="211" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Second problem, the scale is wrong. It should be from 0 to 100. On the properties tab, make sure you set it to be 0 to 100. Given the type of number we have here, it will never be anything else than 0 to 100.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-3TG7yuPBCFk/Tt5A2mn_urI/AAAAAAAAA6E/tEnwk8v6oqk/s1600-h/image%25255B32%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-a3Mz7-0Y-Xc/Tt5A3ogucLI/AAAAAAAAA6Q/1AtVjUbQml0/image_thumb%25255B38%25255D.png?imgmax=800" width="789" height="276" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;And we have ourselves a PARETO-chart.&lt;/p&gt;  &lt;p&gt;Peter De Rop&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-2232408224547946796?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/2232408224547946796/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=2232408224547946796' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/2232408224547946796'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/2232408224547946796'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2011/12/pareto-chart.html' title='A Pareto Chart'/><author><name>PDeRop</name><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://lh3.ggpht.com/-pudj8_SLYrk/Tt5AxIV8F3I/AAAAAAAAA48/7kzFiqbvLTo/s72-c/image_thumb%25255B5%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10701745.post-7275709006815062334</id><published>2011-11-30T14:12:00.001+01:00</published><updated>2011-12-06T17:27:22.692+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BusinessObjects'/><category scheme='http://www.blogger.com/atom/ns#' term='XI'/><category scheme='http://www.blogger.com/atom/ns#' term='SevenToolsOfQuality'/><category scheme='http://www.blogger.com/atom/ns#' term='WEBI'/><category scheme='http://www.blogger.com/atom/ns#' term='Charts'/><category scheme='http://www.blogger.com/atom/ns#' term='Trick'/><title type='text'>A Control Chart in Business Objects</title><content type='html'>This week, I read about Control charts on the &lt;a href="http://www.forumtopics.com/busobj/viewtopic.php?p=857269#857269" target="_blank"&gt;Business Objects forum&lt;/a&gt;. I had not heard of the notion before, but of course, it didn’t take long to find more about it. &lt;a href="http://en.wikipedia.org/wiki/Control_chart" target="_blank"&gt;WIKIPEDIA&lt;/a&gt; is your friend in times like these.  &lt;br /&gt;As it turns out, it is a line chart, enriched with a series of constants being:  &lt;br /&gt;  &lt;ul&gt;   &lt;li&gt;The mean or average&lt;/li&gt;    &lt;li&gt;The mean + and – twice the stdDev()&lt;/li&gt;    &lt;li&gt;The mean + and – three times the stdDev()&lt;/li&gt; &lt;/ul&gt; All of which can be done very easily.  &lt;br /&gt;When writing these functions, there are only two things you need to add to your calculations : “in body” and “in report”. I’m going to do this in Rich Client, but this works just as fine in any other version of SAP BusinessObjects.  &lt;br /&gt;The function for the mean looks like this :  &lt;br /&gt;=average([Sales revenue] in ([Month]) in Report (a variable which I call AverageSalesRevenue)  &lt;br /&gt;the function for the Standard deviation looks like  &lt;br /&gt;=stdDevP(&amp;lt;Sales revenue&amp;gt; in ([Month])) in Report (a variable which I call deviationRevenue)  &lt;br /&gt;please note that I’m using the stdDevP function and not the stdDev function, but that’s because I have all data accounted for. In case you made a random selection, you will need to use stdDev instead.  &lt;br /&gt;&lt;a href="http://lh3.ggpht.com/-VG4TceKwEeA/TtYrnUBT4VI/AAAAAAAAA4U/mJchujPlKPs/s1600-h/image%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-0OX3ijqlsX0/TtYrnxG4K3I/AAAAAAAAA4Y/TRZtzIm5NTA/image_thumb%25255B5%25255D.png?imgmax=800" width="552" height="237" /&gt;&lt;/a&gt;  &lt;br /&gt;Basically, all you need to do is create 4 variables using the before mentioned functions.  &lt;br /&gt;1) [AverageSalesRevenue]+ ([deviationRevenue]*3) –&amp;gt; [AveragePlus3Deviations]  &lt;br /&gt;2) [AverageSalesRevenue] + ([deviationRevenue]*2) –&amp;gt; [AveragePlus2Deviations]  &lt;br /&gt;3) [AverageSalesRevenue] - ([deviationRevenue]*2) –&amp;gt; [AverageMinus2Deviations]  &lt;br /&gt;4)[AverageSalesRevenue] - ([deviationRevenue]*3) –&amp;gt; [AverageMinus3Deviations]  &lt;br /&gt;In View structure, it’s easy to add them to the linechart like such :  &lt;br /&gt;&lt;a href="http://lh3.ggpht.com/-76q55JwBKrc/TtYroHUUweI/AAAAAAAAA4g/zxJksJTAq8M/s1600-h/image%25255B9%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-khYLmDyOOHM/TtYro0e_cFI/AAAAAAAAA4o/amOhKs4jC7k/image_thumb%25255B12%25255D.png?imgmax=800" width="526" height="206" /&gt;&lt;/a&gt;  &lt;br /&gt;The rest is easy, just drag the documentation cells in place with formula :   &lt;br /&gt;=&amp;quot;UCL:&amp;quot;+[average plus 3 deviations]  &lt;br /&gt;=&amp;quot;Center line:&amp;quot;+[Average]  &lt;br /&gt;=&amp;quot;LCL:&amp;quot;+[Average minus 3 deviations]  &lt;br /&gt;  &lt;br /&gt;There, hope you enjoyed that,  &lt;br /&gt;  &lt;br /&gt;Peter De Rop     &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-7275709006815062334?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/7275709006815062334/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=7275709006815062334' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/7275709006815062334'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/7275709006815062334'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2011/11/control-chart-in-business-objects.html' title='A Control Chart in Business Objects'/><author><name>PDeRop</name><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://lh6.ggpht.com/-0OX3ijqlsX0/TtYrnxG4K3I/AAAAAAAAA4Y/TRZtzIm5NTA/s72-c/image_thumb%25255B5%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10701745.post-4538244979127253970</id><published>2011-11-23T09:05:00.001+01:00</published><updated>2011-12-05T20:23:06.520+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BusinessObjects'/><category scheme='http://www.blogger.com/atom/ns#' term='Functions'/><category scheme='http://www.blogger.com/atom/ns#' term='XI'/><category scheme='http://www.blogger.com/atom/ns#' term='Trick'/><title type='text'>Colouring alternating lines in Business Objects DeskI</title><content type='html'>This functionality exists by default in WEBI, but DeskI simply doesn’t have it:&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/-Oo7UIIFw6Mk/TsypNpzw07I/AAAAAAAAA3s/NgiRsRoj5G0/s1600-h/image%25255B4%25255D.png"&gt;&lt;img alt="image" border="0" height="258" src="http://lh4.ggpht.com/-_KoIQydTUWQ/TsypOJFfkSI/AAAAAAAAA3w/kncMHYZDLQE/image_thumb%25255B5%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="437" /&gt;&lt;/a&gt;&lt;br /&gt;But, as you can see, you can have it, if you really want to. Here is how :&lt;br /&gt;First, we need to create a variable called linenumber, with the function :&lt;br /&gt;=LineNumber() –1&lt;br /&gt;The –1 is because linenumber also counts the header and therefore, starts at 2.&lt;br /&gt;The second variable I create is called Even and the function is :&lt;br /&gt;=Even(&amp;lt;linenumber&amp;gt;)&lt;br /&gt;The rest is easy, create an alerter on that Even variable :&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/-nyTcwfnsJzU/TsypOnGD27I/AAAAAAAAA34/go9l4YAOIoU/s1600-h/image%25255B9%25255D.png"&gt;&lt;img alt="image" border="0" height="271" src="http://lh6.ggpht.com/-g5saZUe9HGE/TsypPdTg1aI/AAAAAAAAA4A/SP9YFM3dO1M/image_thumb%25255B11%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="426" /&gt;&lt;/a&gt;&lt;br /&gt;Easy &lt;img alt="Glimlach" class="wlEmoticon wlEmoticon-smile" src="http://lh3.ggpht.com/-OYzWxQxmnpU/TsypP7IzDgI/AAAAAAAAA4I/ggm095gPJGw/wlEmoticon-smile%25255B2%25255D.png?imgmax=800" style="border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none;" /&gt;&lt;br /&gt;Enjoy&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Peter De Rop&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-4538244979127253970?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/4538244979127253970/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=4538244979127253970' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/4538244979127253970'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/4538244979127253970'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2011/11/colouring-alternating-lines-in-business.html' title='Colouring alternating lines in Business Objects DeskI'/><author><name>PDeRop</name><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://lh4.ggpht.com/-_KoIQydTUWQ/TsypOJFfkSI/AAAAAAAAA3w/kncMHYZDLQE/s72-c/image_thumb%25255B5%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10701745.post-8163441477047240973</id><published>2011-11-18T10:07:00.001+01:00</published><updated>2011-12-05T20:23:33.880+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BusinessObjects'/><category scheme='http://www.blogger.com/atom/ns#' term='Functions'/><category scheme='http://www.blogger.com/atom/ns#' term='XI'/><category scheme='http://www.blogger.com/atom/ns#' term='Excel'/><category scheme='http://www.blogger.com/atom/ns#' term='WEBI'/><category scheme='http://www.blogger.com/atom/ns#' term='Charts'/><category scheme='http://www.blogger.com/atom/ns#' term='Trick'/><title type='text'>A Mini Chart in Business Objects WEBI</title><content type='html'>This is a nifty little trick you can pull with Business Objects WEBI. Yes, only WEBI-users will be able to do this, the new functions were only added in the WEBI version of Business Objects (but that includes Rich Client of course).&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/-e5la5yxnark/TsYgVoo1jGI/AAAAAAAAA3Q/EeOrmH7S0K0/s1600-h/image%25255B4%25255D.png"&gt;&lt;img alt="image" border="0" height="397" src="http://lh4.ggpht.com/-VFZoylgkHxM/TsYgXKQ1DXI/AAAAAAAAA3Y/8YUYQP0MkGY/image_thumb%25255B6%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="269" /&gt;&lt;/a&gt;&lt;br /&gt;This is the end-result. In the column to the right of your numbers, you get some sort of a chart that shows the proportional importance of a number (to get this to work with negative numbers, you’ll have to complicate things somewhat)&lt;br /&gt;In Excel, the function is =rept(“|”, yournumber) – in Business Objects, that function is called : Fill()&lt;br /&gt;In this case, I also divided my numbers by 10000 to keep the charts inside the column.&lt;br /&gt;So: =fill(“|”;[Sales revenue]/10000).&lt;br /&gt;Ah, I set the fontsize to 5, to make it even better.&lt;br /&gt;Short and sweet, don’t you think &lt;img alt="Glimlach" class="wlEmoticon wlEmoticon-smile" src="http://lh6.ggpht.com/-KM72PJxLnpA/TsYgX8JkNaI/AAAAAAAAA3g/sdKVckniQ0Q/wlEmoticon-smile%25255B2%25255D.png?imgmax=800" style="border-bottom-style: none; border-left-style: none; border-right-style: none; border-top-style: none;" /&gt;&lt;br /&gt;Enjoy,&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Peter De Rop&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-8163441477047240973?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/8163441477047240973/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=8163441477047240973' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/8163441477047240973'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/8163441477047240973'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2011/11/this-is-nifty-little-trick-you-can-pull.html' title='A Mini Chart in Business Objects WEBI'/><author><name>PDeRop</name><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://lh4.ggpht.com/-VFZoylgkHxM/TsYgXKQ1DXI/AAAAAAAAA3Y/8YUYQP0MkGY/s72-c/image_thumb%25255B6%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10701745.post-114228120033247572</id><published>2011-11-18T09:30:00.001+01:00</published><updated>2011-11-18T09:30:53.659+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reporting'/><category scheme='http://www.blogger.com/atom/ns#' term='BusinessObjects'/><category scheme='http://www.blogger.com/atom/ns#' term='Functions'/><category scheme='http://www.blogger.com/atom/ns#' term='XI'/><category scheme='http://www.blogger.com/atom/ns#' term='Charts'/><title type='text'>Stopping gaps in Business Objects Charts</title><content type='html'>&lt;p&gt;This is a classic.When you’ve been creating charts in Business Objects, you know about this one. Let’s start by looking at the data we would want to present in a chart:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-k2HY4jgMnis/TsYXh-VBokI/AAAAAAAAA1Y/Nmm6ec1ibhE/s1600-h/image%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-wIsB78kkBvM/TsYXigMmezI/AAAAAAAAA1g/PBA7lpMFtw8/image_thumb%25255B5%25255D.png?imgmax=800" width="371" height="189" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-XnfsFEm2g80/TsYXjldm6nI/AAAAAAAAA1o/hpf494DyeYY/s1600-h/image%25255B9%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-r9V3rgfEeag/TsYXknTD7cI/AAAAAAAAA1w/ktXMTK-PZ6A/image_thumb%25255B11%25255D.png?imgmax=800" width="381" height="221" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;As you notice, there are a few months missing. They’re simply not there because we didn’t sell that particular product in that particular month at all. Still, we wish to present the data in a line-chart and display a line across those missing months, without leaving a gap.&lt;/p&gt;  &lt;p&gt;For you WEBI users, we have a solution.&lt;/p&gt;  &lt;p&gt;The only solution is adding a second query to your report, where you have all 12 months.&lt;/p&gt;  &lt;p&gt;In your query editor, click : Add Query and select only the month dimension.&lt;/p&gt;  &lt;p&gt;Once you did that and you added the month to the chart (instead of the month from the first query)&lt;/p&gt;  &lt;p&gt;your Chart will look like :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-GTMjsHVfEyI/TsYXldGHMWI/AAAAAAAAA14/6k48qOIhyTo/s1600-h/image%25255B14%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-OyytlAgq80E/TsYXmYgGJzI/AAAAAAAAA2A/tu1cZhW7ZgE/image_thumb%25255B17%25255D.png?imgmax=800" width="395" height="234" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Not much of an improvement.&lt;/p&gt;  &lt;p&gt;This is what it looks like in WEBI&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-PlvBLCPQ0vY/TsYXnUw8uvI/AAAAAAAAA2I/2HhGdBadtKQ/s1600-h/image%25255B19%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-su71BpoXKK8/TsYXoX60wFI/AAAAAAAAA2Q/PjlDzYaXTFs/image_thumb%25255B23%25255D.png?imgmax=800" width="480" height="363" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;and with the extra query added :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-RrM736tbtuc/TsYXpcv46yI/AAAAAAAAA2Y/jsxTmBnU3YE/s1600-h/image%25255B24%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-v2vU8jL7lCU/TsYXq41BhFI/AAAAAAAAA2g/MimU92uF9lE/image_thumb%25255B29%25255D.png?imgmax=800" width="489" height="354" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;For now, in DeskI, this is how far you could get. The only Solution that remains for DeskI is to calculate the rest of the chart by hand (which is what i will show in a next blogpost. In WEBI however, we have a much better solution : the function “interpolation”.&lt;/p&gt;  &lt;p&gt;=Interpolation([Sales revenue])&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-pEUVDTptx9E/TsYXrRyfEZI/AAAAAAAAA2o/osilkNtYGOs/s1600-h/image%25255B28%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-hv3HYLu2fqg/TsYXsZyN3iI/AAAAAAAAA2w/483fxUXNxvQ/image_thumb%25255B35%25255D.png?imgmax=800" width="180" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;          &lt;p&gt;Obviously, the numbers we get this way are fictious. They just serve to close the gap on the chart. It’s clearly the purpose to use the previous display of the data, but we use these numbers for our chart – this results in :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-3LwnVBHAR8k/TsYXtI8qRpI/AAAAAAAAA24/4jMpC35S4Xw/s1600-h/image%25255B33%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-ZbfEe9mtvY0/TsYXuWl7x3I/AAAAAAAAA3A/WuOpbXBoG30/image_thumb%25255B41%25255D.png?imgmax=800" width="562" height="406" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;And we have a much cleaner chart.&lt;/p&gt;  &lt;p&gt;Hope you find this useful.&lt;/p&gt;  &lt;p&gt;Oh, and Mind the Gap &lt;img style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none" class="wlEmoticon wlEmoticon-smile" alt="Glimlach" src="http://lh5.ggpht.com/-iVhEXG-TSyY/TsYXu4kjUpI/AAAAAAAAA3I/UXWvtySg06Y/wlEmoticon-smile%25255B2%25255D.png?imgmax=800" /&gt;&lt;/p&gt;  &lt;p&gt;Cheers,&lt;/p&gt;  &lt;p&gt;Binabik&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-114228120033247572?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/114228120033247572/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=114228120033247572' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/114228120033247572'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/114228120033247572'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2011/11/this-is-classic.html' title='Stopping gaps in Business Objects Charts'/><author><name>PDeRop</name><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://lh3.ggpht.com/-wIsB78kkBvM/TsYXigMmezI/AAAAAAAAA1g/PBA7lpMFtw8/s72-c/image_thumb%25255B5%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10701745.post-8867918108605580261</id><published>2011-11-16T10:57:00.001+01:00</published><updated>2011-11-16T10:57:16.295+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BusinessObjects'/><category scheme='http://www.blogger.com/atom/ns#' term='Calculation'/><category scheme='http://www.blogger.com/atom/ns#' term='Math'/><category scheme='http://www.blogger.com/atom/ns#' term='Functions'/><category scheme='http://www.blogger.com/atom/ns#' term='Excel'/><category scheme='http://www.blogger.com/atom/ns#' term='Trendlines'/><category scheme='http://www.blogger.com/atom/ns#' term='Charts'/><title type='text'>An Exponential Trendline in Business Objects</title><content type='html'>&lt;p&gt;This is going to be the third type of Trendline and I just noticed, Excel has six of them. I’m not sure how many really are used, or if there is a specific need for any in particular. So, for now, I’m gonna keep this at three, unless there is a demand for the other three. (Polynomial, Power and Moving Average).&lt;/p&gt;  &lt;p&gt;I am going to add those three eventually, just for fun, but I’m going to keep them for a cold winter evening. Or when the question arises.&lt;/p&gt;  &lt;p&gt;So, here’s the Exponential Trendline.&lt;/p&gt;  &lt;p&gt;The magic number for the Exponential trendline is e. I’ve been reading about the constant e on Wikipedia and &lt;a href="http://en.wikipedia.org/wiki/E_(mathematical_constant)"&gt;it’s a great story&lt;/a&gt;. You should read it too. One of the things I noticed is the amount of history that lies at the base of these trendlines. Amazing.&lt;/p&gt;  &lt;p&gt;First, the formula:&lt;/p&gt;  &lt;p&gt;&lt;img title="Equation" border="0" alt="Equation" src="http://officeimg.vo.msecnd.net/en-us/files/035/535/ZA006051089.gif" /&gt;&lt;/p&gt;  &lt;p&gt;Where c and b are constants. Each time when they say that (and &lt;a href="http://office.microsoft.com/en-us/excel-help/add-change-or-remove-a-trendline-in-a-chart-HP010007461.aspx"&gt;here is where I find that info&lt;/a&gt;) I’m a bit pissed off. Especially, because they’re not constants at all. They’re calculated values. All of them.&lt;/p&gt;  &lt;p&gt;c, as usual, is the intercept point but this time, it uses the Natural Logarithm of Y and the value (non Logarithm) of X. In fact, the calculation uses the EXP function, which is the inverse of a Natural Logarithm.&lt;/p&gt;  &lt;p&gt;So, if i = ln(x), then exp(i) = x.&lt;/p&gt;  &lt;p&gt;b is the coëfficient which we calculated in both other trendlines before, but this time, it uses the ln of&amp;#160; y.&lt;/p&gt;  &lt;p&gt;(ah, on a sidenote, I wrote 2011 in my report, but on the test-databases that come with Business Objects, the numbers are identical for 2003 or 2006 –amazing huh &lt;img style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none" class="wlEmoticon wlEmoticon-smile" alt="Glimlach" src="http://lh6.ggpht.com/-KoC1Xz7uW78/TsOI2bfBAJI/AAAAAAAAAzg/3faYlq_mwjQ/wlEmoticon-smile%25255B2%25255D.png?imgmax=800" /&gt; )&lt;/p&gt;  &lt;p&gt;So, I take the ln on Sales Revenue and I call it LnY&lt;/p&gt;  &lt;p&gt;The formulas are:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-I9SE3Aki0tA/TsOI2pIvftI/AAAAAAAAAzo/yggM4ZBMNIM/s1600-h/image%25255B18%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-1uNXNcA_qGA/TsOI3vmHU7I/AAAAAAAAAzs/xwzFEHUUS20/image_thumb%25255B19%25255D.png?imgmax=800" width="357" height="358" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;=ln(&amp;lt;Sales revenue&amp;gt; in body) in report (which is called LnY)&lt;/p&gt;  &lt;p&gt;=Average(&amp;lt;LnY&amp;gt; in body) in Report (which I call AverageLnY)&lt;/p&gt;  &lt;p&gt;Like in the linear trendline, we calculate X-AverageX where X is a Runningcount of the Month.&lt;/p&gt;  &lt;p&gt;=((RunningCount(&amp;lt;Month&amp;gt;) In &amp;lt;Month&amp;gt;) - &amp;lt;AverageX&amp;gt;) In &amp;lt;Month&amp;gt;&lt;/p&gt;  &lt;p&gt;=(&amp;lt;LnY&amp;gt; - &amp;lt;AverageLnY&amp;gt;) In &amp;lt;Month&amp;gt; becomes the variable LnY-AverageLnY&lt;/p&gt;  &lt;p&gt;and we multiply those two :&lt;/p&gt;  &lt;p&gt;=&amp;lt;LnY-AverageLnY&amp;gt;*&amp;lt;X - average X&amp;gt;&lt;/p&gt;  &lt;p&gt;After which we add them up. As before, we now have the top of our division:&lt;/p&gt;  &lt;p&gt;=Sum((&amp;lt;LnY-AverageLnY&amp;gt; * &amp;lt;X - average X&amp;gt;) In&amp;#160; Body) In Report&lt;/p&gt;  &lt;p&gt;For the bottom part of our division, we need the Square of X-AverageX added up.&lt;/p&gt;  &lt;p&gt;=Power(&amp;lt;X - average X&amp;gt;, 2) In &amp;lt;Month&amp;gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-SpDWMNQPj00/TsOI32PEnWI/AAAAAAAAAz0/wW_ANNPM8kg/s1600-h/image%25255B23%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-gY4jnSGBOMY/TsOI4iYPEtI/AAAAAAAAAz8/QljNH_XORYE/image_thumb%25255B25%25255D.png?imgmax=800" width="426" height="196" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Now we divide those numbers&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-zwMrVBwrQIE/TsOI5Cfwp9I/AAAAAAAAA0I/wcDKeZUBH0Y/s1600-h/image%25255B27%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-By74hNKut5k/TsOI55BMDkI/AAAAAAAAA0M/gm2xhNfUcMs/image_thumb%25255B30%25255D.png?imgmax=800" width="181" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;There, that’s our b-variable which we can use to calculate our c variable.&lt;/p&gt;  &lt;p&gt;=&amp;lt;LnY&amp;gt;-(&amp;lt;LnCoeff&amp;gt;*&amp;lt;xvalue&amp;gt;)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-QISBOO5eGNY/TsOI6YXUWuI/AAAAAAAAA0Y/tNRVGt-7it8/s1600-h/image%25255B31%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-Thguz5pm8wQ/TsOI7NoKPCI/AAAAAAAAA0c/IBCLC_pv618/image_thumb%25255B35%25255D.png?imgmax=800" width="173" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;There we go, we have both variables to put into our formula.&lt;/p&gt;  &lt;p&gt;e = 2.71828, I found that on Wikipedia.&lt;/p&gt;  &lt;p&gt;Now, one more thing needs to be done, and it’s probably why this is called the exponential trendline, we need to take the EXP of our intercept point (our c-variable)&lt;/p&gt;  &lt;p&gt;=Exp(&amp;lt;InterceptLn&amp;gt;) In Report&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-eiFY86JDbhA/TsOI7Tqap-I/AAAAAAAAA0k/ZMwz0WcPBpA/s1600-h/image%25255B36%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-XY4lnS1UDws/TsOI8ITONXI/AAAAAAAAA0s/pSBib1BkEMc/image_thumb%25255B41%25255D.png?imgmax=800" width="426" height="412" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;=&amp;lt;ExpIntercept&amp;gt;*(Power(2.71828 ,(&amp;lt;LnCoeff&amp;gt;*&amp;lt;xvalue&amp;gt;)))&lt;/p&gt;  &lt;p&gt;this is the formulat shown at the top, turned Business Objects. We add that one and convert it to a table. That gives us the following chart:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-_ofejgdC3i4/TsOI8QwTgoI/AAAAAAAAA00/PU12aiX5YXs/s1600-h/image%25255B52%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-6zdJWf225XU/TsOI9GS7TWI/AAAAAAAAA1A/msLtucFiiss/image_thumb%25255B60%25255D.png?imgmax=800" width="566" height="325" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;And excel does this :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-ayQ0gf3FRlY/TsOI99tRZGI/AAAAAAAAA1I/gIXRXYSXY1o/s1600-h/image%25255B47%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-AJ4MLvql2GY/TsOI-vg_eGI/AAAAAAAAA1Q/hhASrHTTrBE/image_thumb%25255B54%25255D.png?imgmax=800" width="567" height="380" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Again, a perfect match.&lt;/p&gt;  &lt;p&gt;There. That gives you Linear, Logarithmic and Exponential trendlines to add to your charts.&lt;/p&gt;  &lt;p&gt;Enjoy&lt;/p&gt;  &lt;p&gt;Binabik&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-8867918108605580261?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/8867918108605580261/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=8867918108605580261' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/8867918108605580261'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/8867918108605580261'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2011/11/this-is-going-to-be-third-type-of.html' title='An Exponential Trendline in Business Objects'/><author><name>PDeRop</name><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://lh6.ggpht.com/-KoC1Xz7uW78/TsOI2bfBAJI/AAAAAAAAAzg/3faYlq_mwjQ/s72-c/wlEmoticon-smile%25255B2%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10701745.post-8836246343631456963</id><published>2011-11-13T21:09:00.001+01:00</published><updated>2011-11-13T21:11:46.953+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reporting'/><category scheme='http://www.blogger.com/atom/ns#' term='BusinessObjects'/><category scheme='http://www.blogger.com/atom/ns#' term='Calculation'/><category scheme='http://www.blogger.com/atom/ns#' term='Functions'/><category scheme='http://www.blogger.com/atom/ns#' term='Excel'/><category scheme='http://www.blogger.com/atom/ns#' term='Trendlines'/><category scheme='http://www.blogger.com/atom/ns#' term='Charts'/><title type='text'>Logarithmic Trendline in Business Objects</title><content type='html'>&lt;p&gt;Right, looks like I overestimated this one. After doing the previous one, Logarithmic just sounded a bit more scary. It really isn’t. In fact, it was the Microsoft site that got me a bit going. They mentioned something called “Linear Regression”. I looked up the math and it looked impressive. I had no idea, that was what I had already done in the previous article.&lt;/p&gt;  &lt;p&gt;That has been my experience so far. A series of terms is unknown to me. This makes it fun to figure out how this stuff works because I really have to figure it out for myself.&lt;/p&gt;  &lt;p&gt;Like the function in excel to calculate the Intercept point. On one site, I found this construction :&lt;/p&gt;  &lt;p&gt;=index(linest(A1:A20;B1;B20);1)&lt;/p&gt;  &lt;p&gt;Then, I found that the intercept function does exactly that. =intercept(A1:A20;B1:B20)&lt;/p&gt;  &lt;p&gt;Ah well. it’s an amazing journey – and I’m enjoying every stop along the way.But without further ado, here’s the Logarithmic Trendline.&lt;/p&gt;  &lt;p&gt;First off, the math is exactly the same as we had in the Linear trendline except that we don’t use x but ln(x). which is the natural logarithm of x.&lt;/p&gt;  &lt;p&gt;for this, I use the function =Ln(runningcount(&amp;lt;Month&amp;gt;)) in &amp;lt;Month&amp;gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-nT1HcnDhbmw/TsAjzVGPJ3I/AAAAAAAAAw4/iKgbuv798do/s1600-h/image%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-GPNcn3rZP_Y/TsAj0CoSkhI/AAAAAAAAAxA/tHHOeRe9brs/image_thumb%25255B4%25255D.png?imgmax=800" width="244" height="224" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;As with last time, I try to avoid using the month in a calculation, although it would work just the same.&lt;/p&gt;  &lt;p&gt;Next up, we calculate the average of that column. In fact, that’s the only difference with the linear trendline.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-FQREZeGy63M/TsAj0oJrXPI/AAAAAAAAAxI/VZSUsE4eUqE/s1600-h/image%25255B14%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-4XgXBJVR4o0/TsAj1lof7yI/AAAAAAAAAxQ/VGL4FXMP2k8/image_thumb%25255B17%25255D.png?imgmax=800" width="306" height="278" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;=Average(LnX in Body) in Report is the function I use for that one.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-Rvw9H3eVIgY/TsAj2UfxRTI/AAAAAAAAAxY/v7PkbggkBq0/s1600-h/image%25255B13%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-xWzGjpoFkGE/TsAj3IBQTcI/AAAAAAAAAxg/DNOP2ALyYH0/image_thumb%25255B16%25255D.png?imgmax=800" width="389" height="227" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Like with the linear trendline, we then need to make the difference between X and average X (this time with the logarithms of course) and Y- averageY.&lt;/p&gt;  &lt;p&gt;=LnX – AverageLnX in Month&lt;/p&gt;  &lt;p&gt;=Y – AverageY in Month&lt;/p&gt;  &lt;p&gt;Next, we multiply those two with eachother and add them up.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-VQ51E59vqdg/TsAj33CqhkI/AAAAAAAAAxo/16U1sF4Fo44/s1600-h/image%25255B19%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-MRwTdirOAP0/TsAj4hX6nUI/AAAAAAAAAxw/9T-06gCwHcA/image_thumb%25255B23%25255D.png?imgmax=800" width="441" height="243" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;=LnX-AverageLnX * Y-AverageY&lt;/p&gt;  &lt;p&gt;=Sum(LnX-AverageLnX*Y-AverageY in body) in report&lt;/p&gt;  &lt;p&gt;That last one is going to be the first part of our division.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-6nF8wLl2siQ/TsAj6WrfR9I/AAAAAAAAAx4/F2TVc3m0xGo/s1600-h/image%25255B24%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-hJCPkW5IEiA/TsAj7P0Zb1I/AAAAAAAAAyA/FRrU28cGhfo/image_thumb%25255B29%25255D.png?imgmax=800" width="437" height="217" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Like last time, we now need to Square X-AverageX, but this time, it has to be the Ln version. So, the formula would be:&lt;/p&gt;  &lt;p&gt;=sum(ln(x)-AverageLnX * ln(x)-AverageLnX&amp;#160; in body)in report&lt;/p&gt;  &lt;p&gt;That’s going to be the second part of our division.&lt;/p&gt;  &lt;p&gt;Next, we divide those two.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-tCOM25Ebh9Y/TsAj8UsuByI/AAAAAAAAAyI/Z8ua76aaMxg/s1600-h/image%25255B29%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-fsftXhwHctE/TsAj9dv5btI/AAAAAAAAAyQ/v4caL22z4BE/image_thumb%25255B35%25255D.png?imgmax=800" width="467" height="234" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;And we have our Direction Coëfficient.&lt;/p&gt;  &lt;p&gt;Next up, we need the interception.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-yxlqOBq6IYY/TsAj-7fKbyI/AAAAAAAAAyY/O5JO_YwOR-c/s1600-h/image%25255B34%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-a-9-a31JsQg/TsAj_x3iZnI/AAAAAAAAAyg/yivXv-qTi-g/image_thumb%25255B41%25255D.png?imgmax=800" width="450" height="233" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;For this one, we need to subtract from AverageY&lt;/p&gt;  &lt;p&gt;=&amp;lt;AverageY&amp;gt; – (&amp;lt;AverageLnX&amp;gt;*&amp;lt;LnCoëfficiënt&amp;gt;)&lt;/p&gt;  &lt;p&gt;This formula, again, is the same as Linear trendline, but we use the one where we calculate the logarithm of X.&lt;/p&gt;  &lt;p&gt;the next formula is : (Coefficient*LnX)+ InterceptLn&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-TdmxsCTD8x4/TsAkAtRawiI/AAAAAAAAAyo/3WRRzqmVCxY/s1600-h/image%25255B39%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-9aQQvLFfWtk/TsAkBk-nC3I/AAAAAAAAAyw/z1KbVpENgkA/image_thumb%25255B47%25255D.png?imgmax=800" width="396" height="360" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;And then, we convert this baby to a chart.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-Eed4LY5ijnI/TsAkCK2AQ7I/AAAAAAAAAy4/ukH2WXYOX2A/s1600-h/image%25255B50%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-3RjUTqvw5Ms/TsAkC8gv8rI/AAAAAAAAAzA/f4j-9cw7ZxQ/image_thumb%25255B60%25255D.png?imgmax=800" width="443" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;And, it has the typical Logarithm curvature &lt;img style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none" class="wlEmoticon wlEmoticon-smile" alt="Glimlach" src="http://lh5.ggpht.com/-Fzg37JDTCmU/TsAkDaBDirI/AAAAAAAAAzI/TR0pT03jG5g/wlEmoticon-smile%25255B2%25255D.png?imgmax=800" /&gt;&lt;/p&gt;  &lt;p&gt;Here is the version Excel comes up with – and again, they are identical.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-3gxfhQc3--Q/TsAkEOcE0OI/AAAAAAAAAzQ/IDVxL9nCn3c/s1600-h/image%25255B51%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-LcbFmU2OAYI/TsAkE4e12FI/AAAAAAAAAzY/sHhrKktH-Q8/image_thumb%25255B61%25255D.png?imgmax=800" width="446" height="278" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;There. A logarithmic trendline is perfectly possible in Business Objects. One less reason to convert your Business Objects Report into an Excel sheet.&lt;/p&gt;  &lt;p&gt;Next up : Exponential Trendline&lt;/p&gt;  &lt;p&gt;Have a nice day !!&lt;/p&gt;  &lt;p&gt;Binabik&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-8836246343631456963?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/8836246343631456963/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=8836246343631456963' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/8836246343631456963'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/8836246343631456963'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2011/11/logarithmic-trendline-in-business.html' title='Logarithmic Trendline in Business Objects'/><author><name>PDeRop</name><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://lh3.ggpht.com/-GPNcn3rZP_Y/TsAj0CoSkhI/AAAAAAAAAxA/tHHOeRe9brs/s72-c/image_thumb%25255B4%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10701745.post-9080543339285615370</id><published>2011-11-10T19:28:00.001+01:00</published><updated>2011-11-13T21:12:16.993+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reporting'/><category scheme='http://www.blogger.com/atom/ns#' term='BusinessObjects'/><category scheme='http://www.blogger.com/atom/ns#' term='Calculation'/><category scheme='http://www.blogger.com/atom/ns#' term='Functions'/><category scheme='http://www.blogger.com/atom/ns#' term='Excel'/><category scheme='http://www.blogger.com/atom/ns#' term='Trendlines'/><category scheme='http://www.blogger.com/atom/ns#' term='Charts'/><category scheme='http://www.blogger.com/atom/ns#' term='context operators'/><title type='text'>Trendlines in Business Objects</title><content type='html'>&lt;p&gt;This is what we would want.A trendline in Business Objects.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-6JPJ6yodZ5k/TrwXbXDMlSI/AAAAAAAAAtw/2LfTjkhy0qU/s1600-h/image%25255B65%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-tAE5-OTKabU/TrwXcXMk8wI/AAAAAAAAAt4/rs5DlgAd4nk/image_thumb%25255B73%25255D.png?imgmax=800" width="534" height="316" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;It is not possible to let Business Objects insert a trendline in a chart automatically. It’s a feature that is simply missing. This is what I have been living with until now, it simply isn’t possible, end of story. And that makes me rebel. I want to make it possible.&lt;/p&gt;  &lt;p&gt;Two problems : I’m not a real good mathematician. The math to achieve trendlines isn’t easy math either.&lt;/p&gt;  &lt;p&gt;But, good news, I figured it out – and it works. Over the next few articles, I will hand you the math to add trendlines to your charts.&lt;/p&gt;  &lt;p&gt;Our first type of trendline : A LINEAR TRENDLINE&lt;/p&gt;  &lt;p&gt;The functions Excel uses to calculate that trendline looks like this :&lt;/p&gt;  &lt;p&gt;&lt;img src="http://officeimg.vo.msecnd.net/nl-be/files/392/717/ZA006051175.gif" /&gt;&lt;/p&gt;  &lt;p&gt;and this&lt;/p&gt;  &lt;p&gt;&lt;img src="http://officeimg.vo.msecnd.net/nl-be/files/555/344/ZA006051174.gif" /&gt;&lt;/p&gt;  &lt;p&gt;That’s the sort of math that makes my head spin – but after 5 minutes, I figured out how it works and then it’s easy. In case you don’t know, the x and y with a dash over their heads are averages.&lt;/p&gt;  &lt;p&gt;The first function gets you the “direction-coëfficiënt”, the second gives you the interception point. Both are needed to calculate the trend.&lt;/p&gt;  &lt;p&gt;Step1:&lt;/p&gt;  &lt;p&gt;Calculate the average on both X and Y.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-xfTDXikXfqI/TrwXdPCMQpI/AAAAAAAAAuA/O2cHf3cPeVE/s1600-h/image%25255B3%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-u6d2u4QjiiE/TrwXed2YA3I/AAAAAAAAAuI/SKW8nUWp0-E/image_thumb%25255B4%25255D.png?imgmax=800" width="188" height="244" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In this case, I used the formula : Average(&amp;lt;Sales revenue) in Report. If you don’t know what the “in Report” stands for, you should have a look at the articles about contexts. It’s not an easy subject.&lt;/p&gt;  &lt;p&gt;With that, we have the average of Y and we also need the average of X. This might be a bit strange. Basically, you just need to find the middle of the X-axis of your chart.&lt;/p&gt;  &lt;p&gt;So, we need to count how many items there are and find the middle of that. In fact, for our 12 months the middle is not 6 but 6,5 because it’s an even number of lines. So, what I end up doing is using a runningcount function :”=RunningCount(&amp;lt;Month)” Which I then take an average on.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-8Alxf4_2B24/TrwXewNfoAI/AAAAAAAAAuQ/LyCv5nxi1NI/s1600-h/image%25255B16%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/--1yRJJ2KaN8/TrwXf_VX-5I/AAAAAAAAAuY/SsRmfiop8yg/image_thumb%25255B17%25255D.png?imgmax=800" width="348" height="324" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;the function at the end is : =Average((RunningCount(&amp;lt;Month&amp;gt;) )) In Report. which I define as variable &amp;lt;AverageX&amp;gt;&lt;/p&gt;  &lt;p&gt;This means, that at this point, we have the two numbers with the dashes over their heads. Next, we need to subtract the X and Y values from it.&lt;/p&gt;  &lt;p&gt;For X, this is : =((RunningCount(&amp;lt;Month&amp;gt;) In &amp;lt;Month&amp;gt;) - &amp;lt;AverageX&amp;gt;) In &amp;lt;Month&amp;gt; which I define as a variable X – AverageX&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-whjOjzo6xKc/TrwXgnfk3gI/AAAAAAAAAug/AuNUZA0QLR8/s1600-h/image%25255B15%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-V2kMORaKg1E/TrwXhupm5xI/AAAAAAAAAuo/_eUJ1Z31Oyw/image_thumb%25255B16%25255D.png?imgmax=800" width="426" height="277" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Next, we need Y – AverageY&lt;/p&gt;  &lt;p&gt;=(&amp;lt;Sales revenue&amp;gt; - &amp;lt;AverageY&amp;gt;) In &amp;lt;Month&amp;gt; which I define as Y – AverageY&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh4.ggpht.com/-aiaIpJGi5Fc/TrwXitktkgI/AAAAAAAAAuw/Lju04MOt8vw/s1600-h/image%25255B22%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-F5WF2yZQZxM/TrwXj6RxQEI/AAAAAAAAAu4/_ciH2Gv9Jzw/image_thumb%25255B26%25255D.png?imgmax=800" width="441" height="280" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Next, we need to multiply those : =&amp;lt;X - average X&amp;gt;*&amp;lt;Y - AverageY&amp;gt; and add them up.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-ZWyUXl1MO5k/TrwXkfoUToI/AAAAAAAAAvA/8QQCyHq7KSI/s1600-h/image%25255B27%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-M7MAtf-6wSQ/TrwXlqz6VSI/AAAAAAAAAvI/3gdZD4L6wng/image_thumb%25255B32%25255D.png?imgmax=800" width="444" height="253" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;This gives us the first part of our division, specified at the beginning of this document.&lt;/p&gt;  &lt;p&gt;For our second part, we need to Square x-divisionX and add them up.&lt;/p&gt;  &lt;p&gt;that’s :=Sum(Power(&amp;lt;X - average X&amp;gt; , 2) In&amp;#160; Body) In Report&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-GSTTnk0wjh0/TrwXnH_o3LI/AAAAAAAAAvQ/yM1PoB5uGkI/s1600-h/image%25255B32%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-lL1HK-d-1aA/TrwXoPyKzOI/AAAAAAAAAvY/WLV4jKhKUvE/image_thumb%25255B38%25255D.png?imgmax=800" width="458" height="227" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Last but not least, we need to divide them to get the direction Coëfficient.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-DOPqHZFcsIA/TrwXpDBlILI/AAAAAAAAAvg/dZU66WZy4Po/s1600-h/image%25255B40%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-NheBLSsJncI/TrwXqHd0ivI/AAAAAAAAAvo/F-48mIPa8Go/image_thumb%25255B45%25255D.png?imgmax=800" width="434" height="190" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Now that we calculated b, we can proceed to calculate&lt;/p&gt;  &lt;p&gt;&lt;img src="http://officeimg.vo.msecnd.net/nl-be/files/555/344/ZA006051174.gif" /&gt;&lt;/p&gt;  &lt;p&gt;This translates to :&lt;/p&gt;  &lt;p&gt;=&amp;lt;AverageY&amp;gt; - (&amp;lt;AverageX&amp;gt;*&amp;lt;coefficient&amp;gt;)&lt;/p&gt;  &lt;p&gt;and that’s our “Intercept” which amounts to the Intercept function in Excel.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-aJvgm6sPhTM/TrwXrpxI5zI/AAAAAAAAAvw/CpHDIFang9k/s1600-h/image%25255B45%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-b6yOftrNsJU/TrwXs79XSSI/AAAAAAAAAv4/Zcq4srfsT3Y/image_thumb%25255B51%25255D.png?imgmax=800" width="629" height="337" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Now we can calculate the values for our Trendline. The function in this case (for a linear Trendline is:&lt;/p&gt;  &lt;p&gt;y = mx + b&lt;/p&gt;  &lt;p&gt;m = direction coëfficient&lt;/p&gt;  &lt;p&gt;b = intercept&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh5.ggpht.com/-CGokxjS2KOs/TrwXtaVLppI/AAAAAAAAAv8/h38-KWWEiwU/s1600-h/image%25255B50%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh6.ggpht.com/-dmwe9J7T2vo/TrwXuginFaI/AAAAAAAAAwE/LEOASnOjc9E/image_thumb%25255B57%25255D.png?imgmax=800" width="489" height="495" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;the x-Value is our runningCount on the month (remember&lt;img style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none" class="wlEmoticon wlEmoticon-smile" alt="Glimlach" src="http://lh6.ggpht.com/-Q-uf_RPtNjg/TrwXvRy4x6I/AAAAAAAAAwM/R1-KbfEzBA8/wlEmoticon-smile%25255B2%25255D.png?imgmax=800" /&gt;)&lt;/p&gt;  &lt;p&gt;So, now we transform this to a chart :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-ZodkN6l5iko/TrwXwNs1mmI/AAAAAAAAAwY/H-5dFUcLONE/s1600-h/image%25255B55%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh4.ggpht.com/-kkG_y6Ta1pg/TrwXw4fQm3I/AAAAAAAAAwg/DC6OhkWTeAM/image_thumb%25255B63%25255D.png?imgmax=800" width="515" height="328" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I had a great time trying to figure this one out, so I hope it’s useful to anyone. Next up Logarithmic trendlines. It won’t be easy, I can promise you that &lt;img style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none" class="wlEmoticon wlEmoticon-smile" alt="Glimlach" src="http://lh6.ggpht.com/-Q-uf_RPtNjg/TrwXvRy4x6I/AAAAAAAAAwM/R1-KbfEzBA8/wlEmoticon-smile%25255B2%25255D.png?imgmax=800" /&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;ah.. last but not least, this is what that trendline looks like in Excel &lt;img style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none" class="wlEmoticon wlEmoticon-smile" alt="Glimlach" src="http://lh6.ggpht.com/-Q-uf_RPtNjg/TrwXvRy4x6I/AAAAAAAAAwM/R1-KbfEzBA8/wlEmoticon-smile%25255B2%25255D.png?imgmax=800" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh6.ggpht.com/-qhi6iJ0pUQ0/TrwXxg370aI/AAAAAAAAAwo/EtRIpq4Huc0/s1600-h/image%25255B60%25255D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh3.ggpht.com/-5Pd1Z55tj0c/TrwXy15bphI/AAAAAAAAAww/yxOrMEFD2zU/image_thumb%25255B69%25255D.png?imgmax=800" width="529" height="382" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Isn’t that – entirely – identical &lt;img style="border-bottom-style: none; border-right-style: none; border-top-style: none; border-left-style: none" class="wlEmoticon wlEmoticon-smile" alt="Glimlach" src="http://lh6.ggpht.com/-Q-uf_RPtNjg/TrwXvRy4x6I/AAAAAAAAAwM/R1-KbfEzBA8/wlEmoticon-smile%25255B2%25255D.png?imgmax=800" /&gt; Lovely.&lt;/p&gt;  &lt;p&gt;Cheers&lt;/p&gt;  &lt;p&gt;Binabik&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-9080543339285615370?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/9080543339285615370/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=9080543339285615370' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/9080543339285615370'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/9080543339285615370'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2011/11/trendlines-in-business-objects.html' title='Trendlines in Business Objects'/><author><name>PDeRop</name><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://lh6.ggpht.com/-tAE5-OTKabU/TrwXcXMk8wI/AAAAAAAAAt4/rs5DlgAd4nk/s72-c/image_thumb%25255B73%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10701745.post-1716533656637824665</id><published>2011-11-02T16:37:00.001+01:00</published><updated>2011-11-02T16:39:14.511+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reporting Services'/><category scheme='http://www.blogger.com/atom/ns#' term='Reporting'/><category scheme='http://www.blogger.com/atom/ns#' term='BusinessObjects'/><category scheme='http://www.blogger.com/atom/ns#' term='Excel'/><category scheme='http://www.blogger.com/atom/ns#' term='Charts'/><title type='text'>Logarithmic Scales in Charts</title><content type='html'>&lt;br /&gt;This is an underused feature, as far as I’m concerned. Every time when I mention these things, people’s eyes go all glazy, but it is a pretty cool feature of charts.&lt;br /&gt;First off, what are logarithms, for those of you who don’t already know.&lt;br /&gt;The logarithm (and I mean those that are based on the number 10) are the power to which number 10 needs to be raised to reach a certain number.&lt;br /&gt;So, Log(10) = 1 because 10^1 = 10 and Log(100) = 2 because 10² = 100. In fact, until the 1970’s, logarithms were used to multiply and divide. Because if you subtract two logarithms, you divide and when you add two logarithms, you do, in fact, a multiplication.&lt;br /&gt;So, it can be a way to write down large numbers.&lt;br /&gt;When used in charts, they can be very useful when you’re looking at numbers that are very far apart.&lt;br /&gt;Take for example this table:&lt;br /&gt;&lt;a href="http://lh6.ggpht.com/-_Eab5fwYi6s/TrFjwDfUkII/AAAAAAAAAtA/KWZngcUBkBA/s1600-h/clip_image002%25255B4%25255D.png"&gt;&lt;img alt="clip_image002" border="0" height="485" src="http://lh5.ggpht.com/-DdYFYSfZUYE/TrFjwqVhH9I/AAAAAAAAAtE/Ml9Rfkfx6Fk/clip_image002_thumb%25255B1%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="clip_image002" width="269" /&gt;&lt;/a&gt;&lt;br /&gt;It contains Sales revenue and Margin for a period of three years, with numbers varying from -173 to 205000. If we would put this on a decimal chart, the result would be this :&lt;br /&gt;&lt;a href="http://lh3.ggpht.com/-Od_mHDMUDUA/TrFjxLZ5LbI/AAAAAAAAAtQ/2e8133J9MZY/s1600-h/image%25255B9%25255D.png"&gt;&lt;img alt="image" border="0" height="308" src="http://lh3.ggpht.com/-E7dncn3E_LE/TrFjx1RGWOI/AAAAAAAAAtY/a00rdZKAVXE/image_thumb%25255B8%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="894" /&gt;&lt;/a&gt;&lt;br /&gt;The good months stand out quite clearly. We did extremely well in September. But as a result, the bad results are masked. They just don’t show up, because near the 0-level, the scale is too large. A Logarithmic scale solves this :&lt;br /&gt;&lt;a href="http://lh4.ggpht.com/-3QeNr3cKUt4/TrFjyuSgfMI/AAAAAAAAAtg/Ml4yQGXNgf8/s1600-h/image%25255B15%25255D.png"&gt;&lt;img alt="image" border="0" height="287" src="http://lh4.ggpht.com/-9JDlNQ00iLY/TrFjzBEm2fI/AAAAAAAAAtk/qmHXvoQqgUQ/image_thumb%25255B15%25255D.png?imgmax=800" style="background-image: none; border-bottom: 0px; border-left: 0px; border-right: 0px; border-top: 0px; display: inline; padding-left: 0px; padding-right: 0px; padding-top: 0px;" title="image" width="839" /&gt;&lt;/a&gt;&lt;br /&gt;September still stands out, but now, it is in proportion. August, which is extremely low, also shows up a lot clearer.&lt;br /&gt;So, when looking at your numbers, remember to use Logarithmic scales if you want to get a clearer picture of what your data is really trying to tell you.&lt;br /&gt;Binabik&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-1716533656637824665?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/1716533656637824665/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=1716533656637824665' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/1716533656637824665'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/1716533656637824665'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2011/11/logarithmic-scales.html' title='Logarithmic Scales in Charts'/><author><name>PDeRop</name><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://lh5.ggpht.com/-DdYFYSfZUYE/TrFjwqVhH9I/AAAAAAAAAtE/Ml9Rfkfx6Fk/s72-c/clip_image002_thumb%25255B1%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10701745.post-7111715004820492583</id><published>2011-10-30T22:33:00.001+01:00</published><updated>2011-10-30T22:33:47.103+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BusinessObjects'/><category scheme='http://www.blogger.com/atom/ns#' term='Calculation'/><category scheme='http://www.blogger.com/atom/ns#' term='Excel'/><title type='text'>Logarithmic Scales</title><content type='html'>At the moment, I'm learning a bit more about Logarithms. It's an interesting concept, especially because Business Objects has it and so far, I have never explained it, except how to switch it off.&lt;br /&gt;&lt;br /&gt;First off, I never had much math in school, so I had to find out what Logarithms are and so I did, and it's great stuff.&lt;br /&gt;&lt;br /&gt;I didn't know that Logarithms used to be the way (up to the 1970's) how people multiplied or calculated Powers. All done by using Logarithm tables.&lt;br /&gt;&lt;br /&gt;In case you are one of those people who don't know what Logarithms are. Here's the deal.&lt;br /&gt;&lt;br /&gt;In fact, there are several types of Logarithms, but the most common one is 10-based. (If you ever hear someone mention Natural Logaritms, that's another one, based on 'e').&lt;br /&gt;&lt;br /&gt;A logarithm is the power 10 has to be calculated with, in order to reach a given number.&lt;br /&gt;&lt;br /&gt;So, Log(100) = 2 because 10 to the power of 2 = 100.&lt;br /&gt;&lt;br /&gt;What this gives you is a way to reduce numbers and keep their proportions. But that was not entirely what I was after. I wanted to know how a Logarithmic scale worked.&lt;br /&gt;&lt;br /&gt;On a decimal scale, 1, 2, 3 all have the same interval: 1. So you would get a straight line.&lt;br /&gt;&lt;br /&gt;On a Logarithmic scale, the difference between 1,2 and 3 is calculated by proportion.&lt;br /&gt;&lt;br /&gt;When a number goes from 1 to 2, it has actually doubled, when it goes from 2 to 3, it has been multiplied by 1,5 from 3 to 4, it has been multiplied by 1,3. So in stead of a straight line, you would get a curve that indicates the proportional difference between numbers.&lt;br /&gt;&lt;br /&gt;This is especially useful when you're looking at numbers that are far apart. Stock market information for instance can be displayed much more accurately with Logarithmic scale charts.&lt;br /&gt;&lt;br /&gt;But I'll be looking into this a lot more in the near future.&lt;br /&gt;&lt;br /&gt;Binabik&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-7111715004820492583?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/7111715004820492583/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=7111715004820492583' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/7111715004820492583'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/7111715004820492583'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2011/10/logarithmic-scales.html' title='Logarithmic Scales'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-3977249754436736466</id><published>2011-09-06T13:39:00.001+02:00</published><updated>2011-09-06T13:40:49.690+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reporting Services'/><category scheme='http://www.blogger.com/atom/ns#' term='Reporting'/><category scheme='http://www.blogger.com/atom/ns#' term='BusinessObjects'/><category scheme='http://www.blogger.com/atom/ns#' term='Functions'/><category scheme='http://www.blogger.com/atom/ns#' term='Excel'/><title type='text'>stdDev and stdDevP turned practical</title><content type='html'>&lt;p&gt;Like many of you, I took statistics in school. And, if you’re like me, stDev sounded interesting, but you were not yet able to turn it into a practical use. Here’s how :&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;First, there’s two stdDev functions : stdDev and stdDevP.&lt;/p&gt;  &lt;p&gt;If the list of data you’re performing this function on is complete, then you use stdDevP, otherwise, when you only selected a part of the data, use stdDev.&lt;/p&gt;  &lt;p&gt;The way it is calculated is this :&lt;/p&gt;  &lt;p&gt;First, every number is subtracted from the average (mean) and squared. &lt;/p&gt;  &lt;p&gt;5,3,7 average = 5&lt;/p&gt;  &lt;p&gt;5 – 5 = (0)² = 0&lt;/p&gt;  &lt;p&gt;3 – 5 = (–2)²= 4&lt;/p&gt;  &lt;p&gt;7 – 5 = (2)² = 4&lt;/p&gt;  &lt;p&gt;Next, an average is taken and square-rooted.&lt;/p&gt;  &lt;p&gt;sqrt(8/3) = 1,632 and that’s how much, on average, those three numbers vary from eachother.&lt;/p&gt;  &lt;p&gt;So, if a number is higher than the average + stddev, it is statistically significatly higher than the average.&lt;/p&gt;  &lt;p&gt;If the number is lower than the average – stddev, it is statistically significantly lower than the average.&lt;/p&gt;  &lt;p&gt;So, now you can create charts, alerters etc using those two numbers :&lt;/p&gt;  &lt;p&gt;Above Avg+stddev = Green&lt;/p&gt;  &lt;p&gt;Between Avg+stddev and Avg-stddev = white&lt;/p&gt;  &lt;p&gt;Below Avg-stddev = Orange&lt;/p&gt;  &lt;p&gt;&lt;a href="http://lh3.ggpht.com/-JjNOaTTZMzQ/TmYGg6G1_kI/AAAAAAAAAsk/273v6AL52l8/s1600-h/image%25255B4%25255D.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px 0px 5px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://lh5.ggpht.com/-3tfzpwRmT34/TmYGhnC0p9I/AAAAAAAAAso/dAnjao-lrq8/image_thumb%25255B6%25255D.png?imgmax=800" width="221" height="343" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-3977249754436736466?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/3977249754436736466/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=3977249754436736466' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/3977249754436736466'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/3977249754436736466'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2011/09/stddev-and-stddevp-turned-practical.html' title='stdDev and stdDevP turned practical'/><author><name>PDeRop</name><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://lh5.ggpht.com/-3tfzpwRmT34/TmYGhnC0p9I/AAAAAAAAAso/dAnjao-lrq8/s72-c/image_thumb%25255B6%25255D.png?imgmax=800' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10701745.post-5327656737851493510</id><published>2011-09-06T11:05:00.001+02:00</published><updated>2011-09-06T11:07:50.435+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reporting Services'/><category scheme='http://www.blogger.com/atom/ns#' term='Reporting'/><category scheme='http://www.blogger.com/atom/ns#' term='Reporting Services Report Builder SQL Sorting Sort'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>Soundex</title><content type='html'>&lt;p&gt;At the moment, I’m brushing up a bit on my SQL knowledge. It’s paper-thin and building reports in Reporting Services does require a pretty decent bag of tricks.&lt;/p&gt;  &lt;p&gt;The latest trick I learned is Soundex.&lt;/p&gt;  &lt;p&gt;select firstname, LastName, SOUNDEX(lastname)    &lt;br /&gt;from SalesLT.Customer     &lt;br /&gt;where SOUNDEX(lastname) = SOUNDEX('Brown')&lt;/p&gt;  &lt;p&gt;There you have it, the Soundex function is able to find names in a database that sound the same.&lt;/p&gt;  &lt;p&gt;In this case, SQL will come back with names like : Brown, Brian and Bruno.&lt;/p&gt;  &lt;p&gt;Nifty.. really nifty&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-5327656737851493510?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/5327656737851493510/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=5327656737851493510' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/5327656737851493510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/5327656737851493510'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2011/09/soundex.html' title='Soundex'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-7860313835047991518</id><published>2011-07-12T09:34:00.001+02:00</published><updated>2011-09-06T11:08:59.920+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BusinessObjects'/><title type='text'>odbc</title><content type='html'>I keep forgetting this one :   &lt;br /&gt;  &lt;br /&gt;The 32-bit version of the Odbcad32.exe file is located in the %systemdrive%\Windows\SysWoW64 folder.  &lt;br /&gt;The 64-bit version of the Odbcad32.exe file is located in the %systemdrive%\Windows\System32 folder.  &lt;br /&gt;  &lt;br /&gt;Windows 7 64bit has two of these... and guess what, the 64bit one only shows SQL server.. and I need to connect to access occasionally, for which I need the other one :)  &lt;br /&gt;  &lt;br /&gt;Binabik     &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-7860313835047991518?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/7860313835047991518/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=7860313835047991518' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/7860313835047991518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/7860313835047991518'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2011/07/odbc.html' title='odbc'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-5806200531611185039</id><published>2010-10-22T13:59:00.003+02:00</published><updated>2011-09-06T11:09:53.749+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BusinessObjects'/><category scheme='http://www.blogger.com/atom/ns#' term='BUG'/><title type='text'>A hairy java bug in Business Objects XIR3</title><content type='html'>Java has always been a source of bugs in Business Objects. I still remember, with version 1.2.4, the amount of errors we received at a customer. Business Objects XI R3 seems to suffer from a nice little bug too.  &lt;br /&gt;  &lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_Rbpaje7GDrQ/TMF9mw-r79I/AAAAAAAAAn8/ptDar2OlWjo/s1600/beforeproblemjavaproblem.jpg"&gt;&lt;img style="margin: 0px 10px 10px 0px; width: 320px; float: left; height: 246px; cursor: hand" id="BLOGGER_PHOTO_ID_5530839922324008914" border="0" alt="" src="http://2.bp.blogspot.com/_Rbpaje7GDrQ/TMF9mw-r79I/AAAAAAAAAn8/ptDar2OlWjo/s320/beforeproblemjavaproblem.jpg" /&gt;&lt;/a&gt;  &lt;br clear="all" /&gt;  &lt;br /&gt;  &lt;br /&gt;If you want to solve this problem, you can go to Control Panel, Java and select this option :  &lt;br /&gt;  &lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_Rbpaje7GDrQ/TMF99qn5RWI/AAAAAAAAAoE/ulB0xiqspFk/s1600/javasolution.jpg"&gt;&lt;img style="margin: 0px 10px 10px 0px; width: 320px; float: left; height: 318px; cursor: hand" id="BLOGGER_PHOTO_ID_5530840315754792290" border="0" alt="" src="http://3.bp.blogspot.com/_Rbpaje7GDrQ/TMF99qn5RWI/AAAAAAAAAoE/ulB0xiqspFk/s320/javasolution.jpg" /&gt;&lt;/a&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-5806200531611185039?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/5806200531611185039/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=5806200531611185039' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/5806200531611185039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/5806200531611185039'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2010/10/hairy-java-bug-in-business-objects-xir3.html' title='A hairy java bug in Business Objects XIR3'/><author><name>PDeRop</name><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/_Rbpaje7GDrQ/TMF9mw-r79I/AAAAAAAAAn8/ptDar2OlWjo/s72-c/beforeproblemjavaproblem.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10701745.post-2860685003559972942</id><published>2010-08-24T16:57:00.001+02:00</published><updated>2010-08-24T17:00:50.903+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reporting'/><category scheme='http://www.blogger.com/atom/ns#' term='BusinessObjects'/><category scheme='http://www.blogger.com/atom/ns#' term='filters'/><category scheme='http://www.blogger.com/atom/ns#' term='context operators'/><title type='text'>Hide Block feature in Business Objects</title><content type='html'>&lt;p&gt;A very obscure feature in Business Objects is the &amp;quot;Hide Object&amp;quot; Checkbox. As far as I know, there is no course, where you show that particular feature. Here's how it works. &lt;/p&gt;  &lt;p&gt;Or maybe I should start by saying : don't just switch this feature on without filling in the condition window that's right next to it. If you do, the object, on which you check it, will just disappear, which is a bit daft. In case you did that, go to View&amp;gt;Structure, to locate the item, on which you activated it and switch it back off. &lt;/p&gt;  &lt;p&gt;This feature only works well, when you also enter a condition. That condition should return a boolean. &lt;/p&gt;  &lt;p&gt;Double-click on the block, on which you wish to activate the feature, and go to “Appearance”. Check the checkbox and enter a function, under which condition you wish to hide the block. e.g. : =Sum(&amp;lt;Sales revenue&amp;gt;) &amp;lt; 5000000&lt;/p&gt;  &lt;p&gt;Notice, this function will return a true or false. It can be necessary to use contexts to calculate the right number.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://users.skynet.be/binabik/blog/HideBlockfeatureinBusinessObjects_EE76/hideblock_3.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="hideblock" border="0" alt="hideblock" src="http://users.skynet.be/binabik/blog/HideBlockfeatureinBusinessObjects_EE76/hideblock_thumb_3.jpg" width="422" height="312" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The result is that the sections where I wish to see the table, will show the table, the others will show up collapsed, because there’s no content in them. Nice feature – probably underused.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Binabik&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-2860685003559972942?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/2860685003559972942/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=2860685003559972942' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/2860685003559972942'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/2860685003559972942'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2010/08/hide-block-feature-in-business-objects.html' title='Hide Block feature in Business Objects'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-6460424869614614486</id><published>2010-05-27T15:21:00.001+02:00</published><updated>2010-05-27T15:25:39.973+02:00</updated><title type='text'>Signing Powershell scripts</title><content type='html'>&lt;p&gt;Phew. I did it. Thank you Bruce Payette for the great book you wrote.&lt;/p&gt;  &lt;p&gt;If you want to read the book &lt;a href="http://www.amazon.com/Windows-Powershell-Action-Bruce-Payette/dp/1932394907"&gt;it’s on Amazon.com&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Three reasons why you would want to get it.&lt;/p&gt;  &lt;p&gt;1) It’s very well written (which is rare among books about programming)&lt;/p&gt;  &lt;p&gt;2) It’s a good and (at times) a funny read. (which is next to impossible to find)&lt;/p&gt;  &lt;p&gt;3) This book is written by the person who helped design Powershell.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;But let me get to the code-signing bit :&lt;/p&gt;  &lt;p&gt;You’ll need the Windows SDK, because it contains &lt;a href="http://msdn.microsoft.com/en-us/library/aa386968(VS.85).aspx"&gt;‘makecert.exe’&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I just copied the makecert file in my Powershell directory to make the commands a bit shorter.&lt;/p&gt;  &lt;p&gt;If you’re under Windows 7, make sure you start Powershell ‘as Administrator’. Otherwise, some commands will fail.&lt;/p&gt;  &lt;p&gt;in your Powershell window, type : &lt;/p&gt;  &lt;p&gt;./makecert –n “CN=PowerShell Local Certificate Root” –a sha1 –eku 1.3.6.1.5.5.7.3.3 –r –sv root.pvk root.cer –ss Root –sr localMachine&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;This will pop up a dialog to enter passwords. And we have just created a Local Certificate Authority.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Next, we ened to make a signing certificate :&lt;/p&gt;  &lt;p&gt;./makecert –pe –n “CN=¨PowerShell User” –ss MY –a sha1 –eku 1.3.6.1.5.5.7.3.3 –iv root.pvk –ic root.cer&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;great. that’s that. Now, all we need to do is sign our scripts with that key. Here’s how :&lt;/p&gt;  &lt;p&gt;First change the Execution policy to allsigned :&lt;/p&gt;  &lt;p&gt;set-executionpolicy AllSigned&lt;/p&gt;  &lt;p&gt;Next, we load our certificate into a variable :&lt;/p&gt;  &lt;p&gt;$cert = @(Get-ChildItem cert:\CurrentUser\My -Codesigning)[0]&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;then we sign the file :&lt;/p&gt;  &lt;p&gt;Set-authenticodeSignature test-script.ps1 $cert&lt;/p&gt;  &lt;p&gt;you should be able to execute your script now.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Binabik&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-6460424869614614486?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/6460424869614614486/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=6460424869614614486' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/6460424869614614486'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/6460424869614614486'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2010/05/signing-powershell-scripts.html' title='Signing Powershell scripts'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-7406550639034500914</id><published>2010-03-09T09:38:00.001+01:00</published><updated>2010-03-09T09:38:41.343+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reporting'/><category scheme='http://www.blogger.com/atom/ns#' term='BusinessObjects'/><category scheme='http://www.blogger.com/atom/ns#' term='Performance'/><title type='text'>Being careful in Business Objects (DeskI)</title><content type='html'>&lt;p&gt;When you’re running a query, one of the things you should consider is that you might forget a filter and get way too much data from the database.&lt;/p&gt;  &lt;p&gt;Secondly, that query might run for multiple hours and you don’t have multiple hours because you want to get to the part where you layout the report before running the query and returning all the data.&lt;/p&gt;  &lt;p&gt;Here’s a few things you can do :&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;1) Create the query, save the query but don’t run it yet.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://users.skynet.be/binabik/blog/BeingcarefulinBusinessObjectsDeskI_8798/saveandclosebutton.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="saveandclosebutton" border="0" alt="saveandclosebutton" src="http://users.skynet.be/binabik/blog/BeingcarefulinBusinessObjectsDeskI_8798/saveandclosebutton_thumb.jpg" width="419" height="227" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;In the query panel, instead of blindly hitting Run, Hit Save and Close. This will save the query, but you won’t get data. Next, you can start modifying the layout of the report (use View&amp;gt;Structure) and when you’re ready, refresh the report to get your data (e.g. before leaving the office)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;2) Limit the amount of data that can be returned by the query&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;If you don’t know in advance, how much data you’re going to get, maybe it’s a good idea, at first run, to limit the returned data to the first 10 or 100 lines, in stead of getting the lot. Especially, if you’re in doubt which kind of data will be returned by each of the fields.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://users.skynet.be/binabik/blog/BeingcarefulinBusinessObjectsDeskI_8798/optionsbuttononquerypanel.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="optionsbuttononquerypanel" border="0" alt="optionsbuttononquerypanel" src="http://users.skynet.be/binabik/blog/BeingcarefulinBusinessObjectsDeskI_8798/optionsbuttononquerypanel_thumb.jpg" width="418" height="227" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;When you click the &lt;strong&gt;options&lt;/strong&gt; button, you get to choose how many lines you would like to get from the database:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://users.skynet.be/binabik/blog/BeingcarefulinBusinessObjectsDeskI_8798/image.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://users.skynet.be/binabik/blog/BeingcarefulinBusinessObjectsDeskI_8798/image_thumb.png" width="316" height="166" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://users.skynet.be/binabik/blog/BeingcarefulinBusinessObjectsDeskI_8798/image_3.png"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="image" border="0" alt="image" src="http://users.skynet.be/binabik/blog/BeingcarefulinBusinessObjectsDeskI_8798/image_thumb_3.png" width="354" height="84" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;this will of course return ‘Partial results’.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;There you go folks – for the sake of prudence, don’t get all your data at once.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Binabik&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-7406550639034500914?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/7406550639034500914/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=7406550639034500914' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/7406550639034500914'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/7406550639034500914'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2010/03/being-careful-in-business-objects-deski.html' title='Being careful in Business Objects (DeskI)'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-4595449473059718748</id><published>2010-03-03T09:46:00.001+01:00</published><updated>2010-03-03T15:49:11.806+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reporting Services'/><category scheme='http://www.blogger.com/atom/ns#' term='Reporting'/><category scheme='http://www.blogger.com/atom/ns#' term='Document Map'/><title type='text'>A Document Map in Reporting Services</title><content type='html'>&lt;p&gt;This topic deals with Report Builder 2.0 – it’s also possible to do this through Visual Studio, but that will have to wait for later.&lt;/p&gt;  &lt;p&gt;Instead of setting all sorts of filters, you can choose to get all the data from the server and make it more accessible by creating a table of contents for it.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://users.skynet.be/binabik/blog/ADocumentMapinReportingServices_DBAB/toc_RS_Long_report.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; margin-left: 0px; border-left-width: 0px; margin-right: 0px" title="toc_RS_Long_report" border="0" alt="toc_RS_Long_report" align="left" src="http://users.skynet.be/binabik/blog/ADocumentMapinReportingServices_DBAB/toc_RS_Long_report_thumb.gif" width="159" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;So, when you click the table of contents in the left column, you jump to that particular part of the report.&lt;/p&gt;  &lt;p&gt;That’s what this particular article is about. How do you create a ‘Document Map’.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;First, you need to insert a ‘list’&lt;/p&gt;  &lt;p&gt;&lt;a href="http://users.skynet.be/binabik/blog/ADocumentMapinReportingServices_DBAB/documentmap_InsertList.gif"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="documentmap_InsertList" border="0" alt="documentmap_InsertList" src="http://users.skynet.be/binabik/blog/ADocumentMapinReportingServices_DBAB/documentmap_InsertList_thumb.gif" width="392" height="259" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Next, rightclick the left bar of the list, change the tablix properties to make the list refer to the right dataset.&lt;/p&gt;  &lt;p&gt;Subsequently, rightclick the left bar and change the group-properties&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://users.skynet.be/binabik/blog/ADocumentMapinReportingServices_DBAB/documentmap_SetGroupProperties.gif"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="documentmap_SetGroupProperties" border="0" alt="documentmap_SetGroupProperties" src="http://users.skynet.be/binabik/blog/ADocumentMapinReportingServices_DBAB/documentmap_SetGroupProperties_thumb.gif" width="244" height="126" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;In those group properties, on the advanced-tab, choose, which field you would like to have as a document map.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://users.skynet.be/binabik/blog/ADocumentMapinReportingServices_DBAB/documentmap_setfield.gif"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="documentmap_setfield" border="0" alt="documentmap_setfield" src="http://users.skynet.be/binabik/blog/ADocumentMapinReportingServices_DBAB/documentmap_setfield_thumb.gif" width="244" height="165" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Drag the field in the list and drag any other items inside that list. Tables or Other lists will do fine.&lt;/p&gt;  &lt;p&gt;Nested lists can also have nested document maps – works great.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Enjoy &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Binabik&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-4595449473059718748?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/4595449473059718748/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=4595449473059718748' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/4595449473059718748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/4595449473059718748'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2010/03/document-map-in-reporting-services.html' title='A Document Map in Reporting Services'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-1953930597395446993</id><published>2010-02-23T12:47:00.001+01:00</published><updated>2010-02-23T12:47:35.983+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reporting'/><category scheme='http://www.blogger.com/atom/ns#' term='BusinessObjects'/><category scheme='http://www.blogger.com/atom/ns#' term='Layout'/><category scheme='http://www.blogger.com/atom/ns#' term='position'/><title type='text'>Relative positioning in Business Objects</title><content type='html'>&lt;p&gt;When you’re building reports in Business Objects, sooner or later, you’re going to have a table where the length not fixed. So, one day, you have 10 lines, the next day, you have 50 lines. Tables that are located behind them are then suddely overrun by that table.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://users.skynet.be/binabik/blog/RelativepositioninginBusinessObjects_B3E0/onetableaboveother.gif"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="onetableaboveother" border="0" alt="onetableaboveother" align="left" src="http://users.skynet.be/binabik/blog/RelativepositioninginBusinessObjects_B3E0/onetableaboveother_thumb.gif" width="161" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;a href="http://users.skynet.be/binabik/blog/RelativepositioninginBusinessObjects_B3E0/onetableaboveother_2.gif"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="onetableaboveother_2" border="0" alt="onetableaboveother_2" src="http://users.skynet.be/binabik/blog/RelativepositioninginBusinessObjects_B3E0/onetableaboveother_2_thumb.gif" width="163" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;The properties of the table allow you to choose how tables behave.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://users.skynet.be/binabik/blog/RelativepositioninginBusinessObjects_B3E0/verticalpositionexplained.gif"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="verticalpositionexplained" border="0" alt="verticalpositionexplained" src="http://users.skynet.be/binabik/blog/RelativepositioninginBusinessObjects_B3E0/verticalpositionexplained_thumb.gif" width="359" height="292" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;(the name of that table can be configured also in ‘Table format’&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Cheers,&lt;/p&gt;  &lt;p&gt;Binabik&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-1953930597395446993?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/1953930597395446993/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=1953930597395446993' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/1953930597395446993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/1953930597395446993'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2010/02/relative-positioning-in-business.html' title='Relative positioning in Business Objects'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-5070066835932105165</id><published>2010-02-18T11:50:00.001+01:00</published><updated>2010-02-18T11:53:17.163+01:00</updated><title type='text'>Day of the week of first day current year</title><content type='html'>&lt;p&gt;I noticed on Google analytics that someone was looking to calculate in Business Objects, what day, the first day of the year was.&lt;/p&gt;  &lt;p&gt;Here's how :&lt;/p&gt;  &lt;p&gt;=DayName(ToDate(Year(CurrentDate()) &amp;amp; &amp;quot;/1/1&amp;quot; , &amp;quot;yyyy/mm/dd&amp;quot;) )&lt;/p&gt;  &lt;p&gt;If you want the number of the day&lt;/p&gt;  &lt;p&gt;=DayNumberOfWeek(ToDate(Year(CurrentDate()) &amp;amp; &amp;quot;/1/1&amp;quot; , &amp;quot;yyyy/mm/dd&amp;quot;) )&lt;/p&gt;  &lt;p&gt;Yet someone else was looking for an equivalent of Instring in Business Objects. Look no further.. it’s Pos()&lt;/p&gt;  &lt;p&gt;pos(“abcdefg”, “g”) = 7, so, g is located in the 7th position.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Easy as pie&lt;/p&gt;  &lt;p&gt;Binabik&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-5070066835932105165?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/5070066835932105165/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=5070066835932105165' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/5070066835932105165'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/5070066835932105165'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2010/02/day-of-week-of-first-day-current-year.html' title='Day of the week of first day current year'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-2594725794753829250</id><published>2010-02-18T11:01:00.001+01:00</published><updated>2010-02-18T11:01:02.220+01:00</updated><title type='text'>Showing the average on a chart in Business Objects</title><content type='html'>&lt;p&gt;In my latest courses, lots of folks had questions about the way Contexts work. So, here’s another way, contexts are used :&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;You want to show the average of something on a chart, as a horizontal line. That means, you will have to create a column with that average in a table, where the same number is shown in the entire column.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;table border="1" cellspacing="0" cellpadding="2" width="300"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="100"&gt;&lt;strong&gt;Month&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;strong&gt;N° visitors&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;strong&gt;Average&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;1&lt;/td&gt;        &lt;td valign="top" width="100"&gt;25&lt;/td&gt;        &lt;td valign="top" width="100"&gt;25&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;2&lt;/td&gt;        &lt;td valign="top" width="100"&gt;100&lt;/td&gt;        &lt;td valign="top" width="100"&gt;100&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;3&lt;/td&gt;        &lt;td valign="top" width="100"&gt;72&lt;/td&gt;        &lt;td valign="top" width="100"&gt;72&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;4&lt;/td&gt;        &lt;td valign="top" width="100"&gt;97&lt;/td&gt;        &lt;td valign="top" width="100"&gt;97&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;5&lt;/td&gt;        &lt;td valign="top" width="100"&gt;93&lt;/td&gt;        &lt;td valign="top" width="100"&gt;93&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;6&lt;/td&gt;        &lt;td valign="top" width="100"&gt;103&lt;/td&gt;        &lt;td valign="top" width="100"&gt;103&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;7&lt;/td&gt;        &lt;td valign="top" width="100"&gt;111&lt;/td&gt;        &lt;td valign="top" width="100"&gt;111&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;8&lt;/td&gt;        &lt;td valign="top" width="100"&gt;23&lt;/td&gt;        &lt;td valign="top" width="100"&gt;23&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;9&lt;/td&gt;        &lt;td valign="top" width="100"&gt;87&lt;/td&gt;        &lt;td valign="top" width="100"&gt;87&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;10&lt;/td&gt;        &lt;td valign="top" width="100"&gt;98&lt;/td&gt;        &lt;td valign="top" width="100"&gt;98&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;11&lt;/td&gt;        &lt;td valign="top" width="100"&gt;39&lt;/td&gt;        &lt;td valign="top" width="100"&gt;39&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;12&lt;/td&gt;        &lt;td valign="top" width="100"&gt;111&lt;/td&gt;        &lt;td valign="top" width="100"&gt;111&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;&lt;strong&gt;Average&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;strong&gt;79,9&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="100"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;It’s pretty clear, the formula =Average(&amp;lt;N° visitors&amp;gt;) won’t do the trick. It just returns the number itself, because it operates in the context of the month. To solve this, we can use 2 formulas :&lt;/p&gt;  &lt;p&gt;Average(&amp;lt;N° visitors&amp;gt;) in Report&lt;/p&gt;  &lt;p&gt;Average(&amp;lt;N° visitors&amp;gt;) forall(&amp;lt;Month&amp;gt;)&lt;/p&gt;  &lt;p&gt;The first one is absolute, so it will always return the same number – no matter in which table you put it. The second one is relative – it depends on the dimensions already in the table.&lt;/p&gt;  &lt;p&gt;One way to do this is by choosing : Data&amp;gt; Define as variable and choosing Evaluate the formula in its context.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://users.skynet.be/binabik/blog/ShowingtheaverageonachartinBusinessObjec_9AD8/define_as_variable.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="define_as_variable" border="0" alt="define_as_variable" src="http://users.skynet.be/binabik/blog/ShowingtheaverageonachartinBusinessObjec_9AD8/define_as_variable_thumb.jpg" width="396" height="239" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Both of the above will return :&lt;/p&gt;  &lt;table border="1" cellspacing="0" cellpadding="2" width="302"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="100"&gt;&lt;strong&gt;Month&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;strong&gt;N° visitors&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;strong&gt;Average&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;1&lt;/td&gt;        &lt;td valign="top" width="100"&gt;25&lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;strong&gt;79,9&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;2&lt;/td&gt;        &lt;td valign="top" width="100"&gt;100&lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;strong&gt;79,9&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;3&lt;/td&gt;        &lt;td valign="top" width="100"&gt;72&lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;strong&gt;79,9&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;4&lt;/td&gt;        &lt;td valign="top" width="100"&gt;97&lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;strong&gt;79,9&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;5&lt;/td&gt;        &lt;td valign="top" width="100"&gt;93&lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;strong&gt;79,9&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;6&lt;/td&gt;        &lt;td valign="top" width="100"&gt;103&lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;strong&gt;79,9&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;7&lt;/td&gt;        &lt;td valign="top" width="100"&gt;111&lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;strong&gt;79,9&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;8&lt;/td&gt;        &lt;td valign="top" width="100"&gt;23&lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;strong&gt;79,9&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;9&lt;/td&gt;        &lt;td valign="top" width="100"&gt;87&lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;strong&gt;79,9&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;10&lt;/td&gt;        &lt;td valign="top" width="100"&gt;98&lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;strong&gt;79,9&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;11&lt;/td&gt;        &lt;td valign="top" width="100"&gt;39&lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;strong&gt;79,9&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;12&lt;/td&gt;        &lt;td valign="top" width="100"&gt;111&lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;strong&gt;79,9&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="100"&gt;&lt;strong&gt;Average&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="100"&gt;&lt;strong&gt;79,9&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="100"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Now, we turn this into a chart :&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://users.skynet.be/binabik/blog/ShowingtheaverageonachartinBusinessObjec_9AD8/chart_average.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="chart_average" border="0" alt="chart_average" src="http://users.skynet.be/binabik/blog/ShowingtheaverageonachartinBusinessObjec_9AD8/chart_average_thumb.jpg" width="384" height="327" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Not exactly what we need, but, getting there.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Rightclick the chart and choose “Format Chart”&lt;/p&gt;  &lt;p&gt;On the Series tab, click “Add” and make it a line chart, next, you drag the average from the other group to the new group.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://users.skynet.be/binabik/blog/ShowingtheaverageonachartinBusinessObjec_9AD8/averageonlinechart.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="averageonlinechart" border="0" alt="averageonlinechart" src="http://users.skynet.be/binabik/blog/ShowingtheaverageonachartinBusinessObjec_9AD8/averageonlinechart_thumb.jpg" width="402" height="317" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;And we get :&lt;/p&gt;  &lt;p&gt;&lt;a href="http://users.skynet.be/binabik/blog/ShowingtheaverageonachartinBusinessObjec_9AD8/correctaverageonchart.jpg"&gt;&lt;img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="correctaverageonchart" border="0" alt="correctaverageonchart" src="http://users.skynet.be/binabik/blog/ShowingtheaverageonachartinBusinessObjec_9AD8/correctaverageonchart_thumb.jpg" width="394" height="321" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Cheers folks&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Binabik&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-2594725794753829250?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/2594725794753829250/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=2594725794753829250' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/2594725794753829250'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/2594725794753829250'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2010/02/showing-average-on-chart-in-business.html' title='Showing the average on a chart in Business Objects'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-8733941058513355313</id><published>2010-02-16T23:26:00.010+01:00</published><updated>2010-03-05T09:58:34.829+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BusinessObjects'/><category scheme='http://www.blogger.com/atom/ns#' term='Calculation'/><title type='text'>Calculating average in Business Objects</title><content type='html'>&lt;p&gt;At a customer, someone asked this particular question : In a crosstab, if certain lines return empties, how do you calculate average while evaluating the empties as 0 ?   &lt;br /&gt;    &lt;br /&gt;As it is, when you calculate the average with the regular function, BO will not take into account the missing information.    &lt;br /&gt;&lt;/p&gt;  &lt;table border="1" cellspacing="0" cellpadding="2" width="400"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="101"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="99"&gt;&lt;strong&gt;2007&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="99"&gt;&lt;strong&gt;2008&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="99"&gt;&lt;strong&gt;2009&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="102"&gt;Dog&lt;/td&gt;        &lt;td valign="top" width="98"&gt;10&lt;/td&gt;        &lt;td valign="top" width="98"&gt;10&lt;/td&gt;        &lt;td valign="top" width="98"&gt;10&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="103"&gt;Cat&lt;/td&gt;        &lt;td valign="top" width="98"&gt;10&lt;/td&gt;        &lt;td valign="top" width="98"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="98"&gt;10&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="103"&gt;Horse&lt;/td&gt;        &lt;td valign="top" width="98"&gt;10&lt;/td&gt;        &lt;td valign="top" width="98"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="98"&gt;&amp;#160;&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="103"&gt;Pony&lt;/td&gt;        &lt;td valign="top" width="98"&gt;10&lt;/td&gt;        &lt;td valign="top" width="98"&gt;&amp;#160;&lt;/td&gt;        &lt;td valign="top" width="98"&gt;10&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top" width="103"&gt;&lt;strong&gt;Average&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="98"&gt;&lt;strong&gt;10&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="98"&gt;&lt;strong&gt;10&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="99"&gt;&lt;strong&gt;10&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;   &lt;br /&gt;    &lt;br /&gt;where it should be    &lt;br /&gt;&lt;/p&gt;  &lt;table border="1" cellspacing="0" cellpadding="2" width="400"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="101"&gt;&lt;strong&gt;Average&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="99"&gt;&lt;strong&gt;10&lt;/strong&gt;(40/4)&lt;/td&gt;        &lt;td valign="top" width="99"&gt;&lt;strong&gt;2,5&lt;/strong&gt;(10/4)&lt;/td&gt;        &lt;td valign="top" width="99"&gt;&lt;strong&gt;7,5 &lt;/strong&gt;(30/4)&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;   &lt;br /&gt;    &lt;br /&gt;The solution to this problem is : contexts.    &lt;br /&gt;    &lt;br /&gt;First, we need to count the number of animals     &lt;br /&gt;    &lt;br /&gt;&lt;/p&gt;  &lt;table border="1" cellspacing="0" cellpadding="2" width="400"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="101"&gt;&lt;strong&gt;Count&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="99"&gt;&lt;strong&gt;4&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="99"&gt;&lt;strong&gt;1&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="99"&gt;&lt;strong&gt;3&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;   &lt;br /&gt;    &lt;br /&gt;performing a regular count will not give us the right result.    &lt;br /&gt;    &lt;br /&gt;Count(&amp;lt;Animal&amp;gt;) will return a different number for each column. So, we force the count with &amp;quot;in&amp;quot; Count(&amp;lt;Animal&amp;gt;) in Report -- that will return 4 in each column.    &lt;br /&gt;&lt;/p&gt;  &lt;table border="1" cellspacing="0" cellpadding="2" width="400"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="101"&gt;&lt;strong&gt;Count&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="99"&gt;&lt;strong&gt;4&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="99"&gt;&lt;strong&gt;4&lt;/strong&gt;&lt;/td&gt;        &lt;td valign="top" width="99"&gt;&lt;strong&gt;4&lt;/strong&gt;&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;So, now we have our formula :    &lt;br /&gt;    &lt;br /&gt;Sum(&amp;lt;Number of Animals&amp;gt;)/Count(&amp;lt;Animal&amp;gt;) in Report    &lt;br /&gt;    &lt;br /&gt;Cheers folks    &lt;br /&gt;    &lt;br /&gt;Binabik&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-8733941058513355313?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/8733941058513355313/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=8733941058513355313' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/8733941058513355313'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/8733941058513355313'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2010/02/calculating-average-in-business-objects.html' title='Calculating average in Business Objects'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-1756351809492709803</id><published>2010-02-16T12:39:00.005+01:00</published><updated>2010-02-16T12:51:41.477+01:00</updated><title type='text'>three things I would like in RS</title><content type='html'>1) Sorting Picklists&lt;br /&gt;&lt;br /&gt;On RS, when you build a picklist, you select your field and the values don't get sorted, and there is no option to do so. I found a workaround, but it's not very clean.&lt;br /&gt;&lt;br /&gt;2) an option to remove the item(Select all) in multivalue parameters &lt;br /&gt;&lt;br /&gt;When you set a picklist to multi-value, RS automatically adds the option "Select all"&lt;br /&gt;&lt;br /&gt;Since a query is very often limited to 999 inlist values, you run into trouble pretty fast, and it's a big performance issue, if people just select the lot.&lt;br /&gt;&lt;br /&gt;Would be nice to have this option.&lt;br /&gt;&lt;br /&gt;3) some way to pre-test scripting.. the way it is now, scripting is very under-developped. In fact, it's just a window where you can enter text.. period -- wouldn't mind some intellisense :) .&lt;br /&gt;&lt;br /&gt;Binabik&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-1756351809492709803?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/1756351809492709803/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=1756351809492709803' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/1756351809492709803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/1756351809492709803'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2010/02/three-things-i-would-like-in-rs.html' title='three things I would like in RS'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-9095534849946838764</id><published>2010-02-16T12:36:00.004+01:00</published><updated>2010-02-16T12:39:00.908+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reporting Services Report Builder SQL Sorting Sort'/><title type='text'>Sorting picklists in RS Reportbuilder 2.0</title><content type='html'>To sort a picklist in reportbuilder, when working with a model, you can use the following workaround :&lt;br /&gt;&lt;br /&gt;* add the field twice&lt;br /&gt;&lt;br /&gt;This is pretty daft : you can't just sort the list. In t-SQL, it would be sooo easy, but on a model, your hands are tied. Once you add that same field a second time to a query : disco, it's sorted.&lt;br /&gt;&lt;br /&gt;Took me a while to figure out that it was actually the addition of a field a second time that sorted the thing.. and not any function that was applied to the field.&lt;br /&gt;&lt;br /&gt;Gotta love RS.&lt;br /&gt;&lt;br /&gt;Binabik&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-9095534849946838764?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/9095534849946838764/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=9095534849946838764' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/9095534849946838764'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/9095534849946838764'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2010/02/sorting-picklists-in-rs-reportbuilder.html' title='Sorting picklists in RS Reportbuilder 2.0'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-8798136886533435000</id><published>2010-01-22T16:06:00.005+01:00</published><updated>2010-03-05T09:58:02.534+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reporting Services'/><category scheme='http://www.blogger.com/atom/ns#' term='VBScript'/><title type='text'>List field and paths from an RDL file</title><content type='html'>For a customer, I wrote this particular script. On a report based on a &lt;strong&gt;Model&lt;/strong&gt;, it generates an Excel file listing all the fields and paths that have been used in the RDL file. All you have to do is store the rdl files in a directory somewhere on your c-drive, put the below script in a textfile, alter the path and save the file with a VBS extention :&lt;br /&gt;&lt;br /&gt;==========================================================================&lt;br /&gt;&lt;br /&gt;targetfolder = "C:\foldername\"&lt;br /&gt;set fso = createobject("scripting.filesystemobject")&lt;br /&gt;set objfolder = fso.getfolder(targetfolder)&lt;br /&gt;set fc = objfolder.files&lt;br /&gt;set objexcel = createobject("Excel.Application")&lt;br /&gt;objExcel.visible = true&lt;br /&gt;objExcel.WorkBooks.Add&lt;br /&gt;ObjExcel.Cells(1,1).Value = "Fieldname"&lt;br /&gt;ObjExcel.Cells(1,2).Value = "Path"&lt;br /&gt;ObjExcel.Cells(1,3).Value = "Table"&lt;br /&gt;ObjExcel.Cells(1,4).Value = "Report"&lt;br /&gt;z = 2&lt;br /&gt;for each x in fc&lt;br /&gt;set file = fso.opentextfile(targetfolder &amp; cstr(x.name))&lt;br /&gt;dim strLijn&lt;br /&gt;do until instr(strLijn, "/Hierarchies") &gt; 1&lt;br /&gt; strLijn = file.readline&lt;br /&gt; if instr(strLijn, "&amp;lt;Grouping Name=") &gt; 1 then&lt;br /&gt;&lt;br /&gt;  objExcel.Cells(z,1).Value = mid(strLijn, 28, len(strLijn) - 32)&lt;br /&gt;&lt;br /&gt; do until instr(strLijn , "/Path") &gt; 1&lt;br /&gt;   strLijn = file.readline&lt;br /&gt;   if instr(strLijn, "!--") &gt; 1 then&lt;br /&gt;    strpad = strpad &amp; "\" &amp; mid(strLijn, instr(strLijn, "&amp;")+7, len(strLijn) - (instr(strLijn, "&amp;")+7) - 5 )&lt;br /&gt;    strlocatie = mid(strLijn, instr(strLijn, "&amp;")+7, len(strLijn) - (instr(strLijn, "&amp;")+7) - 5 )&lt;br /&gt;    &lt;br /&gt;   end if&lt;br /&gt; loop&lt;br /&gt;  objExcel.Cells(z,2).Value = strpad&lt;br /&gt;  objExcel.Cells(z,3).Value = strlocatie&lt;br /&gt;  objExcel.Cells(z,4).Value = x.name&lt;br /&gt;  z = z +1&lt;br /&gt;  strpad = ""&lt;br /&gt; end if&lt;br /&gt;loop&lt;br /&gt;strLijn = ""&lt;br /&gt;next&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;==========================================================================&lt;br /&gt;&lt;br /&gt;use with caution :)&lt;br /&gt;&lt;br /&gt;Binabik&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-8798136886533435000?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/8798136886533435000/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=8798136886533435000' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/8798136886533435000'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/8798136886533435000'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2010/01/list-field-and-paths-from-rdl-file.html' title='List field and paths from an RDL file'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-2391462408618521798</id><published>2010-01-22T15:53:00.005+01:00</published><updated>2010-03-02T10:06:42.839+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reporting Services'/><category scheme='http://www.blogger.com/atom/ns#' term='Reporting'/><category scheme='http://www.blogger.com/atom/ns#' term='LOV'/><category scheme='http://www.blogger.com/atom/ns#' term='filters'/><category scheme='http://www.blogger.com/atom/ns#' term='Picklist'/><category scheme='http://www.blogger.com/atom/ns#' term='List of Values'/><title type='text'>Reporting services Picklists based on models</title><content type='html'>To force a picklist to have a fixed length :  &lt;br /&gt;  &lt;br /&gt;1) In the picklist-query, add the field a second time (you'll use this one as label on your parameter) -- change the code for that field by right-clicking it and changing the formula (on the query panel)  &lt;br /&gt;  &lt;br /&gt;for the example, I'll use a string-field that should be 7 characters long and should get leading zeroes -- a specific case I used this for.  &lt;br /&gt;  &lt;br /&gt;2) change the formula to :   &lt;br /&gt;left(&amp;quot;0000000&amp;quot;; 7 - length([nameofthefield])) &amp;amp; [nameofthefield]  &lt;br /&gt;if the field is numeric :  &lt;br /&gt;  &lt;br /&gt;left(&amp;quot;0000000&amp;quot;; 7 - length(text([nameofthefield]))) &amp;amp; text([nameofthefield])  &lt;br /&gt;  &lt;br /&gt;That also sorts the picklist, but if you simply want to sort, just add the same field a second time.  &lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;Binabik    &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-2391462408618521798?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/2391462408618521798/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=2391462408618521798' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/2391462408618521798'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/2391462408618521798'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2010/01/reporting-services-picklists-based-on.html' title='Reporting services Picklists based on models'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-6106184014550631030</id><published>2009-08-20T08:58:00.001+02:00</published><updated>2010-03-02T09:54:49.488+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reporting Services'/><category scheme='http://www.blogger.com/atom/ns#' term='Reporting'/><category scheme='http://www.blogger.com/atom/ns#' term='filters'/><category scheme='http://www.blogger.com/atom/ns#' term='Null'/><title type='text'>Default values in SQL Reporting</title><content type='html'>&lt;span xmlns="xmlns"&gt;   &lt;p&gt;At the moment, I'm building some reports in SQL Reporting Services. A nice task, as always, and it does provide for some unexpected challenges once in a while.     &lt;br /&gt;&lt;/p&gt;    &lt;p&gt;Here's what happens in Reporting services when you use parameters – in fact, I had this particular issue quite a few times – I only just found how to get around it.     &lt;br /&gt;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Problem description: &lt;/strong&gt;When using a multivalue report parameter with all values selected by default, in fact, none is selected.      &lt;br /&gt;&lt;/p&gt;    &lt;p&gt;&lt;strong&gt;Solution: &lt;/strong&gt;add the filter IS NOT NULL      &lt;br /&gt;&lt;/p&gt;    &lt;p&gt;I can't begin to explain how hard I hit my forehead with the palm of my hand when finding this one out &lt;span style="font-family: wingdings"&gt;J&lt;/span&gt;      &lt;br /&gt;&lt;/p&gt;    &lt;p&gt;Binabik     &lt;br /&gt;&lt;/p&gt;    &lt;p&gt;     &lt;br /&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;     &lt;br /&gt;&amp;#160;&lt;/p&gt; &lt;/span&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-6106184014550631030?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/6106184014550631030/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=6106184014550631030' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/6106184014550631030'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/6106184014550631030'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2009/08/default-values-in-sql-reporting.html' title='Default values in SQL Reporting'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-2473248537142673315</id><published>2008-12-04T10:39:00.001+01:00</published><updated>2010-03-03T09:17:17.150+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reporting'/><category scheme='http://www.blogger.com/atom/ns#' term='BusinessObjects'/><category scheme='http://www.blogger.com/atom/ns#' term='VBScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Automation'/><category scheme='http://www.blogger.com/atom/ns#' term='Excel'/><title type='text'>Scripted BO 5 excel export</title><content type='html'>&lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;A customer asked me to make the following script -- some time at google and some writing later, here's what I put together. It takes all the files in a given directory and converts all the BO reports into excel files (no charts though) each tab in each report is of course copied into the appropriate excel file.&lt;/p&gt;  &lt;p&gt;Use with care..&lt;/p&gt;  &lt;p&gt;'----------------------------------------------------------------------&lt;/p&gt;  &lt;p&gt;dim busobj    &lt;br /&gt;dim strnomFichier     &lt;br /&gt;dim objrep     &lt;br /&gt;dim objExcel     &lt;br /&gt;dim boEditPopup     &lt;br /&gt;dim xlworksheet     &lt;br /&gt;dim strname     &lt;br /&gt;Dim BOApp     &lt;br /&gt;Dim strFilename &lt;/p&gt;  &lt;p&gt;set BOApp= createobject(&amp;quot;BusinessObjects.Application&amp;quot;)    &lt;br /&gt;BOApp.LoginAs &amp;quot;USER&amp;quot;, &amp;quot;PASS&amp;quot;, False     &lt;br /&gt;BOApp.visible = True &lt;/p&gt;  &lt;p&gt;Set fso=Wscript.CreateObject(&amp;quot;Scripting.FileSystemObject&amp;quot;)    &lt;br /&gt;Set f=fso.GetFolder(&amp;quot;i:\&amp;quot;)     &lt;br /&gt;Set fc=f.files &lt;/p&gt;  &lt;p&gt;For each file in fc    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; strFilename = file.name     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; If Right(strFilename,3) = &amp;quot;rep&amp;quot; Then     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Set objrep = BOApp.Documents.Open(&amp;quot;i:\&amp;quot;&amp;amp;strFilename)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Set boEditPopup = BOApp.Application.CmdBars(2).Controls(&amp;quot;&amp;amp;Edit&amp;quot;)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; Set objExcel = createobject(&amp;quot;Excel.Application&amp;quot;)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; objExcel.Workbooks.Add     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; objExcel.visible = True     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; intreports = 1     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; startnumber = BOApp.ActiveDocument.reports.count     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; For&amp;#160; i = startnumber To 1 Step -1     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Set myrep = BOApp.ActiveDocument.reports.item(i)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; myrep.activate()     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; boEditPopup.CmdBar.Controls(&amp;quot;Cop&amp;amp;y All&amp;quot;).Execute &lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Set xlWorkSheet = objExcel.Worksheets.Add()    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; strname = BOApp.ActiveDocument.reports.item(i).name     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; strname = Replace(strname, &amp;quot;:&amp;quot;, &amp;quot;&amp;quot;) ' Can't contain this character     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; strname = Replace(strname, &amp;quot;\&amp;quot;, &amp;quot;&amp;quot;) ' Can't contain this character     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; strname = Replace(strname, &amp;quot;/&amp;quot;, &amp;quot;&amp;quot;) ' Can't contain this character     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; strname = Replace(strName, &amp;quot;?&amp;quot;, &amp;quot;&amp;quot;) ' Can't contain this character     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; strname = Replace(strName, &amp;quot;*&amp;quot;, &amp;quot;&amp;quot;) ' Can't contain this character     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; strname = Replace(strName, &amp;quot;[&amp;quot;, &amp;quot;&amp;quot;) ' Can't contain this character     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; strname = Replace(strname, &amp;quot;]&amp;quot;, &amp;quot;&amp;quot;) ' Can't contain this character     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; strName = Left(strname, 31)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; xlWorkSheet.Name = strname     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; xlWorkSheet.Paste     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Set xlFormatPopup = objExcel.Application.CommandBars(1).Controls(&amp;quot;F&amp;amp;ormat&amp;quot;)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Set xlColumnPopup = xlFormatPopup.CommandBar.Controls(&amp;quot;&amp;amp;Column&amp;quot;)     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; xlColumnPopup.CommandBar.Controls(&amp;quot;&amp;amp;AutoFit Selection&amp;quot;).Execute     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Next     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; End If     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; If Right(strFilename,3) = &amp;quot;rep&amp;quot; Then     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; xlWorkSheet.Saveas &amp;quot;i:\&amp;quot;&amp;amp;strFilename&amp;amp;&amp;quot;.xls&amp;quot;, True     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; End If     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Next &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;'-----------------------------------------------------------------&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-2473248537142673315?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/2473248537142673315/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=2473248537142673315' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/2473248537142673315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/2473248537142673315'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2008/12/scripted-bo-5-excel-export.html' title='Scripted BO 5 excel export'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-9082323443631090258</id><published>2008-10-29T14:10:00.001+01:00</published><updated>2008-10-29T14:10:20.490+01:00</updated><title type='text'>My new laptop</title><content type='html'>&lt;p&gt;At the bottom of one of my cupboards, I found my old Toshiba laptop. It isn't much, it's got some ram.. not a lot.. some diskspace, not a lot.. and it's got Windows XP.&lt;/p&gt;  &lt;p&gt;As a decent computer user, I prefer to only put legal software on my computer. Of course, that software has to function correctly and give me the features that I need.&lt;/p&gt;  &lt;p&gt;I'm not a rich man, so I decided to go for the Open Source software that's around.&lt;/p&gt;  &lt;p&gt;The first thing I decided on installing was office. I'm not planning to spend too many of my precious Euro's on office -- I won't be using it much on this laptop -- only to consult files that I receive from people mostly.&lt;/p&gt;  &lt;p&gt;Open Office -- of course. A swift download, an install, and I have Spreadsheet, Wordprocessor, Image editing soft -- the lot.&lt;/p&gt;  &lt;p&gt;Site : &lt;a href="http://www.openoffice.org/"&gt;http://www.openoffice.org/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;So.. what other software do I need. I develop websites -- so I need a webserver -- a database server --&amp;#160; content management -- blogs.. the choice is quite easy : MoWes (fka WoS)&lt;/p&gt;  &lt;p&gt;Site : &lt;a href="http://www.chsoftware.net/en/useware/mowes/mowes.htm"&gt;http://www.chsoftware.net/en/useware/mowes/mowes.htm&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Great -- now I have a complete development environment with PHP, MySQL and all the nice stuff that comes with it -- but how will I be writing my webpages..&lt;/p&gt;  &lt;p&gt;I searched the web over and found a long list of indivual tools like : NVU, Aptana, Selida -- none come close to a decent webdesign tool -- Aptana is coding -- I'm not planning to code my pages by hand if I can help it. Selida offers layers, but you can't do something simple like drag the layer to the desired location.. &lt;/p&gt;  &lt;p&gt;Site : &lt;a href="http://www.designvitality.com/blog/2007/10/25-open-source-web-design-programs-and-tools-you-should-already-know-about/" target="_blank"&gt;25 webdesign tools&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;A browser. I love Firefox, but the almost nihilistic interface of Chrome got me. Especially because in chrome, you can save a shortcut to a website on your desktop or in a folder. When you open the icon, you get that website in a window without navigation -- in practice, it looks like a windows program has been opened and not a website.&lt;/p&gt;  &lt;p&gt;Site : &lt;a href="http://www.google.com/chrome"&gt;http://www.google.com/chrome&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Now I have my e-mail as an icon on my desktop -- I surfed to GMail with Chrome and saved the site as an icon -- it looks and acts like a windows program, with an important downside -- you have to be online to read your mail.&lt;/p&gt;  &lt;p&gt;I did the same with the google calendar, google Picasa and google notepad. To store my office documents in a place where I can always reach them, I have also added Google docs -- easy.&lt;/p&gt;  &lt;p&gt;site : &lt;a href="http://www.google.com"&gt;www.google.com&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;I blog. So a decent blogging tool would come in handy : Windows Live. It contains LiveWriter in which I'm writing this article, live mail.. live messenger -- Live mail will come in handy to read those mails that are not accessible over a website.&lt;/p&gt;  &lt;p&gt;site : &lt;a href="http://get.live.com/writer/overview"&gt;http://get.live.com/writer/overview&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-9082323443631090258?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/9082323443631090258/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=9082323443631090258' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/9082323443631090258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/9082323443631090258'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2008/10/my-new-laptop.html' title='My new laptop'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-3309015761153344564</id><published>2008-09-19T14:59:00.001+02:00</published><updated>2010-03-02T10:10:24.928+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reporting Services'/><category scheme='http://www.blogger.com/atom/ns#' term='Reporting'/><category scheme='http://www.blogger.com/atom/ns#' term='Month'/><category scheme='http://www.blogger.com/atom/ns#' term='filters'/><category scheme='http://www.blogger.com/atom/ns#' term='Picklist'/><category scheme='http://www.blogger.com/atom/ns#' term='Next'/><category scheme='http://www.blogger.com/atom/ns#' term='Dates'/><title type='text'>Next Month</title><content type='html'>&lt;strike&gt;function GetLastDayNextMonth()    &lt;br /&gt;Dim dt     &lt;br /&gt;Dim firstDay     &lt;br /&gt;Dim lastDayNextM     &lt;br /&gt;Dim lastDay     &lt;br /&gt;dt = now()     &lt;br /&gt;firstDay = DateSerial(Year(dt), Month(dt), 1)     &lt;br /&gt;lastdayNextM = DateAdd(&amp;quot;m&amp;quot;,2,firstDay)     &lt;br /&gt;lastday = DateAdd(&amp;quot;d&amp;quot;,-1,lastdayNextM)     &lt;br /&gt;GetLastDayNextMonth= lastDay     &lt;br /&gt;end function     &lt;br /&gt;function GetFirstDayNextMonth()     &lt;br /&gt;dim firstDay     &lt;br /&gt;firstDay = DateSerial(year(GetLastDayNextMonth()),month(GetLastDayNextMonth()),1)     &lt;br /&gt;GetFirstDayNextMonth= firstDay     &lt;br /&gt;end function&lt;/strike&gt;   &lt;p&gt;Can’t believe I wrote that function.&lt;/p&gt;  &lt;p&gt;=dateadd(“d”, –1, dateadd(“m”, +2, cdate(year(today()) &amp;amp; “/” &amp;amp; month(today()) &amp;amp; “/1”)))&lt;/p&gt;  &lt;p&gt;that’s the expression that gives you the last day of the next month in Reporting Services&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-3309015761153344564?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/3309015761153344564/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=3309015761153344564' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/3309015761153344564'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/3309015761153344564'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2008/09/next-month.html' title='Next Month'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-3533601358280016175</id><published>2008-09-19T14:59:00.000+02:00</published><updated>2008-09-19T15:00:14.936+02:00</updated><title type='text'>Calculating Current Month</title><content type='html'>function GetLastDayNextMonth()&lt;br /&gt;Dim dt &lt;br /&gt;Dim firstDay&lt;br /&gt;Dim lastDayNextM&lt;br /&gt;Dim lastDay&lt;br /&gt;dt = now() &lt;br /&gt;firstDay = DateSerial(Year(dt), Month(dt), 1) &lt;br /&gt;lastdayNextM = DateAdd("m",1,firstDay)&lt;br /&gt;lastday = DateAdd("d",-1,lastdayNextM)&lt;br /&gt;GetLastDayNextMonth= lastDay&lt;br /&gt;end function&lt;br /&gt;function GetFirstDayNextMonth()&lt;br /&gt;dim firstDay&lt;br /&gt;firstDay = DateSerial(year(GetLastDayNextMonth()),month(GetLastDayNextMonth()),1)&lt;br /&gt;GetFirstDayNextMonth= firstDay&lt;br /&gt;end function&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-3533601358280016175?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/3533601358280016175/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=3533601358280016175' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/3533601358280016175'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/3533601358280016175'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2008/09/calculating-current-month.html' title='Calculating Current Month'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-258800875236056325</id><published>2008-04-23T11:11:00.002+02:00</published><updated>2010-02-24T20:33:53.741+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CMCApp'/><category scheme='http://www.blogger.com/atom/ns#' term='BusinessObjects'/><category scheme='http://www.blogger.com/atom/ns#' term='Install'/><category scheme='http://www.blogger.com/atom/ns#' term='XI'/><title type='text'>Installing BOXIR3</title><content type='html'>&lt;p&gt;The installation of Business Objects XI R3 seems pretty straight forward. Double click the setup file.. next next next.. but.&lt;/p&gt;  &lt;p&gt;After the installation, when I tried to surf to any of the pages on my Tomcat server, I got Error 404 application not found.&lt;/p&gt;  &lt;p&gt;After a bit of surfing, &lt;a href="http://www.forumtopics.com/busobj/viewtopic.php?t=105997&amp;amp;sid=aca2a7aef7a0eb2a5b496930b999eb35" target="_blank"&gt;I found an entry on a forum.&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;It was a discussion between two people that entirely pictured my problem.. what follows is a howto based on their conversation.&lt;/p&gt;  &lt;p&gt;When trying to surf to &lt;a href="http://servername:8080/CmcApp"&gt;http://servername:8080/CmcApp&lt;/a&gt;, I got an error 404 saying CmcApp not found.&lt;/p&gt;  &lt;p&gt;1) go to&lt;/p&gt;  &lt;p&gt;C:\Program Files\Business Objects\BusinessObjects Enterprise 12.0\java\applications&lt;/p&gt;  &lt;p&gt;and check if the WAR files are there -- if not -- reinstall&lt;/p&gt;  &lt;p&gt;2) go to C:\Program Files\Business Objects\Tomcat55\conf and change the tomcat-users.xml file to contain a user (currently logged user f.i.) with rights&lt;/p&gt;  &lt;p&gt;like such :&lt;/p&gt;  &lt;p&gt;&amp;lt;user username=&amp;quot;username&amp;quot; password=&amp;quot;yourpassword&amp;quot; roles=&amp;quot;admin,manager&amp;quot;/&amp;gt;&lt;/p&gt;  &lt;p&gt;don't forget to restart the tomcat server (service)&lt;/p&gt;  &lt;p&gt;3) surf to &lt;a href="http://servername:port/manager/html"&gt;http://servername:port/manager/html&lt;/a&gt; (Tomcat Manager) and login with the username and password you just created&lt;/p&gt;  &lt;p&gt;4) add all of the war-file (bottom of the page) from the directory you found in step 1. &lt;/p&gt;  &lt;p&gt;5) try starting the CMC again&lt;/p&gt;  &lt;p&gt;(this worked for me)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-258800875236056325?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/258800875236056325/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=258800875236056325' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/258800875236056325'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/258800875236056325'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2008/04/installing-boxir3.html' title='Installing BOXIR3'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-6897852502745767341</id><published>2008-01-11T14:25:00.001+01:00</published><updated>2008-01-11T14:25:31.714+01:00</updated><title type='text'>Into the blogging thing</title><content type='html'>&lt;p&gt;I have been blogging a short while now -- just a couple of years. Only now, the whole process seems to be streamlining itself. My first articles, I wrote in the webinterface of the blogging website. harsh -- inspiration does not come at a given time.. so I would gather my stuff before the article and then write it on the site.&lt;/p&gt;  &lt;p&gt;Then, I discovered BlogJet -- an easy, straightforward tool to blog. Configure it with login and password.. and go ! A big step forward.&lt;/p&gt;  &lt;p&gt;Now, some time later, I'm writing in Live Writer from Microsoft -- and it is a definite step forward. The thing I like most is the fact that you can connect directly to the site -- and it copies the template you are using. this means, that you write the article inside a window -- and it should be what you see is what you get. Furthermore, you can connect to multiple blogs.. just select the right one -- the screen changes to the template of that site -- and go ! the article is published.&lt;/p&gt;  &lt;p&gt;I'm a fan of Windows Live Writer.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-6897852502745767341?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/6897852502745767341/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=6897852502745767341' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/6897852502745767341'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/6897852502745767341'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2008/01/into-blogging-thing.html' title='Into the blogging thing'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-3970692379617340786</id><published>2007-10-26T10:25:00.000+02:00</published><updated>2008-01-02T16:58:30.596+01:00</updated><title type='text'>Automatic BO Refresh Script</title><content type='html'>Store this in a textfile.vbs and change the folder in which your reports  &lt;br /&gt;or shortcuts to reports are stored (yes, shortcuts are ok too)This script will refresh them all (mind the object definition  &lt;br /&gt;for a BO 6 system.  &lt;br /&gt;  &lt;pre&gt;&lt;br /&gt;&lt;a href="http://users.skynet.be/binabik/blog/refreshscript.vbs" target="_blank"&gt;download refreshscript&lt;/a&gt;&lt;/pre&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-3970692379617340786?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/3970692379617340786/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=3970692379617340786' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/3970692379617340786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/3970692379617340786'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2007/10/automatic-bo-refresh-script.html' title='Automatic BO Refresh Script'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-1035227730544044935</id><published>2007-10-25T14:47:00.000+02:00</published><updated>2010-03-03T09:20:01.522+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reporting'/><category scheme='http://www.blogger.com/atom/ns#' term='BusinessObjects'/><category scheme='http://www.blogger.com/atom/ns#' term='VBScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Automation'/><category scheme='http://www.blogger.com/atom/ns#' term='Refresh'/><title type='text'>Business Objects Scripted refresh</title><content type='html'>a student gave me the following script to automate refresh of a report :  &lt;br /&gt;  &lt;br /&gt;Sub RefreshBO()  &lt;br /&gt;Dim objBO, objrep  &lt;br /&gt;Application.DisplayAlerts = False  &lt;br /&gt;'Open Business ObjectSet objBO = CreateObject(&amp;quot;BusinessObjects.Application&amp;quot;)  &lt;br /&gt;' (when update to version 6)' Set objBO = CreateObject(&amp;quot;BusinessObjects.Application.6&amp;quot;)  &lt;br /&gt;objBO.LoginAs &amp;quot;username&amp;quot;, &amp;quot;password&amp;quot;, False' (fill in username and password)  &lt;br /&gt;'open the report  &lt;br /&gt;objrep = objBO.Documents.Open(&amp;quot;c:\myfile.rep&amp;quot;)  &lt;br /&gt;  &lt;br /&gt;'Show BO  &lt;br /&gt;objBO.Visible = True  &lt;br /&gt;  &lt;br /&gt;'Refresh Report  &lt;br /&gt;objrep.Refresh  &lt;br /&gt;  &lt;br /&gt;'Save Report  &lt;br /&gt;objrep.Save  &lt;br /&gt;  &lt;br /&gt;'Close Report  &lt;br /&gt;objrep.Close  &lt;br /&gt;  &lt;br /&gt;  &lt;br /&gt;great !!    &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-1035227730544044935?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/1035227730544044935/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=1035227730544044935' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/1035227730544044935'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/1035227730544044935'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2007/10/business-objects-scripted-refresh.html' title='Business Objects Scripted refresh'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-597241203553225604</id><published>2007-10-09T12:24:00.000+02:00</published><updated>2010-03-03T15:54:42.180+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BusinessObjects'/><title type='text'>SAP buys Business Objects</title><content type='html'>It has happened -- SAP is buying Business objects. Making them larger than Oracle (the other possible buyer who bought Hyperion instead). SAP will integrate their products with BO and Crystal Reports better -- as it seems. I wonder how this will evolve.    &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-597241203553225604?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/597241203553225604/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=597241203553225604' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/597241203553225604'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/597241203553225604'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2007/10/sap-buys-business-objects.html' title='SAP buys Business Objects'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-3792661598877021667</id><published>2007-09-19T17:09:00.001+02:00</published><updated>2010-03-05T09:57:20.684+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BusinessObjects'/><category scheme='http://www.blogger.com/atom/ns#' term='Drill'/><title type='text'>Business Objects Query Drill</title><content type='html'>Query drill (or apply drill filters) is a somewhat hidden feature of Business Objects. In fact, I rediscovered it when I was teaching BO Webi.&lt;br /&gt;&lt;br /&gt;It got me somewhat curious, to find out if it also existed in BO 5 and 6.5 — and in fact, it exists in every single one of those versions.&lt;br /&gt;&lt;br /&gt;1) Where do you find it :&lt;br /&gt;In webi, it is located in the document properties — you check “query drill”&lt;br /&gt;In full client, it is located in Tools&gt;Options and on the tab Drill, check “Apply Drill filters on drill through”&lt;br /&gt;&lt;br /&gt;2) What does it do&lt;br /&gt;In fact, drilling is a tricky business — you navigate through your data and little by little, you get your data and you extend your query. Start with 10 records, and end up with a query of over 50000 records.&lt;br /&gt;&lt;br /&gt;Because — that is what happens, you want more details, so you drill for an extra column using drill through and you end up multiplying the data in your dataset.&lt;br /&gt;&lt;br /&gt;Apply drill filters on drill through will actually limit your query to the data you filtered for using drill by setting conditions on the query.&lt;br /&gt;So, you drill down on year and get quarters (2006). Then you drill through to months on Q3 — your query is now adapted and filtered for 2006/Q3.&lt;br /&gt;&lt;br /&gt;This results in a number of things :&lt;br /&gt;&lt;br /&gt;1) Less data (only the data you drilled for is shown)2) Functions aggregated on the database level are more likely to be calculated correctly3) A speed-up (or a slow down) compared to regular drill will occur (depending on the nature of the fields you filter on !&lt;br /&gt;&lt;br /&gt;This last point asks for some extra explanation :&lt;br /&gt;&lt;br /&gt;Lets assume you have a date field which is indexed at the database level. On the universe, the designer (made the error and ) created a field with function year(datefield) and now youare drilling for a given year. This will filter on a function applied on a date-field — the result is desastrous for performance. (if the year were a physical (indexed) field on the database, the&lt;br /&gt;performance would be very good)&lt;br /&gt;&lt;br /&gt;enough already,&lt;br /&gt;&lt;br /&gt;Back to reporting&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-3792661598877021667?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/3792661598877021667/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=3792661598877021667' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/3792661598877021667'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/3792661598877021667'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2007/09/query-drill-or-apply-drill-filters-is.html' title='Business Objects Query Drill'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-6457997488571302664</id><published>2007-09-13T16:15:00.000+02:00</published><updated>2010-02-18T14:55:43.238+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reporting'/><category scheme='http://www.blogger.com/atom/ns#' term='Previous'/><category scheme='http://www.blogger.com/atom/ns#' term='Month'/><category scheme='http://www.blogger.com/atom/ns#' term='Time'/><category scheme='http://www.blogger.com/atom/ns#' term='Next'/><category scheme='http://www.blogger.com/atom/ns#' term='Dates'/><title type='text'>My favorite functions</title><content type='html'>&lt;p&gt;In a previous message, I wrote about some functions on time. Here are my favorite functions... much better than the previous ones   &lt;br /&gt;    &lt;br /&gt;&lt;strike&gt;function GetLastDayPreviousMonth()     &lt;br /&gt;Dim dt       &lt;br /&gt;Dim firstDay      &lt;br /&gt;Dim lastDay      &lt;br /&gt;dt = now()       &lt;br /&gt;firstDay = DateSerial(Year(dt), Month(dt), 1)       &lt;br /&gt;lastday = DateAdd(&amp;quot;d&amp;quot;,-1,firstDay)      &lt;br /&gt;GetLastDayPreviousMonth = lastDay      &lt;br /&gt;end function      &lt;br /&gt;function GetFirstDayPreviousMonth()      &lt;br /&gt;dim firstDay      &lt;br /&gt;firstDay = DateSerial(year(GetLastDayPreviousMonth()),month(GetLastDayPreviousMonth()),1)      &lt;br /&gt;GetFirstDayPreviousMonth = firstDay      &lt;br /&gt;end function      &lt;br /&gt;&lt;/strike&gt;&lt;/p&gt;  &lt;p&gt;Sillyness.. absolutely :&lt;/p&gt;  &lt;p&gt;=dateadd(“d”, –1, dateadd(“m”, -1, cdate(year(today()) &amp;amp; “/” &amp;amp; month(today()) &amp;amp; “/1”)))&lt;/p&gt;  &lt;p&gt;will give you the last day of the previous month.&lt;/p&gt;  &lt;p&gt;the first day is easier still :&lt;/p&gt;  &lt;p&gt;=dateadd(“m”, -1, cdate(year(today()) &amp;amp; “/” &amp;amp; month(today()) &amp;amp; “/1”))&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;function convertTime(intMinutes)   &lt;br /&gt;dim iTimeInHours, iTimeMinutes,strTimeMinutes, strTimeInHours, strTimeInHoursAndMinutes    &lt;br /&gt;iTimeInHours = intMinutes \ 60    &lt;br /&gt;iTimeMinutes = intMinutes mod 60    &lt;br /&gt;if (iTimeInHours &amp;lt; 10) then     &lt;br /&gt;strTimeInHours = &amp;quot;0&amp;quot; &amp;amp; cstr(iTimeInHours)    &lt;br /&gt;else     &lt;br /&gt;strTimeInHours = cstr(iTimeInHours)    &lt;br /&gt;end if    &lt;br /&gt;if (iTimeMinutes &amp;lt; 10) then     &lt;br /&gt;strTimeMinutes = &amp;quot;0&amp;quot; &amp;amp; cstr(iTimeMinutes)    &lt;br /&gt;else     &lt;br /&gt;strTimeMinutes = cstr(iTimeMinutes)    &lt;br /&gt;end if    &lt;br /&gt;strTimeInHoursAndMinutes = strTimeInHours &amp;amp; &amp;quot;:&amp;quot; &amp;amp; strTimeMinutes convertTime = strTimeInHoursAndMinutes    &lt;br /&gt;end function    &lt;br /&gt;function calculateTime(eDt as datetime, sDt as datetime, eLu as Int32)    &lt;br /&gt;dim iTime    &lt;br /&gt;iTime = DateDiff(&amp;quot;n&amp;quot;,eDt,sDt) - eLu calculateTime = iTime    &lt;br /&gt;end function&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-6457997488571302664?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/6457997488571302664/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=6457997488571302664' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/6457997488571302664'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/6457997488571302664'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2007/09/my-favorite-functions.html' title='My favorite functions'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-9195097993858439854</id><published>2007-06-26T12:20:00.001+02:00</published><updated>2010-03-05T09:59:02.209+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reporting Services'/><category scheme='http://www.blogger.com/atom/ns#' term='VBScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Time'/><title type='text'>Time in Reporting Services</title><content type='html'>Putting time in a table is easy... format as hh:MM -- but ! This time I had to put time in a correct format (hours:minutes) and the given data was in minutes. Maybe there is an easy way, but I haven't found it yet - this is my solution :&lt;br /&gt;&lt;br /&gt;function convertTime(intMinutes as int32)&lt;br /&gt;'prepare variables&lt;br /&gt;dim arrValues, numMinutes, strNumHours, strNumMinutes&lt;br /&gt;dim numHours, numValue, strTime,strIntMinutes&lt;br /&gt;strNumHours = ""&lt;br /&gt;strNumMinutes=""&lt;br /&gt;&lt;br /&gt;'get the time&lt;br /&gt;if intMinutes &gt; 0 then&lt;br /&gt;strIntMinutes = cstr(intMinutes/60)&lt;br /&gt;if instr(strIntMinutes,",") &gt; 0 then&lt;br /&gt;arrValues = split(strIntMinutes ,",")&lt;br /&gt;strNumHours = cstr(arrValues(0))&lt;br /&gt;strNumMinutes = cstr(cint(cint(left(arrValues(1),2))/100*60))&lt;br /&gt;else strNumHours = cstr(strIntMinutes)&lt;br /&gt;strNumMinutes = "00"&lt;br /&gt;end if&lt;br /&gt;else&lt;br /&gt;strNumHours = "00"&lt;br /&gt;strNumMinutes = "00"&lt;br /&gt;end if&lt;br /&gt;if len(strNumHours) = 1 then&lt;br /&gt;strNumHours = "0" &amp; strNumHours&lt;br /&gt;end if&lt;br /&gt;if len(strNumMinutes) = 1 then&lt;br /&gt;strNumMinutes = strNumMinutes &amp;amp; "0"&lt;br /&gt;end if&lt;br /&gt;strTime = strNumHours &amp; ":" &amp;amp; strNumMinutes&lt;br /&gt;convertTime = strTime&lt;br /&gt;end function&lt;br /&gt;&lt;br /&gt;put this in the code (properties of the report) and call it with&lt;br /&gt;code.convertTime(Field!whateveritmaybe)&lt;br /&gt;&lt;br /&gt;cheers&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-9195097993858439854?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/9195097993858439854/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=9195097993858439854' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/9195097993858439854'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/9195097993858439854'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2007/06/time-in-reporting-services.html' title='Time in Reporting Services'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-3081051203939292752</id><published>2007-06-22T13:22:00.001+02:00</published><updated>2010-03-05T09:59:22.711+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reporting Services'/><category scheme='http://www.blogger.com/atom/ns#' term='Reporting'/><title type='text'>The kind of stuff people want in RS</title><content type='html'>&lt;div align="justify"&gt;What if the date is stored as date/time and you want to offer a prompt that allows a user to select a date. But!! The date has to be equal to the date in the database.&lt;br /&gt;&lt;br /&gt;select * from Orders where cast(CONVERT(varchar(8), OrderDate, 112) AS datetime) = '2004-08-25'&lt;br /&gt;&lt;br /&gt;this is how.&lt;br /&gt;&lt;br /&gt;Reporting services has problems showing the data in the data-tab though.. it only works in the preview.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-3081051203939292752?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/3081051203939292752/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=3081051203939292752' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/3081051203939292752'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/3081051203939292752'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2007/06/kind-of-stuff-people-want-in-rs.html' title='The kind of stuff people want in RS'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-7883117679179154892</id><published>2007-06-22T08:39:00.001+02:00</published><updated>2010-03-05T10:00:06.442+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BusinessObjects'/><category scheme='http://www.blogger.com/atom/ns#' term='Dates'/><title type='text'>Dates in Reporting Services</title><content type='html'>&lt;p&gt;A colleague of mine asked for a parameter on a report. The report had to run from the first of the previous month, until the last day of the previous month. I solved this with this function :   &lt;br /&gt;    &lt;br /&gt;&lt;strike&gt;function fnGetLastDayOfMonth(datum as date)     &lt;br /&gt;fnGetLastDayOfMonth = Day(DateSerial(Year(datum), Month(datum) + 1, 0))      &lt;br /&gt;end function      &lt;br /&gt;      &lt;br /&gt;I then called this function in this way :      &lt;br /&gt;      &lt;br /&gt;startdate      &lt;br /&gt;      &lt;br /&gt;=cdate(iif(month(now())=1,year(now())-1,year(now())) &amp;amp; &amp;quot;/&amp;quot; &amp;amp; iif(month(now())=1,12,month(now())-1) &amp;amp; &amp;quot;/01&amp;quot;)      &lt;br /&gt;      &lt;br /&gt;enddate      &lt;br /&gt;      &lt;br /&gt;=cdate(iif(month(now()) = 1,year(now())-1,year(now())) &amp;amp; &amp;quot;/&amp;quot; &amp;amp; iif(month(now()) &amp;gt; 1,month(now())-1,12) &amp;amp; &amp;quot;/&amp;quot; &amp;amp; code.GetLastDayOfMonth(cdate(iif(month(now()) = 1,year(now())-1,year(now())) &amp;amp; &amp;quot;/&amp;quot; &amp;amp; iif(month(now()) &amp;gt; 1,month(now())-1,1) &amp;amp; &amp;quot;/&amp;quot; &amp;amp; &amp;quot;1&amp;quot;)))      &lt;br /&gt;&lt;/strike&gt;&lt;/p&gt;  &lt;p&gt;can’t believe I wrote that function – this will do the trick just fine.&lt;/p&gt;  &lt;p&gt;=dateadd(“d”, –1, dateadd(“m”, +1, cdate(year(today()) &amp;amp; “/” &amp;amp; month(today()) &amp;amp; “/1”)))&lt;/p&gt;  &lt;p&gt;   &lt;br /&gt;from the parameter. It would then feed the first day of the previous month to that function and there you have it.. the last day. Cool.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-7883117679179154892?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/7883117679179154892/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=7883117679179154892' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/7883117679179154892'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/7883117679179154892'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2007/06/dates-in-reporting-services.html' title='Dates in Reporting Services'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-6477141871145313186</id><published>2007-06-14T12:37:00.001+02:00</published><updated>2010-03-05T09:59:48.971+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Universes'/><category scheme='http://www.blogger.com/atom/ns#' term='BusinessObjects'/><title type='text'>Linking universes</title><content type='html'>A customer asked me : how can I link two dataproviders if the common field has an un-equal number of digits.&lt;br /&gt;In one universe, the customernumber is 6 digits, in the other 8 digits - the two digits are two leading zeroes, so the zeroes can be removed without problem.&lt;br /&gt;&lt;br /&gt;The formula I used was :&lt;br /&gt;=if(Length(&amp;lt;customernumber&amp;gt;8) then SubStr(&amp;lt;customernumber&amp;gt;,3,Length&amp;lt;customernumber&amp;gt;)) Else &amp;lt;customernumber&amp;gt;&lt;br /&gt;&lt;br /&gt;inserted into the field where the customer number was, the leading zeroes would be removed and BO would automatically agregate the data.&lt;br /&gt;&lt;br /&gt;there is an other solution, which would involve creating a user defined object on the universe, but this would render the documents unusable to colleagues on different machines.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-6477141871145313186?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/6477141871145313186/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=6477141871145313186' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/6477141871145313186'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/6477141871145313186'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2007/06/linking-universes.html' title='Linking universes'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-4795289568144434518</id><published>2007-05-14T17:02:00.000+02:00</published><updated>2010-03-02T09:55:55.878+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reporting Services'/><category scheme='http://www.blogger.com/atom/ns#' term='Reporting'/><category scheme='http://www.blogger.com/atom/ns#' term='VBScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Null'/><title type='text'>SSRS MultiValue and Nulls</title><content type='html'>When you create a multivalue parameter and you also want to include the null values when doing a filter (a select all), you got two options 1) create a union query to include null. Or (like me) -- you can modify the parameter with code. In the report properties, on the code tab, add the code below (it is probably not the most efficient code, but it works):  &lt;br /&gt;  &lt;br /&gt;function addnulltoparameter(ByVal param as object) as object  &lt;br /&gt;dim strNewParam() as string  &lt;br /&gt;dim countery as int32  &lt;br /&gt;dim x as object  &lt;br /&gt;for each x in param   &lt;br /&gt;countery = countery + 1  &lt;br /&gt;next  &lt;br /&gt;redim strNewparam(countery + 1)  &lt;br /&gt;dim counterx as int32  &lt;br /&gt;counterx = 0  &lt;br /&gt;for each x in param   &lt;br /&gt;strNewParam(counterx) = x   &lt;br /&gt;counterx = counterx + 1  &lt;br /&gt;next  &lt;br /&gt;strNewParam(counterx) = &amp;quot;&amp;quot;  &lt;br /&gt;return strNewParam  &lt;br /&gt;end function  &lt;br /&gt;  &lt;br /&gt;next, in the properties of you dataset, click the tab filters, create a filter on a field, choose in for the operator and in the value type :  &lt;br /&gt;code.addnulltoparameter(Parameters!name_of_the_parameter.Value) -- make sure you don't leave (0) at the end or you will only send the first element of the array.  &lt;br /&gt;  &lt;br /&gt;The result is that a null value is concatenated into the parameter. If you want, you can also create a Boolean parameter, that allows you the choice to include nulls.  &lt;br /&gt;  &lt;br /&gt;then the code for the filter would be  &lt;br /&gt;=iif(parameters!includenull=True,code.addnulltoparamater(Parameters!someparameter.Value),Parameters!someparameter.Value)    &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-4795289568144434518?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/4795289568144434518/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=4795289568144434518' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/4795289568144434518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/4795289568144434518'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2007/05/ssrs-multivalue-and-nulls.html' title='SSRS MultiValue and Nulls'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-7637596682326177991</id><published>2007-05-03T13:24:00.001+02:00</published><updated>2010-03-05T10:00:51.426+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reporting Services'/><category scheme='http://www.blogger.com/atom/ns#' term='Reporting'/><title type='text'>Complex tables do not export</title><content type='html'>At the moment, I'm creating some complex tables in Reporting services (2005).&lt;br /&gt;&lt;br /&gt;In fact, the only two tables you can have are vertical tables and matrix tables. It is possible to create a horizontal table, but you have to rework a matrix to get to it.&lt;br /&gt;&lt;br /&gt;The table I'm currently building in Reporting services involves nesting a vertical table inside a matrix.&lt;br /&gt;&lt;br /&gt;As it seems, the table works fine, it exports well to pdf -- but excel won't work. It seems to be impossible to export complex nested tables to Excel.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-7637596682326177991?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/7637596682326177991/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=7637596682326177991' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/7637596682326177991'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/7637596682326177991'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2007/05/complex-tables-do-not-export.html' title='Complex tables do not export'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-8175664064403094356</id><published>2007-04-05T10:23:00.001+02:00</published><updated>2010-03-05T10:01:27.329+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reporting Services'/><category scheme='http://www.blogger.com/atom/ns#' term='Reporting'/><category scheme='http://www.blogger.com/atom/ns#' term='Dates'/><title type='text'>Date input selectors in Reporting Services</title><content type='html'>When you create a parameter in Reporting Services which has Date/Time as a format, it uses the a date format which is based on the settings of internet explorer. Go to tools / internet options to set the language. If you set the language to English US, then the format will be : mm/dd/yyyy, if you set it to dutch/belgium it will default to dd/mm/yyyy&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-8175664064403094356?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/8175664064403094356/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=8175664064403094356' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/8175664064403094356'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/8175664064403094356'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2007/04/date-input-selectors-in-reporting.html' title='Date input selectors in Reporting Services'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-6014606497019764192</id><published>2007-04-05T10:21:00.001+02:00</published><updated>2010-03-05T10:01:57.099+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reporting Services'/><category scheme='http://www.blogger.com/atom/ns#' term='Reporting'/><category scheme='http://www.blogger.com/atom/ns#' term='Printing'/><title type='text'>Printing in Reporting Services</title><content type='html'>In the Report Properties dialog if I set Page width to 8.27in and Page height to 11.69in then the Page Setup dialog of ReportViewer defaults to A4.&lt;br /&gt;&lt;br /&gt;otherwise, it defaults to letter. This has to be in inches.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-6014606497019764192?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/6014606497019764192/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=6014606497019764192' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/6014606497019764192'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/6014606497019764192'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2007/04/printing-in-reporting-services.html' title='Printing in Reporting Services'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-8114751295794794442</id><published>2007-03-26T08:36:00.000+02:00</published><updated>2007-03-26T08:48:44.632+02:00</updated><title type='text'>Building reports</title><content type='html'>Currently, I'm quite busy writing reports for a customer. The tool to use is Business Objects Version 5. The reports are predefined by the user in an excel format, which simplifies things, and an even greater luxury is the fact that he has provided previous reports (in excel), to verify the results. The result is a very stimmulating project.&lt;br /&gt;&lt;br /&gt;At this time, I find myself quite stuck at a problem.&lt;br /&gt;&lt;br /&gt;The customer has defined groups of data which do not occur in the database. say : groups of products. group 1, group 2 and group 3. Each product has a target to attain, for a given period of the year, say q1, q2,q3 and q4. The total of all groups of products, again has a specific target. Each of those targets has to be formatted according to a set of conditions. a less or equal to t : green a larger than t and a less than t*2 : blue  a larger than or equal to  t * 2 : red.&lt;br /&gt;&lt;br /&gt;The targets do not exist in a database and so I coded them in an excel sheet.&lt;br /&gt;&lt;br /&gt;So, the database contains a unique id and name for each product, but not the groups, and the targets are set by group.&lt;br /&gt;&lt;br /&gt;Still thinking on it since linking does not seem to work.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-8114751295794794442?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/8114751295794794442/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=8114751295794794442' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/8114751295794794442'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/8114751295794794442'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2007/03/building-reports.html' title='Building reports'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-116585371057022166</id><published>2006-12-11T17:15:00.000+01:00</published><updated>2006-12-11T17:18:15.360+01:00</updated><title type='text'>Complex Query's</title><content type='html'>&lt;p&gt;A participant of one of my courses provided me with the following intriguing question. For 1 given year, you need to know which stores both sold product A and B.&lt;/p&gt;&lt;p&gt;When you create the query where you choose both stores and the product and create a crosstab, you will also get results where one store sold something, and the other did not. &lt;/p&gt;&lt;p&gt;&lt;img height="288" alt="table with all values" src="http://users.skynet.be/binabik/blog/top_table_ab.jpg" width="370" align="left" border="0" /&gt;&lt;/p&gt;&lt;br clear="left"&gt;&lt;p&gt;This picture shows what happens. There are occurences where one store sold something, and the other did not. Business Objects then shows &amp;ldquo;discontinued&amp;rdquo;.&lt;/p&gt;&lt;p&gt;&lt;br clear="left"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;img height="213" alt="table continued" src="http://users.skynet.be/binabik/blog/top_table_ab_cont.jpg" width="356" align="left" border="0" /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br clear="left"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;The solution I found, is situated at the query level, and includes a combination of subquery&amp;rsquo;s and union query&amp;rsquo;s.&lt;/p&gt;&lt;p&gt;First, I created a query where I specify my first source :&lt;br /&gt;&lt;img height="401" alt="first source" src="http://users.skynet.be/binabik/blog/query1_ab.jpg" width="434" align="left" border="0" /&gt;&lt;/p&gt;&lt;br clear="left"&gt;&lt;p&gt;it includes the name of the stores, the number of the product and the sales revenue. All of this is done using the eFashion universe, interesting for demonstration purposes only. The real work goes on in the conditions.&lt;br /&gt;Storename and year are filtered as usual.&lt;br /&gt;SKU number is filtered using a subquery. in this case, listing only the SKU numbers that are the result of that subquery.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br clear="left"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;The subquery looks like this :&lt;/p&gt;&lt;p&gt;&lt;img height="379" alt="first subquery" src="http://users.skynet.be/binabik/blog/subquery1_ab.jpg" width="320" align="left" border="0" /&gt;&lt;/p&gt;&lt;br clear="left"&gt;&lt;p&gt;The result of this query is a list of all SKUs sold in the other store. So we only get products in store A that have been sold in store B.&lt;/p&gt;&lt;p&gt;It is now possible to select both stores, but if we do that, then we will get some products for store B that were not sold in store A.. so not a good idea.&lt;br /&gt;Next, we need to create a Union query, to also show data about the second store.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br clear="left"&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;Click the &lt;img height="26" alt="union query icon" src="http://users.skynet.be/binabik/blog/unionquery.gif" width="32" border="0" /&gt;&amp;nbsp;icon. It will add a second query, and you repeat the previous steps, but now for the other store. This means : the first query is then for Boston, the subquery for austin. The result looks like this :&lt;/p&gt;&lt;p&gt;&lt;img height="242" alt="solved" src="http://users.skynet.be/binabik/blog/table_ab_solution.gif" width="487" align="left" border="0" /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-116585371057022166?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/116585371057022166/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=116585371057022166' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/116585371057022166'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/116585371057022166'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2006/12/complex-querys.html' title='Complex Query&apos;s'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-115936640476060665</id><published>2006-09-27T16:13:00.000+02:00</published><updated>2006-09-27T16:15:19.003+02:00</updated><title type='text'>Toilets Brussels</title><content type='html'>&lt;img style="WIDTH: 300px" height="300" alt="DSC00076" src="http://users.skynet.be/binabik/blog/DSC00076_small.jpg" width="640" border="0" /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-115936640476060665?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/115936640476060665/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=115936640476060665' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/115936640476060665'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/115936640476060665'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2006/09/toilets-brussels.html' title='Toilets Brussels'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-115323638938355431</id><published>2006-07-18T17:26:00.000+02:00</published><updated>2006-07-18T17:26:29.450+02:00</updated><title type='text'>Teaching with a clean desktop</title><content type='html'>&lt;p&gt;Simple trick I learned today :&lt;/p&gt;&lt;p&gt;Right-mouse click on the desktop &amp;gt; Arrange Icons By &amp;gt; uncheck show desktop icons. All the icons on the desktop are now hidden&amp;hellip; cleaner to teach programs. To get them back &amp;mdash; do this procedure again.&lt;/p&gt;&lt;p&gt;cheers&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-115323638938355431?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/115323638938355431/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=115323638938355431' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/115323638938355431'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/115323638938355431'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2006/07/teaching-with-clean-desktop.html' title='Teaching with a clean desktop'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-115217975190044786</id><published>2006-07-06T11:55:00.000+02:00</published><updated>2006-07-06T11:55:51.906+02:00</updated><title type='text'>Data Integrator (1)</title><content type='html'>&lt;p&gt;I took a nosedive into Data Integrator a couple of weeks ago.&lt;/p&gt;&lt;p&gt;The first thing I discovered was : they went to a lot of trouble trying to make an interface as un-intuitive as possible. The first two encounters with the product resulted in shouting from my part -- and just not working on the side of Data Integrator.&lt;/p&gt;&lt;p&gt;So -- I persisted.&lt;/p&gt;&lt;p&gt;A couple of weeks later, the product is becoming clearer. Projects contain Jobs (check) -- Jobs contain WorkFlows (check) WorkFlows contain DataFlows (check).&lt;/p&gt;&lt;p&gt;My conclusion so far &amp;mdash; Data Integrator is not the easiest of products to use &amp;ndash; but luckily, I succeeded in putting my hands on a good &amp;ldquo;core&amp;rdquo; tutorial pdf file&amp;hellip;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-115217975190044786?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/115217975190044786/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=115217975190044786' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/115217975190044786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/115217975190044786'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2006/07/data-integrator-1.html' title='Data Integrator (1)'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-115217916057823961</id><published>2006-07-06T11:46:00.000+02:00</published><updated>2006-07-06T11:46:00.586+02:00</updated><title type='text'>Small Bug in BO XI R2</title><content type='html'>&lt;p&gt;Strangely enough, the small bug I talked about in the previous article, persists in BO XI R2..&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-115217916057823961?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/115217916057823961/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=115217916057823961' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/115217916057823961'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/115217916057823961'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2006/07/small-bug-in-bo-xi-r2.html' title='Small Bug in BO XI R2'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-115217903357036728</id><published>2006-07-06T11:43:00.000+02:00</published><updated>2010-03-03T15:50:40.230+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BusinessObjects'/><category scheme='http://www.blogger.com/atom/ns#' term='BUG'/><title type='text'>Small BO 6.5 Bug</title><content type='html'>&lt;p&gt;A program always show more bugs when released and shown to the public.&lt;/p&gt;  &lt;p&gt;Here is a strange one.&lt;/p&gt;  &lt;p&gt;1) create a ranking on any field. check the “top” checkbox and a textbox appears where you can enter the top-howmany you want… it says 3 by default.&lt;/p&gt;  &lt;p&gt;2) put the cursor next to the 3 (left) and enter the number 2 … next, use the delete-key to remove the 3…&lt;/p&gt;  &lt;p&gt;what remains after clicking ok… is a top-23…&lt;/p&gt;  &lt;p&gt;strangely enough, BO does not really remove characters removed from that textbox by means of the delete-key.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-115217903357036728?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/115217903357036728/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=115217903357036728' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/115217903357036728'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/115217903357036728'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2006/07/small-bo-65-bug.html' title='Small BO 6.5 Bug'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-114681143779476077</id><published>2006-05-05T08:43:00.000+02:00</published><updated>2006-05-05T08:43:57.820+02:00</updated><title type='text'>.NET on Linux</title><content type='html'>&lt;p&gt;At a certain point I was reading an article about .NET &amp;ndash; and they stated that .NET was meant to be &amp;ldquo;cross-platform&amp;rdquo; and I thought &amp;ldquo;yeah right&amp;rdquo;.&lt;/p&gt;&lt;p&gt;Some two weeks ago, I stumbled across&amp;nbsp;the&amp;nbsp;&amp;ldquo;&lt;a href="http://www.mono-project.com/Main_Page" target="_blank"&gt;Mono project&lt;/a&gt;&amp;rdquo;. It is a .NET framework, sponsored by Novell that runs on Linux, Solaris, Mac OS X, Windows and Unix. And I thouht &amp;ldquo;yeah right&amp;rdquo;. I seem to think that too much.&lt;/p&gt;&lt;p&gt;So I installed it on my Ubuntu machine and stumbled from one amazement to the other. Currently, I&amp;rsquo;m learning C# on my Ubuntu machine. The book I use is entirely based on Windows, but all the examples seem to work on Mono &amp;mdash; all except the ones that address the graphical interface &amp;mdash; it should work, but I&amp;rsquo;m not that far in the book yet. &lt;/p&gt;&lt;p&gt;Anyway. This is something to keep an eye on. Pretty soon the only thing needed to have an app on Windows Mac and Linux is a recompile.&lt;/p&gt;&lt;p&gt;cheers&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-114681143779476077?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/114681143779476077/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=114681143779476077' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/114681143779476077'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/114681143779476077'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2006/05/net-on-linux.html' title='.NET on Linux'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-114501567379689366</id><published>2006-04-14T13:24:00.000+02:00</published><updated>2006-04-14T13:54:33.806+02:00</updated><title type='text'>Ubuntu upgrade to Breezy</title><content type='html'>Today, I upgraded my Ubuntu system to Breezy -- as I said before, I'm not a Linux knowitall, so I heavily depend on Google and thelike -- again today. I had no clue where to start, to upgrade Hoary to Breezy -- but I really wanted to -- I saw the installation of Breezy in a Virtual Machine, and it looked even more sophisticated and complete than the previous version.&lt;br /&gt;Luckily, I found an easy to follow guide to upgrading my Ubuntu Linux machine :&lt;br /&gt;&lt;br /&gt;&lt;a href="Today,%20I%20upgraded%20my%20Ubuntu%20system%20to%20Breezy%20--%20as%20I%20said%20before,%20I%27m%20not%20a%20Linux%20knowitall,%20so%20I%20heavily%20depend%20on%20Google%20and%20thelike%20--%20again%20today.%20I%20had%20no%20clue%20where%20to%20start,%20to%20upgrade%20Hoary%20to%20Breezy%20--%20but%20I%20really%20wanted%20to%20--%20I%20saw%20the%20installation%20of%20Breezy%20in%20a%20Virtual%20Machine,%20and%20it%20looked%20even%20more%20sophisticated%20and%20complete%20than%20the%20previous%20version.%0ALuckily,%20I%20found%20an%20easy%20to%20follow%20guid%20to%20upgrading%20my%20Ubuntu%20Linux%20machine%20:%0A%0Ahttp://www.ubuntuforums.org/archive/index.php/t-83123.html"&gt;http://www.ubuntuforums.org/archive/index.php/t-83123.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I must say -- I didn't follow every step in that article -- the fellow who explains it seems rather squeemish (is that how you write it ?) anyway -- I did do the part where he mounts an iso file -- then I used Synaptic Package manager to upgrade my system -- and in fact -- you do have to remove all packages that have to do with Open Office to get the new version to install. After a first install, I switched on the original repositories and performed another upgrade  - and the installation of Open Office 2 of course. I must say -- it looks very 'complete' -- all my powerpoints work perfectly in it -- but it does not translate Word documents very well. Anyway -- back to playing with my Linux machine.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-114501567379689366?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/114501567379689366/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=114501567379689366' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/114501567379689366'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/114501567379689366'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2006/04/ubuntu-upgrade-to-breezy.html' title='Ubuntu upgrade to Breezy'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-114476523854340689</id><published>2006-04-11T16:20:00.000+02:00</published><updated>2010-02-23T12:53:49.028+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reporting'/><category scheme='http://www.blogger.com/atom/ns#' term='BusinessObjects'/><category scheme='http://www.blogger.com/atom/ns#' term='Drill'/><title type='text'>Expand/Collapse (Business Objects)</title><content type='html'>&lt;p&gt;This is the place where I store the things I tried once, found interesting and choose to forget again… to avoid loosing the info altogether, I write it down. Here is a perfect example of such a fact.&lt;/p&gt;  &lt;p&gt;At a certain point, I was wondering what “expand” and “collapse” in the analysis menu were used for. I figured it out — but at the time I didn’t have this Blog yet — so I forgot all about it pretty soon after.&lt;/p&gt;  &lt;p&gt;&lt;img border="0" alt="Table with year and average Revenue" align="left" src="http://users.skynet.be/binabik/blog/average_revenue11.jpg" width="230" height="81" /&gt;Let’s assume you have a table with Year and Average Revenue (which is a variable, calculated from “Sales Revenue” and “Quantity Sold”). Next, you enter drill-mode&lt;img border="0" alt="Magnifying glass" src="http://users.skynet.be/binabik/blog/magnifyingglass.jpg" width="30" height="30" /&gt;. You can now drill on the year and look at the quarter, to month etc… but what about the individual figures which were used to calculate the average revenue… well — there you go. Still in Drill Mode, you go to the Analysis menu and click “expand”.&lt;/p&gt;  &lt;p&gt;&lt;img style="width: 412px; height: 96px" border="0" alt="Expanded table" align="left" src="http://users.skynet.be/binabik/blog/expandbo.jpg" width="444" height="101" /&gt;    &lt;br clear="all" /&gt;Automatically, both measures are shown in colums next to the average Revenue. When you choose collapse, they disappear again. &lt;/p&gt;  &lt;p&gt;Nifty little trick.&lt;/p&gt;  &lt;p&gt;Couldn’t find this in the Core Reporting, the Intermediate or the Advanced Reporting courseware. But it is in the product-documentation — unlike some other stuff.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-114476523854340689?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/114476523854340689/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=114476523854340689' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/114476523854340689'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/114476523854340689'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2006/04/expandcollapse-business-objects.html' title='Expand/Collapse (Business Objects)'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-114105618382389781</id><published>2006-02-27T16:24:00.000+01:00</published><updated>2010-02-23T12:55:31.446+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reporting'/><category scheme='http://www.blogger.com/atom/ns#' term='BusinessObjects'/><category scheme='http://www.blogger.com/atom/ns#' term='filters'/><title type='text'>Filters in Business Objects</title><content type='html'>It keeps amazing me just how many types of filters there are in Business Objects.  &lt;br /&gt;  &lt;ul&gt;   &lt;li&gt;First : there are the Query filters. The most limiting filters, which have an effect on the datacube - everyone knows (I hope) about these filters, and uses them. They depend a lot on the database and have a big influence on the speed of the report (depending on indexing in the database). &lt;/li&gt;    &lt;li&gt;Second : there is the report-filter. Few documented, easy to use, a filter set on a report only applies on the report and on all tables in it, but not on the other reports.&lt;/li&gt;    &lt;li&gt;Third : the table-filters. Commonly used to filter inside a table, each table in a report can have its own filters. (first and second can be found in Format&amp;gt;Filters&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;These are the ones you see in a basic BO class (2 days) and continue with in the advanced class (1 day) But there is a fourth (little known) way to filter, and I found it most useful in some situations.&lt;/p&gt;  &lt;p&gt;That fourth filter is what I would call : the object-filter -- it means that you can filter out a certain object based on a given condition. How :&lt;/p&gt;  &lt;p&gt;&lt;img style="margin: 0px 10px 10px 0px; width: 320px; float: left; cursor: hand" border="0" alt="" src="http://users.skynet.be/binabik/blog/hideblock.JPG" /&gt;In the properties of a table, a chart, a section and some other stuff, you can activate the &amp;quot;&lt;strong&gt;Hide Block&lt;/strong&gt;&amp;quot; checkbox. If you do so, and confirm with ok, then the block is gone, and you can only get it back if you switch BO into structure view (View &amp;gt; Structure) -- so don't do that. But you might have asked yourself.. what is that box underneath ? well, here you can enter a condition - but you have to enter it manually in this format : =function(&amp;lt;object&amp;gt;) operator value. e.g. =Sum(&amp;lt;sales&amp;gt;) &amp;lt; 8000000 &lt;/p&gt;  &lt;p&gt;The result of the comparison has to be a boolean value (true/false). e.g. on a chart you could count how many years you have available and only show the chart if you had more than 1 year. e.g. =count(&amp;lt;year&amp;gt;) &amp;gt; 1. The chart will remain hidden as long as you don't have more than 1 year. When you refresh and an extra year was added to the result of the query, then the chart would show up. Pretty nice trick.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-114105618382389781?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/114105618382389781/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=114105618382389781' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/114105618382389781'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/114105618382389781'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2006/02/filters-in-business-objects.html' title='Filters in Business Objects'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-113942846522482889</id><published>2006-02-08T20:54:00.000+01:00</published><updated>2010-02-23T12:52:35.617+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='BusinessObjects'/><category scheme='http://www.blogger.com/atom/ns#' term='BUG'/><title type='text'>No File menu in Business Objects</title><content type='html'>&lt;p&gt;This is a bug I came across some time ago.&lt;/p&gt;  &lt;p&gt;Here is the solution :&lt;/p&gt;  &lt;p&gt;Follow these steps:   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 1. Go to Microsoft Visual studio in Business objects    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 2. Press Ctrl + g    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 3. copy paste this command    &lt;br /&gt;&amp;quot;Application.CmdBars.ActiveMenuBar.Visible = True&amp;quot; in newly opened window    &lt;br /&gt;i.e. immediate window    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; 4. Press 'Enter' button    &lt;br /&gt;found this on &lt;a href="http://businessintelligence.ittoolbox.com/groups/technical-functional/businessobjects-analyticapps-l/902947#" target="_blank"&gt;ittoolbox website&lt;/a&gt;&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-113942846522482889?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/113942846522482889/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=113942846522482889' title='5 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/113942846522482889'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/113942846522482889'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2006/02/no-file-menu-in-business-objects.html' title='No File menu in Business Objects'/><author><name>PDeRop</name><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><entry><id>tag:blogger.com,1999:blog-10701745.post-113880757854222587</id><published>2006-02-01T16:26:00.000+01:00</published><updated>2010-02-23T12:51:48.184+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reporting'/><category scheme='http://www.blogger.com/atom/ns#' term='BusinessObjects'/><category scheme='http://www.blogger.com/atom/ns#' term='LOV'/><category scheme='http://www.blogger.com/atom/ns#' term='List of Values'/><title type='text'>Customised List of Values</title><content type='html'>&lt;p&gt;Business Objects has many features. In previous articles I already explained some of them — but this next one is quite interesting and well hidden.&lt;/p&gt;  &lt;p&gt;Imagine the following situation. You create a query on a database using Business Object. You are an account manager for a certain number of customers, and you only draw information from the database for those customers. But – the list of customers is long. Each time, you have to select YOUR customers from that list. A lot of work. You can create your own list of values, containing only your own customers, so you don’t have to select them from the endless list. Here is how :&lt;/p&gt;  &lt;p&gt;Let’s say you had this kind of List of Values(LOV) :&lt;/p&gt;  &lt;p&gt;&lt;img border="0" alt="List Of Values" align="left" src="http://users.skynet.be/binabik/blog/lovfile.jpg" width="351" height="378" /&gt;    &lt;br clear="all" /&gt;It is a long list, and you only use specific products. You could then create your own list of values, to display only the products YOU work with. First of all, you would need to put those names or numbers in a textfile.&lt;/p&gt;  &lt;p&gt;&lt;img border="0" alt="Own LOV File" align="left" src="http://users.skynet.be/binabik/blog/lovfiletext.gif" width="188" height="238" /&gt;&lt;/p&gt;  &lt;br clear="all" /&gt;  &lt;p&gt; The first line of this file is the title. (If you don’t put anything here, then BO will call the list F1. Not very nice.) Once the file is ready, (containing the customers/products/customercodes), you can then link it to the universe you use by opening Business Objects. Go to the “Tools” menu and choose “Universes”. From the list of universes, select your own Universe.   &lt;br /&gt;&lt;img border="0" alt="Tools Menu" align="left" src="http://users.skynet.be/binabik/blog/toolsmenu.gif" width="264" height="227" /&gt;    &lt;br clear="all" /&gt;&lt;img border="0" alt="Universes Menu" align="left" src="http://users.skynet.be/binabik/blog/universesmenu.gif" width="286" height="393" /&gt;.    &lt;br clear="all" /&gt;And click the button “Lists of Values”    &lt;br /&gt;&lt;img border="0" alt="Custom list of values" src="http://users.skynet.be/binabik/blog/categoryinefashion.gif" width="318" height="400" /&gt;    &lt;br /&gt;Of course, you need to select :“Personal Data”, which automaticaly puts you in the “file selection” dialog :&lt;/p&gt;  &lt;p&gt;&lt;img border="0" alt="select a file" src="http://users.skynet.be/binabik/blog/selectfile.gif" width="298" height="378" /&gt;&lt;/p&gt;  &lt;p&gt;here, you browse to the right place on your computer, choose the right delimiter (I used an Enter..so I chose character) and don’t forget to select “First row contains column names”. Confirm with OK. Done.&lt;/p&gt;  &lt;p&gt;From now on, when you ask for a list of values on categories, you get :   &lt;br /&gt;&lt;img border="0" alt="New LOV File" align="left" src="http://users.skynet.be/binabik/blog/newlovfile.gif" width="302" height="258" /&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br clear="all" /&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Easy — no ?&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-113880757854222587?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/113880757854222587/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=113880757854222587' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/113880757854222587'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/113880757854222587'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2006/02/customised-list-of-values.html' title='Customised List of Values'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-113266687431225168</id><published>2005-11-22T14:41:00.000+01:00</published><updated>2005-11-22T14:41:14.336+01:00</updated><title type='text'>Scripting Word</title><content type='html'>&lt;p&gt;Sometimes you write a simple piece of code, and you just look at it&amp;hellip; and it is beautiful ;-) Here is how to use a template word document and modify it on-the-fly from ASP.. problem is you need the Word object on the Server, which is why I didn&amp;rsquo;t use it, but in stead.. I used an even greater tool &amp;mdash; but I didn&amp;rsquo;t write that one myself.. more about that later.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;lt;%&lt;br /&gt;const wdReplaceAll = 2&lt;br /&gt;Set objWord = server.CreateObject("Word.Application")&lt;br /&gt;Set objDoc = objWord.Documents.Open(server.mappath("/files") &amp;amp; "/inputfile.doc")&lt;br /&gt;Set objSelection = objWord.Selection&lt;br /&gt;objSelection.Find.Text = "strname"&lt;br /&gt;objSelection.Find.Forward = TRUE&lt;br /&gt;objSelection.Find.MatchWholeWord = TRUE&lt;br /&gt;objSelection.Find.Replacement.Text = "Peter De Rop"&lt;br /&gt;objSelection.Find.Execute ,,,,,,,,,,wdReplaceAll&lt;br /&gt;objSelection.Find.Text = "strtitle"&lt;br /&gt;objSelection.Find.Replacement.Text = "Modifying Word"&lt;br /&gt;objSelection.Find.Execute ,,,,,,,,,,wdReplaceAll&lt;br /&gt;objSelection.Find.Text = "strdate"&lt;br /&gt;objSelection.Find.Replacement.Text = date&lt;br /&gt;objSelection.Find.Execute ,,,,,,,,,,wdReplaceAll&lt;br /&gt;objDoc.SaveAs server.mappath("/files") &amp;amp; "/outputfile.doc"&lt;br /&gt;objWord.application.Quit False&lt;br /&gt;%&amp;gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-113266687431225168?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/113266687431225168/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=113266687431225168' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/113266687431225168'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/113266687431225168'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2005/11/scripting-word.html' title='Scripting Word'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-112850430296698626</id><published>2005-10-05T11:25:00.000+02:00</published><updated>2011-12-21T20:19:51.003+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reporting'/><category scheme='http://www.blogger.com/atom/ns#' term='BusinessObjects'/><category scheme='http://www.blogger.com/atom/ns#' term='context operators'/><title type='text'>Context operators in Business Objects (part 4)</title><content type='html'>&lt;strong&gt;Foreach and Forall revisited&lt;/strong&gt;&lt;br /&gt;=Average(&amp;lt;Sales revenue&amp;gt; ForEach &amp;lt;Quarter&amp;gt;) ForAll &amp;lt;Year&amp;gt;&lt;br /&gt;What does this formula do ?&lt;br /&gt;To understand it, first consider the following tables :&lt;br /&gt;&lt;img alt="Table Year and Sales Revenue" border="0" height="103" src="http://users.skynet.be/binabik/blog/table_yearsr.jpg" width="234" /&gt;&lt;br /&gt;&lt;img alt="Table with Year quarter and Sales Revenue" border="0" height="404" src="http://users.skynet.be/binabik/blog/table_yearqrtesr.jpg" width="325" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Imagine, we want to show the number 2,023,954 in the first table&amp;nbsp; (so we can compare the Sales revenue per year to the Average Sales Revenue per quarter for that year. With the standard calculations in Business Objects, such is impossible. This is the situation where you need Context Operators. When adding the formula =Average(&amp;lt;Sales revenue) to the table to the left, the result would be the same number as the column with the Sales Revenue itself, since in that table Business Objects can only consider that value to calculate the average. So we say the context of the average in that case is just the “sales revenue”. In case we wish to include the &amp;lt;Quarter&amp;gt; also into that calculation, we would need to include an input context : Foreach or In. Both will do the same in this case, the only difference is the way they work. Foreach is able to add dimensions to the calculation (key word is ADD) This means that in a Foreach, the dimensions already in the table are always taken into account. The formula would then become : =Average(&amp;lt;Sales revenue&amp;gt; foreach &amp;lt;Quarter&amp;gt;) This tells the average function to include the Quarter in the calculation together with Year which is already in the table. The “In” Operator can do the same, but then the function would have to be : =Average(&amp;lt;Sales Revenue&amp;gt; in (&amp;lt;Year&amp;gt;,&amp;lt;Quarter&amp;gt;)) this needs to be done because In ignores the dimensions already in the table. The resulting table : &lt;br /&gt;&lt;img alt="Year Quarter and average with context" border="0" height="100" src="http://users.skynet.be/binabik/blog/table_yearsrwithcontext.jpg" width="337" /&gt;This is what we call an Input Context. This kind of context operator is added inside the brackets.&lt;br /&gt;If we needed to show the number at the bottom&amp;nbsp; of the above table, (3,032,267) then we would need an output context, since we want to show the average for the entire Year. the formula would then be the one I stated at the beginning of this article : =Average(&amp;lt;Sales revenue&amp;gt; ForEach &amp;lt;Quarter&amp;gt;) ForAll &amp;lt;Year&amp;gt;&lt;br /&gt;This second operator is used in this case as the Output Context operator The same is possible with “In Report” as the output context. The resulting table :&lt;br /&gt;&lt;img alt="Table Year Sales Revenue with Output context" border="0" height="87" src="http://users.skynet.be/binabik/blog/table_yearsrwithoutcontext.jpg" width="323" /&gt;&lt;br /&gt;&lt;br /&gt;That should be the end of this topic.&lt;br /&gt;&lt;br /&gt;Did this information help you ? Look.. a 'Donate' button on the right side :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-112850430296698626?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/112850430296698626/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=112850430296698626' title='3 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/112850430296698626'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/112850430296698626'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2005/10/context-operators-in-business-objects.html' title='Context operators in Business Objects (part 4)'/><author><name>PDeRop</name><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>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-10701745.post-112238613253265402</id><published>2005-07-26T15:55:00.000+02:00</published><updated>2005-07-26T15:55:32.546+02:00</updated><title type='text'>Dreamweaver, Ubuntu PHP and MySQL</title><content type='html'>&lt;p&gt;First, let me remind you that I&amp;rsquo;m not an expert at Ubuntu, so the following is again, the result of a couple of buckets of sweat !&lt;/p&gt;&lt;p&gt;Have been fiddling around with PHP and MySQL for a while &amp;mdash; didn&amp;rsquo;t work out at first.&lt;/p&gt;&lt;p&gt;then I found why I couldn&amp;rsquo;t get them to work properly&amp;hellip;&lt;/p&gt;&lt;p&gt;1) MySQL is setup in such a way, you cannot connect to it from the outside.&lt;/p&gt;&lt;p&gt;solution : change the my.cnf file (on my system, it was located in /etc/mysql/)&lt;/p&gt;&lt;p&gt;find a line that says &amp;ldquo;skip-networking&amp;rdquo; (without the quotes) and put a # in front of it.&lt;br /&gt;there, now you can connect to MySQL from a graphical shell like MySQL Administrator on a Windows machine ;-) of course, MySqlCC on Linux is just as good.&lt;/p&gt;&lt;p&gt;2) PHP is set up to ignore MySQL completely&lt;/p&gt;&lt;p&gt;solution : un comment two lines in php.ini (on my system it was located in /etc/php4/apache2/) watch out though &amp;hellip; they give some sample lines, but one of them has&lt;br /&gt;a spelling mistake in it&amp;hellip; it should be extension=mysql.so and extension=gd.so for some reason, one of those lines is written msql.so.&lt;/p&gt;&lt;p&gt;3) rights have to be set correctly&lt;/p&gt;&lt;p&gt;I used these pages as a reference : &lt;a href="http://refdb.sourceforge.net/manual-0.8.6/x1314.html" target="_blank"&gt;sourceforge&lt;/a&gt;&amp;nbsp;and my favorite &lt;a href="http://dev.mysql.com/doc/mysql/en/adding-users.html" target="_blank"&gt;dev.mysql.com&lt;/a&gt;&lt;/p&gt;&lt;p&gt;4) Dreamweaver functions have to be installed on the server to be able to test your connection&lt;/p&gt;&lt;p&gt;somewhere on your windows computer, you should be able to find a folder called _mmServerScripts. This folder needs to be copied into the folder where your PHP application will be created (I don&amp;rsquo;t remember if DWMX2004 did it automatically &amp;mdash; but I remember copying it manually).&lt;/p&gt;&lt;p&gt;Some useful commands :&lt;/p&gt;&lt;p&gt;to restart mysql (you need to restart it when adding or changing userrights)&lt;br /&gt;sudo killall mysqld&amp;nbsp; (to stop it)&lt;br /&gt;sudo mysqld start (to start it)&lt;br /&gt;&lt;/p&gt;&lt;p&gt;when changing ini files and conf files you need to restart apache &amp;hellip; without restarting linux, this is done with :&lt;br /&gt;sudo /etc/init.d/apache2 restart&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-112238613253265402?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/112238613253265402/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=112238613253265402' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/112238613253265402'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/112238613253265402'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2005/07/dreamweaver-ubuntu-php-and-mysql.html' title='Dreamweaver, Ubuntu PHP and MySQL'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-112168970855357942</id><published>2005-07-18T14:28:00.000+02:00</published><updated>2005-07-19T11:40:37.486+02:00</updated><title type='text'>The movie copi�r</title><content type='html'>&lt;p&gt;I buy a lot of movies. For years, I bought tons of VCR cassettes. Being a real collector, I watched them each over a dozen times over. And then disaster struck. My VCR would destroy a video when you watched it and during the time you were watching pressed rewind. I do that all the time &amp;mdash; missed something, so a quick rewind to rehear what that person was saying. of course &amp;mdash; you don&amp;rsquo;t know the video was destroyed until you watch it a second time.&lt;/p&gt;&lt;p&gt;I found myself in the DVD Era pretty soon after that hideous mishap.&lt;/p&gt;&lt;p&gt;In the mean time, my DVD collection is growing &amp;mdash; I buy a lot of DVD&amp;rsquo;s. And again, as before, I watch them regularly. I salvaged some of my VCR&amp;rsquo;s as DIVX some time ago, but I never got round to putting them on a DVD &amp;mdash; so I was happy to find that it is quite easy to do. I found the procedure to convert DIVX into DVD on &lt;a href="http://www.afterdawn.com/guides/archive/convert_avi_to_dvd.cfm" target="_blank"&gt;Afterdawn&lt;/a&gt;. (You will need a powerful machine &amp;mdash; and a lot of time to get the job done though)&lt;/p&gt;&lt;p&gt;After the mishap with my VCR collection, I have grown somewhat paranoid.. So for the moment I&amp;rsquo;m creating backup DVD&amp;rsquo;s of some of my most loved DVD&amp;rsquo;s&amp;hellip; I didn&amp;rsquo;t know copying a DVD was so simple.&lt;/p&gt;&lt;p&gt;For those who want to know :&lt;/p&gt;&lt;p&gt;download two software packages : &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.free-codecs.com/download_soft.php?d=90&amp;amp;s=68" target="_blank"&gt;DVDdecryptor&lt;/a&gt;&amp;nbsp;: which reads and writes DVD&amp;rsquo;s (free)&lt;br /&gt;&lt;a href="http://files.dvdr-digest.com/encode/dvdshrink32setup.zip" target="_blank"&gt;DVDShrink&lt;/a&gt;&amp;nbsp;: which allows you to throw away the things you don&amp;rsquo;t need (subtitles and audio in albanian or Arabic or any other language you don&amp;rsquo;t understand) (free)&lt;/p&gt;&lt;p&gt;First use DVD decryptor in &amp;ldquo;File&amp;rdquo; Mode to get all of the files from the DVD decrypted and&amp;nbsp;zone removed onto the HD. Next use DVD Shrink to backup or reauthor the files on&amp;nbsp;your&amp;nbsp;disk &amp;hellip; last,&amp;nbsp;write the ISO file which is the result of DVD Shrink back to a DVD&amp;hellip; using DVD decryptor in Write ISO mode&amp;hellip;&lt;/p&gt;&lt;p&gt;easy as 123&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-112168970855357942?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/112168970855357942/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=112168970855357942' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/112168970855357942'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/112168970855357942'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2005/07/movie-copir.html' title='The movie copi�r'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-111581056843818705</id><published>2005-05-11T13:22:00.000+02:00</published><updated>2005-05-11T13:25:38.313+02:00</updated><title type='text'>SQL Reporting Services</title><content type='html'>&lt;p&gt;Last week, my coach told me, it would be a good idea to have a look at SQL Reporting Services. The Microsoft equivalent (as he called it) of Business Objects.&lt;/p&gt;&lt;p&gt;First thing I did was install a VMWare machine with SQL and the Reporting Services. Compared to installing Business Objects, this is quite straightforward. The installation procedure is very much like every installation procedure by Microsoft. The result was, that I had reporting services up and running in about 5 minutes. During this installation, the system asks you if you want to use the demo database.&lt;/p&gt;&lt;p&gt;Visual Studio.NET is required to create the reports &amp;mdash; a definite difference with Business Objects.&lt;/p&gt;&lt;p&gt;&lt;img height="318" alt="SQL reporting services" src="http://users.skynet.be/binabik/blog/sqlrep.jpg" width="300" border="0" / /&gt;&lt;/p&gt;&lt;p&gt;My Conclusions. SQL Reporting Services has nothing to do with Business Objects. They do somewhat the same, but their target audience is very different. In business Objects, an end user can build a report&lt;br /&gt;and use it as he or she wishes. In SQL Reporting Services, all a user can do with a report is set some filters and drill down on data. Building a report is done by a specialised service &amp;mdash; or some&lt;br /&gt;well trained people who design the RDL files. Thorough knowledge of SQL queries is a must, thorough knowledge of the database is a must &amp;mdash; knowledge of Visual Studio.NET helps out a lot. &lt;br /&gt;In business objects, the designer of a BO Universe gives objects logical names and groups objects together &amp;mdash; in these RDL files, the designer has to choose all of the fields from the database &amp;mdash; fields can be located anywhere.&lt;/p&gt;&lt;p&gt;To me it looks like SQL Reporting Services is the kind of thing where a central design team designs all of the reports.. users have to nag them to get reports changed &amp;mdash; BO is the kind of &lt;br /&gt;program where users can create their own reports and work a lot more flexibly/dangerously(they can make their own analysis errors)&amp;nbsp;&amp;mdash; but at a cost. Business Objects is not exactly a cheap tool.&lt;/p&gt;&lt;p&gt;anyway, learning more about SQL Reporting services as we speak.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-111581056843818705?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/111581056843818705/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=111581056843818705' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/111581056843818705'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/111581056843818705'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2005/05/sql-reporting-services.html' title='SQL Reporting Services'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-111376320741591922</id><published>2005-04-17T20:40:00.000+02:00</published><updated>2010-02-18T13:55:18.261+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SubQueries'/><category scheme='http://www.blogger.com/atom/ns#' term='BusinessObjects'/><category scheme='http://www.blogger.com/atom/ns#' term='inlist'/><title type='text'>SubQuery's in Business Objects</title><content type='html'>&lt;p&gt;The title may seem complex, but the issue is simple. &lt;/p&gt;  &lt;p&gt;Lets say you wanted to see the Sales Revenue per Store, but only for Stores located in a State that had a Sales Revenue over 7.000.000 $.&lt;/p&gt;  &lt;p&gt;In that case, you would have to produce a query that would return all of the States over 7.000.000 $, and based on that query, obtain all of the stores you needed. The Stores by themselves don’t have such a high Sales Revenue, so you can’t get this in one go.&lt;/p&gt;  &lt;p&gt;Here is how :&lt;/p&gt;  &lt;p&gt;&lt;img border="0" alt="A simple query Containing Sate, Storename and Sales Revenue" src="http://users.skynet.be/binabik/blog/bo_screen1.jpg" width="400" height="231" /&gt;&lt;/p&gt;  &lt;p&gt;This would return us the Stores and their Sales Revenue (all stores). So next, we need to perform a Filter on the State, setting a Sub-query as a source.&lt;/p&gt;  &lt;p&gt;&lt;img border="0" alt="Filter on state, using a Subquery" src="http://users.skynet.be/binabik/blog/bo_screen2.jpg" width="400" height="272" /&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://users.skynet.be/binabik/blog/bo_screen3.jpg"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="bo_screen3[2]" border="0" alt="bo_screen3[2]" src="http://users.skynet.be/binabik/blog/bo_screen3.jpg" width="256" height="545" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;The result is as follows :&lt;/p&gt;  &lt;p&gt;&lt;img border="0" alt="Result of the Query" src="http://users.skynet.be/binabik/blog/bo_screen4.jpg" width="400" height="145" /&gt;&lt;/p&gt;  &lt;p&gt;The stores listed only come from states with a Sales Revenue over 7000000$ — just as required.&lt;/p&gt;  &lt;p&gt;Great stuff isn’t it ?&lt;/p&gt;  &lt;p&gt;Beware : Universes have a parameter that limit the maximum inlist values. Furthermore, some databases have limits on the maximum inlist values.&lt;/p&gt;  &lt;p&gt;The most common number is 999. The parameter on the universe that sets this is : MAX_INLIST_VALUES and is set, by default to 256.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-111376320741591922?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/111376320741591922/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=111376320741591922' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/111376320741591922'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/111376320741591922'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2005/04/subquerys-in-business-objects.html' title='SubQuery&amp;#39;s in Business Objects'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-111322285644214070</id><published>2005-04-11T14:34:00.000+02:00</published><updated>2005-07-13T11:49:46.443+02:00</updated><title type='text'>topcom wireless lan on Linux</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;p&gt;Here is how to install a topcom wireless lan module under Ubuntu Linux (Hoary)&lt;br /&gt;I’m not a Linux specialist, so this is the result of a couple of buckets of sweat.&lt;/p&gt;&lt;p&gt;Installation succeeded on Hoary (Ubuntu Linux) 2.6.10-5-386&lt;br /&gt;First make sure you have all necessary packages.&lt;br /&gt;Under Ubuntu Linux, use Synaptic, to install :&lt;br /&gt;linux-wlan-ng&lt;br /&gt;wireless-tools&lt;br /&gt;linux-386&lt;br /&gt;linux-kernel-headers (for the version of kernel you have -- mine was 2.6.10-5-386)&lt;br /&gt;gcc&lt;br /&gt;gcc-3.3&lt;br /&gt;gcc-3.3-base&lt;br /&gt;libgcc1&lt;/p&gt;&lt;p&gt;yeah -- it's a long list ... but you will need it to compile...&lt;/p&gt;&lt;p&gt;next, surf to :&lt;br /&gt;&lt;a href="http://linux-lc100020.sourceforge.net/"&gt;http://linux-lc100020.sourceforge.net/&lt;/a&gt;&lt;br /&gt;to get it working, I downloaded version 0.13 -- I also tried&lt;br /&gt;it with version 0.14, but to no avail&lt;br /&gt;once you got the tar.gz file into a folder, unpack it (tar zxvf zd1201-0.13.tar.gz)&lt;br /&gt;don't compile yet, it won't work... you need more.&lt;/p&gt;&lt;p&gt;Next... tricky one...&lt;/p&gt;&lt;p&gt;download ipw2100-1.1.0.tgz from http://sourceforge.net (go through search and type ipw2100)&lt;br /&gt;untar it.. (tar zxvf ipw2100-1.1.0.tgz&lt;br /&gt;copy the files&lt;br /&gt;ieee80211.h&lt;br /&gt;and&lt;br /&gt;ieee80211_crypt.h&lt;br /&gt;into the headerfolder : /usr/src/linux-headers-2.6.10-5/drivers/net/wireless&lt;br /&gt;(this step is required for this specific wireless module)&lt;br /&gt;remember the file you untarred... zd1201-0.13.tar.gz ?&lt;br /&gt;go back to it and modify zd1201.c (yeah you really have to)&lt;br /&gt;replace every instance of ieee802_11 with ieee80211 -- shitty job...&lt;br /&gt;run make&lt;br /&gt;run make install&lt;br /&gt;copy the zd1201.fw and zd1201-ap.fw files into the&lt;br /&gt;/lib/hotplug/firmware folder and&lt;br /&gt;the /usr/lib/hotplug/firmware folders...&lt;br /&gt;run depmod -a&lt;br /&gt;run insmod zd1201.ko&lt;/p&gt;&lt;p&gt;(added thanks to Stephen Pike)&lt;/p&gt;&lt;p&gt;or -- if that gives an error on symbols&lt;br /&gt;use modprobe -v zd1201 instead&lt;/p&gt;&lt;p&gt;I then rebooted the system (yeah -- not really required)&lt;br /&gt;System&amp;gt;Administration&amp;gt;Networking should now list your wireless connection.&lt;br /&gt;change the properties to make it active and choose the right accesspoint&lt;br /&gt;use the iwconfig, dmesg and ifconfig commands to check your configuration..&lt;br /&gt;ifup wlan0 and ifdown wlan0 should allow you to start and stop the wlan module..&lt;/p&gt;&lt;p&gt;lots of luck !&lt;/p&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-111322285644214070?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/111322285644214070/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=111322285644214070' title='1 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/111322285644214070'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/111322285644214070'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2005/04/topcom-wireless-lan-on-linux.html' title='topcom wireless lan on Linux'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-111204047719645703</id><published>2005-03-28T22:07:00.000+02:00</published><updated>2005-03-28T22:07:57.196+02:00</updated><title type='text'>Guestbook babysite</title><content type='html'>&lt;p&gt;The guestbook is open.&lt;/p&gt;&lt;p&gt;&lt;a href="http://users.skynet.be/binabik"&gt;http://users.skynet.be/binabik&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-111204047719645703?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/111204047719645703/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=111204047719645703' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/111204047719645703'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/111204047719645703'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2005/03/guestbook-babysite.html' title='Guestbook babysite'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-111187886063283275</id><published>2005-03-27T00:14:00.000+01:00</published><updated>2005-03-27T00:21:21.403+01:00</updated><title type='text'>Website of Jarne</title><content type='html'>&lt;p&gt;I put a small website online for &lt;a href="http://users.skynet.be/binabik/" target="_blank"&gt;our son Jarne&lt;/a&gt;. There are some pictures from his birthcard there, plus a photogallery. Enjoy.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-111187886063283275?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/111187886063283275/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=111187886063283275' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/111187886063283275'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/111187886063283275'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2005/03/website-of-jarne.html' title='Website of Jarne'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-111182761535484109</id><published>2005-03-26T09:54:00.000+01:00</published><updated>2005-03-26T10:00:15.356+01:00</updated><title type='text'>Yeah Baby !</title><content type='html'>On 24 March 2005 (as in the day before yesterday) my baby son was born.&lt;br /&gt;His name is Jarne, he weighs 3Kg and measures 50cm.&lt;br /&gt;One of these days I will post some pictures.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-111182761535484109?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/111182761535484109/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=111182761535484109' title='1 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/111182761535484109'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/111182761535484109'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2005/03/yeah-baby.html' title='Yeah Baby !'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-111149443449735210</id><published>2005-03-22T13:27:00.000+01:00</published><updated>2005-03-22T13:27:14.496+01:00</updated><title type='text'>The best Raidlevel (Part 2)</title><content type='html'>&lt;p&gt;So as it turns out, Raid 5 is a very good Raidlevel, but it is not very good at writing. Raid 1+0 is very good, but it is rather expensive. Is that all there is to it ? No. If you have read one of my previous articles, you might have read that a harddrive&amp;rsquo;s speed is influenced by Latency and Seek. If you combine that story with this particular story, then you might find out there is more to it.&lt;/p&gt;&lt;p&gt;The two main ways of communicating with a disk are Sequential and Random. In a sequential environment, large chunks of data are being transferred (e.g. : 64K or 128K or bigger) This occurs most on file and print servers. In a random environment, larege amounts of small chunks of data are being transferred to the disk (e.g. 4k) This occurs most on a database server.&amp;nbsp; If you think a little further on this, you might consider that Raid 5 has to do about twice the work for writing a chunk of data compared to Raid 1+0 (Raid 5 has to read existing data, read existing parity, calculate the parity, write new data, write new parity). &lt;/p&gt;&lt;p&gt;In that case you might come to the same conclusion as &lt;a href="http://www.sqljunkies.com/Article/D1B7C756-4725-4D31-A53D-C0A47976E6BB.scuk" target="_blank"&gt;Database manufacturers and database gurus&lt;/a&gt;. Raid 5 is not a good thing to combine with a database. It will flood the Raid 5 with small chunks of data and that poor Raid 5 has to do twice the work a Raid 1+0 has to do at writing.&lt;/p&gt;&lt;p&gt;A clear conclusion is : Avoid Raid 5 in a database environment. But most people forget that Exchange is also a database.&lt;/p&gt;&lt;p&gt;My recommendation : If you are going to install a server, and you are considering to install 3 disks in Raid 5 and put your exchange server on it &amp;mdash; why not consider a little further, add 1 extra disk, use Raid 1+0 in stead. The result is remarkable : Twice the speed, Twice the fault tollerance, twice the speed at reconstruction, more than twice the speed during a disk failure.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-111149443449735210?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/111149443449735210/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=111149443449735210' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/111149443449735210'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/111149443449735210'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2005/03/best-raidlevel-part-2.html' title='The best Raidlevel (Part 2)'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-111148530987923167</id><published>2005-03-22T10:55:00.000+01:00</published><updated>2005-03-22T10:59:27.106+01:00</updated><title type='text'>Good and Bad Popups</title><content type='html'>&lt;p&gt;So you want to use popups ? Of course you do, opening a window is a right for everybody &amp;mdash; but you might have discovered, that there are things around called popup blockers.&lt;/p&gt;&lt;p&gt;Both Internet Explorer and Mozilla Firefox include tools to block popups, furthermore, software exists that blocks all popups. As a programmer, it is impossible to take these last&amp;nbsp;into account.&lt;/p&gt;&lt;p&gt;So, what is the difference between good and bad popups.&lt;/p&gt;&lt;p&gt;When an html document is opened in the browser, much depends on the zone where a page is opened. If a document is opened in the zone of the local computer, there is a small difference between Internet Explorer and Firefox. Internet Explorer will consider all scripting in a page that is launched in the Local Computer Zone as a potential hazard, and will show a warning.&lt;/p&gt;&lt;p&gt;&lt;img height="106" alt="Popup warning" src="http://users.skynet.be/binabik/blog/popupwarning.gif" width="398" align="left" border="0" /&gt;&lt;br clear="all"&gt;Firefox does not do this. Once the page is put on the internet, this problem does not exist (&lt;a href="http://users.skynet.be/binabik/good.htm" target="_blank"&gt;example&lt;/a&gt;). &lt;/p&gt;&lt;p&gt;A &lt;strong&gt;good popup&lt;/strong&gt;, is launched by a &lt;a href="http://users.skynet.be/binabik/good.htm" target="_blank"&gt;click-event.&lt;/a&gt;&amp;nbsp;or a &lt;a href="http://users.skynet.be/binabik/doubleclick.htm" target="_blank"&gt;doubleClick event&lt;/a&gt;&lt;/p&gt;&lt;p&gt;A &lt;strong&gt;bad popup&lt;/strong&gt; is launched by an &lt;a href="http://users.skynet.be/binabik/bad.htm" target="_blank"&gt;onLoad event&lt;/a&gt;,&amp;nbsp;&amp;nbsp;&lt;a href="http://users.skynet.be/binabik/bad2.htm" target="_blank"&gt;onMouseOver event&lt;/a&gt;, &lt;a href="http://users.skynet.be/binabik/bad3.htm" target="_blank"&gt;onContextMenu event&lt;/a&gt;&amp;nbsp;or&amp;nbsp;&lt;a href="http://users.skynet.be/binabik/mouseout.htm" target="_blank"&gt;onMouseOut event&lt;/a&gt;&lt;a href="http://users.skynet.be/binabik/mouseout.htm" target="_blank"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;This means that most &amp;ldquo;accidental&amp;rdquo; calls of popups are blocked. The only one that surprised me somewhat is the onContextMenu. But then again, right clicking a link is something we do to force&lt;br /&gt;the opening of a link in a different target window, so it makes sense.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-111148530987923167?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/111148530987923167/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=111148530987923167' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/111148530987923167'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/111148530987923167'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2005/03/good-and-bad-popups.html' title='Good and Bad Popups'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-111114996770349966</id><published>2005-03-18T13:46:00.000+01:00</published><updated>2005-03-18T13:46:07.703+01:00</updated><title type='text'>The best Raidlevel (Part 1)</title><content type='html'>&lt;p&gt;Ask 10 system engineers, which is the best Raid level and 8 will answer : Raid 5. The other two will ask the smart question :&amp;ldquo;for which application ?&amp;rdquo;&lt;/p&gt;&lt;p&gt;This is the start of a somewhat long article I think. The discussion is long and interesting.&lt;/p&gt;&lt;p&gt;When you try to evaluate the different Raid levels, you should be concerned with the kind of data transfers that will occur on it. Is it going to be a system with mostly Sequential transfers like a File-Server ? or is it going to be a system with mostly Random transfers like a Database Server ? Or is it going to be a mixture, and in that mixture, which kind of transfer occurs most ?&lt;/p&gt;&lt;p&gt;First, lets assume we are going to perform 400 Writes and 600 reads on a series of Raidsets. This means that the system will be working with mostly Reads, but still quite some Writes to deal with as well.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;What would be the result for a Raid 0&lt;/strong&gt; ? (afterwards we can compare with Raid 1+0 and Raid 5&lt;/p&gt;&lt;p&gt;Let&amp;rsquo;s assume we have three Raid 0 Raidsets. each totalling in 72 GB Net Storage&lt;/p&gt;&lt;p&gt;In a Raidset with 2 disks, the total number of Reads and Writes gives you the number of IO&amp;rsquo;s so in this case, the number of IO&amp;rsquo;s (for 400 writes and 600 reads) is 1000 IO&amp;rsquo;s&lt;br /&gt;When you only have 2 disks, you split those IO&amp;rsquo;s across the 2 disks, giving a total of 500 IO&amp;rsquo;s /disk&lt;/p&gt;&lt;p&gt;When we have 3 disks, we gain some speed because the total number of IO&amp;rsquo;s can be split across more disks. This gives you now 250 IO&amp;rsquo;s / disk&lt;/p&gt;&lt;p&gt;With&amp;nbsp;8 disks, the result will be 125 IO&amp;rsquo;s&amp;nbsp;/ disk&lt;/p&gt;&lt;p&gt;2 disks of 36GB = 1000/2 = 500 IO&amp;rsquo;s per disk&lt;br /&gt;4&amp;nbsp;disks of 18GB = 1000/4 = 250 IO&amp;rsquo;s per disk&lt;br /&gt;8&amp;nbsp;disks of 9GB = 1000/8 = 125 IO&amp;rsquo;s per disk&lt;/p&gt;&lt;p&gt;&lt;strong&gt;And what about Raid 1+0 ?&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;In a Raid 1+0, everything that has to be written has to be written twice. Reads can be performed across all disks.&amp;nbsp; &lt;br /&gt;Since we now have to take into account the writing, the number of IO&amp;rsquo;s to process is (400*2)+600 = 1400 IO&amp;rsquo;s / 4 =&amp;nbsp; 350 IO&amp;rsquo;s /disk. &lt;br /&gt;With 8 disks, this will give you 175 IO&amp;rsquo;s /disk&amp;nbsp; With 16 disks : 87 IO&amp;rsquo;s /disk&lt;/p&gt;&lt;p&gt;4 disks of 36GB = 1400 /4 = 350 IO&amp;rsquo;s per&amp;nbsp;disk&lt;br /&gt;8 disks of 18GB = 1400/8 = 175 IO&amp;rsquo;s per disk&lt;br /&gt;16 disks of 9GB = 1400/16 = 87 IO&amp;rsquo;s per disk&lt;/p&gt;&lt;p&gt;&lt;strong&gt;And Raid 5 ?&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Raid 5 is a different story. In raid 5, each time you write something, the parity has to be calculated and written to the disks. But more importantly, to be able to write the parity and the data, a Raid 5 has&lt;br /&gt;to read the data and parity that exists on the disk already &amp;ndash;&amp;nbsp; change it and write the data. The result is that the number of IO&amp;rsquo;s on Raid 5 for this same writing is much higher.&lt;/p&gt;&lt;p&gt;For 600 Reads and 400 writes, Raid 5 will take (4 * 400) + 600 = 2200 IO&amp;rsquo;s&lt;/p&gt;&lt;p&gt;3 disks of 36GB&amp;nbsp; = 2200 / 3 = 733 IO&amp;rsquo;s&amp;nbsp;/ disk&lt;br /&gt;5 disks of 18GB = 2200/5 = 440 IO&amp;rsquo;s&amp;nbsp;/ disk&lt;br /&gt;9 disks of 9 GB = 2200/9 = 244 IO&amp;rsquo;s / disk&lt;/p&gt;&lt;p&gt;So, it is true, that&amp;nbsp;3 disks in Raid 5 is not as expensive to have fault tollerance&amp;hellip; but is it really cheap ? If I add 1 extra disk to it and create a Raid 1+0 in stead of a Raid 5, I get the same capacity &amp;ndash;&amp;nbsp; I double my speed and I double my fault tollerance. (in a Raid 1+0 with 4 disks, when you have a second disk failing, you still have a 2/3 chance your system is up and running. With Raid 5, your system is down.&lt;/p&gt;&lt;p&gt;More on a next issue.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-111114996770349966?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/111114996770349966/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=111114996770349966' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/111114996770349966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/111114996770349966'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2005/03/best-raidlevel-part-1.html' title='The best Raidlevel (Part 1)'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-111089710642091148</id><published>2005-03-15T15:31:00.000+01:00</published><updated>2005-03-15T15:31:46.420+01:00</updated><title type='text'>Raid 0+1 is not 1+0</title><content type='html'>&lt;p&gt;For years I&amp;rsquo;ve been trying to explain the difference between these two, only to find a lot of people thinking it is the same thing.&amp;nbsp;Here is the difference:&lt;/p&gt;&lt;p&gt;&lt;img height="116" alt="Raid 0 + 1" src="http://users.skynet.be/binabik/blog/raid01.gif" width="294" align="left" border="0" /&gt;In a Raid 0+1 system, first a Raid 0 is applied on the disks. The result of this operation is speed. Next, on top of the Raid 0 (usualy done by software) a second Raid is applied, which is a Raid 1. The result of this second Raid is for security. When you look at this configuration, you might think everything is nice and dandy, but this is actually the worst kind of config, and is never put on hardware Raid controllers. This is very bad. First : Security &amp;ndash; When one disk fails, the system has 2 disks down (both halves of a Raid 0) this means that only the remaining Raid 0 is still on-line. If a disk fails in that Raid 0 you are in SH.T. This means that only the second disk of the failed Raid 0 can fail (1 chance out of 3) and your system is still working. Second :&amp;nbsp; Speed. Again, if the system goes bad, and a disk fails, you are working at half the speed. And when you restore, the system has to copy the RaidSet from one Raid 0 onto the other Raid 0 (all disks have to work).&lt;/p&gt;&lt;p&gt;A much cleaner way to do this is Raid 1 + 0 :&lt;/p&gt;&lt;p&gt;&lt;img height="116" alt="Raid 1 + 0" src="http://users.skynet.be/binabik/blog/raid10.gif" width="294" align="left" border="0" /&gt;Two Raid 1 are created. Across those two Raid 1, a&amp;nbsp;Raid 0 is created. The result may not be obvious at first, but if you fail a disk, the system still works on 3 disks(faster) if a disk fails, 2 chances out of 3, your system is still ok. When you are rebuilding, it just copies 1 disk (of the failed mirror) to the other. &lt;/p&gt;&lt;p&gt;This is the kind of Raidset which is usually implemented in hardware Raid controllers (if yours does not&amp;hellip; get another).&lt;/p&gt;&lt;p&gt;HP (Compaq) has been advertising for years that they were using 0+1 whereas they were really using 1+0 which is far superior.&lt;/p&gt;&lt;p&gt;You can tell very easily if your system is using 0+1 or 1+0 .. if you remove a disk and put it back.. if only 2 disks are working to perform the restore : 1+0 .. otherwise 0+1.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-111089710642091148?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/111089710642091148/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=111089710642091148' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/111089710642091148'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/111089710642091148'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2005/03/raid-01-is-not-10.html' title='Raid 0+1 is not 1+0'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-111081741083760687</id><published>2005-03-14T17:23:00.000+01:00</published><updated>2010-04-02T08:24:10.646+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reporting'/><category scheme='http://www.blogger.com/atom/ns#' term='BusinessObjects'/><category scheme='http://www.blogger.com/atom/ns#' term='context operators'/><title type='text'>Context operators in Business Objects (part 3)</title><content type='html'>&lt;p&gt;In Body and In Report.&lt;/p&gt;  &lt;p&gt;A nice quirk in Business Objects, is the calculation in %. It adds an extra column to your table, which contains a formula :&lt;/p&gt;  &lt;p&gt;=&amp;lt;Sales revenue&amp;gt;/Sum(&amp;lt;Sales revenue&amp;gt;) ForAll &amp;lt;Year&amp;gt; &lt;/p&gt;  &lt;p&gt;which is based on the ForAll operator. The result is the following table :&lt;img border="0" alt="Sales revenue per Year" align="left" src="http://users.skynet.be/binabik/blog/3yearsr.gif" width="325" height="109" /&gt;    &lt;br clear="all" /&gt;&lt;/p&gt;  &lt;p&gt;When you add a dimension to this table (let’s say the Quarter)&lt;/p&gt;  &lt;p&gt;&lt;img border="0" alt="Sales Revenue per Year and Quarter" src="http://users.skynet.be/binabik/blog/3yearquartersr.gif" width="438" height="296" /&gt;&lt;/p&gt;  &lt;p&gt;   &lt;br clear="all" /&gt;I don’t know, but I think my counting still works.. it now says 100 % where it should be closer to 450 %. This is due to the fact that the context operator is still the same. It should now be     &lt;br /&gt;=&amp;lt;Sales revenue&amp;gt;/Sum(&amp;lt;Sales revenue&amp;gt;) ForAll (&amp;lt;Year&amp;gt; , &amp;lt;Quarter&amp;gt;). But Business Objects does not update the formula. What you can do now is remove the column with the calculation and reinsert it. But hey, there is a better way :&lt;/p&gt;  &lt;p&gt;Insert the following formula :   &lt;br /&gt;=&amp;lt;Sales revenue&amp;gt; In Body /Sum(&amp;lt;Sales revenue&amp;gt;) In Report&lt;/p&gt;  &lt;p&gt;This means that BO will now take the sales revenue in the Body of the table which is 2.6 million for the first, 2,27 million for the second item etc. and divides that number by the total Sales Revenue. I wonder why the people who built this program did not use this particular formula. I found it in their own documentation.&amp;#160; Oh.. before I forget..here is the result.&lt;/p&gt;  &lt;p&gt;&lt;img border="0" alt="Solved" src="http://users.skynet.be/binabik/blog/3yearquartersrbetter.gif" width="438" height="292" /&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;More on a next item !&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-111081741083760687?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/111081741083760687/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=111081741083760687' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/111081741083760687'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/111081741083760687'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2005/03/context-operators-in-business-objects_14.html' title='Context operators in Business Objects (part 3)'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-111054472043074644</id><published>2005-03-11T13:38:00.000+01:00</published><updated>2010-04-02T08:24:59.222+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reporting'/><category scheme='http://www.blogger.com/atom/ns#' term='BusinessObjects'/><category scheme='http://www.blogger.com/atom/ns#' term='context operators'/><title type='text'>Context operators in Business Objects (part 2)</title><content type='html'>&lt;p&gt;&lt;strong&gt;Foreach and Forall&lt;/strong&gt; allow you to add or remove dimensions to or from a calculation.&lt;/p&gt;  &lt;p&gt;&lt;img border="0" alt="Foreachtable" align="left" src="http://users.skynet.be/binabik/blog/foreachtable.gif" width="325" height="86" /&gt;When you look at the table to the left, you will see that the third column shows the same as the column next to it. The third column contains Min(&amp;lt;Sales revenue&amp;gt;), still it returns the same, which is logical. The context of the calculation is just “Year”. This means that The minimum Sales Revenue based on one number returns only that number.&lt;/p&gt;  &lt;p&gt;With the ForEach operator, we can now add a dimension to the context. The formula is now : Min(&amp;lt;Sales revenue&amp;gt; foreach &amp;lt;Quarter&amp;gt;). The minimum is now calculated per Quarter as well. Returning the following table :&lt;/p&gt;  &lt;p&gt;&lt;img border="0" alt="Table showing minimum in the context of Year and Quarter" src="http://users.skynet.be/binabik/blog/foreachtable.gif" width="325" height="86" /&gt;&lt;/p&gt;  &lt;p&gt;This means, that (for the calculation) the quarter has been included in the calculation.&lt;/p&gt;  &lt;p&gt;Forall is the exact opposite. If you have a table containing Year, Quarter,Month, Sales Revenue, then min(&amp;lt;Sales Revenue&amp;gt; forall &amp;lt;Month&amp;gt;) will remove Quarter from the equation and return the minimum by year and Quarter only.&lt;/p&gt;  &lt;p&gt;Next issue : &lt;/p&gt;  &lt;p&gt;In Body and In Report, which are interesting when you use percentages.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-111054472043074644?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/111054472043074644/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=111054472043074644' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/111054472043074644'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/111054472043074644'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2005/03/context-operators-in-business-objects_11.html' title='Context operators in Business Objects (part 2)'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-111027083755502241</id><published>2005-03-08T09:33:00.000+01:00</published><updated>2011-12-11T20:19:37.466+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Reporting'/><category scheme='http://www.blogger.com/atom/ns#' term='BusinessObjects'/><category scheme='http://www.blogger.com/atom/ns#' term='context operators'/><title type='text'>Context operators in Business Objects (part 1)</title><content type='html'>This is quite a topic. It is not covered in any of the courses, but the possibilities it offers are quite impressive.&lt;br /&gt;To start with, BO offers&amp;nbsp;7 context operators :&lt;br /&gt;&lt;ul&gt;&lt;li&gt;in&lt;/li&gt;&lt;li&gt;Foreach&lt;/li&gt;&lt;li&gt;Forall&lt;/li&gt;&lt;li&gt;in Body&lt;/li&gt;&lt;li&gt;in Block&lt;/li&gt;&lt;li&gt;in Report&lt;/li&gt;&lt;li&gt;currentpage&lt;/li&gt;&lt;/ul&gt;In this first part, I shall be explaining the &lt;strong&gt;In operator&lt;/strong&gt;.&lt;br /&gt;Let’s say you show a table (based on the e-Fashion Universe) containing Year, Quarter and Sales Revenue. As a default, the Sales Revenue is shown “in the context” of Year and Quarter. If you were to create a table with only the year and Sales Revenue, then the context of the Sales Revenue would be the Year. This is what we call the “&lt;strong&gt;Input Context&lt;/strong&gt;”.&lt;br /&gt;When you create a table, containing Year, Quarter and Sales Revenue and you create a Break on the table. next you create a sum on the Sales Revenue, then BO will write a sum at the end of each Year. This is called the “&lt;strong&gt;Output context&lt;/strong&gt;”.&lt;br /&gt;&lt;img align="left" alt="Table with year quarter and salesrevenue with a break on Year" border="0" height="274" src="http://users.skynet.be/binabik/blog/table.gif" width="223" /&gt;&lt;br /&gt;Let’s now say that you need to show that minimum in an extra column, so you can compare the Sales Revenue to the Minimum Sales Revenue for that Year.&lt;br /&gt;Then the formula would be :&lt;br /&gt;Min(&amp;lt;Sales Revenue&amp;gt; In (&amp;lt;Year&amp;gt;,&amp;lt;Quarter&amp;gt;)) In &amp;lt;Year&amp;gt;&lt;br /&gt;The first “In” indicates that the Minimum Sales Revenue has to be calculated in function of Year and Quarter, but has to be shown by Year, which is taken care of by the second “In” operator.&lt;br /&gt;In a next item : Foreach and Forall&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-111027083755502241?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/111027083755502241/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=111027083755502241' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/111027083755502241'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/111027083755502241'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2005/03/context-operators-in-business-objects.html' title='Context operators in Business Objects (part 1)'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-110994731988230244</id><published>2005-03-04T15:38:00.000+01:00</published><updated>2005-03-04T15:41:59.883+01:00</updated><title type='text'>Bug in Business Objects 6.0</title><content type='html'>If you read previous articles, you may know that I play around a lot with Business Objects. Once and again, I run into strange bugs, and when I do, I write a little article about it. Here is another weird bug in BO 6.&lt;br /&gt;&lt;br /&gt;When you save a document (including different reports) as HTML, all works out nicely. But when you open that report in Internet Explorer, and click the download link in the bottom right corner, to lauch BO to view the document, somehow it messes up the entire layout of the buttonbars. Each Buttonbar shows on its own line. Probably one of those things that need solving in version XII -- version XI does not include a Windows base reporting tool -- only web.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-110994731988230244?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/110994731988230244/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=110994731988230244' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/110994731988230244'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/110994731988230244'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2005/03/bug-in-business-objects-60.html' title='Bug in Business Objects 6.0'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-110985131115701339</id><published>2005-03-03T12:58:00.000+01:00</published><updated>2005-03-03T13:01:51.160+01:00</updated><title type='text'>Dreamweaver and RSS</title><content type='html'>In a previous article, I wrote about the RSS features of Firefox. Of course, being into webdesign, cool tools like a tool to integrate RSS and Dreamweaver gets me fantasizing. Going to test it soon, but if you can't wait&lt;br /&gt;&lt;a href="http://www.interaktonline.com/Products/Dreamweaver-Extensions/MXRSSReader-Writer/Overview/?from=gg_rss"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://www.interaktonline.com/Products/Dreamweaver-Extensions/MXRSSReader-Writer/Overview/?from=gg_rss"&gt;go to the download site&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Ever wanted to syndicate web content fast and easily? MX RSS Reader-Writer is a 2 in 1 solution. First of all, it allows you to import RSS (Really Simple Syndication) files and integrate them in your website design and secondly it allows you to export database information into RSS format. This way you will be able to increase the traffic on your site by gathering and distributing your news in a wisely manner.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-110985131115701339?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/110985131115701339/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=110985131115701339' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/110985131115701339'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/110985131115701339'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2005/03/dreamweaver-and-rss.html' title='Dreamweaver and RSS'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-110960091182650337</id><published>2005-02-28T15:18:00.000+01:00</published><updated>2005-02-28T15:28:31.826+01:00</updated><title type='text'>Calculating the speed of harddisks (part 6)</title><content type='html'>&lt;p&gt;What about Raid you might ask ?&lt;br&gt;&lt;br /&gt;Indeed, when you put a harddrive together with a couple of other drives, it&lt;br /&gt;improves the performance. The best way, by far, is Raid. Some Raidlevels will give you better performance, while others improve security above all else.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;b&gt;Raid 0&lt;/b&gt;&lt;br&gt;&lt;br /&gt;Raid 0 is of course the most dangerous Raidset, and should be avoided in any situation where the data is critical. But when it comes to performance, it is the best there is. Multiply the speed of one disk, times the number of disks. If that number does not exceed the speed of your scsi bus, then you are smiling.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;b&gt;Raid 1 and 1+0&lt;/b&gt;&lt;br&gt;&lt;br /&gt;Raid 1 and 1+0 are often referred to as being the most expensive Raidsets. This is partly true, since you have to buy twice the number of HD's to get half the capacity. But they deliver outstanding performance.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;consider this :&lt;br&gt;&lt;br /&gt;1 disk delivers 20MB/s. When configured in a mirror, the system is able to do "Split Seeks" which means that it can read from two disks at the same time. So 2 disks give you 40MB/s when reading. When writing, the speed will not go up, since everything has to be written twice. If your diskset performs 60 writes and 40 Reads, then you get 180 IO's. On a Raid 0 this would have been 100 IO's.. but on Raid 5, it would require 220 IO's -- I will clarify on a next installment. Cheers !&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-110960091182650337?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/110960091182650337/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=110960091182650337' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/110960091182650337'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/110960091182650337'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2005/02/calculating-speed-of-harddisks-part-6.html' title='Calculating the speed of harddisks (part 6)'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-110924786737435067</id><published>2005-02-24T13:17:00.000+01:00</published><updated>2005-02-24T13:27:13.520+01:00</updated><title type='text'>Calculating the speed of harddrives (part 5)</title><content type='html'>&lt;p&gt;So, what about ATA disks. The thing with ATA disks, is that they are what they call "blocking" devices. This means, that only one disk per channel can communicate with the controller at the one time. Since most computers have two channels, two devices can talk to the controller. (SCSI is also referred to as "Non-Blocking device"). This is the reason why programs like Nero burning rom will recommend you to put your primary CD on one channel and your writer on a different channel.&lt;/p&gt;&lt;p&gt;An average ATA harddrive has a very good latency, but a rather high seek. This means that sequential transfers can be faster than on SCSI disks. But when you run a database on such a thing, it turns bad.&lt;br /&gt;Secondly, ATA harddrives have a very low MTBF (Mean time between/before Failure), which means that the harddrive will not work for very long without critical errors. This is the reason why servers containing ATA harddrives usualy have only 1 year of waranty... and if it says 3 years, usualy this waranty does not include the Harddrive. But as long as you are running sequential transfers... ATA can a good solution. Don't burden your HD with a database though... certainly not on the harddrives used in portables, which have an even higher seek.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-110924786737435067?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/110924786737435067/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=110924786737435067' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/110924786737435067'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/110924786737435067'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2005/02/calculating-speed-of-harddrives-part-5.html' title='Calculating the speed of harddrives (part 5)'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-110914722761891780</id><published>2005-02-23T09:27:00.000+01:00</published><updated>2005-02-23T09:27:07.616+01:00</updated><title type='text'>Cool Software for PocketPC</title><content type='html'>&lt;p&gt;I installed DockWare on my Pocketpc, it turns my iPaq into a standing calendar&amp;hellip; the freeware is nice, no nag-screens, but you have to start it manualy and it is not as configurable. Fun software, which makes your pocket pc next to your computer actualy serve a purpose.&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pocketpcfreewares.com/en/index.php?soft=73"&gt;PocketPCFreewares - DockWare&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;DockWare is a calendar/clock that you can use while your PPC is cradled. It allows you to use your pictures or drawings as a background and/or as a slide show.&lt;br /&gt;There is a "Pro" version ($9.95) available allowing you to add a time interval to the picture rotation, to manage the text and background colors and to add a password option.&lt;/em&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-110914722761891780?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/110914722761891780/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=110914722761891780' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/110914722761891780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/110914722761891780'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2005/02/cool-software-for-pocketpc.html' title='Cool Software for PocketPC'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-110908012170504761</id><published>2005-02-22T13:42:00.000+01:00</published><updated>2005-03-09T09:13:04.410+01:00</updated><title type='text'>Calculating the speed of harddrives (part 4)</title><content type='html'>So, what can we conclude. SCSI is a nice thing, because the multitasking allows you to work with multiple harddrives at the same time. One harddrive is very fast, but not the speed of your SCSI bus. To get the most out of your SCSI bus, you need to combine multiple HD's e.g. with Raid. When you have an environment which is mostly sequential, then setting the blocksize higher than 64KB will give you very good performance. Combining 3 or 4 HD's will multiply the speed.&lt;br /&gt;&lt;br /&gt;Random environments will need to take into account that the speed of the controller is not an issue when looking at the speed of your datatransfers. The speed of the harddrives is so low, that any controller can accomodate the transfer..&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-110908012170504761?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/110908012170504761/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=110908012170504761' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/110908012170504761'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/110908012170504761'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2005/02/calculating-speed-of-harddrives-part-4.html' title='Calculating the speed of harddrives (part 4)'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-110899859560423258</id><published>2005-02-21T16:04:00.000+01:00</published><updated>2005-02-21T16:09:55.606+01:00</updated><title type='text'>Calculating speed of harddrives (Part 3)</title><content type='html'>So, what about Random transfer ? As I mentioned earlier (Part 1), the speed of a harddrive depends on 2 factors : Average Latency  and Average Seek. On an average SCSI harddrive, the Seek = 3 Milliseconds. But when you need to look for your data on a totally different place on the harddrive, both latency and seek need to be taken into account. So 6ms for each access to the HD in case of Random. 1 I/O takes 6ms, in 1 second, 1000/6 = 166 IO's/second. As I mentioned earlier, databases transfer small chunks of data lets say : 4KB. 166*4 = 664KB/s. you would need some 640 harddisks to reach the maximum speed of Ultra 4 SCSI.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-110899859560423258?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/110899859560423258/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=110899859560423258' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/110899859560423258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/110899859560423258'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2005/02/calculating-speed-of-harddrives-part-3.html' title='Calculating speed of harddrives (Part 3)'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-110897943390870319</id><published>2005-02-21T10:39:00.000+01:00</published><updated>2005-02-21T10:50:33.910+01:00</updated><title type='text'>Calculating speed of harddrives (Part 2)</title><content type='html'>&lt;p&gt;So what does this add up to? When you want to know the speed, you need to know what data transfer type you are using. Sequential ? or Random ? An average fileserver and printservers use Sequential transfer, which occurs most when you transfer big files in one go. Database servers, like Oracle, SQL or Exchange, use Random transfer. They transfer small chunks of data (a zip code being updated, a mail message of 2KB being transferred.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;In a sequential environment, only the Latency of the harddisk really counts. So lets imagine, we are going to transfer 64KB Blocks to a harddrive, with a Latency of 3 Milliseconds. The harddrive can have a maximum of 1 I/O (input or output) every 3 Milliseconds, so in 1 second, that is : 1000/3 = 333 IO's/second. 333 * 64KB = 21312 KB/s, which is equal to 20MB /s. This harddrive has a peak transfer rate of 20MB/s. You will need to attach 16 of them to reach 320MB/s (Ultra 4 SCSI).&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-110897943390870319?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/110897943390870319/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=110897943390870319' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/110897943390870319'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/110897943390870319'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2005/02/calculating-speed-of-harddrives-part-2.html' title='Calculating speed of harddrives (Part 2)'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-110884354659457638</id><published>2005-02-19T21:05:00.000+01:00</published><updated>2005-02-19T21:05:46.593+01:00</updated><title type='text'>Calculating speed of harddrives (Part 1)</title><content type='html'>&lt;p&gt;How fast is a harddisk? Some people will answer the speed of the bus to which the harddrive is attached. Ultra ATA should give you some 133MB/s, Wide Ultra 4 or Ultra 320 SCSI should give you&lt;br /&gt;320MB/s, but never in your life will you get that kind of speed from only one harddisk. So, what is the speed then.&lt;/p&gt;&lt;p&gt;To find this, you need to know two things about the harddisk :&amp;nbsp; Latency and Seek.&lt;/p&gt;&lt;p&gt;Latency is the speed at which any next&amp;nbsp;spot on a track of the harddrive&amp;nbsp;is brought to the head. This means, while the head remains passive, Latency is influenced by the rotational speed and determines the speed &lt;br /&gt;with which the harddrive can read consecutive blocks of data. Usualy, SCSI and ATA harddrives score very well at this. Some ATA harddrives will even outperform SCSI harddrives at this.&lt;/p&gt;&lt;p&gt;Seek is the speed at which any spot on the harddrive can be located. Including data that is stored on a different track. This includes moving the head of the harddisk. &lt;br /&gt;This is typically something at which SCSI harddrives are much better then ATA harddrives.&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-110884354659457638?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/110884354659457638/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=110884354659457638' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/110884354659457638'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/110884354659457638'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2005/02/calculating-speed-of-harddrives-part-1.html' title='Calculating speed of harddrives (Part 1)'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-110865644302661819</id><published>2005-02-17T17:07:00.000+01:00</published><updated>2005-02-17T17:07:23.026+01:00</updated><title type='text'>Nice Little bug in Business Objects 6 (end-user)</title><content type='html'>&lt;p&gt;This bug has existed in BO v6 ever since it came out. &lt;/p&gt;&lt;p&gt;When starting a new report, from the data menu, select &amp;ldquo;New Data Provider&amp;rdquo;. The screen that now appears, has one radio button.&lt;/p&gt;&lt;p&gt;Why is this radio button here&amp;hellip; it does not serve a purpose, since creating a query based on another one, implies that you already created one. If you check it, you cannot uncheck it.&lt;/p&gt;&lt;p&gt;The only thing that works is to click the Begin button.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-110865644302661819?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/110865644302661819/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=110865644302661819' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/110865644302661819'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/110865644302661819'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2005/02/nice-little-bug-in-business-objects-6.html' title='Nice Little bug in Business Objects 6 (end-user)'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-110848136133367354</id><published>2005-02-15T16:29:00.000+01:00</published><updated>2005-02-15T16:55:49.076+01:00</updated><title type='text'>RSS Feeds in Mozilla Firefox.</title><content type='html'>&lt;p&gt;As I wrote earlier, in one of the articles on this blog, it is possible to put Live bookmarks on your buttonbar at the top of Firefox. But, this works easiest if you have the icon in the bottom right corner (see previous article). What to do however when you want to bookmark a site where you don’t have that icon, but only a hyperlink with an xml file at the end.&lt;/p&gt;&lt;p&gt;The solution is easy. Create a bookmark on a site where you do have an icon in the bottom right corner, then, in bookmark manager,  change it’s properties to match the XML file on the site with interesting articles. Set a different title, and disco, you are done.&lt;/p&gt;&lt;p&gt;Example  : ZDNET does not offer that icon; but when you first surf to theregister.co.uk, create a bookmark, change the properties of that bookmark to the url of ZDNET, then it works nice and dandy ;-)&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-110848136133367354?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/110848136133367354/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=110848136133367354' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/110848136133367354'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/110848136133367354'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2005/02/rss-feeds-in-mozilla-firefox.html' title='RSS Feeds in Mozilla Firefox.'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-110847496310855438</id><published>2005-02-15T14:42:00.000+01:00</published><updated>2005-02-15T14:42:43.106+01:00</updated><title type='text'>Main differences between BO 5 and version 6.5 (client)</title><content type='html'>&lt;p&gt;From the client&amp;rsquo;s point of view, the amount of differences available in BO 6 are not that big. That is, if we are talking about a basic user. Of course, a great addition, is the fact that you can now &lt;strong&gt;save your document to Excel&lt;/strong&gt;. This includes Charts and tables on different reports. Existing reports are saved as Worksheets in your workbook.&lt;/p&gt;&lt;p&gt;A second addition, worth mentioning is the fact that you now have &lt;strong&gt;a search window&lt;/strong&gt; in the Query Panel. When you work with big universes, this is no luxery. The same addition was introduced in the designer module.&lt;/p&gt;&lt;p&gt;So far for the basic stuff.&lt;/p&gt;&lt;p&gt;A cool new addition is the fact that you can now query webpages as well. This means, that you can select&amp;nbsp; a table on a webpage (e.g.:stock info on yahoo) and configure BO to query that page automatically. BO can then change the query automatically, based on the info required.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-110847496310855438?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/110847496310855438/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=110847496310855438' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/110847496310855438'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/110847496310855438'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2005/02/main-differences-between-bo-5-and.html' title='Main differences between BO 5 and version 6.5 (client)'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-110846618584390268</id><published>2005-02-15T12:16:00.000+01:00</published><updated>2005-02-15T12:16:25.843+01:00</updated><title type='text'>New in Business Objects XI Designer</title><content type='html'>&lt;p&gt;Nice novelty in the Designer program of Version XI, is the possibility, to set rights&lt;br /&gt;on the level of objects. To do this, you select the object, and click the icon on the toolbar&amp;hellip; next, you choose the user&amp;nbsp;for which you want to assign the rights. These objects will not show in case the user does not have the right.&lt;/p&gt;&lt;p&gt;Second new thing are the derived tables. You can actually create a table based on a sql query and use that as a datasource&amp;hellip; quite useful.&lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;/em&gt;&amp;nbsp;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-110846618584390268?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/110846618584390268/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=110846618584390268' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/110846618584390268'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/110846618584390268'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2005/02/new-in-business-objects-xi-designer.html' title='New in Business Objects XI Designer'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-110813777179346874</id><published>2005-02-11T17:02:00.000+01:00</published><updated>2005-02-11T17:02:51.793+01:00</updated><title type='text'>Upgrading BO 5 to BO 6 (first installment)</title><content type='html'>&lt;p&gt;Since my motto is : don&amp;rsquo;t believe it until you see it, I&amp;rsquo;m installing a BO 5.1. The purpose is to get it up and running, and then &amp;mdash; for fun &amp;mdash; upgrade it to BO 6.5.&lt;/p&gt;&lt;p&gt;To get me started, I first set up a VMWare session with W2K3, and put SQL 2000 on it. So far so good. The installation of BO 5 went quite nice. Now I wonder how the upgrade to version 6 will work out. &lt;/p&gt;&lt;p&gt;Keep you posted !&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-110813777179346874?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/110813777179346874/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=110813777179346874' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/110813777179346874'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/110813777179346874'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2005/02/upgrading-bo-5-to-bo-6-first.html' title='Upgrading BO 5 to BO 6 (first installment)'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-110797539316093299</id><published>2005-02-09T19:56:00.000+01:00</published><updated>2005-02-09T19:58:04.820+01:00</updated><title type='text'>Firefox Live bookmarks</title><content type='html'>&lt;p&gt;You probably already know Firefox &amp;hellip; if not (&lt;a href="http://www.mozilla.org/products/firefox/" target="_blank"&gt;get it here&lt;/a&gt;); I&amp;rsquo;m a great fan of that thing. Especially the live bookmarks. Here&amp;rsquo;s what they look like :&lt;/p&gt;&lt;p&gt;&lt;a href="http://users.skynet.be/binabik/blog/firefox.jpg"&gt;&lt;img height="36" alt="Firefox interface" src="http://users.skynet.be/binabik/blog/firefox_thumb.jpg" width="128" align="left" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;What happens is, that you get a very specific icon in the bottom right corner (&lt;img height="29" align="left" alt="RSS Feed" src="http://users.skynet.be/binabik/blog/icon.jpg" width="28" border="0" /&gt;)when you surf to a site with live bookmarking (zdnet, theregister, this blog and many more)&amp;nbsp;. When you click this icon, it adds a live bookmark to your list of bookmarks&amp;hellip; so far nothing special. But when you open the list of bookmarks (Bookmarks &amp;gt; Manage Bookmarks &amp;mdash; I think that&amp;rsquo;s what it&amp;rsquo;s called.. I use the Dutch version) now scroll down to the location of your new bookmark and drag it to the toolbar at the top (as in the screenshot) The result is very nice&amp;hellip; you see the new things on your favorite newssite immediately.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-110797539316093299?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/110797539316093299/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=110797539316093299' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/110797539316093299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/110797539316093299'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2005/02/firefox-live-bookmarks.html' title='Firefox Live bookmarks'/><author><name>PDeRop</name><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><id>tag:blogger.com,1999:blog-10701745.post-110796085941730291</id><published>2005-02-09T15:48:00.000+01:00</published><updated>2005-02-09T15:54:19.416+01:00</updated><title type='text'>Differences between v5 and v6 of Business Objects</title><content type='html'>There is a lot of talk going on about the differences between BO 5 and BO 6 ... here is a list some are trivial.. others ... less trivial:&lt;br /&gt;differences exist &lt;br /&gt; 	-in rouding&lt;br /&gt; 	-between values 0.00 and -0.00&lt;br /&gt; 	-in the number of lines in a report&lt;br /&gt; 	-in sort&lt;br /&gt; 	-in complex calculations(filters,multicubes)&lt;br /&gt; 	-in timestamp&lt;br /&gt; 	-in headings&lt;br /&gt; 	-in the option "refresh when opening document"&lt;br /&gt;&lt;br /&gt;Er is nogal wat interesse naar de verschillen tussen BO 5 en BO 6... hier is een lijst. Sommigen zijn triviaal... anderen... minder triviaal :&lt;br /&gt;verschillen bestaan bij&lt;br /&gt; 	-afronding&lt;br /&gt; 	-de waarde 0.00 en -0.00&lt;br /&gt; 	-aantal lijnen op het rapport&lt;br /&gt; 	-sort&lt;br /&gt; 	-complexe berekeningen(filters,multicubes)&lt;br /&gt; 	-timestamp&lt;br /&gt; 	-hoofdingen&lt;br /&gt; 	-de optie "refresh when opening document"&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I'm getting more info on the exact nature of each difference of course.&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/10701745-110796085941730291?l=pderop.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://pderop.blogspot.com/feeds/110796085941730291/comments/default' title='Reacties plaatsen'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=10701745&amp;postID=110796085941730291' title='0 reacties'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/110796085941730291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/10701745/posts/default/110796085941730291'/><link rel='alternate' type='text/html' href='http://pderop.blogspot.com/2005/02/differences-between-v5-and-v6-of.html' title='Differences between v5 and v6 of Business Objects'/><author><name>PDeRop</name><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></feed>
