<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>I cannot remember everything</title>
    <link>http://blog.mikepoole.net/</link>
    <description>so I wrote it down here</description>
    <language>en-us</language>
    <copyright>Michael Poole</copyright>
    <lastBuildDate>Mon, 21 Jun 2010 08:51:00 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 1.9.6264.0</generator>
    <managingEditor>michael_g_poole@hotmail.com</managingEditor>
    <webMaster>michael_g_poole@hotmail.com</webMaster>
    <item>
      <trackback:ping>http://blog.mikepoole.net/Trackback.aspx?guid=8214f62e-af8a-4c36-b7c4-fe47facf115a</trackback:ping>
      <pingback:server>http://blog.mikepoole.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.mikepoole.net/PermaLink,guid,8214f62e-af8a-4c36-b7c4-fe47facf115a.aspx</pingback:target>
      <dc:creator>Mike</dc:creator>
      <wfw:comment>http://blog.mikepoole.net/CommentView,guid,8214f62e-af8a-4c36-b7c4-fe47facf115a.aspx</wfw:comment>
      <wfw:commentRss>http://blog.mikepoole.net/SyndicationService.asmx/GetEntryCommentsRss?guid=8214f62e-af8a-4c36-b7c4-fe47facf115a</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">I'm running some SQL scripts to find the
value of named URL parameters because I need to look through the SSRS ReportServer's
history of ran reports and get a grip on which parameters users are selected. I wrote
a T-SQL function to parse the value of the parameters field as follows:-<br /><br /><p><span style="color: Black; background-color: Transparent; font-family: Courier New; font-size: 11px;"><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">USE</span> [ReportServer]<br />
GO<br /><br /><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">SET</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">ANSI_NULLS</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">ON</span><br />
GO<br /><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">SET</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">QUOTED_IDENTIFIER</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">ON</span><br />
GO<br /><br /><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">CREATE</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">FUNCTION</span> [dbo].[fnParseParameter]<br />
(<br />
    <span style="color: Teal; background-color: Transparent; font-family: Courier New; font-size: 11px;">--
Add the parameters for the function here</span><br />
    @paramText <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">varchar</span>(1000),
@paramName <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">varchar</span>(50)<br />
)<br />
RETURNS <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">varchar</span>(50)<br /><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">AS</span><br /><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">BEGIN</span><br /><br /><br />
    <span style="color: Teal; background-color: Transparent; font-family: Courier New; font-size: 11px;">--
Declare the return variable here</span><br />
    <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">DECLARE</span> @paramValue <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">varchar</span>(50)<br />
    <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">declare</span> @paramPrefix <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">varchar</span>(55)<br />
    <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">declare</span> @lenPrefix <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">int</span>,
@startPos <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">int</span><br /><br />
    <span style="color: Teal; background-color: Transparent; font-family: Courier New; font-size: 11px;">--
parameter name incl. equals char.</span><br />
    <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">select</span> @paramPrefix
= @paramName + <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">'='</span><br />
    <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">select</span> @lenPrefix
= <span style="color: Fuchsia; background-color: Transparent; font-family: Courier New; font-size: 11px;">len</span>(@paramPrefix)<br /><br />
    <span style="color: Teal; background-color: Transparent; font-family: Courier New; font-size: 11px;">--
move cursor to end of parameter prefix</span><br />
    <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">select</span> @startPos
= <span style="color: Fuchsia; background-color: Transparent; font-family: Courier New; font-size: 11px;">charindex</span>(@paramPrefix,
@paramText) + @lenPrefix<br />
    <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">select</span> @paramValue
= <span style="color: Fuchsia; background-color: Transparent; font-family: Courier New; font-size: 11px;">substring</span>(@paramText,
@startPos, <span style="color: Fuchsia; background-color: Transparent; font-family: Courier New; font-size: 11px;">len</span>(@paramText)) 
<br /><br />
    <span style="color: Teal; background-color: Transparent; font-family: Courier New; font-size: 11px;">--
cut off at the first '&amp;' unless we're at end of parameter string</span><br />
    <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">if</span>(<span style="color: Fuchsia; background-color: Transparent; font-family: Courier New; font-size: 11px;">charindex</span>(<span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">'&amp;'</span>,
@paramValue, 0) &gt; 0)<br />
    <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">begin</span><br />
        <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">select</span> @paramValue
= <span style="color: Fuchsia; background-color: Transparent; font-family: Courier New; font-size: 11px;">substring</span>(@paramValue,
0, <span style="color: Fuchsia; background-color: Transparent; font-family: Courier New; font-size: 11px;">charindex</span>(<span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">'&amp;'</span>,
@paramValue, 0))<br />
    <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">end</span><br />
    <br />
    <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">RETURN</span> @paramValue<br /><br /><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">END</span><br /></span></p><br /><p></p><img width="0" height="0" src="http://blog.mikepoole.net/aggbug.ashx?id=8214f62e-af8a-4c36-b7c4-fe47facf115a" /></body>
      <title>Parse the value of a parameter in a URL using T-SQL</title>
      <guid isPermaLink="false">http://blog.mikepoole.net/PermaLink,guid,8214f62e-af8a-4c36-b7c4-fe47facf115a.aspx</guid>
      <link>http://blog.mikepoole.net/PermaLink,guid,8214f62e-af8a-4c36-b7c4-fe47facf115a.aspx</link>
      <pubDate>Mon, 21 Jun 2010 08:51:00 GMT</pubDate>
      <description>I'm running some SQL scripts to find the value of named URL parameters because I need to look through the SSRS ReportServer's history of ran reports and get a grip on which parameters users are selected. I wrote a T-SQL function to parse the value of the parameters field as follows:-&lt;br&gt;
&lt;br&gt;
&lt;p&gt;
&lt;span style="color: Black; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;USE&lt;/span&gt; [ReportServer]&lt;br&gt;
GO&lt;br&gt;
&lt;br&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;SET&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;ANSI_NULLS&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;ON&lt;/span&gt;
&lt;br&gt;
GO&lt;br&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;SET&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;QUOTED_IDENTIFIER&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;ON&lt;/span&gt;
&lt;br&gt;
GO&lt;br&gt;
&lt;br&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;CREATE&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;FUNCTION&lt;/span&gt; [dbo].[fnParseParameter]&lt;br&gt;
(&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: Teal; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;--
Add the parameters for the function here&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;@paramText &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;varchar&lt;/span&gt;(1000),
@paramName &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;varchar&lt;/span&gt;(50)&lt;br&gt;
)&lt;br&gt;
RETURNS &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;varchar&lt;/span&gt;(50)&lt;br&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;AS&lt;/span&gt;
&lt;br&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;BEGIN&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: Teal; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;--
Declare the return variable here&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;DECLARE&lt;/span&gt; @paramValue &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;varchar&lt;/span&gt;(50)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;declare&lt;/span&gt; @paramPrefix &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;varchar&lt;/span&gt;(55)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;declare&lt;/span&gt; @lenPrefix &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;int&lt;/span&gt;,
@startPos &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;int&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: Teal; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;--
parameter name incl. equals char.&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;select&lt;/span&gt; @paramPrefix
= @paramName + &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;'='&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;select&lt;/span&gt; @lenPrefix
= &lt;span style="color: Fuchsia; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;len&lt;/span&gt;(@paramPrefix)&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: Teal; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;--
move cursor to end of parameter prefix&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;select&lt;/span&gt; @startPos
= &lt;span style="color: Fuchsia; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;charindex&lt;/span&gt;(@paramPrefix,
@paramText) + @lenPrefix&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;select&lt;/span&gt; @paramValue
= &lt;span style="color: Fuchsia; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;substring&lt;/span&gt;(@paramText,
@startPos, &lt;span style="color: Fuchsia; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;len&lt;/span&gt;(@paramText)) 
&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: Teal; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;--
cut off at the first '&amp;amp;' unless we're at end of parameter string&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;if&lt;/span&gt;(&lt;span style="color: Fuchsia; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;charindex&lt;/span&gt;(&lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;'&amp;amp;'&lt;/span&gt;,
@paramValue, 0) &amp;gt; 0)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;begin&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;select&lt;/span&gt; @paramValue
= &lt;span style="color: Fuchsia; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;substring&lt;/span&gt;(@paramValue,
0, &lt;span style="color: Fuchsia; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;charindex&lt;/span&gt;(&lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;'&amp;amp;'&lt;/span&gt;,
@paramValue, 0))&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;end&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;RETURN&lt;/span&gt; @paramValue&lt;br&gt;
&lt;br&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;END&lt;/span&gt;
&lt;br&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.mikepoole.net/aggbug.ashx?id=8214f62e-af8a-4c36-b7c4-fe47facf115a" /&gt;</description>
      <comments>http://blog.mikepoole.net/CommentView,guid,8214f62e-af8a-4c36-b7c4-fe47facf115a.aspx</comments>
      <category>SSRS;T-SQL</category>
    </item>
    <item>
      <trackback:ping>http://blog.mikepoole.net/Trackback.aspx?guid=1696833a-ecf9-4fc6-b1cf-d1fd9f8223c9</trackback:ping>
      <pingback:server>http://blog.mikepoole.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.mikepoole.net/PermaLink,guid,1696833a-ecf9-4fc6-b1cf-d1fd9f8223c9.aspx</pingback:target>
      <dc:creator>Mike</dc:creator>
      <wfw:comment>http://blog.mikepoole.net/CommentView,guid,1696833a-ecf9-4fc6-b1cf-d1fd9f8223c9.aspx</wfw:comment>
      <wfw:commentRss>http://blog.mikepoole.net/SyndicationService.asmx/GetEntryCommentsRss?guid=1696833a-ecf9-4fc6-b1cf-d1fd9f8223c9</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">Thought I'd keep a list of tools which
I use for .NET code checking.<br /><br />
This has arisen out of a problem compiling code from SourceSafe which had been manipulated
by other developers following a 2 year gap in my contribution to the source code.
Checking the live DLLs with the local DLLs would help build confidence in preventing
any breaking change which I could deploy to the live application.<br /><br /><br />
I started down the route of using ildasm from the command-line and then using the <a href="http://winmerge.org/">WinMerge
Utility</a> to compare the outputs. Unfortunately the order in which the IL code gets
written out to files can be markedly different between assemblies. i.e. a like-for-like
comparison was too time-consuming.<br /><br />
I found the <a href="http://www.bitwidgets.com/">BitDiffer utility</a> which does
this hard work for you and to date I've been impressed with its ease of use. It definitely
fits the bill and would be ideal in the QA process within a number of deployment scenarios.
Wonder if VSTS or other testing environment has this sort of tool built-in?<br /><br />
Will update this post with any further findings on this subject.<br /><p></p><img width="0" height="0" src="http://blog.mikepoole.net/aggbug.ashx?id=1696833a-ecf9-4fc6-b1cf-d1fd9f8223c9" /></body>
      <title>Peering into .NET Assemblies</title>
      <guid isPermaLink="false">http://blog.mikepoole.net/PermaLink,guid,1696833a-ecf9-4fc6-b1cf-d1fd9f8223c9.aspx</guid>
      <link>http://blog.mikepoole.net/PermaLink,guid,1696833a-ecf9-4fc6-b1cf-d1fd9f8223c9.aspx</link>
      <pubDate>Tue, 18 May 2010 12:09:16 GMT</pubDate>
      <description>Thought I'd keep a list of tools which I use for .NET code checking.&lt;br&gt;
&lt;br&gt;
This has arisen out of a problem compiling code from SourceSafe which had been manipulated
by other developers following a 2 year gap in my contribution to the source code.
Checking the live DLLs with the local DLLs would help build confidence in preventing
any breaking change which I could deploy to the live application.&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
I started down the route of using ildasm from the command-line and then using the &lt;a href="http://winmerge.org/"&gt;WinMerge
Utility&lt;/a&gt; to compare the outputs. Unfortunately the order in which the IL code gets
written out to files can be markedly different between assemblies. i.e. a like-for-like
comparison was too time-consuming.&lt;br&gt;
&lt;br&gt;
I found the &lt;a href="http://www.bitwidgets.com/"&gt;BitDiffer utility&lt;/a&gt; which does
this hard work for you and to date I've been impressed with its ease of use. It definitely
fits the bill and would be ideal in the QA process within a number of deployment scenarios.
Wonder if VSTS or other testing environment has this sort of tool built-in?&lt;br&gt;
&lt;br&gt;
Will update this post with any further findings on this subject.&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.mikepoole.net/aggbug.ashx?id=1696833a-ecf9-4fc6-b1cf-d1fd9f8223c9" /&gt;</description>
      <comments>http://blog.mikepoole.net/CommentView,guid,1696833a-ecf9-4fc6-b1cf-d1fd9f8223c9.aspx</comments>
      <category>.NET;Tools and Utilities</category>
    </item>
    <item>
      <trackback:ping>http://blog.mikepoole.net/Trackback.aspx?guid=752bed9c-fbb3-422d-8434-dd824282ecb3</trackback:ping>
      <pingback:server>http://blog.mikepoole.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.mikepoole.net/PermaLink,guid,752bed9c-fbb3-422d-8434-dd824282ecb3.aspx</pingback:target>
      <dc:creator>Mike</dc:creator>
      <wfw:comment>http://blog.mikepoole.net/CommentView,guid,752bed9c-fbb3-422d-8434-dd824282ecb3.aspx</wfw:comment>
      <wfw:commentRss>http://blog.mikepoole.net/SyndicationService.asmx/GetEntryCommentsRss?guid=752bed9c-fbb3-422d-8434-dd824282ecb3</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">I've been doing some ASP.NET development
work in my spare time and came across a customer requirement where the Calendar control
used for a reporting system needed to be able to:<br /><br /><ol><li>
change the day that the week started on based on a stored text value</li><li>
select all days from the current week from today's date back to and including the
starting day of the week (whatever that was configured to)</li></ol><br />
The use of different enumerations for Day surprised me and also the looping logic
required took some thinking about when the comparitive integer values of Days could
not be used as a means of comparison.<br /><br />
Screenshot and code sample below ran for today's date.<br /><br /><img src="http://blog.mikepoole.net/content/binary/_cal.png" border="0" /><br /><br /><pre style="font-size: 11px; font-family: Courier New;"><span style="color: Black; background-color: Transparent; font-family: Courier New; font-size: 11px;"><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">using</span> System;<br /><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">using</span> System.Collections.Generic;<br /><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">using</span> System.Linq;<br /><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">using</span> System.Web;<br /><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">using</span> System.Web.UI;<br /><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">using</span> System.Web.UI.WebControls;<br /><br /><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">namespace</span> WebCalendar<br />
{<br /><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">public</span> partial <span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">class</span> _Default
: System.Web.UI.Page<br />
{<br /><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">protected</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">void</span> Page_Load(<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">object</span> sender,
EventArgs e)<br />
{<br />
_cal.SelectionMode <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">=</span> CalendarSelectionMode.DayWeek;<br /><br /><span style="color: Green; background-color: Transparent; font-family: Courier New; font-size: 11px;">//
setup today's date values</span><br />
DateTime dtCurrent <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">=</span> DateTime.Now;<br />
DayOfWeek dowCurrent <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">=</span> dtCurrent.DayOfWeek;<br /><br /><span style="color: Green; background-color: Transparent; font-family: Courier New; font-size: 11px;">//
setup day to start week</span><br /><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">string</span> strDayToStartWeek <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">=</span><span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;">"Thursday"</span>; <span style="color: Green; background-color: Transparent; font-family: Courier New; font-size: 11px;">//
test text value - TODO: from database</span><br />
DayOfWeek dowDayToStartWeek <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">=</span> (DayOfWeek)Enum.Parse(<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">typeof</span>(DayOfWeek),
strDayToStartWeek);<br />
FirstDayOfWeek configLeadingDOW <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">=</span> (FirstDayOfWeek)Enum.Parse(<span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">typeof</span>(FirstDayOfWeek),
strDayToStartWeek);<br /><br /><span style="color: Green; background-color: Transparent; font-family: Courier New; font-size: 11px;">//
set calendar to start week on stored preference</span><br />
_cal.FirstDayOfWeek <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">=</span> configLeadingDOW;<br /><br /><span style="color: Green; background-color: Transparent; font-family: Courier New; font-size: 11px;">//
select the dates</span><br />
SelectDatesForWeeklyReport(dtCurrent, dowDayToStartWeek);<br />
}<br /><br /><span style="color: Green; background-color: Transparent; font-family: Courier New; font-size: 11px;">///
&lt;summary&gt;</span><br /><span style="color: Green; background-color: Transparent; font-family: Courier New; font-size: 11px;">///
Select all the days from today back to the day which is nominated as the beginning
of the week</span><br /><span style="color: Green; background-color: Transparent; font-family: Courier New; font-size: 11px;">///
&lt;/summary&gt;</span><br /><span style="color: Green; background-color: Transparent; font-family: Courier New; font-size: 11px;">///
&lt;param name="dtCurrent"&gt;Today's date&lt;/param&gt;</span><br /><span style="color: Green; background-color: Transparent; font-family: Courier New; font-size: 11px;">///
&lt;param name="dowDayToStartWeek"&gt;Day which is nominated as the beginning of the
week&lt;/param&gt;</span><br /><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">private</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">void</span> SelectDatesForWeeklyReport(DateTime
dtCurrent, DayOfWeek dowDayToStartWeek)<br />
{<br />
DateTime dtSelectedDate <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">=</span> dtCurrent;<br /><br /><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">bool</span> exitLoop <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">=</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">true</span>;<br /><br /><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">while</span> (exitLoop)<br />
{<br /><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">if</span> (dtSelectedDate.DayOfWeek
== dowDayToStartWeek)<br />
{<br /><span style="color: Green; background-color: Transparent; font-family: Courier New; font-size: 11px;">//
select the start of the week</span><br />
_cal.SelectedDates.Add(dtSelectedDate);<br />
exitLoop <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">=</span><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">false</span>;<br />
}<br /><span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;">else</span><br />
{<br />
_cal.SelectedDates.Add(dtSelectedDate);<br />
}<br />
dtSelectedDate <span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;">=</span> dtSelectedDate.AddDays(-1);<br />
}<br />
}<br />
}<br />
}</span></pre><br /><p></p><img width="0" height="0" src="http://blog.mikepoole.net/aggbug.ashx?id=752bed9c-fbb3-422d-8434-dd824282ecb3" /></body>
      <title>ASP.NET Calendar Manipulation</title>
      <guid isPermaLink="false">http://blog.mikepoole.net/PermaLink,guid,752bed9c-fbb3-422d-8434-dd824282ecb3.aspx</guid>
      <link>http://blog.mikepoole.net/PermaLink,guid,752bed9c-fbb3-422d-8434-dd824282ecb3.aspx</link>
      <pubDate>Tue, 11 May 2010 09:57:49 GMT</pubDate>
      <description>I've been doing some ASP.NET development work in my spare time and came 
across a customer requirement where the Calendar control used for a 
reporting system needed to be able to:&lt;br&gt;
&lt;br&gt;
&lt;ol&gt;
&lt;li&gt;
change the day that the week started on based on a stored text value&lt;/li&gt;
&lt;li&gt;
select all days from the current week from today's date back to and including the
starting day of the week (whatever that was configured to)&lt;/li&gt;
&lt;/ol&gt;
&lt;br&gt;
The use of different enumerations for Day surprised me and also the looping logic
required took some thinking about when the comparitive integer values of Days could
not be used as a means of comparison.&lt;br&gt;
&lt;br&gt;
Screenshot and code sample below ran for today's date.&lt;br&gt;
&lt;br&gt;
&lt;img src="http://blog.mikepoole.net/content/binary/_cal.png" border="0"&gt;
&lt;br&gt;
&lt;br&gt;
&lt;pre style="font-size: 11px; font-family: Courier New;"&gt;&lt;span style="color: Black; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;using&lt;/span&gt; System;&lt;br&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;using&lt;/span&gt; System.Collections.Generic;&lt;br&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;using&lt;/span&gt; System.Linq;&lt;br&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;using&lt;/span&gt; System.Web;&lt;br&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;using&lt;/span&gt; System.Web.UI;&lt;br&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;using&lt;/span&gt; System.Web.UI.WebControls;&lt;br&gt;
&lt;br&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;namespace&lt;/span&gt; WebCalendar&lt;br&gt;
{&lt;br&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;public&lt;/span&gt; partial &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;class&lt;/span&gt; _Default
: System.Web.UI.Page&lt;br&gt;
{&lt;br&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;protected&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;void&lt;/span&gt; Page_Load(&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;object&lt;/span&gt; sender,
EventArgs e)&lt;br&gt;
{&lt;br&gt;
_cal.SelectionMode &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;=&lt;/span&gt; CalendarSelectionMode.DayWeek;&lt;br&gt;
&lt;br&gt;
&lt;span style="color: Green; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;//
setup today's date values&lt;/span&gt;
&lt;br&gt;
DateTime dtCurrent &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;=&lt;/span&gt; DateTime.Now;&lt;br&gt;
DayOfWeek dowCurrent &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;=&lt;/span&gt; dtCurrent.DayOfWeek;&lt;br&gt;
&lt;br&gt;
&lt;span style="color: Green; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;//
setup day to start week&lt;/span&gt;
&lt;br&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;string&lt;/span&gt; strDayToStartWeek &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;=&lt;/span&gt; &lt;span style="color: rgb(102, 102, 102); background-color: rgb(228, 228, 228); font-family: Courier New; font-size: 11px;"&gt;"Thursday"&lt;/span&gt;; &lt;span style="color: Green; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;//
test text value - TODO: from database&lt;/span&gt;
&lt;br&gt;
DayOfWeek dowDayToStartWeek &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;=&lt;/span&gt; (DayOfWeek)Enum.Parse(&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;typeof&lt;/span&gt;(DayOfWeek),
strDayToStartWeek);&lt;br&gt;
FirstDayOfWeek configLeadingDOW &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;=&lt;/span&gt; (FirstDayOfWeek)Enum.Parse(&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;typeof&lt;/span&gt;(FirstDayOfWeek),
strDayToStartWeek);&lt;br&gt;
&lt;br&gt;
&lt;span style="color: Green; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;//
set calendar to start week on stored preference&lt;/span&gt;
&lt;br&gt;
_cal.FirstDayOfWeek &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;=&lt;/span&gt; configLeadingDOW;&lt;br&gt;
&lt;br&gt;
&lt;span style="color: Green; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;//
select the dates&lt;/span&gt;
&lt;br&gt;
SelectDatesForWeeklyReport(dtCurrent, dowDayToStartWeek);&lt;br&gt;
}&lt;br&gt;
&lt;br&gt;
&lt;span style="color: Green; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;///
&amp;lt;summary&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;span style="color: Green; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;///
Select all the days from today back to the day which is nominated as the beginning
of the week&lt;/span&gt;
&lt;br&gt;
&lt;span style="color: Green; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;///
&amp;lt;/summary&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;span style="color: Green; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;///
&amp;lt;param name="dtCurrent"&amp;gt;Today's date&amp;lt;/param&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;span style="color: Green; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;///
&amp;lt;param name="dowDayToStartWeek"&amp;gt;Day which is nominated as the beginning of the
week&amp;lt;/param&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;private&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;void&lt;/span&gt; SelectDatesForWeeklyReport(DateTime
dtCurrent, DayOfWeek dowDayToStartWeek)&lt;br&gt;
{&lt;br&gt;
DateTime dtSelectedDate &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;=&lt;/span&gt; dtCurrent;&lt;br&gt;
&lt;br&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;bool&lt;/span&gt; exitLoop &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;=&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;true&lt;/span&gt;;&lt;br&gt;
&lt;br&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;while&lt;/span&gt; (exitLoop)&lt;br&gt;
{&lt;br&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;if&lt;/span&gt; (dtSelectedDate.DayOfWeek
== dowDayToStartWeek)&lt;br&gt;
{&lt;br&gt;
&lt;span style="color: Green; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;//
select the start of the week&lt;/span&gt;
&lt;br&gt;
_cal.SelectedDates.Add(dtSelectedDate);&lt;br&gt;
exitLoop &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;=&lt;/span&gt; &lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;false&lt;/span&gt;;&lt;br&gt;
}&lt;br&gt;
&lt;span style="color: Blue; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;else&lt;/span&gt;
&lt;br&gt;
{&lt;br&gt;
_cal.SelectedDates.Add(dtSelectedDate);&lt;br&gt;
}&lt;br&gt;
dtSelectedDate &lt;span style="color: Red; background-color: Transparent; font-family: Courier New; font-size: 11px;"&gt;=&lt;/span&gt; dtSelectedDate.AddDays(-1);&lt;br&gt;
}&lt;br&gt;
}&lt;br&gt;
}&lt;br&gt;
}&lt;/span&gt;&lt;/pre&gt;
&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.mikepoole.net/aggbug.ashx?id=752bed9c-fbb3-422d-8434-dd824282ecb3" /&gt;</description>
      <comments>http://blog.mikepoole.net/CommentView,guid,752bed9c-fbb3-422d-8434-dd824282ecb3.aspx</comments>
      <category>ASP.NET v2.0</category>
    </item>
    <item>
      <trackback:ping>http://blog.mikepoole.net/Trackback.aspx?guid=fbb170b7-531e-457b-aac6-e73d67a03af6</trackback:ping>
      <pingback:server>http://blog.mikepoole.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.mikepoole.net/PermaLink,guid,fbb170b7-531e-457b-aac6-e73d67a03af6.aspx</pingback:target>
      <dc:creator>Mike</dc:creator>
      <wfw:comment>http://blog.mikepoole.net/CommentView,guid,fbb170b7-531e-457b-aac6-e73d67a03af6.aspx</wfw:comment>
      <wfw:commentRss>http://blog.mikepoole.net/SyndicationService.asmx/GetEntryCommentsRss?guid=fbb170b7-531e-457b-aac6-e73d67a03af6</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">Although I'm fairly comfortable with the
basic setting up a Connection, Command &amp; Parameters and use of the DataReader,
Chapters 3 &amp; 4 of Sceppa's book on ADO.NET v2.0 was good at covering a refresher
as well as fleshing out the details of Async calls. 
<br /><br />
// TODO: complete the following subject area - resources mapping.<br /><br />
Data types:  Binary Large Objects (BLOBs); Filestream, Spatial, Table Value Parameters<br /><br />
DataAdapter / TableAdapter<br /><br />
Exceptions<br /><br /><br /><hr size="2" width="100%" />
Update 24/04/2010<br />
Have just done the MeasureUp test for this objective to gee myself along a bit. Only
just got over half of the 34 questions correct. Some wrong answers were simply down
to exam technique and others were down to not yet having covered the material. However,
I can now re-focus on these areas. Will relate the resources I find useful on the
areas which I need to brush up on. Anticipating a few more to follow up on compared
to the 1st objective.<br /><p></p><img width="0" height="0" src="http://blog.mikepoole.net/aggbug.ashx?id=fbb170b7-531e-457b-aac6-e73d67a03af6" /></body>
      <title>70-561 Selecting and Querying Data</title>
      <guid isPermaLink="false">http://blog.mikepoole.net/PermaLink,guid,fbb170b7-531e-457b-aac6-e73d67a03af6.aspx</guid>
      <link>http://blog.mikepoole.net/PermaLink,guid,fbb170b7-531e-457b-aac6-e73d67a03af6.aspx</link>
      <pubDate>Wed, 21 Apr 2010 15:06:51 GMT</pubDate>
      <description>Although I'm fairly comfortable with the basic setting up a Connection, Command &amp;amp; Parameters and use of the DataReader, Chapters 3 &amp;amp; 4 of Sceppa's book on ADO.NET v2.0 was good at covering a refresher as well as fleshing out the details of Async calls. &lt;br&gt;
&lt;br&gt;
// TODO: complete the following subject area - resources mapping.&lt;br&gt;
&lt;br&gt;
Data types:&amp;nbsp; Binary Large Objects (BLOBs); Filestream, Spatial, Table Value Parameters&lt;br&gt;
&lt;br&gt;
DataAdapter / TableAdapter&lt;br&gt;
&lt;br&gt;
Exceptions&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
&lt;hr size="2" width="100%"&gt;
Update 24/04/2010&lt;br&gt;
Have just done the MeasureUp test for this objective to gee myself along a bit. Only
just got over half of the 34 questions correct. Some wrong answers were simply down
to exam technique and others were down to not yet having covered the material. However,
I can now re-focus on these areas. Will relate the resources I find useful on the
areas which I need to brush up on. Anticipating a few more to follow up on compared
to the 1st objective.&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.mikepoole.net/aggbug.ashx?id=fbb170b7-531e-457b-aac6-e73d67a03af6" /&gt;</description>
      <comments>http://blog.mikepoole.net/CommentView,guid,fbb170b7-531e-457b-aac6-e73d67a03af6.aspx</comments>
      <category>70-561</category>
    </item>
    <item>
      <trackback:ping>http://blog.mikepoole.net/Trackback.aspx?guid=09a3c83b-57e9-4fe6-ada2-dc22d9994916</trackback:ping>
      <pingback:server>http://blog.mikepoole.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.mikepoole.net/PermaLink,guid,09a3c83b-57e9-4fe6-ada2-dc22d9994916.aspx</pingback:target>
      <dc:creator>Mike</dc:creator>
      <wfw:comment>http://blog.mikepoole.net/CommentView,guid,09a3c83b-57e9-4fe6-ada2-dc22d9994916.aspx</wfw:comment>
      <wfw:commentRss>http://blog.mikepoole.net/SyndicationService.asmx/GetEntryCommentsRss?guid=09a3c83b-57e9-4fe6-ada2-dc22d9994916</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">I'm hitting through all the material to
take the ADO.NET exam next month. <a href="http://www.microsoft.com/learning/en/us/exam.aspx?ID=70-561&amp;locale=en-us#tab2">The
exam objectives are currently outlined here on Microsoft Learning</a>.<br /><br />
Have been using all sorts of different information sources to date and I think I will
try and collate resources per exam objective. Maybe it will help others as well as
being a good source of info for my own revision and future reference.<br /><br /><a href="http://www.amazon.co.uk/gp/product/1590598237/ref=sib_rdr_dp">The ADO.NET
chapter (ch.22) in Troelsen's Pro C# book - I've got the v3.0 version which is up
to date enough for this objective</a>. This is good for understanding the general
features of DbProviderFactory classes. I ended up writing a small windows utility
which mirrored the code example he used. However, <a href="http://www.amazon.co.uk/gp/product/073562206X/ref=sib_rdr_dp">Part
2 of Sceppa's book on ADO.NET v2.0</a> was also good in providing some tips on using
the PropertyGrid control and associating it with a DbConnectionStringBuilder (instead
of the SqlConnectionStringBuilder which Sceppa uses). I pushed the example a little
further than Troelsen did by using <a href="http://msdn.microsoft.com/en-us/library/dd0w4a2z%28VS.80%29.aspx">DbProviderFactories.GetFactoryClasses()</a>. <a href="http://msdn.microsoft.com/en-us/library/system.data.common.dbproviderfactories.getfactoryclasses.aspx">The
datatable returned has a defined structure</a>. <a href="http://msdn.microsoft.com/en-us/library/h508h681%28v=VS.100%29.aspx">Passing
the Invariant Name to the GetFactory() method</a> brings back the applicable provider
Factory instance from which you can create all your related ADO.NET objects for connecting
to (and manipulating) data from your particular database.<br /><br />
Took the MeasureUp test just on this objective and scored 72%. Will update this post
with resources matched to the my incorrect answers. Which provider for which database
was a particular issue needing review.<hr /><p>
Review of incorrect answers:
</p><p>
Edited 19/04/2010 
<br /></p><p>
The use of <a href="http://msdn.microsoft.com/en-us/library/ms178592.aspx">RaiseError
in SQL Server</a> will only generate a SqlException when the severity level is &gt;
10. For message of severity 10 or less you must subscribe to the <a href="http://msdn.microsoft.com/en-us/library/a0hee08w.aspx">SqlConnection's
InfoMessage event</a>. This exposes an object of type SqlInfoMessageEventArgs which
holds a SqlErrorCollection on its .Errors property. This allows developers to foreach
per SqlError raised and show related error information.
</p><p>
The selection of Data Provider to access certain databases (especially when you have
2 databases and only the choice of 1 provider) requires a bit of memorising of the
matrix provided on <a href="http://msdn.microsoft.com/en-us/library/a6cd7c08%28v=VS.100%29.aspx">MSDN</a>.
The interesting content is under the title "Choosing a .NET Framework Data Provider".
</p><br />
Edited 20/04/2010 
<p>
Connecting to Sql Server Express versions have their own peculiarities. Specifically,
there is the possibility of configuring User Instances on a per user basis. <a href="http://msdn.microsoft.com/en-us/library/ms254504%28v=VS.100%29.aspx">The
implications for connection strings are detailed on MSDN</a> - refer to User Instance
and AttachDBFileName and their possible values.<br /></p><img width="0" height="0" src="http://blog.mikepoole.net/aggbug.ashx?id=09a3c83b-57e9-4fe6-ada2-dc22d9994916" /></body>
      <title>70-561 Connecting to Data Sources</title>
      <guid isPermaLink="false">http://blog.mikepoole.net/PermaLink,guid,09a3c83b-57e9-4fe6-ada2-dc22d9994916.aspx</guid>
      <link>http://blog.mikepoole.net/PermaLink,guid,09a3c83b-57e9-4fe6-ada2-dc22d9994916.aspx</link>
      <pubDate>Sat, 17 Apr 2010 17:03:52 GMT</pubDate>
      <description>I'm hitting through all the material to take the ADO.NET exam next month. &lt;a href="http://www.microsoft.com/learning/en/us/exam.aspx?ID=70-561&amp;amp;locale=en-us#tab2"&gt;The
exam objectives are currently outlined here on Microsoft Learning&lt;/a&gt;.&lt;br&gt;
&lt;br&gt;
Have been using all sorts of different information sources to date and I think I will
try and collate resources per exam objective. Maybe it will help others as well as
being a good source of info for my own revision and future reference.&lt;br&gt;
&lt;br&gt;
&lt;a href="http://www.amazon.co.uk/gp/product/1590598237/ref=sib_rdr_dp"&gt;The ADO.NET
chapter (ch.22) in Troelsen's Pro C# book - I've got the v3.0 version which is up
to date enough for this objective&lt;/a&gt;. This is good for understanding the general
features of DbProviderFactory classes. I ended up writing a small windows utility
which mirrored the code example he used. However, &lt;a href="http://www.amazon.co.uk/gp/product/073562206X/ref=sib_rdr_dp"&gt;Part
2 of Sceppa's book on ADO.NET v2.0&lt;/a&gt; was also good in providing some tips on using
the PropertyGrid control and associating it with a DbConnectionStringBuilder (instead
of the SqlConnectionStringBuilder which Sceppa uses). I pushed the example a little
further than Troelsen did by using &lt;a href="http://msdn.microsoft.com/en-us/library/dd0w4a2z%28VS.80%29.aspx"&gt;DbProviderFactories.GetFactoryClasses()&lt;/a&gt;. &lt;a href="http://msdn.microsoft.com/en-us/library/system.data.common.dbproviderfactories.getfactoryclasses.aspx"&gt;The
datatable returned has a defined structure&lt;/a&gt;. &lt;a href="http://msdn.microsoft.com/en-us/library/h508h681%28v=VS.100%29.aspx"&gt;Passing
the Invariant Name to the GetFactory() method&lt;/a&gt; brings back the applicable provider
Factory instance from which you can create all your related ADO.NET objects for connecting
to (and manipulating) data from your particular database.&lt;br&gt;
&lt;br&gt;
Took the MeasureUp test just on this objective and scored 72%. Will update this post
with resources matched to the my incorrect answers. Which provider for which database
was a particular issue needing review.&lt;hr&gt;
&lt;p&gt;
Review of incorrect answers:
&lt;/p&gt;
&lt;p&gt;
Edited 19/04/2010 
&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
The use of &lt;a href="http://msdn.microsoft.com/en-us/library/ms178592.aspx"&gt;RaiseError
in SQL Server&lt;/a&gt; will only generate a SqlException when the severity level is &amp;gt;
10. For message of severity 10 or less you must subscribe to the &lt;a href="http://msdn.microsoft.com/en-us/library/a0hee08w.aspx"&gt;SqlConnection's
InfoMessage event&lt;/a&gt;. This exposes an object of type SqlInfoMessageEventArgs which
holds a SqlErrorCollection on its .Errors property. This allows developers to foreach
per SqlError raised and show related error information.
&lt;/p&gt;
&lt;p&gt;
The selection of Data Provider to access certain databases (especially when you have
2 databases and only the choice of 1 provider) requires a bit of memorising of the
matrix provided on &lt;a href="http://msdn.microsoft.com/en-us/library/a6cd7c08%28v=VS.100%29.aspx"&gt;MSDN&lt;/a&gt;.
The interesting content is under the title "Choosing a .NET Framework Data Provider".
&lt;/p&gt;
&lt;br&gt;
Edited 20/04/2010 
&lt;p&gt;
Connecting to Sql Server Express versions have their own peculiarities. Specifically,
there is the possibility of configuring User Instances on a per user basis. &lt;a href="http://msdn.microsoft.com/en-us/library/ms254504%28v=VS.100%29.aspx"&gt;The
implications for connection strings are detailed on MSDN&lt;/a&gt; - refer to User Instance
and AttachDBFileName and their possible values.&lt;br&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.mikepoole.net/aggbug.ashx?id=09a3c83b-57e9-4fe6-ada2-dc22d9994916" /&gt;</description>
      <comments>http://blog.mikepoole.net/CommentView,guid,09a3c83b-57e9-4fe6-ada2-dc22d9994916.aspx</comments>
      <category>70-561</category>
    </item>
    <item>
      <trackback:ping>http://blog.mikepoole.net/Trackback.aspx?guid=5cee1cd0-912c-4ae4-9403-3f251f63effc</trackback:ping>
      <pingback:server>http://blog.mikepoole.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.mikepoole.net/PermaLink,guid,5cee1cd0-912c-4ae4-9403-3f251f63effc.aspx</pingback:target>
      <dc:creator>Mike</dc:creator>
      <wfw:comment>http://blog.mikepoole.net/CommentView,guid,5cee1cd0-912c-4ae4-9403-3f251f63effc.aspx</wfw:comment>
      <wfw:commentRss>http://blog.mikepoole.net/SyndicationService.asmx/GetEntryCommentsRss?guid=5cee1cd0-912c-4ae4-9403-3f251f63effc</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">But I found this <a href="http://www.developmentnow.com/g/115_2005_11_0_0_629283/Scheduling-outside-SRS.htm">forum
post</a> which hopefully will work. It will HAVE to work!<br /><br /><p></p><img width="0" height="0" src="http://blog.mikepoole.net/aggbug.ashx?id=5cee1cd0-912c-4ae4-9403-3f251f63effc" /></body>
      <title>Cannot believe SSRS does not support month end reports</title>
      <guid isPermaLink="false">http://blog.mikepoole.net/PermaLink,guid,5cee1cd0-912c-4ae4-9403-3f251f63effc.aspx</guid>
      <link>http://blog.mikepoole.net/PermaLink,guid,5cee1cd0-912c-4ae4-9403-3f251f63effc.aspx</link>
      <pubDate>Tue, 02 Dec 2008 17:17:22 GMT</pubDate>
      <description>But I found this &lt;a href="http://www.developmentnow.com/g/115_2005_11_0_0_629283/Scheduling-outside-SRS.htm"&gt;forum
post&lt;/a&gt; which hopefully will work. It will HAVE to work!&lt;br&gt;
&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.mikepoole.net/aggbug.ashx?id=5cee1cd0-912c-4ae4-9403-3f251f63effc" /&gt;</description>
      <comments>http://blog.mikepoole.net/CommentView,guid,5cee1cd0-912c-4ae4-9403-3f251f63effc.aspx</comments>
      <category>SSRS</category>
    </item>
    <item>
      <trackback:ping>http://blog.mikepoole.net/Trackback.aspx?guid=d4a6d7c0-54f2-4dd7-a3a3-a04b1c74d629</trackback:ping>
      <pingback:server>http://blog.mikepoole.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.mikepoole.net/PermaLink,guid,d4a6d7c0-54f2-4dd7-a3a3-a04b1c74d629.aspx</pingback:target>
      <dc:creator>Mike</dc:creator>
      <wfw:comment>http://blog.mikepoole.net/CommentView,guid,d4a6d7c0-54f2-4dd7-a3a3-a04b1c74d629.aspx</wfw:comment>
      <wfw:commentRss>http://blog.mikepoole.net/SyndicationService.asmx/GetEntryCommentsRss?guid=d4a6d7c0-54f2-4dd7-a3a3-a04b1c74d629</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <a href="http://msdn.microsoft.com/en-gb/library/cc621410.aspx">Adding
a dataset to your report model</a> may use a SQL query from an external database.
When selecting the ellipis (...) on the Query parameter a list of stored procedures
is displayed from the database pointed to by the configured datasource property. If
this query does not contain unique names amongst all columns then an error "Property
value is not valid" with the detailed message "<img src="file:///C:/DOCUME%7E1/MICHAE%7E1/LOCALS%7E1/Temp/moz-screenshot.jpg" alt="" /><img src="file:///C:/DOCUME%7E1/MICHAE%7E1/LOCALS%7E1/Temp/moz-screenshot-1.jpg" alt="" />An
item with the same key has already been added". I think this is due to the Dataset
object cannot be created using identically named columns (DatasetFieldDefinition).<br /><p></p><br />
1. With datasource configured, create your dataset.<br /><br /><img src="http://blog.mikepoole.net/content/binary/ax2009_11.jpg" border="0" /><br /><br /><br />
2. Select stored procedure as the Query for the Dataset<br /><br /><img src="http://blog.mikepoole.net/content/binary/ax2009_2.jpg" border="0" /><br /><br /><br />
3. Error message<br /><br /><img src="http://blog.mikepoole.net/content/binary/ax2009_3.jpg" border="0" /><br /><br />
4. SQL query causing problems<br /><br />
ALTER PROCEDURE [dbo].[mikeGetData] 
<br />
    -- Add the parameters for the stored procedure here<br />
    @WhichCategory int<br />
AS<br />
BEGIN<br />
    -- SET NOCOUNT ON added to prevent extra result sets from<br />
    -- interfering with SELECT statements.<br />
    SET NOCOUNT ON;<br /><br />
    -- Insert statements for procedure here<br />
    SELECT cat.[Name] as <b>Category</b>, subcat.[Name] as <b>Category</b><br />
      
<br />
        FROM [Production].[ProductCategory] cat inner
join [Production].[ProductSubcategory] subcat<br />
            on cat.[ProductCategoryID]
= subcat.[ProductCategoryID]<br /><br />
        WHERE cat.[ProductCategoryID] = @WhichCategory<br /><br /><br />
END<br /><br /><img width="0" height="0" src="http://blog.mikepoole.net/aggbug.ashx?id=d4a6d7c0-54f2-4dd7-a3a3-a04b1c74d629" /></body>
      <title>Uniquely name your column aliases</title>
      <guid isPermaLink="false">http://blog.mikepoole.net/PermaLink,guid,d4a6d7c0-54f2-4dd7-a3a3-a04b1c74d629.aspx</guid>
      <link>http://blog.mikepoole.net/PermaLink,guid,d4a6d7c0-54f2-4dd7-a3a3-a04b1c74d629.aspx</link>
      <pubDate>Mon, 24 Nov 2008 13:33:37 GMT</pubDate>
      <description>&lt;a href="http://msdn.microsoft.com/en-gb/library/cc621410.aspx"&gt;Adding a dataset to
your report model&lt;/a&gt; may use a SQL query from an external database. When selecting
the ellipis (...) on the Query parameter a list of stored procedures is displayed
from the database pointed to by the configured datasource property. If this query
does not contain unique names amongst all columns then an error "Property value is
not valid" with the detailed message "&lt;img src="file:///C:/DOCUME%7E1/MICHAE%7E1/LOCALS%7E1/Temp/moz-screenshot.jpg" alt=""&gt;&lt;img src="file:///C:/DOCUME%7E1/MICHAE%7E1/LOCALS%7E1/Temp/moz-screenshot-1.jpg" alt=""&gt;An
item with the same key has already been added". I think this is due to the Dataset
object cannot be created using identically named columns (DatasetFieldDefinition).&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;br&gt;
1. With datasource configured, create your dataset.&lt;br&gt;
&lt;br&gt;
&lt;img src="http://blog.mikepoole.net/content/binary/ax2009_11.jpg" border="0"&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
2. Select stored procedure as the Query for the Dataset&lt;br&gt;
&lt;br&gt;
&lt;img src="http://blog.mikepoole.net/content/binary/ax2009_2.jpg" border="0"&gt;
&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
3. Error message&lt;br&gt;
&lt;br&gt;
&lt;img src="http://blog.mikepoole.net/content/binary/ax2009_3.jpg" border="0"&gt;
&lt;br&gt;
&lt;br&gt;
4. SQL query causing problems&lt;br&gt;
&lt;br&gt;
ALTER PROCEDURE [dbo].[mikeGetData] 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Add the parameters for the stored procedure here&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; @WhichCategory int&lt;br&gt;
AS&lt;br&gt;
BEGIN&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; -- SET NOCOUNT ON added to prevent extra result sets from&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; -- interfering with SELECT statements.&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; SET NOCOUNT ON;&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; -- Insert statements for procedure here&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; SELECT cat.[Name] as &lt;b&gt;Category&lt;/b&gt;, subcat.[Name] as &lt;b&gt;Category&lt;/b&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; FROM [Production].[ProductCategory] cat inner
join [Production].[ProductSubcategory] subcat&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; on cat.[ProductCategoryID]
= subcat.[ProductCategoryID]&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; WHERE cat.[ProductCategoryID] = @WhichCategory&lt;br&gt;
&lt;br&gt;
&lt;br&gt;
END&lt;br&gt;
&lt;br&gt;
&lt;img width="0" height="0" src="http://blog.mikepoole.net/aggbug.ashx?id=d4a6d7c0-54f2-4dd7-a3a3-a04b1c74d629" /&gt;</description>
      <comments>http://blog.mikepoole.net/CommentView,guid,d4a6d7c0-54f2-4dd7-a3a3-a04b1c74d629.aspx</comments>
      <category>Dynamics Ax Reporting</category>
    </item>
    <item>
      <trackback:ping>http://blog.mikepoole.net/Trackback.aspx?guid=80131486-c52e-4773-8bbf-52843e4edcb1</trackback:ping>
      <pingback:server>http://blog.mikepoole.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.mikepoole.net/PermaLink,guid,80131486-c52e-4773-8bbf-52843e4edcb1.aspx</pingback:target>
      <dc:creator>Mike</dc:creator>
      <wfw:comment>http://blog.mikepoole.net/CommentView,guid,80131486-c52e-4773-8bbf-52843e4edcb1.aspx</wfw:comment>
      <wfw:commentRss>http://blog.mikepoole.net/SyndicationService.asmx/GetEntryCommentsRss?guid=80131486-c52e-4773-8bbf-52843e4edcb1</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">I'm in the process of converting some web
applications from v1.1 to v2.0 which is proving <i>interesting</i>.<br /><br />
Initially I used a blank ASP.NET Web Site and added in the web applications using
the IIS option and C# library projects.<br />
I got loads of errors and warnings when compiling. I have needed to qualify the use
of my <a href="http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols.menu.aspx">Menu</a> class
with its namespace as the Menu class is now part of the framework and <a href="http://msdn2.microsoft.com/en-us/library/bahh2fef.aspx">some
new methods for registering client script blocks</a>. A forum post and some time later
I decided to start again using the <a href="http://webproject.scottgu.com/CSharp/Migration/Migration.aspx">Web
Application Project</a> model (ironic aside: under Step 6 there is a link to a MSDN
site regarding breaking changes in v2.0 - it just happens to be a broken link) which
is a download for VS 2005. 
<br /><br />
Overall, I have found this better so far as there are less compilation errors. However,
one of the few I had I <a href="http://www.google.co.uk/search?hl=en&amp;q=The+element+%27compilation%27+has+invalid+child+element+%27compilers%27.+List+of+possible+elements+expected%3A+%27assemblies%2C+buildProviders%2C+codeSubDirectories%2C+expressionBuilders%27&amp;btnG=Google+Search&amp;meta=">only
got 3 results from google</a> and <a href="http://www.netnewsgroups.net/group/microsoft.public.dotnet.framework.aspnet/topic14318.aspx">only
1 usable and correct solution</a>.<br /><br />
The whole solution now compiles but there are some hiccups in the execution which
I am still sorting out.<br /><p></p><img width="0" height="0" src="http://blog.mikepoole.net/aggbug.ashx?id=80131486-c52e-4773-8bbf-52843e4edcb1" /></body>
      <title>"The element 'compilation' has invalid child element" and other such fun</title>
      <guid isPermaLink="false">http://blog.mikepoole.net/PermaLink,guid,80131486-c52e-4773-8bbf-52843e4edcb1.aspx</guid>
      <link>http://blog.mikepoole.net/PermaLink,guid,80131486-c52e-4773-8bbf-52843e4edcb1.aspx</link>
      <pubDate>Thu, 31 Jan 2008 13:52:52 GMT</pubDate>
      <description>I'm in the process of converting some web applications from v1.1 to v2.0 which is proving &lt;i&gt;interesting&lt;/i&gt;.&lt;br&gt;
&lt;br&gt;
Initially I used a blank ASP.NET Web Site and added in the web applications using
the IIS option and C# library projects.&lt;br&gt;
I got loads of errors and warnings when compiling. I have needed to qualify the use
of my &lt;a href="http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols.menu.aspx"&gt;Menu&lt;/a&gt; class
with its namespace as the Menu class is now part of the framework and &lt;a href="http://msdn2.microsoft.com/en-us/library/bahh2fef.aspx"&gt;some
new methods for registering client script blocks&lt;/a&gt;. A forum post and some time later
I decided to start again using the &lt;a href="http://webproject.scottgu.com/CSharp/Migration/Migration.aspx"&gt;Web
Application Project&lt;/a&gt; model (ironic aside: under Step 6 there is a link to a MSDN
site regarding breaking changes in v2.0 - it just happens to be a broken link) which
is a download for VS 2005. 
&lt;br&gt;
&lt;br&gt;
Overall, I have found this better so far as there are less compilation errors. However,
one of the few I had I &lt;a href="http://www.google.co.uk/search?hl=en&amp;amp;q=The+element+%27compilation%27+has+invalid+child+element+%27compilers%27.+List+of+possible+elements+expected%3A+%27assemblies%2C+buildProviders%2C+codeSubDirectories%2C+expressionBuilders%27&amp;amp;btnG=Google+Search&amp;amp;meta="&gt;only
got 3 results from google&lt;/a&gt; and &lt;a href="http://www.netnewsgroups.net/group/microsoft.public.dotnet.framework.aspnet/topic14318.aspx"&gt;only
1 usable and correct solution&lt;/a&gt;.&lt;br&gt;
&lt;br&gt;
The whole solution now compiles but there are some hiccups in the execution which
I am still sorting out.&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.mikepoole.net/aggbug.ashx?id=80131486-c52e-4773-8bbf-52843e4edcb1" /&gt;</description>
      <comments>http://blog.mikepoole.net/CommentView,guid,80131486-c52e-4773-8bbf-52843e4edcb1.aspx</comments>
      <category>ASP.NET v2.0</category>
    </item>
    <item>
      <trackback:ping>http://blog.mikepoole.net/Trackback.aspx?guid=fa923af2-8b7e-4634-a737-a411b4e40023</trackback:ping>
      <pingback:server>http://blog.mikepoole.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.mikepoole.net/PermaLink,guid,fa923af2-8b7e-4634-a737-a411b4e40023.aspx</pingback:target>
      <dc:creator>Mike</dc:creator>
      <wfw:comment>http://blog.mikepoole.net/CommentView,guid,fa923af2-8b7e-4634-a737-a411b4e40023.aspx</wfw:comment>
      <wfw:commentRss>http://blog.mikepoole.net/SyndicationService.asmx/GetEntryCommentsRss?guid=fa923af2-8b7e-4634-a737-a411b4e40023</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">The beginning of a new year is good time
to re-appraise your goals and make some concious effort to identify how best to achieve
them. Since I passed 70-536 I've been looking forward to taking others and have considered
that a 3-4 month period should be sufficient time to prepare and pass each one, whilst
giving a reasonable break before starting the next one. Also, I want to cover other
areas outside of the exam criteria to broaden my knowledge-base.<br /><br />
I think 3 exams in 2008 is an achievable target but needs commitment and planning.
first up being 70-528. So it's my intention to crack on with the ASP.NET v2.0 and
I'm targeting early March to take the exam. I'm also aware of the AJAX phenomenon
and how many opportunities nowadays seem to include AJAX as a pre-requisite. Although
70-528 does not include the use of AJAX, it's part of v3.5, and also inevitably part
of what users will expect in their interactions with web applications now and in the
future. Definitely time to future-proof the skill-set and I've got this <a href="http://www.manning.com/gallo/">eBook </a>which <a href="http://weblogs.asp.net/scottgu/pages/ASP.NET-2.0-Tips_2C00_-Tricks_2C00_-Recipes-and-Gotchas.aspx">Scott
Guthrie</a> recommends amongst others.<br /><br />
Once I complete 70-528, I am turning my attention towards the SQL Server exams. Whether
I opt for the 2000 or 2005 version depends upon which I'm using by then. At the moment
it would be 2000, but at work I may soon be leveraging Reporting Services on the 2005
platform. There seems few universally recommended books on SSRS out there so the tutorials
on <a href="http://msdn2.microsoft.com/en-us/library/ms170246.aspx">MSDN</a> may be
the best option to start with. Before the year end I may look at MCPD in web apps
and go the whole hog on the web apps route.<br /><br />
As part of these lofty ambitions (!) I've tried to be realistic and have nominally
allocated a minimum 2 nights through the week reading between 1-2 hours. Then I will
follow up with 1 blog post per week looking at a relevant real-world aspect of what
I've learned. Also, there are a number of work-related developments which should push
me towards other areas (e.g. web services) and where noteworthy I will blog on technical
aspects which is something I have yet to use this blog for. 
<br /><br />
Some evolutions as well as resolutions then.<br /><p></p><img width="0" height="0" src="http://blog.mikepoole.net/aggbug.ashx?id=fa923af2-8b7e-4634-a737-a411b4e40023" /></body>
      <title>2008 - some resolutions</title>
      <guid isPermaLink="false">http://blog.mikepoole.net/PermaLink,guid,fa923af2-8b7e-4634-a737-a411b4e40023.aspx</guid>
      <link>http://blog.mikepoole.net/PermaLink,guid,fa923af2-8b7e-4634-a737-a411b4e40023.aspx</link>
      <pubDate>Thu, 03 Jan 2008 23:08:29 GMT</pubDate>
      <description>The beginning of a new year is good time to re-appraise your goals and
make some concious effort to identify how best to achieve them. Since I
passed 70-536 I've been looking forward to taking others and have
considered that a 3-4 month period should be sufficient time to prepare
and pass each one, whilst giving a reasonable break before starting the
next one. Also, I want to cover other areas outside of the exam
criteria to broaden my knowledge-base.&lt;br&gt;
&lt;br&gt;
I think 3 exams in 2008 is an achievable target but needs commitment and planning.
first up being 70-528. So it's my intention to crack on with the ASP.NET v2.0 and
I'm targeting early March to take the exam. I'm also aware of the AJAX phenomenon
and how many opportunities nowadays seem to include AJAX as a pre-requisite. Although
70-528 does not include the use of AJAX, it's part of v3.5, and also inevitably part
of what users will expect in their interactions with web applications now and in the
future. Definitely time to future-proof the skill-set and I've got this &lt;a href="http://www.manning.com/gallo/"&gt;eBook &lt;/a&gt;which &lt;a href="http://weblogs.asp.net/scottgu/pages/ASP.NET-2.0-Tips_2C00_-Tricks_2C00_-Recipes-and-Gotchas.aspx"&gt;Scott
Guthrie&lt;/a&gt; recommends amongst others.&lt;br&gt;
&lt;br&gt;
Once I complete 70-528, I am turning my attention towards the SQL Server exams. Whether
I opt for the 2000 or 2005 version depends upon which I'm using by then. At the moment
it would be 2000, but at work I may soon be leveraging Reporting Services on the 2005
platform. There seems few universally recommended books on SSRS out there so the tutorials
on &lt;a href="http://msdn2.microsoft.com/en-us/library/ms170246.aspx"&gt;MSDN&lt;/a&gt; may be
the best option to start with. Before the year end I may look at MCPD in web apps
and go the whole hog on the web apps route.&lt;br&gt;
&lt;br&gt;
As part of these lofty ambitions (!) I've tried to be realistic and have nominally
allocated a minimum 2 nights through the week reading between 1-2 hours. Then I will
follow up with 1 blog post per week looking at a relevant real-world aspect of what
I've learned. Also, there are a number of work-related developments which should push
me towards other areas (e.g. web services) and where noteworthy I will blog on technical
aspects which is something I have yet to use this blog for. 
&lt;br&gt;
&lt;br&gt;
Some evolutions as well as resolutions then.&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.mikepoole.net/aggbug.ashx?id=fa923af2-8b7e-4634-a737-a411b4e40023" /&gt;</description>
      <comments>http://blog.mikepoole.net/CommentView,guid,fa923af2-8b7e-4634-a737-a411b4e40023.aspx</comments>
      <category>General</category>
    </item>
    <item>
      <trackback:ping>http://blog.mikepoole.net/Trackback.aspx?guid=013687e8-b87e-40c8-abe0-15ece5c080e2</trackback:ping>
      <pingback:server>http://blog.mikepoole.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.mikepoole.net/PermaLink,guid,013687e8-b87e-40c8-abe0-15ece5c080e2.aspx</pingback:target>
      <dc:creator>Mike</dc:creator>
      <wfw:comment>http://blog.mikepoole.net/CommentView,guid,013687e8-b87e-40c8-abe0-15ece5c080e2.aspx</wfw:comment>
      <wfw:commentRss>http://blog.mikepoole.net/SyndicationService.asmx/GetEntryCommentsRss?guid=013687e8-b87e-40c8-abe0-15ece5c080e2</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">OK.. I have built a foundation of .NET
v2.0 competence. I have passed the exam so I'm quite chuffed.<br />
I'm not sure what more I can say after agreeing to so many non-disclosure-type conditions
prior to the exam!!<br />
Watch this space for more .NET developments!!<br /><p></p><img width="0" height="0" src="http://blog.mikepoole.net/aggbug.ashx?id=013687e8-b87e-40c8-abe0-15ece5c080e2" /></body>
      <title>Foundation Level Achieved</title>
      <guid isPermaLink="false">http://blog.mikepoole.net/PermaLink,guid,013687e8-b87e-40c8-abe0-15ece5c080e2.aspx</guid>
      <link>http://blog.mikepoole.net/PermaLink,guid,013687e8-b87e-40c8-abe0-15ece5c080e2.aspx</link>
      <pubDate>Mon, 12 Nov 2007 22:17:27 GMT</pubDate>
      <description>OK.. I have built a foundation of .NET v2.0 competence. I have passed the exam so I'm quite chuffed.&lt;br&gt;
I'm not sure what more I can say after agreeing to so many non-disclosure-type conditions
prior to the exam!!&lt;br&gt;
Watch this space for more .NET developments!!&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.mikepoole.net/aggbug.ashx?id=013687e8-b87e-40c8-abe0-15ece5c080e2" /&gt;</description>
      <comments>http://blog.mikepoole.net/CommentView,guid,013687e8-b87e-40c8-abe0-15ece5c080e2.aspx</comments>
      <category>70-536</category>
    </item>
  </channel>
</rss>