<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>A Developer's Blog</title>
	
	<link>http://blog.hoegaerden.be</link>
	<description>SQL Server, BI, .NET, IT and anything else I have been playing with.</description>
	<lastBuildDate>Fri, 18 May 2012 10:57:34 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/ADevelopersBlog" /><feedburner:info uri="adevelopersblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Community Day 2012</title>
		<link>http://feedproxy.google.com/~r/ADevelopersBlog/~3/oJ6RhgieUN0/</link>
		<comments>http://blog.hoegaerden.be/2012/05/18/community-day-2012/#comments</comments>
		<pubDate>Fri, 18 May 2012 10:57:34 +0000</pubDate>
		<dc:creator>Valentino Vranken</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[Community Event]]></category>
		<category><![CDATA[SQLUG]]></category>

		<guid isPermaLink="false">http://blog.hoegaerden.be/2012/05/18/community-day-2012/</guid>
		<description><![CDATA[Here we are with already the sixth installment of our Belgian Community Day. To please everyone, there are 6 different tracks with over 40 sessions!&#160; As you’re reading my blog, you’re probably most interested in what sessions the SQLUG has got to offer.&#160; Here they are: Time Track Speaker Session 0930 &#8211; 1030 6 Pieter [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Community Day 2012" href="http://www.communityday.be/"><img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: block; float: none; margin-left: auto; border-top: 0px; margin-right: auto; border-right: 0px; padding-top: 0px" title="Community Day 2012" border="0" alt="Community Day 2012" src="http://blog.hoegaerden.be/wp-content/uploads/image483.png" width="484" height="158" /></a></p>
<p>Here we are with already the sixth installment of our Belgian <strong>Community Day</strong>.</p>
<p>To please everyone, there are 6 different tracks with over 40 sessions!&#160; As you’re reading my blog, you’re probably most interested in what sessions the SQLUG has got to offer.&#160; Here they are:</p>
<table border="1" cellspacing="0" cellpadding="2" width="668">
<tbody>
<tr>
<td valign="top" width="100"><strong>Time</strong></td>
<td valign="top" width="100"><strong>Track</strong></td>
<td valign="top" width="100"><strong>Speaker</strong></td>
<td valign="top" width="366"><strong>Session</strong></td>
</tr>
<tr>
<td valign="top" width="100">0930 &#8211; 1030</td>
<td valign="top" width="100">6</td>
<td valign="top" width="100">
<p><em>Pieter Vanhove</em></p>
</td>
<td valign="top" width="366">
<p>I know what you did last summer&#8230; on my database: SQL Audit on SQL 2012</p>
</td>
</tr>
<tr>
<td valign="top" width="100">1315-1415</td>
<td valign="top" width="100">4</td>
<td valign="top" width="100">
<p><em>Andre Kamman</em></p>
</td>
<td valign="top" width="366">
<p>Load-testing with the SQL Server 2012 Distributed Replay Controller</p>
</td>
</tr>
<tr>
<td valign="top" width="100">1715-1800</td>
<td valign="top" width="100">4</td>
<td valign="top" width="100">
<p><em>Koen Verbeeck</em></p>
</td>
<td valign="top" width="366">
<p>Power up your data warehouse with SQL Server 2012</p>
</td>
</tr>
</tbody>
</table>
<p><strong></strong></p>
<p><strong>When?</strong> Thursday June 21st 2012</p>
<p><strong>Where?</strong> Utopolis Mechelen, Spuibeekstraat 5, 2800 Mechelen</p>
<p><strong>Price?</strong> Nada, niente, nougabolle! (yes, it’s still free)</p>
<p>Of course there are many more sessions, some of them even related to SQL Server, such as this one by the CLUG:<strong> Business Intelligence with SharePoint and SQL Server 2012: what&#8217;s new</strong> by <em>Serge Luca and Isabelle Van Campenhoudt.</em>&#160;</p>
<p>And that’s not all, here’s one more by the BIWUG: <strong>SQL Server for SharePoint geeks and other involuntary DBA’s</strong> by <em>Thomas Vochten.</em></p>
<p>I’m also looking forward to the session on <strong>(M)ogre 3D game development</strong> by my Ordina-colleague <em>Mario Van Hissenhoven</em>.</p>
<p>So, convinced? <a title="Community Day 2012" href="http://www.communityday.be/">Register now without hesitation</a> because places are getting filled really quick!</p>
<p>Have fun!</p>
<p>Valentino.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.hoegaerden.be%2F2012%2F05%2F18%2Fcommunity-day-2012%2F&amp;title=Community%20Day%202012" id="wpa2a_2"><img src="http://blog.hoegaerden.be/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ADevelopersBlog?a=oJ6RhgieUN0:N5ZfjRYmoIE:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ADevelopersBlog?i=oJ6RhgieUN0:N5ZfjRYmoIE:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ADevelopersBlog?a=oJ6RhgieUN0:N5ZfjRYmoIE:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ADevelopersBlog?i=oJ6RhgieUN0:N5ZfjRYmoIE:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ADevelopersBlog?a=oJ6RhgieUN0:N5ZfjRYmoIE:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/ADevelopersBlog?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ADevelopersBlog?a=oJ6RhgieUN0:N5ZfjRYmoIE:3QFJfmc7Om4"><img src="http://feeds.feedburner.com/~ff/ADevelopersBlog?i=oJ6RhgieUN0:N5ZfjRYmoIE:3QFJfmc7Om4" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ADevelopersBlog?a=oJ6RhgieUN0:N5ZfjRYmoIE:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ADevelopersBlog?i=oJ6RhgieUN0:N5ZfjRYmoIE:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ADevelopersBlog/~4/oJ6RhgieUN0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.hoegaerden.be/2012/05/18/community-day-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.hoegaerden.be/2012/05/18/community-day-2012/</feedburner:origLink></item>
		<item>
		<title>SSIS, Flat Files And Accents (é, è, …)</title>
		<link>http://feedproxy.google.com/~r/ADevelopersBlog/~3/i7S_664Nhng/</link>
		<comments>http://blog.hoegaerden.be/2012/05/03/ssis-flat-files-and-accents/#comments</comments>
		<pubDate>Thu, 03 May 2012 19:24:39 +0000</pubDate>
		<dc:creator>Valentino Vranken</dc:creator>
				<category><![CDATA[Integration Services]]></category>
		<category><![CDATA[SQLServerPedia Syndication]]></category>
		<category><![CDATA[SSIS]]></category>

		<guid isPermaLink="false">http://blog.hoegaerden.be/2012/05/03/ssis-flat-files-and-accents/</guid>
		<description><![CDATA[This is a follow-up to my article on Loading Complex XML Using SSIS and XSLT.&#160; In that article I demonstrated how you can convert complex XML into simple CSV using XSLT in SSIS. The resulting DTSX package and input files can be downloaded from my SkyDrive through this link. Dealing With Special Characters If you’ve [...]]]></description>
			<content:encoded><![CDATA[<p>This is a follow-up to my article on <a title="Loading Complex XML Using SSIS" href="http://blog.hoegaerden.be/2011/04/20/loading-complex-xml-using-ssis/" target="_blank">Loading Complex XML Using SSIS and XSLT</a>.&#160; In that article I demonstrated how you can convert complex XML into simple CSV using XSLT in SSIS.</p>
<p>The resulting DTSX package and input files <a title="SSIS_FlatFiles_Accents.zip" href="https://skydrive.live.com/redir.aspx?cid=81c8b064cbbe1698&amp;resid=81C8B064CBBE1698!151&amp;parid=81C8B064CBBE1698!145" target="_blank">can be downloaded from my SkyDrive through this link</a>.</p>
<h2>Dealing With Special Characters</h2>
<p>If you’ve followed the instructions in my article mentioned above and you need to deal with special characters such as the é and è encountered in the French language, you probably noticed that it wouldn’t really work as expected.&#160; In fact, in your final result you may have ended up with the special characters being replaced with other, even more special, characters.&#160; Obviously not good.</p>
<p>Here’s an explanation on the reason why that happens, and also how to deal with it.</p>
<h3>Setting The Scene</h3>
<p>Imagine the following <strong>sample XML</strong>, representing a really huge book collection:</p>
<pre class="code">

<span style="color: blue">&lt;</span><span style="color: #a31515">books</span><span style="color: blue">&gt;
    &lt;</span><span style="color: #a31515">book</span><span style="color: blue">&gt;
        &lt;</span><span style="color: #a31515">title</span><span style="color: blue">&gt;</span>The Hitchhiker's Guide to the Galaxy<span style="color: blue">&lt;/</span><span style="color: #a31515">title</span><span style="color: blue">&gt;
        &lt;</span><span style="color: #a31515">author</span><span style="color: blue">&gt;</span>Douglas Adams<span style="color: blue">&lt;/</span><span style="color: #a31515">author</span><span style="color: blue">&gt;
        &lt;</span><span style="color: #a31515">language</span><span style="color: blue">&gt;</span>EN<span style="color: blue">&lt;/</span><span style="color: #a31515">language</span><span style="color: blue">&gt;
        &lt;</span><span style="color: #a31515">description</span><span style="color: blue">&gt;</span>The Hitchhiker's Guide to the Galaxy is a science fiction comedy series created by Douglas Adams.<span style="color: blue">&lt;/</span><span style="color: #a31515">description</span><span style="color: blue">&gt;
    &lt;/</span><span style="color: #a31515">book</span><span style="color: blue">&gt;
    &lt;</span><span style="color: #a31515">book</span><span style="color: blue">&gt;
        &lt;</span><span style="color: #a31515">title</span><span style="color: blue">&gt;</span>Le Trône de fer<span style="color: blue">&lt;/</span><span style="color: #a31515">title</span><span style="color: blue">&gt;
        &lt;</span><span style="color: #a31515">author</span><span style="color: blue">&gt;</span>George R.R. Martin<span style="color: blue">&lt;/</span><span style="color: #a31515">author</span><span style="color: blue">&gt;
        &lt;</span><span style="color: #a31515">language</span><span style="color: blue">&gt;</span>FR<span style="color: blue">&lt;/</span><span style="color: #a31515">language</span><span style="color: blue">&gt;
        &lt;</span><span style="color: #a31515">description</span><span style="color: blue">&gt;</span>Le Trône de fer est une série de romans de fantasy de George R. R. Martin, dont l'écriture et la parution sont en cours. Martin a commencé à l'écrire en 1991 et le premier volume est paru en 1996. Prévue à l'origine comme une trilogie, la série compte désormais cinq volumes publiés et deux autres sont attendus.<span style="color: blue">&lt;/</span><span style="color: #a31515">description</span><span style="color: blue">&gt;
    &lt;/</span><span style="color: #a31515">book</span><span style="color: blue">&gt;
&lt;/</span><span style="color: #a31515">books</span><span style="color: blue">&gt;</span>
</pre>
<p>As you can see, the second book in the list is the French version of the first book in the <em>A Song of Ice and Fire</em> series by George R.R. Martin and as it goes with French, there are some accents in the description of the book.</p>
<p>We’ll use the following XSLT to convert it to CSV:</p>
<pre class="code">

<span style="color: blue">&lt;?</span><span style="color: #a31515">xml </span><span style="color: red">version</span><span style="color: blue">=</span>&quot;<span style="color: blue">1.0</span>&quot; <span style="color: red">encoding</span><span style="color: blue">=</span>&quot;<span style="color: blue">utf-8</span>&quot;<span style="color: blue">?&gt;
&lt;</span><span style="color: #2b91af">xsl:stylesheet </span><span style="color: red">version</span><span style="color: blue">=</span>&quot;<span style="color: blue">2.0</span>&quot; <span style="color: red">xmlns:xsl</span><span style="color: blue">=</span>&quot;<span style="color: blue">http://www.w3.org/1999/XSL/Transform</span>&quot; <span style="color: red">xmlns:xs</span><span style="color: blue">=</span><span style="color: blue"><a href="http://www.w3.org/2001/XMLSchema">http://www.w3.org/2001/XMLSchema</a></span> <span style="color: red">xmlns:fn</span><span style="color: blue">=</span>&quot;<span style="color: blue">http://www.w3.org/2005/xpath-functions</span>&quot;<span style="color: blue">&gt;
  &lt;</span><span style="color: #2b91af">xsl:output </span><span style="color: red">method</span><span style="color: blue">=</span>&quot;<span style="color: blue">text</span>&quot; <span style="color: red">version</span><span style="color: blue">=</span>&quot;<span style="color: blue">1.0</span>&quot; <span style="color: red">encoding</span><span style="color: blue">=</span>&quot;<span style="color: blue">UTF-8</span>&quot; <span style="color: red">indent</span><span style="color: blue">=</span>&quot;<span style="color: blue">no</span>&quot;<span style="color: blue">/&gt;
  &lt;</span><span style="color: #2b91af">xsl:template </span><span style="color: red">match</span><span style="color: blue">=</span>&quot;<span style="color: blue">/</span>&quot;<span style="color: blue">&gt;
    &lt;</span><span style="color: #2b91af">xsl:text</span><span style="color: blue">&gt;</span>BookTitle;Author;Language;Description<span style="color: blue">&lt;/</span><span style="color: #2b91af">xsl:text</span><span style="color: blue">&gt;
    &lt;</span><span style="color: #2b91af">xsl:text</span><span style="color: blue">&gt;</span><span style="color: red">&amp;#13;&amp;#10;</span><span style="color: blue">&lt;/</span><span style="color: #2b91af">xsl:text</span><span style="color: blue">&gt;

    &lt;</span><span style="color: #2b91af">xsl:for-each </span><span style="color: red">select</span><span style="color: blue">=</span>&quot;<span style="color: blue">books/book</span>&quot;<span style="color: blue">&gt;
      &lt;</span><span style="color: #2b91af">xsl:text</span><span style="color: blue">&gt;</span>&quot;<span style="color: blue">&lt;/</span><span style="color: #2b91af">xsl:text</span><span style="color: blue">&gt;
      &lt;</span><span style="color: #2b91af">xsl:value-of </span><span style="color: red">select</span><span style="color: blue">=</span>&quot;<span style="color: blue">title</span>&quot;<span style="color: blue">/&gt;
      &lt;</span><span style="color: #2b91af">xsl:text</span><span style="color: blue">&gt;</span>&quot;;&quot;<span style="color: blue">&lt;/</span><span style="color: #2b91af">xsl:text</span><span style="color: blue">&gt;
      &lt;</span><span style="color: #2b91af">xsl:value-of </span><span style="color: red">select</span><span style="color: blue">=</span>&quot;<span style="color: blue">author</span>&quot;<span style="color: blue">/&gt;
      &lt;</span><span style="color: #2b91af">xsl:text</span><span style="color: blue">&gt;</span>&quot;;&quot;<span style="color: blue">&lt;/</span><span style="color: #2b91af">xsl:text</span><span style="color: blue">&gt;
      &lt;</span><span style="color: #2b91af">xsl:value-of </span><span style="color: red">select</span><span style="color: blue">=</span>&quot;<span style="color: blue">language</span>&quot;<span style="color: blue">/&gt;
      &lt;</span><span style="color: #2b91af">xsl:text</span><span style="color: blue">&gt;</span>&quot;;&quot;<span style="color: blue">&lt;/</span><span style="color: #2b91af">xsl:text</span><span style="color: blue">&gt;
      &lt;</span><span style="color: #2b91af">xsl:value-of </span><span style="color: red">select</span><span style="color: blue">=</span>&quot;<span style="color: blue">description</span>&quot;<span style="color: blue">/&gt;
      &lt;</span><span style="color: #2b91af">xsl:text</span><span style="color: blue">&gt;</span>&quot;<span style="color: blue">&lt;/</span><span style="color: #2b91af">xsl:text</span><span style="color: blue">&gt;
      &lt;</span><span style="color: #2b91af">xsl:text</span><span style="color: blue">&gt;</span><span style="color: red">&amp;#13;&amp;#10;</span><span style="color: blue">&lt;/</span><span style="color: #2b91af">xsl:text</span><span style="color: blue">&gt;
    &lt;/</span><span style="color: #2b91af">xsl:for-each</span><span style="color: blue">&gt;

  &lt;/</span><span style="color: #2b91af">xsl:template</span><span style="color: blue">&gt;
&lt;/</span><span style="color: #2b91af">xsl:stylesheet</span><span style="color: blue">&gt;</span>
</pre>
<p>Using an <strong>XML Task </strong>in the Control Flow, as explained in my article, we’d get the following output:</p>
<p><font face="Courier New">BookTitle;Author;Language;Description<br />
    <br />&quot;The Hitchhiker&#8217;s Guide to the Galaxy&quot;;&quot;Douglas Adams&quot;;&quot;EN&quot;;&quot;The Hitchhiker&#8217;s Guide to the Galaxy is a science fiction comedy series created by Douglas Adams.&quot;</p>
<p>&quot;Le Trône de fer&quot;;&quot;George R.R. Martin&quot;;&quot;FR&quot;;&quot;Le Trône de fer (A Song of Ice and Fire) est une série de romans de fantasy de George R. R. Martin, dont l&#8217;écriture et la parution sont en cours. Martin a commencé à l&#8217;écrire en 1991 et le premier volume est paru en 1996. Prévue à l&#8217;origine comme une trilogie, la série compte désormais cinq volumes publiés et deux autres sont attendus.&quot;</font></p>
<p>So far so good, all accents are still present!</p>
<p>Then we’d import the file using a <strong>Flat File Source</strong> component in a Data Flow Task.&#160; Here’s what the General page of the Flat File Connection Manager would look like:</p>
<p><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="Flat File Connection Manager: General" border="0" alt="Flat File Connection Manager: General" src="http://blog.hoegaerden.be/wp-content/uploads/image469.png" width="704" height="637" /></p>
<p>We’ve set double-quote as <strong>Text Qualifier</strong> and checked the <strong>Column names in the first data row</strong> textbox.</p>
<p>Switching to the Columns page we’d get the following:</p>
<p><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="Flat File Connection Manager: Columns - the Preview has messed up the accents!" border="0" alt="Flat File Connection Manager: Columns - the Preview has messed up the accents!" src="http://blog.hoegaerden.be/wp-content/uploads/image470.png" width="700" height="548" /></p>
<p>Hang on, that’s not right!&#160; The Preview is not displaying our accents as expected!&#160; Oh my, what’s going on here? Let’s call the code page detectives!</p>
<h3>A Mismatch Investigation</h3>
<p>Take a good look at the XSLT which we’ve used to convert the XML into CSV, especially the <strong>xsl:output</strong> line:</p>
<p><span style="color: blue">&lt;</span><span style="color: #2b91af">xsl:output </span><span style="color: red">method</span><span style="color: blue">=</span>&quot;<span style="color: blue">text</span>&quot; <span style="color: red">version</span><span style="color: blue">=</span>&quot;<span style="color: blue">1.0</span>&quot; <span style="color: red">encoding</span><span style="color: blue">=</span>&quot;<span style="color: blue">UTF-8</span>&quot; <span style="color: red">indent</span><span style="color: blue">=</span>&quot;<span style="color: blue">no</span>&quot;<span style="color: blue">/&gt;</span></p>
<p>That line specifies that the text output should be encoded using the <a title="Wikipedia: UTF-8" href="http://en.wikipedia.org/wiki/UTF-8" target="_blank">UTF-8 code page</a>.</p>
<p>Now take a good look at the General page in the screenshot earlier, more precisely this part:</p>
<p><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="Code page: 1252 (ANSI - Latin I) is not what we need right now!" border="0" alt="Code page: 1252 (ANSI - Latin I) is not what we need right now!" src="http://blog.hoegaerden.be/wp-content/uploads/image471.png" width="627" height="34" /></p>
<p>Indeed, code page 1252 (ANSI – Latin I).&#160; While the input is UTF-8.&#160; Of course that results in a mismatch of certain characters, as demonstrated here.&#160; The fix is fairly easy, just change the <strong>Code page</strong> setting to <strong>65001 (UTF-8).</strong></p>
<p><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="Code page: 65001 (UTF-8) - much better!" border="0" alt="Code page: 65001 (UTF-8) - much better!" src="http://blog.hoegaerden.be/wp-content/uploads/image472.png" width="633" height="35" /></p>
<p>If we now switch back to the Columns page we should come to the following result:</p>
<p><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="Flat File Connection Manager: Columns page preview with accents!" border="0" alt="Flat File Connection Manager: Columns page preview with accents!" src="http://blog.hoegaerden.be/wp-content/uploads/image473.png" width="700" height="548" /></p>
<p>Ah, sure looks better doesn’t it?&#160; All accents are present as expected.</p>
<p>But in case you thought that’s it, I’d advise you to think again.&#160; Don’t worry, I’ll demonstrate what I mean.&#160; Let’s do that by setting up a simple Data Flow.</p>
<h3>Setting Up The Data Flow</h3>
<p>Throw in a<strong> Flat File Source</strong> and specify our Flat File Connection Manager.&#160; I also prefer to keep NULLs as they come in, using the <strong>Retain null values from the source as null values in the data flow</strong> checkbox.</p>
<p><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="Flat File Source: Connection Manager" border="0" alt="Flat File Source: Connection Manager" src="http://blog.hoegaerden.be/wp-content/uploads/image474.png" width="700" height="607" /></p>
<p>If you click the Preview button you should get similar output as shown one screenshot earlier.</p>
<p>Now hook this up to an <strong>OLE DB Destination </strong>that writes the incoming data into a table in your favorite database:</p>
<p><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="OLE DB Destination is not happy :(" border="0" alt="OLE DB Destination is not happy :(" src="http://blog.hoegaerden.be/wp-content/uploads/image475.png" width="151" height="142" /></p>
<p>As you can see, our destination is not entirely happy with all this.&#160; Here are the details of one of the error messages:</p>
<blockquote>
<p>Validation error. Data Flow Task: Data Flow Task: The column &quot;BookTitle&quot; cannot be processed because more than one code page (65001 and 1252) are specified for it.</p>
</blockquote>
<p>Looks like once more we’ve got a code page conflict.&#160; And we sure do. Clicking the Data Flow connector between the Flat File source and OLE DB destination shows us the following:</p>
<p><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="Data Flow Path Editor shows that our strings are encoded using the 65001 code page." border="0" alt="Data Flow Path Editor shows that our strings are encoded using the 65001 code page." src="http://blog.hoegaerden.be/wp-content/uploads/image476.png" width="700" height="461" /></p>
<p>Each of our incoming string values is encoded using the 65001 (UTF-8) code page.&#160; But our database was created using the Latin1_General_CI_AS collation.&#160; So we’ve indeed got a code page conflict!</p>
<p>Fear not, that’s easily remedied.&#160; Add a <strong>Derived Column</strong> transformation in between the source and destination and convert each incoming string value using a cast expression such as this one:</p>
<p><font face="Courier New">(DT_STR, 50, 1252)BookTitle_IN</font></p>
<p><strong><u>Note:</u></strong> whenever I need to manipulate incoming columns to create a second version of the same column, I rename the incoming column to <em>TheColumn_IN</em>.&#160; The new version will be called <em>TheColumn</em> and preferably <em>TheColumn</em> is the name of the field in the destination table.&#160; This makes it easy to distinguish all columns later down the flow.</p>
<p>Here’s what the final version of the Derived Column looks like:</p>
<p><a href="http://blog.hoegaerden.be/wp-content/uploads/image477.png"><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="Using the Derived Column transformation to cast the incoming strings into the correct code page." border="0" alt="Using the Derived Column transformation to cast the incoming strings into the correct code page." src="http://blog.hoegaerden.be/wp-content/uploads/image_thumb107.png" width="700" height="559" /></a></p>
<p>&#160;</p>
<p>Next we’ll need to open the Destination and change the mapped fields to the new ones.&#160; Because my new columns are called exactly the same as the fields in the destination table, I can do that easily.&#160; In the <strong>Mappings</strong> page, all I need to do is right-click the grey background in between the two tables and click <strong>Select All Mappings</strong>, hit the Delete button, right-click again and click <strong>Map Items By Matching Names:</strong></p>
<p><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="Using Map Items By Matching Names, easy!" border="0" alt="Using Map Items By Matching Names, easy!" src="http://blog.hoegaerden.be/wp-content/uploads/image478.png" width="700" height="441" /></p>
<p>With the data flow finished, let’s give our package a run!</p>
<p><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="Flat File Source has got a length issue!" border="0" alt="Flat File Source has got a length issue!" src="http://blog.hoegaerden.be/wp-content/uploads/image479.png" width="154" height="213" /></p>
<p>Ouch, our source is not happy!&#160; A closer examination of the Output pane brings us to the following error:</p>
<blockquote>
<p>Error: 0xC02020A1 at Data Flow Task, Flat File Source [16]: Data conversion failed. The data conversion for column &quot;Description&quot; returned status value 4 and status text &quot;Text was truncated or one or more characters had no match in the target code page.&quot;.</p>
</blockquote>
<p>Oh right, so far we haven’t bothered looking at the actual length of the data that we’re importing.&#160; Actually, what is the length of our data flow columns??&#160; Well, if you’ve been paying close attention you should have noticed the number 50 several times in the screenshots and expressions above.&#160; That’s indeed the default length for text columns when importing a flat file.</p>
<p>And if you scroll back up to the sample XML, you’ll notice that the content for the description is longer than 50 characters, thus causing our error!&#160; Let’s find out how to get that solved!</p>
<h3>Fixing The Field Length Issue</h3>
<p>The first step in getting this fixed is opening up the Advanced page in the Flat File Connection Manager editor.</p>
<p><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="Flat File Connection Manager: using the Advanced page to change field length." border="0" alt="Flat File Connection Manager: using the Advanced page to change field length." src="http://blog.hoegaerden.be/wp-content/uploads/image480.png" width="700" height="633" /></p>
<p>Then select the Description field and change its <strong>OutputColumnWidth</strong> property from 50 to 500.</p>
<p>That will cause the source to generate a warning.&#160; Remove this warning by opening and closing the source editor.&#160; Click the Yes button in the popup that appears.</p>
<p>The next step is changing the expression for the Description field in the Derived Column to this:</p>
<p><font face="Courier New">(DT_STR,500,1252)Description_IN</font></p>
<p>Indeed, the field length is one of the parameters in that cast.&#160; The other numeric parameter is obviously the code page.</p>
<p>Having done that you’ll notice that the destination will start complaining.&#160; Of course, you’ll need to adapt the destination table to reflect the field length increase as well.&#160; So change the table definition and open/close the destination editor to make it happy.</p>
<p>Alright, let’s run the package once more!</p>
<p>Finally the data flow is happy with it all and has inserted two records:</p>
<p><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="That&#39;s more like it: all components colored green!" border="0" alt="That&#39;s more like it: all components colored green!" src="http://blog.hoegaerden.be/wp-content/uploads/image481.png" width="150" height="218" /></p>
<p>And what does our table contain?&#160; Let’s find out:</p>
<p><a href="http://blog.hoegaerden.be/wp-content/uploads/image482.png"><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="All accents have been imported!" border="0" alt="All accents have been imported!" src="http://blog.hoegaerden.be/wp-content/uploads/image_thumb108.png" width="700" height="65" /></a></p>
<p>That’s looking good for sure!</p>
<h2>Conclusion</h2>
<p>In this follow-up article I have demonstrated what might go wrong when you need to deal with special characters while importing flat files, and how to solve your possible issues.&#160; In case you missed the original article, <a title="Loading Complex XML Using SSIS" href="http://blog.hoegaerden.be/2011/04/20/loading-complex-xml-using-ssis/" target="_blank">have a look through this link</a>.</p>
<p>Have fun!</p>
<p>Valentino.</p>
<p><strong>References</strong></p>
<p><a title="Wikipedia: UTF-8" href="http://en.wikipedia.org/wiki/UTF-8" target="_blank">Wikipedia: UTF-8</a></p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.hoegaerden.be%2F2012%2F05%2F03%2Fssis-flat-files-and-accents%2F&amp;title=SSIS%2C%20Flat%20Files%20And%20Accents%20%28%26eacute%3B%2C%20%26egrave%3B%2C%20%26hellip%3B%29" id="wpa2a_4"><img src="http://blog.hoegaerden.be/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ADevelopersBlog?a=i7S_664Nhng:BzdoGjz50os:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ADevelopersBlog?i=i7S_664Nhng:BzdoGjz50os:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ADevelopersBlog?a=i7S_664Nhng:BzdoGjz50os:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ADevelopersBlog?i=i7S_664Nhng:BzdoGjz50os:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ADevelopersBlog?a=i7S_664Nhng:BzdoGjz50os:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/ADevelopersBlog?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ADevelopersBlog?a=i7S_664Nhng:BzdoGjz50os:3QFJfmc7Om4"><img src="http://feeds.feedburner.com/~ff/ADevelopersBlog?i=i7S_664Nhng:BzdoGjz50os:3QFJfmc7Om4" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ADevelopersBlog?a=i7S_664Nhng:BzdoGjz50os:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ADevelopersBlog?i=i7S_664Nhng:BzdoGjz50os:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ADevelopersBlog/~4/i7S_664Nhng" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.hoegaerden.be/2012/05/03/ssis-flat-files-and-accents/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blog.hoegaerden.be/2012/05/03/ssis-flat-files-and-accents/</feedburner:origLink></item>
		<item>
		<title>IT in Transformation: BI and Productivity for Your Business Solutions</title>
		<link>http://feedproxy.google.com/~r/ADevelopersBlog/~3/n43cc6G2iR4/</link>
		<comments>http://blog.hoegaerden.be/2012/04/24/it-in-transformation-bi-and-productivity-for-your-business-solutions/#comments</comments>
		<pubDate>Tue, 24 Apr 2012 17:33:17 +0000</pubDate>
		<dc:creator>Valentino Vranken</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[Community Event]]></category>
		<category><![CDATA[SQL Server 2012]]></category>

		<guid isPermaLink="false">http://blog.hoegaerden.be/2012/04/24/it-in-transformation-bi-and-productivity-for-your-business-solutions/</guid>
		<description><![CDATA[If you have ever had the chance to see a presentation by Rafal Lukawiecki, I’m sure you’ll agree that he surely knows how to deliver his stuff, and on top of that he knows what he’s talking about. In other words: Rafal is once more in our small country!  Next Thursday he’ll be talking about [...]]]></description>
			<content:encoded><![CDATA[<p>If you have ever had the chance to see a presentation by <a title="Rafal Lukawiecki at LinkedIn" href="http://www.linkedin.com/in/rafallukawiecki" target="_blank">Rafal Lukawiecki</a>, I’m sure you’ll agree that he surely knows how to deliver his stuff, and on top of that he knows what he’s talking about.</p>
<p>In other words: Rafal is once more in our small country!  Next Thursday he’ll be talking about the present and future of the Microsoft Business Intelligence stack.</p>
<p><strong>Location:</strong> Utopolis Mechelen, Spuibeekstraat 5, Mechelen, Belgium.</p>
<p><strong>Date/Time:</strong> Thursday April 26th, 0900 – 1700.</p>
<p>Check out the Belgian SQLUG site for <a title="April 26th, Free event IT in Transformation: BI and Productivity for Your Business Solutions with Rafal Lukawiecki" href="http://sqlug.be/blogs/official_sqlugbe_blog/archive/2012/04/18/april-26th-free-event-it-in-transformation-bi-and-productivity-for-your-business-solutions-with-rafal-lukawiecki.aspx" target="_blank">more details</a>.</p>
<p>Ow, and it’s a full-day free event, so what are you waiting for?  If you’re into BI, you’d better have a real good excuse to miss this opportunity!  <a title="Register here for IT In Transformation" href="https://msevents.microsoft.com/cui/EventDetail.aspx?EventID=1032509093" target="_blank">Register now</a>!</p>
<p>See you there!</p>
<p>Valentino.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.hoegaerden.be%2F2012%2F04%2F24%2Fit-in-transformation-bi-and-productivity-for-your-business-solutions%2F&amp;title=IT%20in%20Transformation%3A%20BI%20and%20Productivity%20for%20Your%20Business%20Solutions" id="wpa2a_6"><img src="http://blog.hoegaerden.be/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ADevelopersBlog?a=n43cc6G2iR4:ahR7QgGpjhU:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ADevelopersBlog?i=n43cc6G2iR4:ahR7QgGpjhU:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ADevelopersBlog?a=n43cc6G2iR4:ahR7QgGpjhU:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ADevelopersBlog?i=n43cc6G2iR4:ahR7QgGpjhU:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ADevelopersBlog?a=n43cc6G2iR4:ahR7QgGpjhU:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/ADevelopersBlog?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ADevelopersBlog?a=n43cc6G2iR4:ahR7QgGpjhU:3QFJfmc7Om4"><img src="http://feeds.feedburner.com/~ff/ADevelopersBlog?i=n43cc6G2iR4:ahR7QgGpjhU:3QFJfmc7Om4" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ADevelopersBlog?a=n43cc6G2iR4:ahR7QgGpjhU:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ADevelopersBlog?i=n43cc6G2iR4:ahR7QgGpjhU:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ADevelopersBlog/~4/n43cc6G2iR4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.hoegaerden.be/2012/04/24/it-in-transformation-bi-and-productivity-for-your-business-solutions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.hoegaerden.be/2012/04/24/it-in-transformation-bi-and-productivity-for-your-business-solutions/</feedburner:origLink></item>
		<item>
		<title>SQL Server Data Tools (SSDT)</title>
		<link>http://feedproxy.google.com/~r/ADevelopersBlog/~3/C-6Yga33rl8/</link>
		<comments>http://blog.hoegaerden.be/2012/04/18/sql-server-data-tools-ssdt/#comments</comments>
		<pubDate>Wed, 18 Apr 2012 15:27:18 +0000</pubDate>
		<dc:creator>Valentino Vranken</dc:creator>
				<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[SQLServerPedia Syndication]]></category>
		<category><![CDATA[SQL Server 2012]]></category>
		<category><![CDATA[SQL Server Data Tools]]></category>
		<category><![CDATA[SSDT]]></category>

		<guid isPermaLink="false">http://blog.hoegaerden.be/2012/04/18/sql-server-data-tools-ssdt/</guid>
		<description><![CDATA[You may or may not already have heard about it, but the next version of our favorite database, SQL Server 2012, ships with a client tool called SQL Server Data Tools (SSDT).  Just like the BIDS was actually Visual Studio 2008 (or 2005 if you’re long enough in the business) with BI-related project templates, SSDT [...]]]></description>
			<content:encoded><![CDATA[<p>You may or may not already have heard about it, but the next version of our favorite database, SQL Server 2012, ships with a client tool called <strong>SQL Server Data Tools </strong>(SSDT).  Just like the BIDS was actually Visual Studio 2008 (or 2005 if you’re long enough in the business) with BI-related project templates, SSDT is Visual Studio 2010.  But that’s not all: it contains additional functionality!  Do you remember the database projects you could create using the “data dude”, or officially known as Visual Studio 2008 with the GDR2 add-on?  Well, this is version-next of the data dude.</p>
<p>Let’s find out how such a database project can be created!</p>
<h2>Getting Started With SSDT</h2>
<p>Obviously the first step is installing SQL Server 2012 and making sure to select <em>SQL Server Data Tools</em> in the <strong>Feature Selection</strong> page:</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="SQL Server 2012 Feature Selection with the SQL Server Data Tools checked" src="http://blog.hoegaerden.be/wp-content/uploads/SQL2012EVAL_FeatureSelection.png" border="0" alt="SQL Server 2012 Feature Selection with the SQL Server Data Tools checked" width="700" height="525" /></p>
<p>With that up and running, launch the SQL Server Data Tools from the Microsoft SQL Server 2012 folder in the Start menu and go to File &gt; New Project.</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="New Project - SQL Server Data Tools" src="http://blog.hoegaerden.be/wp-content/uploads/005_NewProject.png" border="0" alt="New Project - SQL Server Data Tools" width="700" height="484" /></p>
<p>One of the template categories is called SQL Server.  Under that you’ll find a template called <strong>SQL Server Data Tools – Database Projects (Web Install)</strong>.</p>
<p>Erm, hang on, what do you mean, “web install”?  Does that mean it’s not installed yet?  The description on the right also gives some clue to what’s going on: “provides instructions for installing SQL Server Data Tools – Database Projects from the web”.  Okay, let’s get on with it then!</p>
<p>Click the OK button to proceed to the installer.</p>
<h3>Installing the SSDT Database Projects template</h3>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="SQL Server Data Tools - Database Projects (Web Install)" src="http://blog.hoegaerden.be/wp-content/uploads/010_InstallSSDT.png" border="0" alt="SQL Server Data Tools - Database Projects (Web Install)" width="467" height="250" /></p>
<p>I think the message in that window above is a bit misleading.  It says that “Database Projects” is required, but isn’t that what we’re going to install now?  Sounds like chicken and egg to me!  Let’s just ignore the message then and click the Install button.</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="Data Developer Center - Download SQL Server Data Tools" src="http://blog.hoegaerden.be/wp-content/uploads/011_DataDeveloperCenter_DownloadSSDT.png" border="0" alt="Data Developer Center - Download SQL Server Data Tools" width="700" height="521" /></p>
<p>We’re now presented with a web page in Internet Explorer.  In this Data Developer Center, click the blue Download SQL Server Data Tools link.</p>
<p>Next, when presented with the following pop-up, click Allow:</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="Do you want to allow this website to open a program on your computer? Yes we do!" src="http://blog.hoegaerden.be/wp-content/uploads/012_AllowCancel.png" border="0" alt="Do you want to allow this website to open a program on your computer? Yes we do!" width="411" height="296" /></p>
<p>The next window is the Web Platform Installer 3.0 that wants to install the Microsoft SQL Server Data Tools.  Click the Install button to get to the next step.</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="Web Platform Installer 3.0 - 1 items to be installed" src="http://blog.hoegaerden.be/wp-content/uploads/025_WebPlatformInstaller.png" border="0" alt="Web Platform Installer 3.0 - 1 items to be installed" width="700" height="485" /></p>
<p>As usual with any installer from Microsoft, we need to accept the license terms so click the Accept button.</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="Web Platform Installation - Accept License Terms" src="http://blog.hoegaerden.be/wp-content/uploads/030_DeclineAccept.png" border="0" alt="Web Platform Installation - Accept License Terms" width="700" height="480" /></p>
<p>Finally, the installation begins!</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="Web Platform Installation - Progress Bar" src="http://blog.hoegaerden.be/wp-content/uploads/035_ProgressBar.png" border="0" alt="Web Platform Installation - Progress Bar" width="700" height="480" /></p>
<p>To keep us busy, we’re presented with another pop-up with a progress bar:</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="image" src="http://blog.hoegaerden.be/wp-content/uploads/image466.png" border="0" alt="image" width="700" height="379" /></p>
<p>Woah!  Is this thing installing <a title="SQL Server 2012 Express LocalDB" href="http://msdn.microsoft.com/en-us/library/hh510202.aspx" target="_blank">SQL Server 2012 Express LocalDB</a> like it says in the message?  I didn’t ask for that!  MS people, as I already have a version 2012 DB engine running on my machine, please make this optional…</p>
<p>Just a little later we’re presented with this:</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="Web Platform Installation - Congratulations!" src="http://blog.hoegaerden.be/wp-content/uploads/050_Finish.png" border="0" alt="Web Platform Installation - Congratulations!" width="700" height="480" /></p>
<p>Clicking the Finish button gives us yet one more pop-up:</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="Web Platform Installer 3.0 - Spotlight" src="http://blog.hoegaerden.be/wp-content/uploads/055_WebPlatformInstaller3.png" border="0" alt="Web Platform Installer 3.0 - Spotlight" width="700" height="485" /></p>
<p>The Web Platform Installer presents us with a list of applications we can install, including Microsoft SQL Server Data Tools.  Oh my, I thought we just finished installing it?  Let’s not be silly and click the Exit button</p>
<p>To conclude, we need to restart Visual Studio 2010, or aka SSDT.</p>
<h2>Really Getting Started With SSDT</h2>
<p>With everything up and running smoothly this time, open SSDT once more and in File &gt; New Project you’ll now find the <strong>SQL Server Database Project</strong> under the SQL Server collection:</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="New Project - SQL Server Database Project" src="http://blog.hoegaerden.be/wp-content/uploads/image467.png" border="0" alt="New Project - SQL Server Database Project" width="700" height="392" /></p>
<p>If you also have Visual Studio 2010 installed in <a title="Visual Studio 2010: Feature Comparison" href="http://www.microsoft.com/visualstudio/en-gb/products" target="_blank">Premium or Ultimate edition</a>, you should take care to open up the correct SQL Server template collection.  The reason for that is because the data dude projects are included in those versions of Visual Studio, as shown in the screenshot below:</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="The SQL Server templates in Visual Studio 2010" src="http://blog.hoegaerden.be/wp-content/uploads/VS2010_NewDBProject.png" border="0" alt="The SQL Server templates in Visual Studio 2010" width="700" height="484" /></p>
<p>So the templates under Database &gt; SQL Server are <strong>not</strong> what you’re looking for!</p>
<p>That’s it for now, I’ll demonstrate my favorite SSDT feature in an upcoming post!</p>
<p>Have fun!</p>
<p>Valentino.</p>
<p><strong>References</strong></p>
<p><a title="Microsoft SQL Server Data Tools" href="http://msdn.microsoft.com/en-us/data/gg427686" target="_blank">SSDT Main page on Data Developer Center</a></p>
<p><a title="SQL Server Data Tools Team Blog" href="http://blogs.msdn.com/b/ssdt/" target="_blank">SQL Server Data Tools Team Blog</a></p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.hoegaerden.be%2F2012%2F04%2F18%2Fsql-server-data-tools-ssdt%2F&amp;title=SQL%20Server%20Data%20Tools%20%28SSDT%29" id="wpa2a_8"><img src="http://blog.hoegaerden.be/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ADevelopersBlog?a=C-6Yga33rl8:gyEMtDbIKzE:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ADevelopersBlog?i=C-6Yga33rl8:gyEMtDbIKzE:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ADevelopersBlog?a=C-6Yga33rl8:gyEMtDbIKzE:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ADevelopersBlog?i=C-6Yga33rl8:gyEMtDbIKzE:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ADevelopersBlog?a=C-6Yga33rl8:gyEMtDbIKzE:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/ADevelopersBlog?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ADevelopersBlog?a=C-6Yga33rl8:gyEMtDbIKzE:3QFJfmc7Om4"><img src="http://feeds.feedburner.com/~ff/ADevelopersBlog?i=C-6Yga33rl8:gyEMtDbIKzE:3QFJfmc7Om4" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ADevelopersBlog?a=C-6Yga33rl8:gyEMtDbIKzE:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ADevelopersBlog?i=C-6Yga33rl8:gyEMtDbIKzE:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ADevelopersBlog/~4/C-6Yga33rl8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.hoegaerden.be/2012/04/18/sql-server-data-tools-ssdt/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blog.hoegaerden.be/2012/04/18/sql-server-data-tools-ssdt/</feedburner:origLink></item>
		<item>
		<title>SQLUG Event: The ColumnStore Index</title>
		<link>http://feedproxy.google.com/~r/ADevelopersBlog/~3/Kvd-8xsbzjc/</link>
		<comments>http://blog.hoegaerden.be/2012/04/10/sqlug-event-the-columnstore-index/#comments</comments>
		<pubDate>Tue, 10 Apr 2012 16:04:07 +0000</pubDate>
		<dc:creator>Valentino Vranken</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[Community Event]]></category>
		<category><![CDATA[SQLUG]]></category>

		<guid isPermaLink="false">http://blog.hoegaerden.be/2012/04/10/sqlug-event-the-columnstore-index/</guid>
		<description><![CDATA[Huh, the what?  I know INDEX and I know CLUSTERED INDEX.  Heck, I even know the filtered index, but COLUMNSTORE?  That’s new to me! If that’s your reaction, or you simply want to find out how this new SQL Server 2012 feature has been used in one of the largest data warehouses in the country, [...]]]></description>
			<content:encoded><![CDATA[<p><img style="margin: 0px 0px 0px 10px; display: inline; float: right;" title="SQLUG Event" src="http://blog.hoegaerden.be/wp-content/uploads/logo.png" alt="SQLUG Event" align="right" /></p>
<blockquote>
<p>Huh, the what?  I know INDEX and I know CLUSTERED INDEX.  Heck, I even know the filtered index, but COLUMNSTORE?  That’s new to me!</p></blockquote>
<p>If that’s your reaction, or you simply want to find out how this new SQL Server 2012 feature has been used in one of the largest data warehouses in the country, you should be present next Monday for our upcoming SQLUG event.</p>
<p><strong>Location:</strong> Microsoft Belgium, Corporate Village, Leonardo Da Vincilaan 3, 1935 Zaventem</p>
<p><strong>Presenter:</strong> Ludo Bernaerts (ITN Senior Operational Engineer at Belgacom)</p>
<p><strong>Date:</strong> 16/04/2012</p>
<p><strong>Time:</strong> 1800 – 2100</p>
<p>Ow yeah, <a title="ColumnStore Indexes in SQL Server 2012 - 16/04/2012" href="http://sqlug.be/nextevent/event/?id=30" target="_blank">registration goes through here</a>!</p>
<p>See you there!</p>
<p>Valentino.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.hoegaerden.be%2F2012%2F04%2F10%2Fsqlug-event-the-columnstore-index%2F&amp;title=SQLUG%20Event%3A%20The%20ColumnStore%20Index" id="wpa2a_10"><img src="http://blog.hoegaerden.be/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ADevelopersBlog?a=Kvd-8xsbzjc:4W4_AbS7adk:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ADevelopersBlog?i=Kvd-8xsbzjc:4W4_AbS7adk:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ADevelopersBlog?a=Kvd-8xsbzjc:4W4_AbS7adk:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ADevelopersBlog?i=Kvd-8xsbzjc:4W4_AbS7adk:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ADevelopersBlog?a=Kvd-8xsbzjc:4W4_AbS7adk:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/ADevelopersBlog?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ADevelopersBlog?a=Kvd-8xsbzjc:4W4_AbS7adk:3QFJfmc7Om4"><img src="http://feeds.feedburner.com/~ff/ADevelopersBlog?i=Kvd-8xsbzjc:4W4_AbS7adk:3QFJfmc7Om4" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ADevelopersBlog?a=Kvd-8xsbzjc:4W4_AbS7adk:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ADevelopersBlog?i=Kvd-8xsbzjc:4W4_AbS7adk:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ADevelopersBlog/~4/Kvd-8xsbzjc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.hoegaerden.be/2012/04/10/sqlug-event-the-columnstore-index/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.hoegaerden.be/2012/04/10/sqlug-event-the-columnstore-index/</feedburner:origLink></item>
		<item>
		<title>Building Reports With Dynamic Datasets</title>
		<link>http://feedproxy.google.com/~r/ADevelopersBlog/~3/9DYCiiluJwE/</link>
		<comments>http://blog.hoegaerden.be/2012/03/20/building-reports-with-dynamic-datasets/#comments</comments>
		<pubDate>Tue, 20 Mar 2012 19:35:37 +0000</pubDate>
		<dc:creator>Valentino Vranken</dc:creator>
				<category><![CDATA[Reporting Services]]></category>
		<category><![CDATA[SQLServerPedia Syndication]]></category>
		<category><![CDATA[SSRS]]></category>
		<category><![CDATA[Tutorial]]></category>

		<guid isPermaLink="false">http://blog.hoegaerden.be/2012/03/20/building-reports-with-dynamic-datasets/</guid>
		<description><![CDATA[On the forums I regularly encounter questions like: I have a report and want to show A, B, C but sometimes I want X, Y, Z and not A, B, C. How? Or, in other words: I have a parameter and based on the selection I want to return different fields in my dataset.  How [...]]]></description>
			<content:encoded><![CDATA[<p>On the forums I regularly encounter questions like:</p>
<blockquote><p>I have a report and want to show A, B, C but sometimes I want X, Y, Z and not A, B, C. How?</p></blockquote>
<p>Or, in other words:</p>
<blockquote><p>I have a parameter and based on the selection I want to return different fields in my dataset.  How can I do that?</p></blockquote>
<p>My initial reaction would be “I don’t think you can do that”.  But then I thought it would be useful in certain situations and decided to try it out. And guess what?  You can do that!  Here’s how.</p>
<p>Just to make sure everyone is on track: this article is not about dynamicity in terms of rows returned, that would be <a title="How to: Add a Filter to a Dataset (Report Builder 3.0 and SSRS)" href="http://technet.microsoft.com/en-us/library/dd255287.aspx" target="_blank">filtered datasets</a> and you’ll already find plenty of <a title="Working with Reporting Services Filters–Part 1" href="http://blog.datainspirations.com/2010/12/21/working-with-reporting-services-filterspart-1/" target="_blank">references</a> on the internet.  This article is about a varying number of columns in the dataset, which is a little less straightforward.</p>
<p>The database used in the examples is AdventureWorks2008R2, <a title="Sample Database" href="http://msftdbprodsamples.codeplex.com/" target="_blank">available at Codeplex</a>.  And the screenshots are taken from SQL Server 2008 R2 x64 SP1.</p>
<h2>The Scenario</h2>
<p>The report we’re going to build should show a list of products sold.  But the report is used by different user groups: those who just want to see the sales numbers and those who also care about stock levels!</p>
<p>So by default the report should show a list of items and number sold, but it should also be possible to render that same report whilst displaying the stock-related statistics.</p>
<p>And to make it even a bit more interesting, by default the data should be ordered according to product number but in “stock level mode” the ordering should put those with the lowest current stock first.</p>
<h2>The Report</h2>
<p>Let’s get started!  The first step in creating a report is often the writing of a SELECT statement.  In this scenario we’ll be needing two of them, both in the same dataset.</p>
<h3>The Dataset</h3>
<p>Our dataset is going to need a parameter to be able to decide what type of user is requesting the report. Let’s call that parameter <em>WithStockData</em>, and its <strong>type</strong> will be <em>Boolean</em>.</p>
<p>The layout of the dataset statement will be this:</p>
<pre class="code"><span style="color: blue;">if </span>@WithStockData <span style="color: gray;">= </span>1
<span style="color: green;">-- sales and stock data
</span><span style="color: blue;">else
</span><span style="color: green;">-- regular sales data</span></pre>
<p>A simple <a title="IF...ELSE (Transact-SQL)" href="http://msdn.microsoft.com/en-us/library/ms182717(v=sql.105).aspx" target="_blank">IF</a> statement, taking the parameter into account.  The parameter is a boolean value so when it’s True, it equals to 1.</p>
<p>And here’s the full statement for the dataset:</p>
<pre class="code"><span style="color: blue;">if </span>@WithStockData <span style="color: gray;">= </span>1
    <span style="color: green;">-- sales and stock data
    </span><span style="color: blue;">select </span>P<span style="color: gray;">.</span>ProductNumber<span style="color: gray;">, </span>P<span style="color: gray;">.</span>Name
        <span style="color: gray;">, </span>P<span style="color: gray;">.</span>SafetyStockLevel<span style="color: gray;">, </span>P<span style="color: gray;">.</span>ReorderPoint
        <span style="color: gray;">, </span><span style="color: magenta;">SUM</span><span style="color: gray;">(</span>SOD<span style="color: gray;">.</span>OrderQty<span style="color: gray;">) </span>SoldQuantity<span style="color: gray;">, </span><span style="color: magenta;">SUM</span><span style="color: gray;">(</span>I<span style="color: gray;">.</span>Quantity<span style="color: gray;">) </span>InventoryQuantity
        <span style="color: gray;">, </span><span style="color: magenta;">SUM</span><span style="color: gray;">(</span>I<span style="color: gray;">.</span>Quantity<span style="color: gray;">) - </span><span style="color: magenta;">SUM</span><span style="color: gray;">(</span>SOD<span style="color: gray;">.</span>OrderQty<span style="color: gray;">) </span>CurrentStock
    <span style="color: blue;">from </span>Production<span style="color: gray;">.</span>Product P
    <span style="color: gray;">inner join </span>Sales<span style="color: gray;">.</span>SalesOrderDetail SOD <span style="color: blue;">on </span>SOD<span style="color: gray;">.</span>ProductID <span style="color: gray;">= </span>P<span style="color: gray;">.</span>ProductID
    <span style="color: gray;">inner join </span>Production<span style="color: gray;">.</span>ProductInventory I <span style="color: blue;">on </span>I<span style="color: gray;">.</span>ProductID <span style="color: gray;">= </span>P<span style="color: gray;">.</span>ProductID
    <span style="color: blue;">group by </span>P<span style="color: gray;">.</span>ProductNumber<span style="color: gray;">, </span>P<span style="color: gray;">.</span>Name<span style="color: gray;">, </span>P<span style="color: gray;">.</span>SafetyStockLevel<span style="color: gray;">, </span>P<span style="color: gray;">.</span>ReorderPoint
    <span style="color: blue;">order by </span>CurrentStock<span style="color: gray;"> </span><span style="color: blue;">asc
else
    </span><span style="color: green;">-- regular sales data
    </span><span style="color: blue;">select </span>P<span style="color: gray;">.</span>ProductNumber<span style="color: gray;">, </span>P<span style="color: gray;">.</span>Name
        <span style="color: gray;">, </span><span style="color: magenta;">SUM</span><span style="color: gray;">(</span>SOD<span style="color: gray;">.</span>OrderQty<span style="color: gray;">) </span>SoldQuantity
    <span style="color: blue;">from </span>Production<span style="color: gray;">.</span>Product P
    <span style="color: gray;">inner join </span>Sales<span style="color: gray;">.</span>SalesOrderDetail SOD <span style="color: blue;">on </span>SOD<span style="color: gray;">.</span>ProductID <span style="color: gray;">= </span>P<span style="color: gray;">.</span>ProductID
    <span style="color: blue;">group by </span>P<span style="color: gray;">.</span>ProductNumber<span style="color: gray;">, </span>P<span style="color: gray;">.</span>Name
    <span style="color: blue;">order by </span>P<span style="color: gray;">.</span>ProductNumber <span style="color: blue;">asc</span><span style="color: gray;">;</span></pre>
<p>Some data as returned by the SELECT in the <em>then</em> part:</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="The sales and stock data: 7 fields in total" src="http://blog.hoegaerden.be/wp-content/uploads/image452.png" border="0" alt="The sales and stock data: 7 fields in total" width="700" height="128" /></p>
<p>And some data as returned by the query in the <em>else</em> part:</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="The regular sales data only consists of three columns" src="http://blog.hoegaerden.be/wp-content/uploads/image453.png" border="0" alt="The regular sales data only consists of three columns" width="327" height="97" /></p>
<p>As you can clearly see, the first query returns seven fields while the second one contains only three.  You can also see that both results are ordered differently.</p>
<p>Now, let’s get the fun started!  Create a new report, set up a data source that points to the AdventureWorks2008R2 database and create a dataset with the query above:</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="Setting up the dataset" src="http://blog.hoegaerden.be/wp-content/uploads/image454.png" border="0" alt="Setting up the dataset" width="629" height="642" /></p>
<p><span style="text-decoration: underline;">Power tip:</span> to create the dataset, do not right-click on the Datasets node in the Report Data pane, but right-click on the <strong>Data Source</strong> and then select <strong>Add Dataset</strong>.  That saves you some work because the Data Source will be pre-populated.  All you need to do is paste the query in the <strong>Query</strong> field and give it a decent <strong>Name</strong>.</p>
<p>Click the OK button to close the Dataset Properties.</p>
<p>Now open the new dataset in the Report Data pane and count its fields:</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="Our dataset contains seven fields!" src="http://blog.hoegaerden.be/wp-content/uploads/image455.png" border="0" alt="Our dataset contains seven fields!" width="285" height="166" /></p>
<p>You should come to seven!  How nice, all of our fields are there.  This is not always the case, but I’ll handle that later.</p>
<p>The Parameters node in the Report Data pane should now contain a new parameter called @WithStockData:</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="The @WithStockData parameter got created automatically" src="http://blog.hoegaerden.be/wp-content/uploads/image456.png" border="0" alt="The @WithStockData parameter got created automatically" width="149" height="98" /></p>
<p>Double-click it to get to its properties and change the <strong>Data type</strong> to <em>Boolean</em> (by default it’s <em>Text</em>).</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="The WithStockData parameter properties" src="http://blog.hoegaerden.be/wp-content/uploads/image457.png" border="0" alt="The WithStockData parameter properties" width="585" height="482" /></p>
<p>If you want, you can also specify a default value.  The value should be either “true” or “false”:</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="Our Boolean parameter is set to false as default" src="http://blog.hoegaerden.be/wp-content/uploads/image458.png" border="0" alt="Our Boolean parameter is set to false as default" width="585" height="482" /></p>
<p>With the dataset fully set up, let’s now move on to visualizing it.</p>
<h3>Displaying Dynamic Columns</h3>
<p>Put a <strong>Table</strong> on the report Design and set it up as follows:</p>
<p><a href="http://blog.hoegaerden.be/wp-content/uploads/image459.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="The Table contains seven columns" src="http://blog.hoegaerden.be/wp-content/uploads/image_thumb105.png" border="0" alt="The Table contains seven columns" width="700" height="60" /></a></p>
<p>All seven columns have been added, and to avoid whitespace in the table when some columns are hidden I’ve put the dynamic columns at the end.</p>
<p>One step remains: even though the values won’t always be present, the columns will not disappear automatically.  To take care of that, we’ll enter an expression on the <strong>Hidden</strong> property of each column.  Each column in a dataset has got the <strong>IsMissing</strong> property.  When its value is True, it means that the column is not present and should thus be hidden.</p>
<p>The expression looks like this:</p>
<pre class="code">=Fields!InventoryQuantity.IsMissing</pre>
<p>Or visually:</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="Using the IsMissing property to hide a column dynamically" src="http://blog.hoegaerden.be/wp-content/uploads/image460.png" border="0" alt="Using the IsMissing property to hide a column dynamically" width="577" height="641" /></p>
<p>To set up the expression, click the grey area above the column title to select it and then locate the <strong>Hidden</strong> property in the <strong>Properties</strong> pane.  Do this for each dynamic column (don&#8217;t forget to change the column name in the expression).</p>
<p>And here’s what the rendered report looks like:</p>
<p><a href="http://blog.hoegaerden.be/wp-content/uploads/image461.png"><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="Report with all columns displayed" src="http://blog.hoegaerden.be/wp-content/uploads/image_thumb106.png" border="0" alt="Report with all columns displayed" width="700" height="228" /></a></p>
<p>Once more, with the parameter set to False:</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="The report showing sales data only" src="http://blog.hoegaerden.be/wp-content/uploads/image462.png" border="0" alt="The report showing sales data only" width="482" height="264" /></p>
<p>The four stock-related columns are nicely hidden!  And the ordering is working as well because we’ve taken care of that in the dataset’s queries.</p>
<p>Easy, huh?  Well, yeah, but I’ve made sure that the process went as smoothly as possible.  It takes some knowledge on how SSRS actually works.  Let’s make this clear by adapting the example just a little.</p>
<h3>Understanding The Dataset</h3>
<p>Delete the current dataset and create a new one, using the following statement (ensure that you give it the same name as the original one):</p>
<pre class="code"><span style="color: blue;">if </span>@WithStockData <span style="color: gray;">= </span>0
    <span style="color: green;">-- regular sales data
    </span><span style="color: blue;">select </span>P<span style="color: gray;">.</span>ProductNumber<span style="color: gray;">, </span>P<span style="color: gray;">.</span>Name
        <span style="color: gray;">, </span><span style="color: magenta;">SUM</span><span style="color: gray;">(</span>SOD<span style="color: gray;">.</span>OrderQty<span style="color: gray;">) </span>SoldQuantity
    <span style="color: blue;">from </span>Production<span style="color: gray;">.</span>Product P
    <span style="color: gray;">inner join </span>Sales<span style="color: gray;">.</span>SalesOrderDetail SOD <span style="color: blue;">on </span>SOD<span style="color: gray;">.</span>ProductID <span style="color: gray;">= </span>P<span style="color: gray;">.</span>ProductID
    <span style="color: blue;">group by </span>P<span style="color: gray;">.</span>ProductNumber<span style="color: gray;">, </span>P<span style="color: gray;">.</span>Name
    <span style="color: blue;">order by </span>P<span style="color: gray;">.</span>ProductNumber <span style="color: blue;">asc
else
    </span><span style="color: green;">-- sales and stock data
    </span><span style="color: blue;">select </span>P<span style="color: gray;">.</span>ProductNumber<span style="color: gray;">, </span>P<span style="color: gray;">.</span>Name
        <span style="color: gray;">, </span>P<span style="color: gray;">.</span>SafetyStockLevel<span style="color: gray;">, </span>P<span style="color: gray;">.</span>ReorderPoint
        <span style="color: gray;">, </span><span style="color: magenta;">SUM</span><span style="color: gray;">(</span>SOD<span style="color: gray;">.</span>OrderQty<span style="color: gray;">) </span>SoldQuantity<span style="color: gray;">, </span><span style="color: magenta;">SUM</span><span style="color: gray;">(</span>I<span style="color: gray;">.</span>Quantity<span style="color: gray;">) </span>InventoryQuantity
        <span style="color: gray;">, </span><span style="color: magenta;">SUM</span><span style="color: gray;">(</span>I<span style="color: gray;">.</span>Quantity<span style="color: gray;">) - </span><span style="color: magenta;">SUM</span><span style="color: gray;">(</span>SOD<span style="color: gray;">.</span>OrderQty<span style="color: gray;">) </span>CurrentStock
    <span style="color: blue;">from </span>Production<span style="color: gray;">.</span>Product P
    <span style="color: gray;">inner join </span>Sales<span style="color: gray;">.</span>SalesOrderDetail SOD <span style="color: blue;">on </span>SOD<span style="color: gray;">.</span>ProductID <span style="color: gray;">= </span>P<span style="color: gray;">.</span>ProductID
    <span style="color: gray;">inner join </span>Production<span style="color: gray;">.</span>ProductInventory I <span style="color: blue;">on </span>I<span style="color: gray;">.</span>ProductID <span style="color: gray;">= </span>P<span style="color: gray;">.</span>ProductID
    <span style="color: blue;">group by </span>P<span style="color: gray;">.</span>ProductNumber<span style="color: gray;">, </span>P<span style="color: gray;">.</span>Name<span style="color: gray;">, </span>P<span style="color: gray;">.</span>SafetyStockLevel<span style="color: gray;">, </span>P<span style="color: gray;">.</span>ReorderPoint
    <span style="color: blue;">order by </span>CurrentStock<span style="color: gray;"> </span><span style="color: blue;">asc</span><span style="color: gray;">;</span></pre>
<p>The only difference with the previous version is that the IF condition is reversed and thus the two queries are swapped.</p>
<p>Now render the report.  What do you see?</p>
<blockquote><p>An error occurred during local report processing.</p>
<p>The definition of the report ‘/DynamicDataset’ is invalid.</p>
<p>The Hidden expression for the text box ‘Textbox7’ refers to the field ‘InventoryQuantity’. Report item expressions can only refer to fields within the current dataset scope or, if inside an aggregate, the specified dataset scope.</p>
<p>Letters in the names of fields must use the correct case.</p></blockquote>
<p>Oh my, it’s broken!</p>
<p>Now take a good look at the available dataset fields:</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="The dataset only has three columns, oh my!" src="http://blog.hoegaerden.be/wp-content/uploads/image463.png" border="0" alt="The dataset only has three columns, oh my!" width="241" height="100" /></p>
<p>That’s right, only three!  Four of them have gone missing!  The reason for that is because SSRS uses the first SELECT query it encounters in the whole statement to determine the available fields.  It’s not able to automatically detect the different situations and create all the fields that can possibly be returned.</p>
<p>One way to ensure all fields are created is to put the query that returns all possible fields as first query, which is what I initially did.  But of course that’s not always an option.</p>
<h3>Manually Adding Fields To A Dataset</h3>
<p>Luckily it’s possible to manually add fields to the dataset.  You can do this by clicking the <strong>Add</strong> button in the <strong>Fields</strong> page of the <strong>Dataset Properties</strong> and then selecting <strong>Query Field</strong>.</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="Manually adding additional fields to the dataset" src="http://blog.hoegaerden.be/wp-content/uploads/image464.png" border="0" alt="Manually adding additional fields to the dataset" width="643" height="265" /></p>
<p>So, add the four missing fields:</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="The four additional fields added manually" src="http://blog.hoegaerden.be/wp-content/uploads/image465.png" border="0" alt="The four additional fields added manually" width="454" height="245" /></p>
<p>If you now render the report, it should behave exactly the same as in the initial version!</p>
<h3>What About Those Warnings?</h3>
<p>If you’re someone who pays attention to the Error List pane, you may have noticed some warnings.  Two for each dynamic field to be exact.</p>
<p>Here’s an example of the <strong>rsMissingFieldInDataSet</strong> warning:</p>
<blockquote><p>Warning    1    [rsMissingFieldInDataSet] The dataset ‘dsProductSales’ contains a definition for the Field ‘SafetyStockLevel’. This field is missing from the returned result set from the data source.    C:\test\SSRS\SSRS2008\DynamicDataset.rdl    0    0</p></blockquote>
<p>And here’s the <strong>rsErrorReadingDataSetField</strong> warning:</p>
<blockquote><p>Warning    2    [rsErrorReadingDataSetField] The dataset ‘dsProductSales’ contains a definition for the Field ‘SafetyStockLevel’. The data extension returned an error during reading the field. There is no data for the field at position 4.    C:\test\SSRS\SSRS2008\DynamicDataset.rdl    0    0</p></blockquote>
<p>I’ve got a developer background, so I always try to remove all warnings.  So if you really want to get rid of those warnings too, even that’s possible.  But it will require some Custom Code writing.  I already covered that topic some years ago, when I wrote an article about <a title="SSRS and MDX: Detecting Missing Fields" href="http://blog.hoegaerden.be/2009/07/06/ssrs-and-mdx-detecting-missing-fields/" target="_blank">Detecting Missing Fields</a>.</p>
<h2>Conclusion</h2>
<p>With this article I believe to have demonstrated that datasets can be quite flexible, even though it doesn’t always seem so.</p>
<p>Have fun!</p>
<p>Valentino.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.hoegaerden.be%2F2012%2F03%2F20%2Fbuilding-reports-with-dynamic-datasets%2F&amp;title=Building%20Reports%20With%20Dynamic%20Datasets" id="wpa2a_12"><img src="http://blog.hoegaerden.be/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ADevelopersBlog?a=9DYCiiluJwE:ItQwgD4zo7w:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ADevelopersBlog?i=9DYCiiluJwE:ItQwgD4zo7w:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ADevelopersBlog?a=9DYCiiluJwE:ItQwgD4zo7w:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ADevelopersBlog?i=9DYCiiluJwE:ItQwgD4zo7w:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ADevelopersBlog?a=9DYCiiluJwE:ItQwgD4zo7w:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/ADevelopersBlog?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ADevelopersBlog?a=9DYCiiluJwE:ItQwgD4zo7w:3QFJfmc7Om4"><img src="http://feeds.feedburner.com/~ff/ADevelopersBlog?i=9DYCiiluJwE:ItQwgD4zo7w:3QFJfmc7Om4" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ADevelopersBlog?a=9DYCiiluJwE:ItQwgD4zo7w:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ADevelopersBlog?i=9DYCiiluJwE:ItQwgD4zo7w:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ADevelopersBlog/~4/9DYCiiluJwE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.hoegaerden.be/2012/03/20/building-reports-with-dynamic-datasets/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.hoegaerden.be/2012/03/20/building-reports-with-dynamic-datasets/</feedburner:origLink></item>
		<item>
		<title>Garmin Edge 705 Auto Pause</title>
		<link>http://feedproxy.google.com/~r/ADevelopersBlog/~3/GMdI-IX1o-o/</link>
		<comments>http://blog.hoegaerden.be/2012/03/17/garmin-edge-705-auto-pause/#comments</comments>
		<pubDate>Sat, 17 Mar 2012 10:18:26 +0000</pubDate>
		<dc:creator>Valentino Vranken</dc:creator>
				<category><![CDATA[Gadgets]]></category>
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://blog.hoegaerden.be/2012/03/17/garmin-edge-705-auto-pause/</guid>
		<description><![CDATA[Here’s a quick one about yet one more annoying default setting.  When I go mountain biking I’m using a Garmin Edge 705 to record my statistics.  After every trip I upload my track to Garmin Connect.  One of my favorite statistics there was Average Moving Speed.  I typed “was” on purpose.  It’s no longer there! [...]]]></description>
			<content:encoded><![CDATA[<p>Here’s a quick one about <strong>yet one more annoying default setting</strong>.  When I go mountain biking I’m using a Garmin Edge 705 to record my statistics.  After every trip I upload my track to <a title="Garmin Connect" href="http://connect.garmin.com/" target="_blank">Garmin Connect</a>.  One of my favorite statistics there was Average Moving Speed.  I typed “was” on purpose.  It’s no longer there!</p>
<p>Apparently <a title="Inside Garmin Connect: Time, Elapsed Time and Auto Pause" href="http://garmin.blogs.com/my_weblog/2012/03/inside-garmin-connect-time-elapsed-time-and-auto-pause.html" target="_blank">they removed it</a> because the community was confused about it, hmm.  Now how can I get that back?</p>
<p>This device is a GPS, so technically it’s able to detect if your moving and how fast.  It can also stop/start recording automatically.  And here it comes: by default it doesn’t do that!</p>
<p>Now, to activate the auto pause, it would seem logical that you’d need to change a setting in the Settings menu, right?  Well, wrong!  The setting is located in the <strong>Training</strong> menu!  Inside that menu, you need <strong>Auto Pause/Lap</strong> and there you’ve got the <strong>Auto Timer Pause</strong> setting which you can change to <em>Off</em> to <em>When Stopped</em> or <em>Custom Speed</em>.</p>
<p>Tomorrow I’ll try my first track with Custom Speed set to 4 km/h!  This way I hope I avoid that it records while stopped for refueling (read: sports drink and cookies, fruit, not gas or electricity).</p>
<p>Need more info?  Try this video then:</p>
<div id="scid:5737277B-5D6D-4f48-ABFC-DD9C333F4C5D:861ef41d-1138-4049-a6b3-1a6c9ed9d1d3" class="wlWriterEditableSmartContent" style="margin: 0px; display: inline; float: none; padding: 0px;">
<div><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="448" height="252" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://www.youtube.com/v/LKwQFG40frw?hl=en&amp;hd=1" /><embed type="application/x-shockwave-flash" width="448" height="252" src="http://www.youtube.com/v/LKwQFG40frw?hl=en&amp;hd=1"></embed></object></div>
<div style="width: 448px; clear: both; font-size: .8em;">Edge 705 Auto Pause–Auto Lap</div>
</div>
<p>Have fun!</p>
<p>Valentino.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.hoegaerden.be%2F2012%2F03%2F17%2Fgarmin-edge-705-auto-pause%2F&amp;title=Garmin%20Edge%20705%20Auto%20Pause" id="wpa2a_14"><img src="http://blog.hoegaerden.be/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ADevelopersBlog?a=GMdI-IX1o-o:JX8BHE2Wu90:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ADevelopersBlog?i=GMdI-IX1o-o:JX8BHE2Wu90:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ADevelopersBlog?a=GMdI-IX1o-o:JX8BHE2Wu90:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ADevelopersBlog?i=GMdI-IX1o-o:JX8BHE2Wu90:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ADevelopersBlog?a=GMdI-IX1o-o:JX8BHE2Wu90:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/ADevelopersBlog?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ADevelopersBlog?a=GMdI-IX1o-o:JX8BHE2Wu90:3QFJfmc7Om4"><img src="http://feeds.feedburner.com/~ff/ADevelopersBlog?i=GMdI-IX1o-o:JX8BHE2Wu90:3QFJfmc7Om4" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ADevelopersBlog?a=GMdI-IX1o-o:JX8BHE2Wu90:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ADevelopersBlog?i=GMdI-IX1o-o:JX8BHE2Wu90:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ADevelopersBlog/~4/GMdI-IX1o-o" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.hoegaerden.be/2012/03/17/garmin-edge-705-auto-pause/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.hoegaerden.be/2012/03/17/garmin-edge-705-auto-pause/</feedburner:origLink></item>
		<item>
		<title>SQL, VS, SPs: Installation Order</title>
		<link>http://feedproxy.google.com/~r/ADevelopersBlog/~3/P0IXH9PW9V0/</link>
		<comments>http://blog.hoegaerden.be/2012/03/13/sql-vs-sps-installation-order/#comments</comments>
		<pubDate>Tue, 13 Mar 2012 21:14:51 +0000</pubDate>
		<dc:creator>Valentino Vranken</dc:creator>
				<category><![CDATA[SQL Server]]></category>
		<category><![CDATA[Visual Studio]]></category>

		<guid isPermaLink="false">http://blog.hoegaerden.be/2012/03/13/sql-vs-sps-installation-order/</guid>
		<description><![CDATA[Earlier this month I’ve had the pleasure of installing a development PC from scratch. As always, the first question that then comes to mind is: in what order should I install my software?  SQL Server, Visual Studio, any service packs, add-ons, … Obviously, the basic requirement is SQL Server 2008 R2.  I also need Visual [...]]]></description>
			<content:encoded><![CDATA[<p>Earlier this month I’ve had the pleasure of installing a development PC from scratch.</p>
<p>As always, the first question that then comes to mind is: in what order should I install my software?  SQL Server, Visual Studio, any service packs, add-ons, …</p>
<p>Obviously, the basic requirement is SQL Server 2008 R2.  I also need Visual Studio 2008 for custom development, and Visual Studio 2010 for the Database Projects.  Furthermore we’re using Team Foundation Server 2010 for source control purposes.</p>
<p>The list below represents the order with which I’ve come up and which I’ve applied with success.  This order is based on own experience, plus some web research to make sure I didn’t miss anything crucial.</p>
<p><strong>Tip:</strong> when given the chance, always go for Custom Install.</p>
<ul>
<li>Visual Studio 2008 (ensure to not install SQL 2005 Express Edition)</li>
<li>VS2008 Team Explorer (<a title="Visual Studio Team System 2008 Team Explorer" href="http://www.microsoft.com/download/en/details.aspx?id=16338" target="_blank">link</a>)</li>
<li>SP1 for VS2008 (<a title="Microsoft Visual Studio 2008 Service Pack 1 (iso)" href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;id=13276" target="_blank">link</a>)</li>
<li>VS2008 SP1 Forward Compatibility Update for TFS2010 (<a title="Visual Studio Team System 2008 Service Pack 1 Forward Compatibility Update for Team Foundation Server 2010 (Installer)" href="http://www.microsoft.com/download/en/details.aspx?id=10834" target="_blank">KB974558</a>)</li>
<li>SQL Server 2008 R2</li>
<li>SP1 for SQL2008R2 (<a title="Microsoft® SQL Server® 2008 R2 Service Pack 1" href="http://www.microsoft.com/download/en/details.aspx?id=26727" target="_blank">link</a>)</li>
<li>Visual Studio 2010 (ensure to not install SQL 2008 Express Edition)</li>
<li>SP1 for VS2010 (<a title="Microsoft Visual Studio 2010 Service Pack 1 (Installer)" href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;id=23691" target="_blank">link</a>)</li>
</ul>
<p>In case you’re wondering why this matters so much, well, let’s just say that getting the order wrong can really cost you some time.  In the past I’ve had the pleasure of witnessing <a title="FIX: The IntelliSense feature in SSMS 2008 R2 may stop working after you install Visual Studio 2010 SP1" href="http://support.microsoft.com/kb/2531482" target="_blank">an Intellisense (in SSMS) that’s completely broken</a> and <a title="Schema Compare permission error for Database Encryption Keys even though the type is set to be ignored" href="http://connect.microsoft.com/VisualStudio/feedback/details/552986/schema-compare-permission-error-for-database-encryption-keys-even-though-the-type-is-set-to-be-ignored" target="_blank">an error in VS2010 that prevented me from using the Database Schema Comparison feature to script out the changes</a>.</p>
<p>Hopefully this saves you some time, and I encourage you to have fun while you’re watching that installer’s progress bar!</p>
<p>Valentino.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.hoegaerden.be%2F2012%2F03%2F13%2Fsql-vs-sps-installation-order%2F&amp;title=SQL%2C%20VS%2C%20SPs%3A%20Installation%20Order" id="wpa2a_16"><img src="http://blog.hoegaerden.be/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ADevelopersBlog?a=P0IXH9PW9V0:A5-Qv3K7qNY:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ADevelopersBlog?i=P0IXH9PW9V0:A5-Qv3K7qNY:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ADevelopersBlog?a=P0IXH9PW9V0:A5-Qv3K7qNY:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ADevelopersBlog?i=P0IXH9PW9V0:A5-Qv3K7qNY:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ADevelopersBlog?a=P0IXH9PW9V0:A5-Qv3K7qNY:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/ADevelopersBlog?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ADevelopersBlog?a=P0IXH9PW9V0:A5-Qv3K7qNY:3QFJfmc7Om4"><img src="http://feeds.feedburner.com/~ff/ADevelopersBlog?i=P0IXH9PW9V0:A5-Qv3K7qNY:3QFJfmc7Om4" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ADevelopersBlog?a=P0IXH9PW9V0:A5-Qv3K7qNY:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ADevelopersBlog?i=P0IXH9PW9V0:A5-Qv3K7qNY:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ADevelopersBlog/~4/P0IXH9PW9V0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.hoegaerden.be/2012/03/13/sql-vs-sps-installation-order/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.hoegaerden.be/2012/03/13/sql-vs-sps-installation-order/</feedburner:origLink></item>
		<item>
		<title>Custom Code in SSIS</title>
		<link>http://feedproxy.google.com/~r/ADevelopersBlog/~3/H40tmENsP1w/</link>
		<comments>http://blog.hoegaerden.be/2012/03/07/custom-code-in-ssis/#comments</comments>
		<pubDate>Wed, 07 Mar 2012 14:56:10 +0000</pubDate>
		<dc:creator>Valentino Vranken</dc:creator>
				<category><![CDATA[Integration Services]]></category>
		<category><![CDATA[Microsoft Connect]]></category>
		<category><![CDATA[SSIS]]></category>

		<guid isPermaLink="false">http://blog.hoegaerden.be/2012/03/07/custom-code-in-ssis/</guid>
		<description><![CDATA[Do you like the Custom Code functionality in SSRS? And what would you think if SSIS offered the same possibility?  Imagine, being able to write a custom function in .NET and then use it in any expression in your package, how powerful that would be! There’s already one function I would have written today: GetFilename(string [...]]]></description>
			<content:encoded><![CDATA[<p>Do you like the Custom Code functionality in SSRS?</p>
<p>And what would you think if SSIS offered the same possibility?  Imagine, being able to write a custom function in .NET and then use it in any expression in your package, how powerful that would be!</p>
<p>There’s already one function I would have written today: GetFilename(string path).</p>
<p>If you believe such functionality to be useful, please vote on the following Connect request: <a title="Add user defined function support to the SSIS expression language" href="https://connect.microsoft.com/SQLServer/feedback/details/166367/add-user-defined-function-support-to-the-ssis-expression-language" target="_blank">Add user defined function support to the SSIS expression language</a></p>
<p>Have fun!</p>
<p>Valentino.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.hoegaerden.be%2F2012%2F03%2F07%2Fcustom-code-in-ssis%2F&amp;title=Custom%20Code%20in%20SSIS" id="wpa2a_18"><img src="http://blog.hoegaerden.be/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ADevelopersBlog?a=H40tmENsP1w:icyCejUSquU:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ADevelopersBlog?i=H40tmENsP1w:icyCejUSquU:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ADevelopersBlog?a=H40tmENsP1w:icyCejUSquU:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ADevelopersBlog?i=H40tmENsP1w:icyCejUSquU:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ADevelopersBlog?a=H40tmENsP1w:icyCejUSquU:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/ADevelopersBlog?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ADevelopersBlog?a=H40tmENsP1w:icyCejUSquU:3QFJfmc7Om4"><img src="http://feeds.feedburner.com/~ff/ADevelopersBlog?i=H40tmENsP1w:icyCejUSquU:3QFJfmc7Om4" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ADevelopersBlog?a=H40tmENsP1w:icyCejUSquU:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ADevelopersBlog?i=H40tmENsP1w:icyCejUSquU:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ADevelopersBlog/~4/H40tmENsP1w" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.hoegaerden.be/2012/03/07/custom-code-in-ssis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.hoegaerden.be/2012/03/07/custom-code-in-ssis/</feedburner:origLink></item>
		<item>
		<title>Office Tip: Show All Windows You Silly Thing!</title>
		<link>http://feedproxy.google.com/~r/ADevelopersBlog/~3/PCW3hCnG-N0/</link>
		<comments>http://blog.hoegaerden.be/2012/02/27/office-tip-show-all-windows-you-silly-thing/#comments</comments>
		<pubDate>Mon, 27 Feb 2012 21:31:24 +0000</pubDate>
		<dc:creator>Valentino Vranken</dc:creator>
				<category><![CDATA[Office]]></category>
		<category><![CDATA[Excel]]></category>
		<category><![CDATA[Word]]></category>

		<guid isPermaLink="false">http://blog.hoegaerden.be/2012/02/27/office-tip-show-all-windows-you-silly-thing/</guid>
		<description><![CDATA[Here’s a quick one about my favorite setting of the week.  And for once it’s not related to SQL Server but a bit more general.  It’s meant to improve the everyday use of a PC.  Yet a bit more precisely, it’s got to do with Microsoft Office (2007 or 2010, either will do). Ever since [...]]]></description>
			<content:encoded><![CDATA[<p>Here’s a quick one about my favorite setting of the week.  And for once it’s not related to SQL Server but a bit more general.  It’s meant to improve the everyday use of a PC.  Yet a bit more precisely, it’s got to do with Microsoft Office (2007 or 2010, either will do).</p>
<p>Ever since I got a PC at my client, I was annoyed by the fact that Word would open all documents in the same window.  As a result of that, when I had two documents open, I couldn’t use ALT-TAB to switch between them.  (I prefer using my apps maximized.)  That really annoyed me.  Furthermore, each time when I clicked the closing X at the top right of the screen, it would close down all open documents instead of the one in front of me.  Aaarghh!!</p>
<p>And today I finally found the setting to make it behave decently.  It’s not so complicated once you know where to find it.  (In fact, it’s a simple checkbox.)</p>
<p>Curious?  I’ll explain how to change the setting in Word, but Excel will work just as fine.</p>
<p>Open the Word Options by going to<em> File &gt; Options</em>.  Then switch to the <em>Advanced</em> page.  Locate the <em>Display</em> section.  In that section you’ll find a checkbox labeled <strong>Show all windows in the Taskbar</strong>.  Guess what that does?!</p>
<p><img style="background-image: none; padding-left: 0px; padding-right: 0px; display: inline; padding-top: 0px; border: 0px;" title="Options: Advanced - Show all windows in the Taskbar" src="http://blog.hoegaerden.be/wp-content/uploads/image451.png" border="0" alt="Options: Advanced - Show all windows in the Taskbar" width="700" height="530" /></p>
<p>So that one more aggravation gone!</p>
<p>Have fun!</p>
<p>Valentino.</p>
<p><a class="a2a_dd a2a_target addtoany_share_save" href="http://www.addtoany.com/share_save#url=http%3A%2F%2Fblog.hoegaerden.be%2F2012%2F02%2F27%2Foffice-tip-show-all-windows-you-silly-thing%2F&amp;title=Office%20Tip%3A%20Show%20All%20Windows%20You%20Silly%20Thing%21" id="wpa2a_20"><img src="http://blog.hoegaerden.be/wp-content/plugins/add-to-any/share_save_171_16.png" width="171" height="16" alt="Share"/></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/ADevelopersBlog?a=PCW3hCnG-N0:NgVmlCuoUfM:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/ADevelopersBlog?i=PCW3hCnG-N0:NgVmlCuoUfM:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ADevelopersBlog?a=PCW3hCnG-N0:NgVmlCuoUfM:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/ADevelopersBlog?i=PCW3hCnG-N0:NgVmlCuoUfM:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ADevelopersBlog?a=PCW3hCnG-N0:NgVmlCuoUfM:I9og5sOYxJI"><img src="http://feeds.feedburner.com/~ff/ADevelopersBlog?d=I9og5sOYxJI" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ADevelopersBlog?a=PCW3hCnG-N0:NgVmlCuoUfM:3QFJfmc7Om4"><img src="http://feeds.feedburner.com/~ff/ADevelopersBlog?i=PCW3hCnG-N0:NgVmlCuoUfM:3QFJfmc7Om4" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/ADevelopersBlog?a=PCW3hCnG-N0:NgVmlCuoUfM:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/ADevelopersBlog?i=PCW3hCnG-N0:NgVmlCuoUfM:D7DqB2pKExk" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/ADevelopersBlog/~4/PCW3hCnG-N0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.hoegaerden.be/2012/02/27/office-tip-show-all-windows-you-silly-thing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.hoegaerden.be/2012/02/27/office-tip-show-all-windows-you-silly-thing/</feedburner:origLink></item>
	</channel>
</rss>

