<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" 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:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Silverlight</title>
        <link>http://geekswithblogs.net/paulschapman/category/8529.aspx</link>
        <description>Information and lessons developing for Silverlight</description>
        <language>en-GB</language>
        <copyright>paulschapman</copyright>
        <managingEditor>paulschapman@xericsystems.com</managingEditor>
        <generator>Subtext Version 0.0.0.0</generator>
        <item>
            <title>Windows Azure, TDS, WCF, Silverlight and a few problems on the way Part IV &amp;ndash; The Silverlight Project</title>
            <link>http://geekswithblogs.net/paulschapman/archive/2009/05/26/windows-azure-tds-wcf-silverlight-and-a-few-problems-on-and-again.aspx</link>
            <description>&lt;h1&gt;Introduction&lt;/h1&gt;
&lt;p&gt;After a short sojourn with the Visual Studio 2010 Beta, I’m back with the next part. Pop quiz – can you run Visual Studio Team Foundation and Visual Studio Professional without Team Suite? Well some wit told a client you could not – so I spent some of the Bank Holiday proving otherwise – Another article there on setting it up, but in general it was incredibly easy for a server app! Anyway I digress back to the subject at hand – hosting a Silverlight Application in an Azure Application.&lt;/p&gt;
&lt;p&gt;This was the part that gave me the most gotchas. &lt;/p&gt;
&lt;h1&gt;Adding a Silverlight Project to the Azure Solution.&lt;/h1&gt;
&lt;p&gt;Right click on the Solution and click on the ‘Add New Project’.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/paulschapman/WindowsLiveWriter/WindowsAzureTDSWCFSilverlightandafewprob_13772/image_2.png"&gt;&lt;img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="image" border="0" alt="image" width="244" height="157" src="http://geekswithblogs.net/images/geekswithblogs_net/paulschapman/WindowsLiveWriter/WindowsAzureTDSWCFSilverlightandafewprob_13772/image_thumb.png" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Select The ‘Silverlight Application’ – Give your Silverlight Application a name and then click on ‘OK’.&lt;/p&gt;
&lt;p&gt;When you hit the ‘OK’ button you will be presented with a new window to create the Web Application that will host the Silverlight App. Well we already have a web app. It is the WebRole – for this reason we select the third option – ‘Link this Silverlight control  into an existing Web Site’, if it has not already been selected.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/paulschapman/WindowsLiveWriter/WindowsAzureTDSWCFSilverlightandafewprob_13772/image_4.png"&gt;&lt;img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="image" border="0" alt="image" width="244" height="218" src="http://geekswithblogs.net/images/geekswithblogs_net/paulschapman/WindowsLiveWriter/WindowsAzureTDSWCFSilverlightandafewprob_13772/image_thumb_1.png" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Of the three options at the bottom ensure the first is selected, we will raid this page for some code. Deselect the Make it the start page and select the Enable Silverlight debugging option.&lt;/p&gt;
&lt;p&gt;Now there is a known issue in the WCF Services SDK which may soon cause you at least a really annoying message; "this operation is not supported for a relative uri". While it is not fatal and you can ignore it – as a matter of good coding I tend to get rid of as many warning messages as possible. To fix it, open your machine.config (both x86 and x64 version), and delete the following section: &lt;br /&gt;
&lt;/p&gt;
&lt;pre class="csharpcode"&gt;   &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;endpoint&lt;/span&gt; &lt;span class="attr"&gt;address&lt;/span&gt;&lt;span class="kwrd"&gt;=""&lt;/span&gt; &lt;span class="attr"&gt;binding&lt;/span&gt;&lt;span class="kwrd"&gt;="netTcpRelayBinding"&lt;/span&gt; &lt;span class="attr"&gt;contract&lt;/span&gt;&lt;span class="kwrd"&gt;="IMetadataExchange"&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="sb"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;style type="text/css"&gt;&lt;![CDATA[
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }]]&gt;&lt;/style&gt;
&lt;p&gt; &lt;/p&gt;
&lt;h1&gt;Linking your Silverlight Application to your Webservice&lt;/h1&gt;
&lt;p&gt;Now last time we created a Web Service and it is now time to link the Webservice to the Silverlight Application. Right click on the Silverlight application you have created last time, and select ‘Add Service Reference’&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/paulschapman/WindowsLiveWriter/WindowsAzureTDSWCFSilverlightandafewprob_13772/image_6.png"&gt;&lt;img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="image" border="0" alt="image" width="244" height="197" src="http://geekswithblogs.net/images/geekswithblogs_net/paulschapman/WindowsLiveWriter/WindowsAzureTDSWCFSilverlightandafewprob_13772/image_thumb_2.png" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;Click on the Discover button and it will search your solution for the Webservice. Give the Namespace a sensible name and click on OK.&lt;/p&gt;
&lt;p&gt;Go to the ServiceReferences.ClientConfig file in the Silverlight Client that is created when you link a webservice. Look for the client tag;&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;client&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;endpoint &lt;/span&gt;&lt;span style="COLOR: red"&gt;address&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;http://localhost:51159/SimplicitaServices.svc&lt;/span&gt;"
        &lt;span style="COLOR: red"&gt;binding&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;basicHttpBinding&lt;/span&gt;" &lt;span style="COLOR: red"&gt;bindingConfiguration&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;BasicHttpBinding_ISimplicitaServices&lt;/span&gt;"
        &lt;span style="COLOR: red"&gt;contract&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;SimplicitaServices.ISimplicitaServices&lt;/span&gt;" &lt;span style="COLOR: red"&gt;name&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;BasicHttpBinding_ISimplicitaServices&lt;/span&gt;" &lt;span style="COLOR: blue"&gt;/&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;client&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;Change the port number to the same port number that your Azure project executes on. In my development environment this tends to be 81, for yours it might be different.&lt;/p&gt;
&lt;p&gt;We nearly have set up the Silverlight application. One last task remains. Silverlight will not retrieve data from some sites, including some webservices unless it has been given permission. You do this by placing a clientaccesspolicy.xml file in the root of the web server. However for this site, which is being run in the virtual server of Visual Studio that in effect means the root of the site. So add a file with that name to your site and insert the following code;&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;access-policy&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;
  &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;cross-domain-access&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;policy&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;
      &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;allow-from &lt;/span&gt;&lt;span style="COLOR: red"&gt;http-request-headers&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;*&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;&amp;gt;
        &lt;/span&gt;&amp;gt;
        &lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;domain &lt;/span&gt;&lt;span style="COLOR: red"&gt;uri&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;*&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;/&amp;gt;
      &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;allow-from&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;
      &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;grant-to&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;resource &lt;/span&gt;&lt;span style="COLOR: red"&gt;path&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;/&lt;/span&gt;" &lt;span style="COLOR: red"&gt;include-subpaths&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;true&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;/&amp;gt;
      &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;grant-to&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;policy&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;
  &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;cross-domain-access&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;access-policy&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;And there we have it. The Silverlight project is now ready for us to code whatever magic we may wish – which will have to wait till the next part – I’m just about to relax and watch the CSI episode set in a Science Fiction convention!&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=132432"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=132432" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/paulschapman/aggbug/132432.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>paulschapman</dc:creator>
            <guid>http://geekswithblogs.net/paulschapman/archive/2009/05/26/windows-azure-tds-wcf-silverlight-and-a-few-problems-on-and-again.aspx</guid>
            <pubDate>Wed, 27 May 2009 03:08:59 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/paulschapman/comments/132432.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/paulschapman/archive/2009/05/26/windows-azure-tds-wcf-silverlight-and-a-few-problems-on-and-again.aspx#feedback</comments>
            <slash:comments>5</slash:comments>
            <wfw:commentRss>http://geekswithblogs.net/paulschapman/comments/commentRss/132432.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/paulschapman/services/trackbacks/132432.aspx</trackback:ping>
        </item>
        <item>
            <title>Windows Azure, TDS, WCF, Silverlight and a few problems on the way Part III &amp;ndash; The Azure Project, and creating our Web service.</title>
            <link>http://geekswithblogs.net/paulschapman/archive/2009/05/14/windows-azure-tds-wcf-silverlight-and-a-few-problems-on-yet-again.aspx</link>
            <description>&lt;p&gt;So far Parts I &amp;amp; II have not given us anything new – the code will work happily in an ASP.Net or a traditional client application. Now we get to a more interesting bit – creating our Azure Project.&lt;/p&gt;
&lt;p&gt;Before we can create an Azure Project you will eventually have to go to the Azure Website – and download the Azure tools from here; &lt;a href="http://www.microsoft.com/azure/windowsazurefordevelopers/default.aspx"&gt;http://www.microsoft.com/azure/windowsazurefordevelopers/default.aspx&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Once you have installed these on your development PC you can now create an Azure Project. You will notice that I have not suggested signing up even for a CTP account. The reason is that you can do your development locally – the Azure tools create a kind of mini-Azure on your development PC. This makes little difference now, but when the service is charged for it will make a difference.&lt;/p&gt;
&lt;p&gt;To create an Azure Project, look under your chosen language (C# or VB.Net) and select the ‘Cloud Service’ leaf. Then choose the required template. Normally I have picked the ‘Web And Worker Cloud Service’ – this is because I invariably need both a web and worker role. Indeed this project, we will have both. Below&lt;/p&gt;
&lt;p&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/paulschapman/WindowsLiveWriter/WindowsAzureTDSWCFSilverlightandafewpro_147AC/image_2.png"&gt;&lt;img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: block; FLOAT: none; MARGIN-LEFT: auto; BORDER-TOP: 0px; MARGIN-RIGHT: auto; BORDER-RIGHT: 0px" title="image" border="0" alt="image" width="244" height="165" src="http://geekswithblogs.net/images/geekswithblogs_net/paulschapman/WindowsLiveWriter/WindowsAzureTDSWCFSilverlightandafewpro_147AC/image_thumb.png" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;And that is it. We now have an Azure Project, that can be run locally to test it.&lt;/p&gt;
&lt;h1&gt;The Web service.&lt;/h1&gt;
&lt;p&gt;Now the Azure project will eventually have a Silverlight frontend and that creates a small problem. Silverlight is designed to be a lightweight download and for this reason it uses a subset of the full .Net runtime. This means that many of the functions that one might take for granted. To allow us the use of the full .Net runtime these are placed behind a WCF web service. &lt;/p&gt;
&lt;p&gt;To create a web service you can host it within your Web role. So right-click on the Web role project and select ‘Add’, then ‘New item’&lt;/p&gt;
&lt;p align="center"&gt;&lt;a href="http://geekswithblogs.net/images/geekswithblogs_net/paulschapman/WindowsLiveWriter/WindowsAzureTDSWCFSilverlightandafewpro_147AC/image_4.png"&gt;&lt;img style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title="image" border="0" alt="image" width="244" height="148" src="http://geekswithblogs.net/images/geekswithblogs_net/paulschapman/WindowsLiveWriter/WindowsAzureTDSWCFSilverlightandafewpro_147AC/image_thumb_1.png" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;This will display the above window – select the WCF Service, and give it name then click on the ‘Add’ button. &lt;/p&gt;
&lt;p&gt;This creates your Web Service, but we are not finished. Silverlight requires that a Web Service use basic binding. So change the binding of the service double click on the Web.config of the Web Role. Finding the &amp;lt;services&amp;gt; tag. Make sure the ‘binding’ attribute is changed to basicHttpBinding. The following code shows what the section  should look like;&lt;/p&gt;
&lt;pre class="code"&gt;    &lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;service &lt;/span&gt;&lt;span style="COLOR: red"&gt;behaviorConfiguration&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;NewsMashup_WebRole.NewsMashupServiceBehavior&lt;/span&gt;"
        &lt;span style="COLOR: red"&gt;name&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;NewsMashup_WebRole.NewsMashupService&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;endpoint &lt;/span&gt;&lt;span style="COLOR: red"&gt;address&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"" &lt;strong&gt;&lt;span style="COLOR: red"&gt;binding&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;basicHttpBinding&lt;/span&gt;"&lt;/strong&gt; &lt;span style="COLOR: red"&gt;contract&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;NewsMashup_WebRole.INewsMashupService&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;&amp;gt;
            &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;identity&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;
                &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;dns &lt;/span&gt;&lt;span style="COLOR: red"&gt;value&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;localhost&lt;/span&gt;" &lt;span style="COLOR: blue"&gt;/&amp;gt;
            &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;identity&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;
        &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;endpoint&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;endpoint &lt;/span&gt;&lt;span style="COLOR: red"&gt;address&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;mex&lt;/span&gt;" &lt;span style="COLOR: red"&gt;binding&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;mexHttpBinding&lt;/span&gt;" &lt;span style="COLOR: red"&gt;contract&lt;/span&gt;&lt;span style="COLOR: blue"&gt;=&lt;/span&gt;"&lt;span style="COLOR: blue"&gt;IMetadataExchange&lt;/span&gt;" &lt;span style="COLOR: blue"&gt;/&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;service&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;services&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;So this sets up our Azure project, and our web service. &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=132118"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=132118" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/paulschapman/aggbug/132118.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>paulschapman</dc:creator>
            <guid>http://geekswithblogs.net/paulschapman/archive/2009/05/14/windows-azure-tds-wcf-silverlight-and-a-few-problems-on-yet-again.aspx</guid>
            <pubDate>Fri, 15 May 2009 04:18:16 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/paulschapman/comments/132118.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/paulschapman/archive/2009/05/14/windows-azure-tds-wcf-silverlight-and-a-few-problems-on-yet-again.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/paulschapman/comments/commentRss/132118.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/paulschapman/services/trackbacks/132118.aspx</trackback:ping>
        </item>
        <item>
            <title>Windows Azure, TDS, WCF, Silverlight and a few problems on the way Part II &amp;ndash; Database access layer</title>
            <link>http://geekswithblogs.net/paulschapman/archive/2009/05/13/windows-azure-tds-wcf-silverlight-and-a-few-problems-on-again.aspx</link>
            <description>&lt;div style="PADDING-BOTTOM: 0px; MARGIN: 0px; PADDING-LEFT: 0px; PADDING-RIGHT: 0px; DISPLAY: inline; FLOAT: none; PADDING-TOP: 0px" id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:23ffb774-c08e-4f72-a287-98bdc5a66866" class="wlWriterEditableSmartContent"&gt;
&lt;p&gt;Project Sourcecode: &lt;a target="_blank" href="http://geekswithblogs.net/images/geekswithblogs_net/paulschapman/WindowsLiveWriter/WindowsAzureTDSWCFSilverlightandafewprob_13ABB/NewsMashup.zip"&gt;NewsMashup&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;In Part I of this series of articles I discussed the database that lies behind the application. Moving from the backend to the client side, it is now time to discuss the code which accesses the database and returns the data to application.&lt;/p&gt;
&lt;p&gt;I have a standard class I use when accessing databases. The version I am using here is developed to connect to SQL Server but with some minor changes it would not be difficult to adapt to other databases, and I already have one for ODBC.&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="COLOR: blue"&gt;public &lt;/span&gt;Database(&lt;span style="COLOR: blue"&gt;string &lt;/span&gt;Connection)
{
    connection = &lt;span style="COLOR: blue"&gt;new &lt;/span&gt;&lt;span style="COLOR: #2b91af"&gt;SqlConnection&lt;/span&gt;(Connection);
    InitialiseCommand();
}

&lt;span style="COLOR: blue"&gt;public &lt;/span&gt;Database(&lt;span style="COLOR: #2b91af"&gt;SqlConnection &lt;/span&gt;Connection)
{
    connection = Connection;
    InitialiseCommand();
}

&lt;span style="COLOR: blue"&gt;public &lt;/span&gt;Database()
{
    connection = &lt;span style="COLOR: blue"&gt;new &lt;/span&gt;&lt;span style="COLOR: #2b91af"&gt;SqlConnection&lt;/span&gt;();
    InitialiseCommand();

}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;pre class="prettyprint"&gt; &lt;/pre&gt;
&lt;p&gt;The above code shows the constructor for the data access layer. Essentially the constructor expects either a connection, connection string or nothing to be passed to the constructor. Each calls another function; InitialiseCommand() which sets up the command object and is below.&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="COLOR: blue"&gt;private void &lt;/span&gt;InitialiseCommand()
{
    &lt;span style="COLOR: blue"&gt;try
    &lt;/span&gt;{
        &lt;span style="COLOR: blue"&gt;if &lt;/span&gt;(dbCommand == &lt;span style="COLOR: blue"&gt;null&lt;/span&gt;)
        {
            dbCommand             = &lt;span style="COLOR: blue"&gt;new &lt;/span&gt;&lt;span style="COLOR: #2b91af"&gt;SqlCommand&lt;/span&gt;();
            dbCommand.CommandType = &lt;span style="COLOR: #2b91af"&gt;CommandType&lt;/span&gt;.StoredProcedure;  &lt;span style="COLOR: green"&gt;// default to Stored Prc

            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;if &lt;/span&gt;(connection != &lt;span style="COLOR: blue"&gt;null&lt;/span&gt;)
            {
                dbCommand.Connection = connection;
            }
        }
    }
    &lt;span style="COLOR: blue"&gt;catch &lt;/span&gt;(System.&lt;span style="COLOR: #2b91af"&gt;Exception &lt;/span&gt;ex)
    {
        &lt;span style="COLOR: blue"&gt;throw &lt;/span&gt;ex;
    }
}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;This initialises the Command object and sets the type to Stored Procedure, if the Connection object has been initialised the command objects connection is set to the connection object.&lt;/p&gt;
&lt;p&gt;To execute stored procedures we need two. One to return a datatable, and one which does not&lt;/p&gt;
&lt;pre class="code"&gt;    &lt;span style="COLOR: blue"&gt;public void &lt;/span&gt;Execute()
    {
        &lt;span style="COLOR: blue"&gt;try
        &lt;/span&gt;{
            &lt;span style="COLOR: blue"&gt;if &lt;/span&gt;(dbCommand.Connection.State != &lt;span style="COLOR: #2b91af"&gt;ConnectionState&lt;/span&gt;.Open) dbCommand.Connection.Open();
            dbCommand.ExecuteNonQuery();
        }
        &lt;span style="COLOR: blue"&gt;catch &lt;/span&gt;(System.&lt;span style="COLOR: #2b91af"&gt;Exception &lt;/span&gt;ex)
        {
            &lt;span style="COLOR: blue"&gt;throw &lt;/span&gt;ex;
        }
    }

    &lt;span style="COLOR: blue"&gt;public &lt;/span&gt;&lt;span style="COLOR: #2b91af"&gt;DataTable &lt;/span&gt;Execute(&lt;span style="COLOR: blue"&gt;string &lt;/span&gt;TableName)
    {
        &lt;span style="COLOR: #2b91af"&gt;SqlDataAdapter  &lt;/span&gt;da;
        &lt;span style="COLOR: #2b91af"&gt;DataSet         &lt;/span&gt;ds;
        &lt;span style="COLOR: #2b91af"&gt;DataTable       &lt;/span&gt;dt = &lt;span style="COLOR: blue"&gt;new &lt;/span&gt;&lt;span style="COLOR: #2b91af"&gt;DataTable&lt;/span&gt;();

        &lt;span style="COLOR: blue"&gt;try
        &lt;/span&gt;{
            da = &lt;span style="COLOR: blue"&gt;new &lt;/span&gt;&lt;span style="COLOR: #2b91af"&gt;SqlDataAdapter&lt;/span&gt;(dbCommand);
            ds = &lt;span style="COLOR: blue"&gt;new &lt;/span&gt;&lt;span style="COLOR: #2b91af"&gt;DataSet&lt;/span&gt;();
            da.Fill(ds,TableName);

            &lt;span style="COLOR: blue"&gt;if &lt;/span&gt;(ds.Tables.Count &amp;gt; 0)
                dt = ds.Tables[0];
        }
        &lt;span style="COLOR: blue"&gt;catch &lt;/span&gt;(System.&lt;span style="COLOR: #2b91af"&gt;Exception &lt;/span&gt;ex)
        {
            &lt;span style="COLOR: blue"&gt;throw &lt;/span&gt;ex;
        }

        &lt;span style="COLOR: blue"&gt;return &lt;/span&gt;dt;
    }
}&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;p&gt;The first of these two methods is fairly simple. Essentially what it does is confirm the connection is open, if not the connection is opened. Then it executes the stored procedure. The whole lot is then wrapped in a try catch, which is thrown back to the calling application. &lt;/p&gt;
&lt;p&gt;The second is more interesting. It uses a Data Adapter and Dataset to fill a table returned back to the calling programme.&lt;/p&gt;
&lt;p&gt;These two methods cover all the various types of database action I might want to undertake. &lt;/p&gt;
&lt;p&gt;The real magic here however is in the objects which inherit from this class. &lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="COLOR: blue"&gt;public class &lt;/span&gt;&lt;span style="COLOR: #2b91af"&gt;NewsMashupDB &lt;/span&gt;: &lt;span style="COLOR: #2b91af"&gt;Database&lt;/span&gt;,&lt;span style="COLOR: #2b91af"&gt;IDisposable&lt;/span&gt;&lt;/pre&gt;
&lt;p&gt;The class inherits from the class defined in the code above. The constructor for the object is as follows;&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="COLOR: blue"&gt;public &lt;/span&gt;NewsMashupDB() 
    : &lt;span style="COLOR: blue"&gt;base&lt;/span&gt;()
{
    
}

&lt;span style="COLOR: blue"&gt;public &lt;/span&gt;NewsMashupDB(&lt;span style="COLOR: blue"&gt;string &lt;/span&gt;ConnectionString) 
    : &lt;span style="COLOR: blue"&gt;base&lt;/span&gt;(ConnectionString)
{

}&lt;/pre&gt;
&lt;p&gt;Thats it. There is two here – one initialises the connection string, the other does not. All the calling application need do is retrieve the connection string. Executing a stored procedure is equally simple. Here we have the stored procedure which executes the CreateStory stored procedure;&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="COLOR: blue"&gt;public void &lt;/span&gt;CreateStory(&lt;span style="COLOR: blue"&gt;string &lt;/span&gt;Headline, &lt;span style="COLOR: blue"&gt;string &lt;/span&gt;Description, &lt;span style="COLOR: blue"&gt;string &lt;/span&gt;Url, &lt;span style="COLOR: blue"&gt;string &lt;/span&gt;Supplier, &lt;span style="COLOR: blue"&gt;long &lt;/span&gt;PubDateValue)
{
    &lt;span style="COLOR: #2b91af"&gt;SqlParameter &lt;/span&gt;paramHeadline      = &lt;span style="COLOR: blue"&gt;new &lt;/span&gt;&lt;span style="COLOR: #2b91af"&gt;SqlParameter&lt;/span&gt;(&lt;span style="COLOR: #a31515"&gt;"Headline"&lt;/span&gt;, &lt;span style="COLOR: #2b91af"&gt;SqlDbType&lt;/span&gt;.VarChar);
    &lt;span style="COLOR: #2b91af"&gt;SqlParameter &lt;/span&gt;paramDescription   = &lt;span style="COLOR: blue"&gt;new &lt;/span&gt;&lt;span style="COLOR: #2b91af"&gt;SqlParameter&lt;/span&gt;(&lt;span style="COLOR: #a31515"&gt;"Description"&lt;/span&gt;,&lt;span style="COLOR: #2b91af"&gt;SqlDbType&lt;/span&gt;.VarChar);
    &lt;span style="COLOR: #2b91af"&gt;SqlParameter &lt;/span&gt;paramUrl           = &lt;span style="COLOR: blue"&gt;new &lt;/span&gt;&lt;span style="COLOR: #2b91af"&gt;SqlParameter&lt;/span&gt;(&lt;span style="COLOR: #a31515"&gt;"Url"&lt;/span&gt;,&lt;span style="COLOR: #2b91af"&gt;SqlDbType&lt;/span&gt;.VarChar);
    &lt;span style="COLOR: #2b91af"&gt;SqlParameter &lt;/span&gt;paramSupplier      = &lt;span style="COLOR: blue"&gt;new &lt;/span&gt;&lt;span style="COLOR: #2b91af"&gt;SqlParameter&lt;/span&gt;(&lt;span style="COLOR: #a31515"&gt;"Supplier"&lt;/span&gt;, &lt;span style="COLOR: #2b91af"&gt;SqlDbType&lt;/span&gt;.VarChar);
    &lt;span style="COLOR: #2b91af"&gt;SqlParameter &lt;/span&gt;paramPubDate       = &lt;span style="COLOR: blue"&gt;new &lt;/span&gt;&lt;span style="COLOR: #2b91af"&gt;SqlParameter&lt;/span&gt;(&lt;span style="COLOR: #a31515"&gt;"PubDateValue"&lt;/span&gt;, &lt;span style="COLOR: #2b91af"&gt;SqlDbType&lt;/span&gt;.BigInt);

    CommandText = &lt;span style="COLOR: #a31515"&gt;"NewsMashup.CreateStory"&lt;/span&gt;;

    &lt;span style="COLOR: blue"&gt;try
    &lt;/span&gt;{

        paramHeadline.Value = Headline;
        paramDescription.Value = Description;
        paramUrl.Value = Url;
        paramSupplier.Value = Supplier;
        paramPubDate.Value = PubDateValue;

        dbCommand.Parameters.Clear();

        dbCommand.Parameters.Add(paramHeadline);
        dbCommand.Parameters.Add(paramDescription);
        dbCommand.Parameters.Add(paramUrl);
        dbCommand.Parameters.Add(paramSupplier);
        dbCommand.Parameters.Add(paramPubDate);

        Execute();
    }
    &lt;span style="COLOR: blue"&gt;catch &lt;/span&gt;(System.&lt;span style="COLOR: #2b91af"&gt;Exception &lt;/span&gt;ex)
    {
        &lt;span style="COLOR: blue"&gt;throw &lt;/span&gt;ex;
    }
}&lt;/pre&gt;
&lt;p&gt;Except for the code setting up the parameters required the execution of the stored procedure takes two lines; one to initialise the command text, the other to execute the stored procedure. &lt;/p&gt;
&lt;p&gt;A stored procedure which returns data is equally simple.&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="COLOR: blue"&gt;public &lt;/span&gt;&lt;span style="COLOR: #2b91af"&gt;DataTable &lt;/span&gt;RetrieveNewsFeeds()
{
    &lt;span style="COLOR: #2b91af"&gt;DataTable &lt;/span&gt;dt = &lt;span style="COLOR: blue"&gt;new &lt;/span&gt;&lt;span style="COLOR: #2b91af"&gt;DataTable&lt;/span&gt;();

    &lt;span style="COLOR: blue"&gt;try
    &lt;/span&gt;{
        CommandText = &lt;span style="COLOR: #a31515"&gt;"NewsMashup.RetrieveNewsFeeds"&lt;/span&gt;;

        dt = Execute(&lt;span style="COLOR: #a31515"&gt;"NewsFeeds"&lt;/span&gt;);

    }
    &lt;span style="COLOR: blue"&gt;catch &lt;/span&gt;(System.&lt;span style="COLOR: #2b91af"&gt;Exception &lt;/span&gt;ex)
    {
        &lt;span style="COLOR: blue"&gt;throw &lt;/span&gt;ex;
    }

    &lt;span style="COLOR: blue"&gt;return &lt;/span&gt;dt;
}&lt;/pre&gt;
&lt;p&gt;It is clearer here than in the other method, again only two lines of code; one to initialise the CommandText the other to execute the stored procedure. This version of the Execute returns the datatable containing the results of the stored procedure’s execution.&lt;/p&gt;
&lt;p&gt;This shows examples of the code. The rest should be in the attached zip file&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=132093"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=132093" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/paulschapman/aggbug/132093.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>paulschapman</dc:creator>
            <guid>http://geekswithblogs.net/paulschapman/archive/2009/05/13/windows-azure-tds-wcf-silverlight-and-a-few-problems-on-again.aspx</guid>
            <pubDate>Thu, 14 May 2009 03:23:21 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/paulschapman/comments/132093.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/paulschapman/archive/2009/05/13/windows-azure-tds-wcf-silverlight-and-a-few-problems-on-again.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/paulschapman/comments/commentRss/132093.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/paulschapman/services/trackbacks/132093.aspx</trackback:ping>
        </item>
        <item>
            <title>Implementing a Silverlight based &amp;lsquo;Vertical&amp;rsquo; tickertape</title>
            <link>http://geekswithblogs.net/paulschapman/archive/2009/03/31/implementing-a-silverlight-based-lsquoverticalrsquo-tickertape.aspx</link>
            <description>&lt;font size="2"&gt;&lt;font size="2"&gt;&lt;font color="#000000" size="2"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Calibri&amp;quot;, &amp;quot;sans-serif&amp;quot;; FONT-SIZE: 11pt; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-ansi-language: EN-GB; mso-fareast-language: EN-US; mso-bidi-language: AR-SA; mso-ascii-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-no-proof: yes; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-ansi-language: EN-GB; mso-fareast-language: EN-US; mso-bidi-language: AR-SA"&gt;
&lt;h2 style="LINE-HEIGHT: normal; MARGIN: 7.5pt 0cm; mso-outline-level: 2" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Arial&amp;quot;, &amp;quot;sans-serif&amp;quot;; FONT-SIZE: 18pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;Introduction&lt;/span&gt;&lt;/h2&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 7.5pt 0cm; mso-outline-level: 2" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Arial&amp;quot;, &amp;quot;sans-serif&amp;quot;; FONT-SIZE: 10.5pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;I have a need of a ‘mash-up’ of business headlines for one of my current projects. For this I want an area where headlines enter at the bottom and the other headlines scroll up, vanishing at the top. If there are no new headlines, then the first headline appears at the bottom.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 7.5pt 0cm" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Arial&amp;quot;, &amp;quot;sans-serif&amp;quot;; FONT-SIZE: 10.5pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;Now generally when I work I like to build from the base up, build a part of the solution and then build on that. So for this reason the article does not deal with collecting the news – I’ll leave that one for another article. This will deal with just the scrolling region.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 style="LINE-HEIGHT: normal; MARGIN: 7.5pt 0cm; mso-outline-level: 2" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Arial&amp;quot;, &amp;quot;sans-serif&amp;quot;; FONT-SIZE: 18pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;Creating a Scrolling Region&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 7.5pt 0cm" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Arial&amp;quot;, &amp;quot;sans-serif&amp;quot;; FONT-SIZE: 10.5pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;Now to have a an area of a silverlight scroll an area we can use the &amp;lt;ScrollViewer&amp;gt; tag. This tag is replaced around whatever mark up we want to scroll. For the news feed or this example this will be a StackPanel, which will be orientated Vertical.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 7.5pt 0cm" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;&amp;lt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: #a31515; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;ScrollViewer&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: red; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt; x&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;:&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: red; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;Name&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;="ScrollRegion"&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt; &lt;br /&gt;
&lt;span style="COLOR: red"&gt;VerticalScrollBarVisibility&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="Hidden"&lt;/span&gt; &lt;br /&gt;
&lt;span style="COLOR: red"&gt;HorizontalScrollBarVisibility&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="Hidden"&lt;/span&gt; &lt;br /&gt;
&lt;span style="COLOR: red"&gt;BorderThickness&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="0"&lt;/span&gt; &lt;br /&gt;
&lt;span style="COLOR: red"&gt;Background&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="White"&lt;/span&gt; &lt;br /&gt;
&lt;span style="COLOR: red"&gt;Height&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="150"&lt;/span&gt; &lt;br /&gt;
&lt;span style="COLOR: red"&gt;Width&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="200"&lt;/span&gt; &lt;br /&gt;
&lt;span style="COLOR: red"&gt;Cursor&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="Hand"&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt; &lt;br /&gt;
&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;StackPanel&lt;/span&gt;&lt;span style="COLOR: red"&gt; x&lt;/span&gt;&lt;span style="COLOR: blue"&gt;:&lt;/span&gt;&lt;span style="COLOR: red"&gt;Name&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="ItemsStack"&lt;/span&gt;&lt;span style="COLOR: red"&gt; Orientation&lt;/span&gt;&lt;span style="COLOR: blue"&gt;="Vertical" &amp;gt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt; &lt;br /&gt;
&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;StackPanel&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt; &lt;br /&gt;
&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="COLOR: #a31515"&gt;ScrollViewer&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10.5pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 7.5pt 0cm" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Arial&amp;quot;, &amp;quot;sans-serif&amp;quot;; FONT-SIZE: 10.5pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;The above code creates a scrollable region containing a stack with no border, white background. At the moment the stack panel is empty – this is because the content will be added by the code behind.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 style="LINE-HEIGHT: normal; MARGIN: 7.5pt 0cm; mso-outline-level: 2" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Arial&amp;quot;, &amp;quot;sans-serif&amp;quot;; FONT-SIZE: 18pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;Creating our ‘Sample’ headings.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 7.5pt 0cm" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Arial&amp;quot;, &amp;quot;sans-serif&amp;quot;; FONT-SIZE: 10.5pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;As this is an example, just to get an idea I’m not using real headlines but the Knights of the Roundtable. This is defined as an array of strings thus;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 7.5pt 0cm; mso-outline-level: 2" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: #2b91af; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;String[] Knights = { &lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: #a31515; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;"King Arthur"&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: #2b91af; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;, &lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: #a31515; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;"Sir Lancelot"&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: #2b91af; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;, &lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: #a31515; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;"Sir Gawain"&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: #2b91af; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;, &lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: #a31515; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;"Sir Geraint"&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: #2b91af; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;, &lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: #a31515; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;"Sir Gareth"&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: #2b91af; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;, &lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: #a31515; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;"Sir Gaheris"&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: #2b91af; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;, &lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: #a31515; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;"Sir Bedivere"&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: #2b91af; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;, &lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: #a31515; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;"Sir Galahad"&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: #2b91af; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;, &lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: #a31515; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;"Sir Kay"&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: #2b91af; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;, &lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: #a31515; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;"Sir Bors de Ganis"&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: #2b91af; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;, &lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: #a31515; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;"Sir Lamorak"&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: #2b91af; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;, &lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: #a31515; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;"Sir Tristan"&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: #2b91af; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;, &lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: #a31515; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;"Sir Percivale"&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt; &lt;br /&gt;
};&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 style="LINE-HEIGHT: normal; MARGIN: 7.5pt 0cm; mso-outline-level: 2" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Arial&amp;quot;, &amp;quot;sans-serif&amp;quot;; FONT-SIZE: 18pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;Adding our ‘Sample’ headings&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 7.5pt 0cm" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Arial&amp;quot;, &amp;quot;sans-serif&amp;quot;; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;Adding entries to our stack panel is fairly simple. We first get a reference to the stack panel, create a textblock, set the text to our next entry and add the textblock to the Children of the StackPanel&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 7.5pt 0cm; mso-outline-level: 2" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: #2b91af; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;StackPanel&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt; sp = FindName(&lt;span style="COLOR: #a31515"&gt;"ItemsStack"&lt;/span&gt;) &lt;span style="COLOR: blue"&gt;as&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;StackPanel&lt;/span&gt;; &lt;br /&gt;
&lt;span style="COLOR: #2b91af"&gt;TextBlock&lt;/span&gt; tb = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;TextBlock&lt;/span&gt;(); &lt;br /&gt;
tb.Text = Knights[0];&lt;br /&gt;
sp.Children.Add(tb);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 style="LINE-HEIGHT: normal; MARGIN: 7.5pt 0cm; mso-outline-level: 2" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Arial&amp;quot;, &amp;quot;sans-serif&amp;quot;; FONT-SIZE: 18pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;Setting up the automatic addition of entries&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 7.5pt 0cm" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Arial&amp;quot;, &amp;quot;sans-serif&amp;quot;; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;We need our application to automatically add new entries to the news feed every so often. To do this we need something that fires after a predetermined period of time and for this we use the DispatchTimer class.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 7.5pt 0cm" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: #2b91af; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;DispatcherTimer&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: black; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt; dispatchTimer;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: black; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;.&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: black; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;.&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: black; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;.&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;&lt;br /&gt;
public&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt; Page()&lt;br /&gt;
{&lt;br /&gt;
InitializeComponent();&lt;br /&gt;
&lt;span style="COLOR: #2b91af"&gt;.&lt;/span&gt;&lt;br /&gt;
&lt;span style="COLOR: #2b91af"&gt;.&lt;/span&gt;&lt;br /&gt;
&lt;span style="COLOR: #2b91af"&gt;.&lt;/span&gt;&lt;br /&gt;
dispatchTimer = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;DispatcherTimer&lt;/span&gt;();&lt;br /&gt;
dispatchTimer.Interval = &lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;TimeSpan&lt;/span&gt;(0, 0, 30); &lt;span style="COLOR: green"&gt;// 30 Seconds&lt;br /&gt;
&lt;/span&gt;dispatchTimer.Tick +=&lt;span style="COLOR: blue"&gt;new&lt;/span&gt; &lt;span style="COLOR: #2b91af"&gt;EventHandler&lt;/span&gt;(dispatchTimer_Tick);&lt;br /&gt;
dispatchTimer.Start();&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Arial&amp;quot;, &amp;quot;sans-serif&amp;quot;; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;span style="COLOR: black"&gt;What we now need is for new headings to be added to the display each time the interval fires and for this we define a handler for the Tick event&lt;/span&gt;&lt;span style="COLOR: blue"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 7.5pt 0cm" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Arial&amp;quot;, &amp;quot;sans-serif&amp;quot;; COLOR: black; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;Adding is the same as the section above, but there are a number of additional activities that must be dealt with when adding more than the first entry. First we need to know how much space is taken up by the new heading. Once we have added the text to it silverlight provides the height taken up by it from the ‘ActualHeight’ property.&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Arial&amp;quot;, &amp;quot;sans-serif&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 7.5pt 0cm" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: black; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;UsedHeight += tb.ActualHeight;&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt; &lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: green; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;// increment the area that has been filled up till now&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 7.5pt 0cm" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Arial&amp;quot;, &amp;quot;sans-serif&amp;quot;; COLOR: black; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;Next we check to see if in adding the entry the display area needs to scroll and to do this we compare our ‘UsedHeight’ with the actual height of the StackPanel&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Arial&amp;quot;, &amp;quot;sans-serif&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 7.5pt 0cm" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;if &lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: black; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;(UsedHeight &amp;gt; sp.ActualHeight)&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 7.5pt 0cm" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 7.5pt 0cm" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 7.5pt 0cm" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Arial&amp;quot;, &amp;quot;sans-serif&amp;quot;; COLOR: black; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;Now if it has scrolled, certain items will have vanished off the top of the region. So the application loops through each entry to see if it any part of the entry has gone over the top and then removes it.&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Arial&amp;quot;, &amp;quot;sans-serif&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 7.5pt 0cm" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;for&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: black; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt; (i = 0; i &amp;lt; sp.Children.Count; i++)&lt;br /&gt;
{&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: #2b91af; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;TextBlock&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: black; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt; tbVisible = sp.Children[i] &lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;as&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: black; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt; &lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: #2b91af; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;TextBlock&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: black; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;;&lt;br /&gt;
ItemHeight += tbVisible.ActualHeight;&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;if&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: black; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt; ((ItemHeight &amp;lt;= UsedHeight - sp.ActualHeight) || ((ItemHeight - tbVisible.ActualHeight)) &amp;lt; (UsedHeight - sp.ActualHeight))&lt;br /&gt;
{&lt;br /&gt;
UsedHeight -= tbVisible.ActualHeight; &lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: green; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;// remove from the used height, the space taken by the item&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: black; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;sp.Children.RemoveAt(i); &lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: green; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;// now remove the item from the stackpanel&lt;br /&gt;
&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Courier New&amp;quot;; COLOR: black; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;}&lt;br /&gt;
}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 7.5pt 0cm" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Arial&amp;quot;, &amp;quot;sans-serif&amp;quot;; COLOR: black; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;We also remove the space used by the entry from our used space counter.&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Arial&amp;quot;, &amp;quot;sans-serif&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style="LINE-HEIGHT: normal; MARGIN: 7.5pt 0cm" class="MsoNormal"&gt;&lt;span style="FONT-FAMILY: &amp;quot;Arial&amp;quot;, &amp;quot;sans-serif&amp;quot;; COLOR: black; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;And that is how to create a scrollable region. I’ll be doing the actual collection of news items later and will likely post how that works at that point.&lt;/span&gt;&lt;span style="FONT-FAMILY: &amp;quot;Arial&amp;quot;, &amp;quot;sans-serif&amp;quot;; COLOR: blue; FONT-SIZE: 10pt; mso-fareast-font-family: 'Times New Roman'; mso-fareast-language: EN-GB"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;
&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=130558"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=130558" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/paulschapman/aggbug/130558.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>paulschapman</dc:creator>
            <guid>http://geekswithblogs.net/paulschapman/archive/2009/03/31/implementing-a-silverlight-based-lsquoverticalrsquo-tickertape.aspx</guid>
            <pubDate>Wed, 01 Apr 2009 03:58:05 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/paulschapman/comments/130558.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/paulschapman/archive/2009/03/31/implementing-a-silverlight-based-lsquoverticalrsquo-tickertape.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/paulschapman/comments/commentRss/130558.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/paulschapman/services/trackbacks/130558.aspx</trackback:ping>
        </item>
        <item>
            <title>Implementing a News Aggregator in Silverlight and VB.Net #2 Accessing our database from VB.Net</title>
            <link>http://geekswithblogs.net/paulschapman/archive/2008/09/04/implementing-a-news-aggregator-in-silverlight-and-vb.net-2-accessing.aspx</link>
            <description>&lt;p&gt;In the years since the .Net runtime was first released I've seen a number of ways of accessing a SQL database from within VB.Net (or C#). One person I worked with had a nifty utility which would take any database and generate all the code to access it. It has been on my list of jobs to do to implement my own such tool but like other jobs, such as winning the National Lottery or winning a high stakes poker game I have never got around to it. OK the poker game is something my wife will have to do - she is better at poker than me.&lt;/p&gt;
&lt;p&gt;What I do have is a class which encapsulates the functions I need to execute stored procedures on the database. All my database access is executed by inheriting from the following class;&lt;/p&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; LINE-HEIGHT: 115%; FONT-FAMILY: " new="; mso-no-proof: yes" courier=""&gt;&lt;font face="Courier New"&gt;Imports&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: " new="; mso-no-proof: yes" courier=""&gt;&lt;font face="Courier New"&gt; Microsoft.VisualBasic &lt;br /&gt;
&lt;span style="COLOR: blue"&gt;Imports&lt;/span&gt; System.Data &lt;br /&gt;
&lt;span style="COLOR: blue"&gt;Imports&lt;/span&gt; System.Data.SqlClient &lt;br /&gt;
&lt;br /&gt;
&lt;span style="COLOR: blue"&gt;Imports&lt;/span&gt; System &lt;br /&gt;
&lt;span style="COLOR: blue"&gt;Imports&lt;/span&gt; System.Xml &lt;br /&gt;
&lt;span style="COLOR: blue"&gt;Imports&lt;/span&gt; System.Xml.Linq &lt;br /&gt;
&lt;br /&gt;
&lt;span style="COLOR: blue"&gt;Public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;MustInherit&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Class&lt;/span&gt; DataEngine &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Protected&lt;/span&gt; _Connection &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; SqlConnection &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Protected&lt;/span&gt; _Command &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; SqlCommand &lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Sub&lt;/span&gt; &lt;span style="COLOR: blue"&gt;New&lt;/span&gt;() &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;_Connection = &lt;span style="COLOR: blue"&gt;New&lt;/span&gt; SqlConnection() &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;_Command = &lt;span style="COLOR: blue"&gt;New&lt;/span&gt; SqlCommand() &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;Sub &lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Sub&lt;/span&gt; &lt;span style="COLOR: blue"&gt;New&lt;/span&gt;(&lt;span style="COLOR: blue"&gt;ByVal&lt;/span&gt; ConnectionString &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;span style="COLOR: blue"&gt;String&lt;/span&gt;) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;_Connection = &lt;span style="COLOR: blue"&gt;New&lt;/span&gt; SqlConnection(ConnectionString) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;_Command = &lt;span style="COLOR: blue"&gt;New&lt;/span&gt; SqlCommand() &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;Sub &lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Protected&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Property&lt;/span&gt; ConnectionString &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;String &lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;Get &lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Return&lt;/span&gt; _Connection.ConnectionString &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;Get &lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Set&lt;/span&gt;(&lt;span style="COLOR: blue"&gt;ByVal&lt;/span&gt; value &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;span style="COLOR: blue"&gt;String&lt;/span&gt;) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;_Connection.ConnectionString = value&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;Set &lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;Property &lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Protected&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Function&lt;/span&gt; ExecuteStoredProcedure(ProcedureName &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;span style="COLOR: blue"&gt;String&lt;/span&gt;, Table &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;span style="COLOR: blue"&gt;String&lt;/span&gt;) &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; DataTable &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Dim&lt;/span&gt; _DataTable&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="COLOR: blue"&gt;As&lt;/span&gt; DataTable &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Dim&lt;/span&gt; _DataAdapter&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;As&lt;/span&gt; SqlDataAdapter &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Dim&lt;/span&gt; _DataSet&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;As&lt;/span&gt; DataSet = &lt;span style="COLOR: blue"&gt;New&lt;/span&gt; DataSet() &lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;Try &lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;If&lt;/span&gt; _Connection.State = ConnectionState.Closed &lt;span style="COLOR: blue"&gt;Then&lt;/span&gt; &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;_Connection.Open() &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;If &lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;With&lt;/span&gt; _Command &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;.CommandText = ProcedureName &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;.CommandType = CommandType.StoredProcedure &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;.Connection = _Connection &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;With &lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;_DataAdapter = &lt;span style="COLOR: blue"&gt;New&lt;/span&gt; SqlDataAdapter(_Command) &lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;_DataAdapter.Fill(_DataSet,Table) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;_DataTable = _DataSet.Tables(Table) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Catch&lt;/span&gt; ex &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; Exception &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Throw&lt;/span&gt; ex &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;Try &lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Return&lt;/span&gt; _DataTable &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;Function &lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Protected&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Sub&lt;/span&gt; ExecuteStoredProcedure(ProcedureName &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;span style="COLOR: blue"&gt;String&lt;/span&gt;) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;Try &lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;If&lt;/span&gt; _Connection.State = ConnectionState.Closed &lt;span style="COLOR: blue"&gt;Then&lt;/span&gt; &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;_Connection.Open() &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;If &lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;With&lt;/span&gt; _Command &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;.CommandText = ProcedureName &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;.CommandType = CommandType.StoredProcedure &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;.Connection = _Connection&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;.ExecuteNonQuery() &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;span style="COLOR: blue"&gt;With&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Catch&lt;/span&gt; ex &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; Exception &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Throw&lt;/span&gt; ex &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;Try &lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Sub&lt;/span&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt; &lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Protected&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Property&lt;/span&gt; Command &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; SqlCommand &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;Get &lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Return&lt;/span&gt; _Command &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;Get &lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Set&lt;/span&gt;(&lt;span style="COLOR: blue"&gt;ByVal&lt;/span&gt; value &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; SqlCommand) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;_Command = value &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;Set &lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;Property &lt;br /&gt;
&lt;br /&gt;
End&lt;/span&gt; &lt;/font&gt;&lt;span style="COLOR: blue"&gt;&lt;font face="Courier New"&gt;Class &lt;br /&gt;
&lt;/font&gt;&lt;/span&gt;&lt;/span&gt;&lt;br style="mso-special-character: line-break" /&gt;
First thing to notice about this class is that it is marked MustInherit you cannot directly create an instance of this class. What you do is create a class which inherits from this class. In this way the common tasks required; which summarised is open a connection to the database and execute stored procedures. There are two types essentially; a stored procedure which returns a table, and one that does not.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;The class has two constructors. One that creates the basic database access objects; the connection and the command, and another which allows us to pass a connection string.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Next is a property which exposes the connection string to any child of this class. This is the other means for setting the connection string, although to be honest as a general rule I prefer to do that at the when an instance is created. &lt;/p&gt;
&lt;p class="MsoNormal"&gt;The next two procedures take advantage of overloading, allowing us to pass an optional table name for the results. &lt;/p&gt;
&lt;p class="MsoNormal"&gt;Finally the last property allows access to the command object.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;We can use this class to access the database created earlier with the following class;&lt;/p&gt;
&lt;p class="MsoNormal" style="MARGIN: 0cm 0cm 10pt"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; LINE-HEIGHT: 115%; FONT-FAMILY: " new="; mso-no-proof: yes" courier=""&gt;&lt;font face="Courier New"&gt;Imports&lt;/font&gt;&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: " new="; mso-no-proof: yes" courier=""&gt;&lt;font face="Courier New"&gt; Microsoft.VisualBasic &lt;br /&gt;
&lt;span style="COLOR: blue"&gt;Imports&lt;/span&gt; System.Data &lt;br /&gt;
&lt;span style="COLOR: blue"&gt;Imports&lt;/span&gt; System.Data.SqlClient &lt;br /&gt;
&lt;span style="COLOR: blue"&gt;Imports&lt;/span&gt; System.Configuration.ConfigurationManager &lt;br /&gt;
&lt;br /&gt;
&lt;span style="COLOR: blue"&gt;Public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Class&lt;/span&gt; SimplicitaDatabase &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Inherits&lt;/span&gt; DataEngine &lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Sub&lt;/span&gt; &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;New &lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;ConnectionString = ConnectionStrings(&lt;span style="COLOR: #a31515"&gt;"SimplicitaDB"&lt;/span&gt;).ConnectionString &lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;Sub &lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Function&lt;/span&gt; Register(Name &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;span style="COLOR: blue"&gt;String&lt;/span&gt;,Address1 &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;span style="COLOR: blue"&gt;String&lt;/span&gt;, Address2 &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;span style="COLOR: blue"&gt;String&lt;/span&gt;, Town &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;span style="COLOR: blue"&gt;String&lt;/span&gt;, County &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;span style="COLOR: blue"&gt;String&lt;/span&gt;, Postcode &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;span style="COLOR: blue"&gt;String&lt;/span&gt;, Tel &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;span style="COLOR: blue"&gt;String&lt;/span&gt;,Fax &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;span style="COLOR: blue"&gt;String&lt;/span&gt;, Email &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;span style="COLOR: blue"&gt;String&lt;/span&gt;, WebAddress &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;span style="COLOR: blue"&gt;String&lt;/span&gt;,Password &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;span style="COLOR: blue"&gt;String&lt;/span&gt;) &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; DataTable &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Dim&lt;/span&gt; dt &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; DataTable = &lt;span style="COLOR: blue"&gt;New&lt;/span&gt; DataTable() &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Dim&lt;/span&gt; SqlParamName&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;As&lt;/span&gt; SqlParameter = &lt;span style="COLOR: blue"&gt;New&lt;/span&gt; SqlParameter(&lt;span style="COLOR: #a31515"&gt;"Name"&lt;/span&gt;,SqlDbType.VarChar) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Dim&lt;/span&gt; SqlParamAddress1&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;As&lt;/span&gt; SqlParameter = &lt;span style="COLOR: blue"&gt;New&lt;/span&gt; SqlParameter(&lt;span style="COLOR: #a31515"&gt;"Address1"&lt;/span&gt;,SqlDbType.VarChar) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Dim&lt;/span&gt; SqlParamAddress2&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;As&lt;/span&gt; SqlParameter = &lt;span style="COLOR: blue"&gt;New&lt;/span&gt; SqlParameter(&lt;span style="COLOR: #a31515"&gt;"Address2"&lt;/span&gt;,SqlDbType.VarChar) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Dim&lt;/span&gt; SqlParamTown&lt;span style="mso-spacerun: yes"&gt;       &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt; &lt;/span&gt;&lt;span style="COLOR: blue"&gt;As&lt;/span&gt; SqlParameter = &lt;span style="COLOR: blue"&gt;New&lt;/span&gt; SqlParameter(&lt;span style="COLOR: #a31515"&gt;"Town"&lt;/span&gt;,SqlDbType.VarChar) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Dim&lt;/span&gt; SqlParamCounty&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="COLOR: blue"&gt;As&lt;/span&gt; SqlParameter = &lt;span style="COLOR: blue"&gt;New&lt;/span&gt; SqlParameter(&lt;span style="COLOR: #a31515"&gt;"County"&lt;/span&gt;,SqlDbType.VarChar) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Dim&lt;/span&gt; SqlParamPostcode&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;As&lt;/span&gt; SqlParameter = &lt;span style="COLOR: blue"&gt;New&lt;/span&gt; SqlParameter(&lt;span style="COLOR: #a31515"&gt;"Postcode"&lt;/span&gt;,SqlDbType.VarChar) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Dim&lt;/span&gt; SqlParamTel&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="COLOR: blue"&gt;As&lt;/span&gt; SqlParameter = &lt;span style="COLOR: blue"&gt;New&lt;/span&gt; SqlParameter(&lt;span style="COLOR: #a31515"&gt;"Telephone"&lt;/span&gt;,SqlDbType.VarChar) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Dim&lt;/span&gt; SqlParamFax&lt;span style="mso-spacerun: yes"&gt;         &lt;/span&gt;&lt;span style="COLOR: blue"&gt;As&lt;/span&gt; SqlParameter = &lt;span style="COLOR: blue"&gt;New&lt;/span&gt; SqlParameter(&lt;span style="COLOR: #a31515"&gt;"Fax"&lt;/span&gt;,SqlDbType.VarChar) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Dim&lt;/span&gt; SqlParamEmail&lt;span style="mso-spacerun: yes"&gt;       &lt;/span&gt;&lt;span style="COLOR: blue"&gt;As&lt;/span&gt; SqlParameter = &lt;span style="COLOR: blue"&gt;New&lt;/span&gt; SqlParameter(&lt;span style="COLOR: #a31515"&gt;"Email"&lt;/span&gt;,SqlDbType.VarChar) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Dim&lt;/span&gt; SqlParamWebAddr&lt;span style="mso-spacerun: yes"&gt;     &lt;/span&gt;&lt;span style="COLOR: blue"&gt;As&lt;/span&gt; SqlParameter = &lt;span style="COLOR: blue"&gt;New&lt;/span&gt; SqlParameter(&lt;span style="COLOR: #a31515"&gt;"WebAddress"&lt;/span&gt;,SqlDbType.VarChar) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Dim&lt;/span&gt; SqlParamPassword&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;As&lt;/span&gt; SqlParameter = &lt;span style="COLOR: blue"&gt;New&lt;/span&gt; SqlParameter(&lt;span style="COLOR: #a31515"&gt;"Password"&lt;/span&gt;,SqlDbType.VarChar) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;Try &lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;          &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;SqlParamName.Value&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;= Name &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;SqlParamAddress1.Value&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;= Address1 &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;SqlParamAddress2.Value&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;= Address2 &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;SqlParamTown.Value&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;= Town &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;SqlParamCounty.Value&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;= County &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;SqlParamPostcode.Value&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;= Postcode &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;SqlParamTel.Value&lt;span style="mso-spacerun: yes"&gt;       &lt;/span&gt;= Tel &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;SqlParamFax.Value&lt;span style="mso-spacerun: yes"&gt;       &lt;/span&gt;= Fax &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;SqlParamEmail.Value&lt;span style="mso-spacerun: yes"&gt;     &lt;/span&gt;= Email &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;SqlParamWebAddr.Value&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;= WebAddress &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;SqlParamPassword.Value&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;= Password &lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;With&lt;/span&gt; Command.Parameters &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;.Clear() &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;.Add(SqlParamName) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;.Add(SqlParamAddress1) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;.Add(SqlParamAddress2) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;.Add(SqlParamTown) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;.Add(SqlParamCounty) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;.Add(SqlParamPostcode) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;.Add(SqlParamTel) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;.Add(SqlParamFax) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;.Add(SqlParamEmail) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;.Add(SqlParamWebAddr) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;                &lt;/span&gt;.Add(SqlParamPassword) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;With &lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;dt = ExecuteStoredProcedure(&lt;span style="COLOR: #a31515"&gt;"RegisteredUser.Register"&lt;/span&gt;,&lt;span style="COLOR: #a31515"&gt;"Result"&lt;/span&gt;) &lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Catch&lt;/span&gt; ex &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; Exception &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Throw&lt;/span&gt; &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;Try &lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Return&lt;/span&gt; dt &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;Function &lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Function&lt;/span&gt; RetrieveNewsfeeds &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; DataTable &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Dim&lt;/span&gt; dt &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; DataTable = &lt;span style="COLOR: blue"&gt;New&lt;/span&gt; DataTable &lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;With&lt;/span&gt; Command.Parameters &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;.Clear() &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;With &lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;dt = ExecuteStoredProcedure(&lt;span style="COLOR: #a31515"&gt;"NewsAggregator.RetrieveNewsFeeds"&lt;/span&gt;,&lt;span style="COLOR: #a31515"&gt;"NewsFeeds"&lt;/span&gt;) &lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Return&lt;/span&gt; dt &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;Function &lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Function&lt;/span&gt; RetrieveLatestStories &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; DataTable &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Dim&lt;/span&gt; dt &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; DataTable &lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;With&lt;/span&gt; Command.Parameters &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;.Clear() &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;With &lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;dt = ExecuteStoredProcedure(&lt;span style="COLOR: #a31515"&gt;"NewsAggregator.RetrieveLatestStories"&lt;/span&gt;,&lt;span style="COLOR: #a31515"&gt;"NewsStories"&lt;/span&gt;) &lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Return&lt;/span&gt; dt &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;Function &lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Public&lt;/span&gt; &lt;span style="COLOR: blue"&gt;Sub&lt;/span&gt; WriteNewsStory ( Title &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;span style="COLOR: blue"&gt;String&lt;/span&gt;, Link &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;span style="COLOR: blue"&gt;String&lt;/span&gt;, Desc &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;span style="COLOR: blue"&gt;String&lt;/span&gt;, Supplier &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; &lt;span style="COLOR: blue"&gt;String&lt;/span&gt;) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Dim&lt;/span&gt; SqlParamTitle&lt;span style="mso-spacerun: yes"&gt;       &lt;/span&gt;&lt;span style="COLOR: blue"&gt;As&lt;/span&gt; SqlParameter = &lt;span style="COLOR: blue"&gt;New&lt;/span&gt; SqlParameter(&lt;span style="COLOR: #a31515"&gt;"Title"&lt;/span&gt;,SqlDbType.VarChar) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Dim&lt;/span&gt; SqlParamLink&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;As&lt;/span&gt; SqlParameter = &lt;span style="COLOR: blue"&gt;New&lt;/span&gt; SqlParameter(&lt;span style="COLOR: #a31515"&gt;"Link"&lt;/span&gt;,SqlDbType.VarChar) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Dim&lt;/span&gt; SqlParamDesc&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;As&lt;/span&gt; SqlParameter = &lt;span style="COLOR: blue"&gt;New&lt;/span&gt; SqlParameter(&lt;span style="COLOR: #a31515"&gt;"Desc"&lt;/span&gt;,SqlDbType.VarChar) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Dim&lt;/span&gt; SqlParamSupplier&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;As&lt;/span&gt; SqlParameter = &lt;span style="COLOR: blue"&gt;New&lt;/span&gt; SqlParameter(&lt;span style="COLOR: #a31515"&gt;"Supplier"&lt;/span&gt;,SqlDbType.VarChar) &lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;SqlParamTitle.Value&lt;span style="mso-spacerun: yes"&gt;     &lt;/span&gt;= Title &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;     &lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;   &lt;/span&gt;SqlParamLink.Value&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;= Link &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;SqlParamDesc.Value&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;= Desc &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;SqlParamSupplier.Value&lt;span style="mso-spacerun: yes"&gt;  &lt;/span&gt;= Supplier &lt;br /&gt;
&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;With&lt;/span&gt; Command.Parameters &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;.Clear() &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;.Add(SqlParamTitle) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;.Add(SqlParamLink) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;.Add(SqlParamDesc) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;.Add(SqlParamSupplier) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;            &lt;/span&gt;&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;With &lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;ExecuteStoredProcedure(&lt;span style="COLOR: #a31515"&gt;"NewsAggregator.WriteNewsStory"&lt;/span&gt;) &lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;        &lt;/span&gt;&lt;br /&gt;
&lt;span style="mso-spacerun: yes"&gt;    &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;/font&gt;&lt;font face="Courier New"&gt;&lt;span style="COLOR: blue"&gt;Sub &lt;br /&gt;
End&lt;/span&gt; &lt;/font&gt;&lt;span style="COLOR: blue"&gt;&lt;font face="Courier New"&gt;Class &lt;/font&gt;&lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br style="mso-special-character: line-break" /&gt;
And that is the code for accessing the database created in part one. &lt;br style="mso-special-character: line-break" /&gt;
&lt;/p&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=124945"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=124945" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/paulschapman/aggbug/124945.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>paulschapman</dc:creator>
            <guid>http://geekswithblogs.net/paulschapman/archive/2008/09/04/implementing-a-news-aggregator-in-silverlight-and-vb.net-2-accessing.aspx</guid>
            <pubDate>Fri, 05 Sep 2008 03:57:15 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/paulschapman/comments/124945.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/paulschapman/archive/2008/09/04/implementing-a-news-aggregator-in-silverlight-and-vb.net-2-accessing.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/paulschapman/comments/commentRss/124945.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/paulschapman/services/trackbacks/124945.aspx</trackback:ping>
        </item>
        <item>
            <title>Implementing a News Aggregator in Silverlight and VB.Net #1 - Creating SQL Database to store the news details</title>
            <link>http://geekswithblogs.net/paulschapman/archive/2008/09/03/implementing-a-news-aggregator-in-silverlight-and-vb.net-1.aspx</link>
            <description>&lt;p&gt;&lt;font color="#333333"&gt;For one of my projects I need to have Business News headlines displayed on the front page, to give me greater control as to which headlines and from which feeds I use I'm going to have the aggregator call each feed and store the article details in a SQL database.&lt;/font&gt;&lt;/p&gt;
&lt;h3&gt;&lt;font color="#333333"&gt;Schemas&lt;/font&gt;&lt;/h3&gt;
&lt;p&gt;&lt;font color="#333333"&gt;I'm going to use schemas in designing my database. The use of these changed in SQL 2005 so that each one is a distinct namespace, independent of the user who created it. This will allow me to group related tables together, but it also allows you to use the same table name for different items. For example in an accounts system you have Sales accounts and Purchase accounts. You could of course create one table called SalesAccount and another called PurchaseAccount. With schemas we create ourselves two schemas one called SalesLedger and one called PurchaseLedger. Each schema has a table called 'Accounts'.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#333333"&gt;So first task is to create the schema that will hold our News. The following line of T/SQL will create our Namespace;&lt;/font&gt;&lt;/p&gt;
&lt;font color="#0000ff"&gt;
&lt;p&gt;&lt;font face="Courier New" size="2"&gt;CREATE &lt;/font&gt;&lt;font face="Courier New" size="2"&gt;&lt;font color="#0000ff"&gt;SCHEMA&lt;/font&gt; [NewsAggregator] &lt;font color="#0000ff"&gt;AUTHORIZATION&lt;/font&gt; [dbo] &lt;br /&gt;
GO&lt;/font&gt;&lt;/p&gt;
&lt;h3&gt;&lt;font color="#333333"&gt;Creating our tables&lt;/font&gt;&lt;/h3&gt;
&lt;p&gt;&lt;font color="#333333"&gt;Now we have our schema the next thing is the tables that will store the feeds we are going to read, and the news headlines. Not a lot special in these ones to be honest. We need two tables; one to store the feeds that we will be aggregating and the second to store the headlines. The following T/SQL will create these tables;&lt;/font&gt;&lt;/p&gt;
&lt;font color="#0000ff"&gt;&lt;font face="Courier New" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;p&gt;CREATE TABLE&lt;font size="2"&gt; [NewsAggregator]&lt;/font&gt;&lt;font color="#808080" size="2"&gt;.&lt;/font&gt;&lt;font size="2"&gt;[NewsStories]&lt;/font&gt;&lt;font color="#808080" size="2"&gt;( &lt;br /&gt;
&lt;/font&gt;&lt;font size="2"&gt;                  [Id] [bigint] &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;IDENTITY&lt;/font&gt;&lt;font color="#808080" size="2"&gt;(&lt;/font&gt;&lt;font size="2"&gt;1&lt;/font&gt;&lt;font color="#808080" size="2"&gt;,&lt;/font&gt;&lt;font size="2"&gt;1&lt;/font&gt;&lt;font color="#808080" size="2"&gt;)&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#808080" size="2"&gt;NOT&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#808080" size="2"&gt;NULL, &lt;br /&gt;
&lt;/font&gt;&lt;font size="2"&gt;                  [Title] [varchar]&lt;/font&gt;&lt;font color="#808080" size="2"&gt;(&lt;/font&gt;&lt;font size="2"&gt;127&lt;/font&gt;&lt;font color="#808080" size="2"&gt;)&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#808080" size="2"&gt;NOT&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#808080" size="2"&gt;NULL, &lt;br /&gt;
&lt;/font&gt;&lt;font size="2"&gt;                  [Link] [varchar]&lt;/font&gt;&lt;font color="#808080" size="2"&gt;(&lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt;max&lt;/font&gt;&lt;font color="#808080" size="2"&gt;)&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#808080" size="2"&gt;NOT&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#808080" size="2"&gt;NULL, &lt;br /&gt;
&lt;/font&gt;&lt;font size="2"&gt;                  [Desc] [varchar]&lt;/font&gt;&lt;font color="#808080" size="2"&gt;(&lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt;max&lt;/font&gt;&lt;font color="#808080" size="2"&gt;)&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#808080" size="2"&gt;NULL, &lt;br /&gt;
&lt;/font&gt;&lt;font size="2"&gt;                  [Supplier] [varchar]&lt;/font&gt;&lt;font color="#808080" size="2"&gt;(&lt;/font&gt;&lt;font size="2"&gt;20&lt;/font&gt;&lt;font color="#808080" size="2"&gt;)&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#808080" size="2"&gt;NOT&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#808080" size="2"&gt;NULL, &lt;br /&gt;
&lt;/font&gt;&lt;font size="2"&gt;                  [DateAdded] [datetime] &lt;/font&gt;&lt;font color="#808080" size="2"&gt;NOT&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#808080" size="2"&gt;NULL&lt;/font&gt;&lt;font size="2"&gt; &lt;br /&gt;
                       &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;CONSTRAINT&lt;/font&gt;&lt;font size="2"&gt; [DF_NewsStories_DateAdded] &lt;br /&gt;
                       &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;DEFAULT&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#808080" size="2"&gt;(&lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt;getdate&lt;/font&gt;&lt;font color="#808080" size="2"&gt;()) &lt;br /&gt;
             )&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;ON&lt;/font&gt;&lt;font size="2"&gt; [PRIMARY]&lt;/font&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;
&lt;font size="2"&gt;&lt;font color="#0000ff"&gt;&lt;font face="Courier New" size="2"&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;p&gt;CREATE &lt;font color="#0000ff" size="2"&gt;TABLE&lt;/font&gt;&lt;font size="2"&gt; [NewsAggregator]&lt;/font&gt;&lt;font color="#808080" size="2"&gt;.&lt;/font&gt;&lt;font size="2"&gt;[NewsFeeds]&lt;/font&gt;&lt;font color="#808080" size="2"&gt;( &lt;br /&gt;
&lt;/font&gt;&lt;font size="2"&gt;                  [Id] [bigint] &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;IDENTITY&lt;/font&gt;&lt;font color="#808080" size="2"&gt;(&lt;/font&gt;&lt;font size="2"&gt;1&lt;/font&gt;&lt;font color="#808080" size="2"&gt;,&lt;/font&gt;&lt;font size="2"&gt;1&lt;/font&gt;&lt;font color="#808080" size="2"&gt;)&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#808080" size="2"&gt;NOT&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#808080" size="2"&gt;NULL, &lt;br /&gt;
&lt;/font&gt;&lt;font size="2"&gt;                  [Link] [varchar]&lt;/font&gt;&lt;font color="#808080" size="2"&gt;(&lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt;max&lt;/font&gt;&lt;font color="#808080" size="2"&gt;)&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#808080" size="2"&gt;NOT&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#808080" size="2"&gt;NULL, &lt;br /&gt;
&lt;/font&gt;&lt;font size="2"&gt;                  [Supplier] [varchar]&lt;/font&gt;&lt;font color="#808080" size="2"&gt;(&lt;/font&gt;&lt;font size="2"&gt;30&lt;/font&gt;&lt;font color="#808080" size="2"&gt;)&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#808080" size="2"&gt;NOT&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#808080" size="2"&gt;NULL, &lt;br /&gt;
&lt;/font&gt;&lt;font size="2"&gt;                  [Weight] [smallint] &lt;/font&gt;&lt;font color="#808080" size="2"&gt;NULL &lt;br /&gt;
             )&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;ON&lt;/font&gt;&lt;font size="2"&gt; [PRIMARY]&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial" color="#333333" size="2"&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;&lt;font color="#0000ff"&gt;&lt;font color="#333333" size="2"&gt;So there is our two tables. I have added a 'weight' field to the table of feeds. How this works will be clear later, however it is here to allow us to control how many articles from each feed we are displaying.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial" color="#333333" size="2"&gt;Now when developing I like to keep things separated. For this reason I like to do all my database access via Stored Procedure. The practical upshot of this is that any differences in the dialect of SQL you are using should be hidden behind the stored procedure making it a lot easier to covert the whole thing to another database.&lt;/font&gt;&lt;/p&gt;
&lt;h3&gt;&lt;font face="Arial" color="#333333" size="2"&gt;&lt;/font&gt;&lt;/h3&gt;
&lt;font size="2"&gt;
&lt;h3&gt;&lt;font face="Arial" color="#333333"&gt;Stored Procedures&lt;/font&gt;&lt;/h3&gt;
&lt;p&gt;&lt;font face="Arial" color="#333333"&gt;Our feeds are retrieved by making a call to RetrieveNewsFeeds. Taking note of the fact that I am using a schema called NewsAggregator the code to create this stored procedure is as follows;&lt;/font&gt;&lt;/p&gt;
&lt;font color="#0000ff"&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font color="#0000ff"&gt;
&lt;p&gt;&lt;font face="Courier New"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font color="#333333"&gt;&lt;font color="#0000ff"&gt;CREATE PROCEDURE&lt;font size="2"&gt; [NewsAggregator]&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080" size="2"&gt;.&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;[RetrieveNewsFeeds] &lt;br /&gt;
&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font size="2"&gt;AS &lt;br /&gt;
BEGIN &lt;br /&gt;
&lt;/font&gt;&lt;font size="2"&gt;SET&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;NOCOUNT&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font size="2"&gt;ON&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080" size="2"&gt;; &lt;br /&gt;
&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font size="2"&gt;     SELECT&lt;/font&gt;&lt;font size="2"&gt; Id&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080" size="2"&gt;,&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt; &lt;br /&gt;
            Link&lt;/font&gt;&lt;font color="#808080" size="2"&gt;,&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font size="2"&gt; &lt;br /&gt;
            Supplier &lt;br /&gt;
&lt;/font&gt;&lt;font size="2"&gt;     FROM&lt;/font&gt;&lt;font size="2"&gt;   NewsAggregator&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080" size="2"&gt;.&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font size="2"&gt;NewsFeeds &lt;br /&gt;
&lt;/font&gt;&lt;font size="2"&gt;END&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial" color="#333333"&gt;This simply returns the results of select statement. I'm not interested in the order so to speed things along no sorting is done. Next having retrieved our news feeds we need to have a means of writing the headlines to our database;&lt;/font&gt;&lt;/p&gt;
&lt;font face="Arial" color="#333333"&gt;
&lt;div&gt;
&lt;p class="MsoNormal"&gt;&lt;span style="FONT-SIZE: 10pt; COLOR: blue; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt;CREATE&lt;/span&gt;&lt;span style="FONT-SIZE: 10pt; LINE-HEIGHT: 115%; FONT-FAMILY: 'Courier New'; mso-no-proof: yes"&gt; &lt;span style="COLOR: blue"&gt;PROCEDURE&lt;/span&gt; [NewsAggregator]&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;[WriteNewsStory] &lt;br /&gt;
&lt;span style="mso-tab-count: 1"&gt;      &lt;/span&gt;@Title&lt;span style="mso-tab-count: 2"&gt;      &lt;/span&gt;&lt;span style="COLOR: blue"&gt;VarChar&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;127&lt;span style="COLOR: gray"&gt;), &lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;      &lt;/span&gt;@Link&lt;span style="mso-tab-count: 2"&gt;       &lt;/span&gt;&lt;span style="COLOR: blue"&gt;VarChar&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt;MAX&lt;/span&gt;&lt;span style="COLOR: gray"&gt;), &lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;      &lt;/span&gt;@Desc&lt;span style="mso-tab-count: 2"&gt;       &lt;/span&gt;&lt;span style="COLOR: blue"&gt;VarChar&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: fuchsia"&gt;MAX&lt;/span&gt;&lt;span style="COLOR: gray"&gt;), &lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;      &lt;/span&gt;@Supplier&lt;span style="mso-tab-count: 1"&gt;   &lt;/span&gt;&lt;span style="COLOR: blue"&gt;VarChar&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;20&lt;span style="COLOR: gray"&gt;) &lt;br /&gt;
&lt;/span&gt;&lt;span style="COLOR: blue"&gt;AS &lt;br /&gt;
BEGIN &lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;      &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Declare&lt;/span&gt; @StoryCount &lt;span style="COLOR: blue"&gt;BigInt &lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;      &lt;/span&gt;&lt;span style="COLOR: blue"&gt;SET&lt;/span&gt; &lt;span style="COLOR: blue"&gt;NOCOUNT&lt;/span&gt; &lt;span style="COLOR: blue"&gt;ON&lt;/span&gt;&lt;span style="COLOR: gray"&gt;; &lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;      &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Set&lt;/span&gt; @StoryCount &lt;span style="COLOR: gray"&gt;=&lt;/span&gt; &lt;span style="COLOR: gray"&gt;(&lt;/span&gt;&lt;span style="COLOR: blue"&gt;Select&lt;/span&gt; &lt;span style="COLOR: fuchsia"&gt;Count&lt;/span&gt;&lt;span style="COLOR: gray"&gt;(*)&lt;/span&gt; &lt;span style="COLOR: blue"&gt;As&lt;/span&gt; Counter &lt;span style="COLOR: blue"&gt;From&lt;/span&gt; NewsAggregator&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;NewsStories &lt;br /&gt;
&lt;span style="mso-tab-count: 6"&gt;                         &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Where&lt;/span&gt; Link &lt;span style="COLOR: gray"&gt;=&lt;/span&gt; @Link&lt;span style="COLOR: gray"&gt;) &lt;br /&gt;
&lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;      &lt;/span&gt;&lt;span style="COLOR: blue"&gt;If&lt;/span&gt; @StoryCount &lt;span style="COLOR: gray"&gt;=&lt;/span&gt; 0 &lt;br /&gt;
&lt;span style="mso-tab-count: 1"&gt;      &lt;/span&gt;&lt;span style="COLOR: blue"&gt;Begin &lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-tab-count: 2"&gt;            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;INSERT&lt;/span&gt; &lt;span style="COLOR: blue"&gt;INTO&lt;/span&gt; NewsAggregator&lt;span style="COLOR: gray"&gt;.&lt;/span&gt;NewsStories &lt;br /&gt;
&lt;span style="mso-tab-count: 4"&gt;                        &lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;Title&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; Link&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; [Desc]&lt;span style="COLOR: gray"&gt;,&lt;/span&gt; Supplier&lt;span style="COLOR: gray"&gt;) &lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-tab-count: 2"&gt;            &lt;/span&gt;&lt;span style="COLOR: blue"&gt;VALUES&lt;/span&gt;&lt;span style="mso-spacerun: yes"&gt;      &lt;/span&gt;&lt;span style="COLOR: gray"&gt;(&lt;/span&gt;@Title&lt;span style="COLOR: gray"&gt;,&lt;/span&gt;@Link&lt;span style="COLOR: gray"&gt;,&lt;/span&gt;@Desc&lt;span style="COLOR: gray"&gt;,&lt;/span&gt;@Supplier&lt;span style="COLOR: gray"&gt;) &lt;br /&gt;
&lt;/span&gt;&lt;span style="mso-tab-count: 1"&gt;      &lt;/span&gt;&lt;span style="COLOR: blue"&gt;End&lt;/span&gt; &lt;br /&gt;
&lt;span style="COLOR: blue"&gt;END &lt;br /&gt;
&lt;/span&gt;&lt;/span&gt;&lt;br style="mso-special-character: line-break" /&gt;
This is fairly simple as a stored procedure. We first look for the story link in the database to see if it has been read before. If not then the story gets added to the database.&lt;/p&gt;
&lt;p class="MsoNormal"&gt;Now we have our feed suppliers, and we can write the stories to our database. The final stored procedure is to recover the files from the database.&lt;/p&gt;
&lt;/div&gt;
&lt;/font&gt;&lt;font face="Arial" color="#333333"&gt;&lt;font color="#0000ff" size="2"&gt;
&lt;p&gt;&lt;font face="Arial" color="#333333"&gt;First off the procedure opens up a cursor to access the list of feed suppliers. Normally I would not use a cursor which are notoriously slow in SQL Server but it does provide a simple mechanism for progressing through a table. &lt;/font&gt;&lt;/p&gt;
&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font size="2"&gt;CREATE PROCEDURE [NewsAggregator]&lt;/font&gt;&lt;font color="#808080" size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt;[RetrieveLatestStories] &lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font face="Courier New"&gt;AS &lt;br /&gt;
&lt;/font&gt;&lt;font face="Courier New"&gt;BEGIN &lt;br /&gt;
     &lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff" size="2"&gt;Declare&lt;/font&gt;&lt;font size="2"&gt; @Supplier &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;VarChar&lt;/font&gt;&lt;font color="#808080" size="2"&gt;(&lt;/font&gt;&lt;font size="2"&gt;30&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font face="Courier New"&gt;) &lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff" size="2"&gt;     Declare&lt;/font&gt;&lt;font size="2"&gt; @Weight &lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font face="Courier New"&gt;SmallInt &lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff" size="2"&gt;     Declare&lt;/font&gt;&lt;font size="2"&gt; @Result &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;As&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font face="Courier New"&gt;Table &lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font face="Courier New"&gt;     ( &lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size="2"&gt;          Title &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;VarChar&lt;/font&gt;&lt;font color="#808080" size="2"&gt;(&lt;/font&gt;&lt;font size="2"&gt;127&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font face="Courier New"&gt;), &lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size="2"&gt;          Link &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;VarChar&lt;/font&gt;&lt;font color="#808080" size="2"&gt;(&lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt;Max&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font face="Courier New"&gt;), &lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font size="2"&gt;          [Desc] &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;VarChar&lt;/font&gt;&lt;font color="#808080" size="2"&gt;(&lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt;Max&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font face="Courier New"&gt;) &lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font face="Courier New"&gt;     )&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font face="Courier New"&gt; &lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff" size="2"&gt;     &lt;br /&gt;
     Declare&lt;/font&gt;&lt;font size="2"&gt; FeedSuppliers &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Cursor&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font face="Courier New"&gt;For &lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff" size="2"&gt;          SELECT&lt;/font&gt;&lt;font size="2"&gt; Supplier&lt;/font&gt;&lt;font color="#808080" size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt;  &lt;br /&gt;
&lt;/font&gt;&lt;font face="Courier New"&gt;                 Weight &lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff" size="2"&gt;          FROM&lt;/font&gt;&lt;font size="2"&gt;   NewsAggregator&lt;/font&gt;&lt;font color="#808080" size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt;NewsFeeds &lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&lt;br /&gt;
     Open&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt; FeedSuppliers &lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff" size="2"&gt;     Fetch&lt;/font&gt;&lt;font size="2"&gt; FeedSuppliers &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Into&lt;/font&gt;&lt;font size="2"&gt; @Supplier&lt;/font&gt;&lt;font color="#808080" size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt;@Weight &lt;br /&gt;
&lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff" size="2"&gt;     While&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#ff00ff" size="2"&gt;@@Fetch_Status&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#808080" size="2"&gt;=&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt; 0 &lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font face="Courier New"&gt;     Begin &lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff" size="2"&gt;          Insert&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Into&lt;/font&gt;&lt;font size="2"&gt; @Result &lt;/font&gt;&lt;font color="#808080" size="2"&gt;(&lt;/font&gt;&lt;font size="2"&gt;Title&lt;/font&gt;&lt;font color="#808080" size="2"&gt;,&lt;/font&gt;&lt;font size="2"&gt;Link&lt;/font&gt;&lt;font color="#808080" size="2"&gt;,&lt;/font&gt;&lt;font size="2"&gt;[Desc]&lt;/font&gt;&lt;/font&gt;&lt;font color="#808080" size="2"&gt;&lt;font face="Courier New"&gt;) &lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff" size="2"&gt;          Select&lt;/font&gt;&lt;font size="2"&gt;   &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Top&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#808080" size="2"&gt;(&lt;/font&gt;&lt;font size="2"&gt;@Weight&lt;/font&gt;&lt;font color="#808080" size="2"&gt;)&lt;/font&gt;&lt;font size="2"&gt;Title&lt;/font&gt;&lt;font color="#808080" size="2"&gt;,&lt;/font&gt;&lt;font size="2"&gt;Link&lt;/font&gt;&lt;font color="#808080" size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt;[Desc] &lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff" size="2"&gt;          From&lt;/font&gt;&lt;font size="2"&gt;     NewsAggregator&lt;/font&gt;&lt;font color="#808080" size="2"&gt;.&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt;NewsStories &lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff" size="2"&gt;          Where&lt;/font&gt;&lt;font size="2"&gt;    Supplier &lt;/font&gt;&lt;font color="#808080" size="2"&gt;=&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt; @Supplier &lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff" size="2"&gt;          Order&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;By&lt;/font&gt;&lt;font size="2"&gt; DateAdded &lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font face="Courier New"&gt;Desc &lt;br /&gt;
&lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff" size="2"&gt;          Fetch&lt;/font&gt;&lt;font size="2"&gt; FeedSuppliers &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;Into&lt;/font&gt;&lt;font size="2"&gt; @Supplier&lt;/font&gt;&lt;font color="#808080" size="2"&gt;,&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt;@Weight &lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font face="Courier New"&gt;     End &lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;&lt;br /&gt;
     Close&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt; FeedSuppliers &lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New" color="#0000ff" size="2"&gt;     Deallocate&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt; FeedSuppliers &lt;br /&gt;
&lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font face="Courier New"&gt;&lt;font color="#0000ff" size="2"&gt;     Select&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#808080" size="2"&gt;*&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;From&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt;&lt;font face="Courier New"&gt; @Result &lt;br /&gt;
&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2"&gt;&lt;font face="Courier New"&gt;END&lt;/font&gt;&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;
&lt;p&gt; &lt;/p&gt;
&lt;font face="Arial" color="#333333"&gt;While we are moving through the table of suppliers we retrieve from the list of stories the latest for each supplier based on the weight. If the weight is 1 then we retrieve 1 story, 2 and 2 stories 3, 3 stories etc. This weight places a bias in the display of stories allowing us to control the stories from each supplier.&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2"&gt; &lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff"&gt;&lt;font color="#333333" size="2"&gt;and the following will store the news headlines&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt; &lt;/font&gt;&lt;p&gt;&lt;a href="http://www.pheedo.com/click.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=124914"&gt;&lt;img src="http://www.pheedo.com/img.phdo?x=6cda6ad746d942b9a1110d0715a4fa12&amp;u=124914" border="0"/&gt;&lt;/a&gt;&lt;/p&gt;&lt;iframe src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;PageID=31016&amp;amp;SiteID=1" width=1 height=1 Marginwidth=0 Marginheight=0 Hspace=0 Vspace=0 Frameborder=0 Scrolling=No&gt;
&lt;script language='javascript1.1' src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Browser=NETSCAPE4&amp;amp;NoCache=True&amp;PageID=31016&amp;amp;SiteID=1"&gt;&lt;/script&gt;
&lt;noscript&gt;&lt;a href="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Click&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" target="_blank"&gt;
&lt;img src="http://ads.geekswithblogs.net/a.aspx?ZoneID=5&amp;amp;Task=Get&amp;amp;Mode=HTML&amp;amp;SiteID=1&amp;amp;PageID=31016" width="1" height="1" border="0"  alt=""&gt;&lt;/a&gt;
&lt;/noscript&gt;
&lt;/iframe&gt;
&lt;img src="http://geekswithblogs.net/paulschapman/aggbug/124914.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>paulschapman</dc:creator>
            <guid>http://geekswithblogs.net/paulschapman/archive/2008/09/03/implementing-a-news-aggregator-in-silverlight-and-vb.net-1.aspx</guid>
            <pubDate>Thu, 04 Sep 2008 03:48:27 GMT</pubDate>
            <wfw:comment>http://geekswithblogs.net/paulschapman/comments/124914.aspx</wfw:comment>
            <comments>http://geekswithblogs.net/paulschapman/archive/2008/09/03/implementing-a-news-aggregator-in-silverlight-and-vb.net-1.aspx#feedback</comments>
            <wfw:commentRss>http://geekswithblogs.net/paulschapman/comments/commentRss/124914.aspx</wfw:commentRss>
            <trackback:ping>http://geekswithblogs.net/paulschapman/services/trackbacks/124914.aspx</trackback:ping>
        </item>
    </channel>
</rss>