<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
  <channel xmlns:blog="http://www.dotnetnuke.com/blog/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
    <title>VB.NET</title>
    <description>Tricks and Tips on VB.NET</description>
    <link>http://devshed.us/Blogs/tabid/227/BlogId/3/Default.aspx</link>
    <language>en-US</language>
    <webMaster>steve@4penny.net</webMaster>
    <pubDate>Sat, 19 May 2012 19:06:31 GMT</pubDate>
    <lastBuildDate>Sat, 19 May 2012 19:06:31 GMT</lastBuildDate>
    <docs>http://backend.userland.com/rss</docs>
    <generator>Blog RSS Generator Version 4.0.0.0</generator>
    <item>
      <title>How to send a sale to PayPal in ASP.NET (and not have the &amp;lsquo;form&amp;rsquo; issue)</title>
      <link>http://devshed.us/Blogs/tabid/227/EntryId/1229/How-to-send-a-sale-to-PayPal-in-ASP-NET-and-not-have-the-lsquo-form-rsquo-issue.aspx</link>
      <description>&lt;p&gt;When you create a web site in ASP.NET the form tag is included for you. This issue is magnified if you use master pages (who doesn’t?).&lt;/p&gt;  &lt;p&gt;The issue is that the code that you get from PayPal has a &lt;form&gt; tag in it, and you can’t nest form tags. So your code doesn’t post correctly when the user clicks ‘Buy Now’. &lt;/p&gt;  &lt;p&gt;Here’s a real easy way around that. There are two ways you can do this, as a link from the &lt;HTML&gt; code, or as a Response.Redirect from the code behind. The link will be less work, but also less flexible.&lt;/p&gt;  &lt;p&gt;From the HTML, code something like this:&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:7fd60489-8b9b-463d-b3e7-3c4b2091644c" class="wlWriterEditableSmartContent"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #ddd; max-height: 500px; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0 0 0 2em; padding: 0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="color:#0000ff"&gt;&lt;&lt;/span&gt;&lt;span style="color:#800000"&gt;a&lt;/span&gt; &lt;span style="color:#ff0000"&gt;href&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="https://www.paypal.com/cgi-bin/webscr&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;  &lt;span style="color:#0000ff"&gt;?cmd=_xclick&amp;business=YOUR-PAYPAL-EMAIL-HERE&lt;/span&gt;&lt;/li&gt; &lt;li&gt;  &lt;span style="color:#0000ff"&gt;&amp;item_name=Widget&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;  &lt;span style="color:#0000ff"&gt;&amp;amount=29.00&lt;/span&gt;&lt;/li&gt; &lt;li&gt;  &lt;span style="color:#0000ff"&gt;&amp;undefined_quantity=1&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;  &lt;span style="color:#0000ff"&gt;&amp;currency_code=USD"&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="color:#0000ff"&gt;&lt;&lt;/span&gt;&lt;span style="color:#800000"&gt;img&lt;/span&gt; &lt;span style="color:#ff0000"&gt;src&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="http://www.paypal.com/en_US/i/btn/x-click-but23.gif"&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;  &lt;span style="color:#ff0000"&gt;border&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="0"&lt;/span&gt; &lt;span style="color:#ff0000"&gt;alt&lt;/span&gt;&lt;span style="color:#0000ff"&gt;="Buy Now Using PayPal"&lt;/span&gt; &lt;span style="color:#0000ff"&gt;/&gt;&lt;/span&gt;&lt;/li&gt; &lt;li&gt;&lt;span style="color:#0000ff"&gt;&lt;/&lt;/span&gt;&lt;span style="color:#800000"&gt;a&lt;/span&gt;&lt;span style="color:#0000ff"&gt;&gt;&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt;If you’ll compare the above to the code that you got from PayPal, you’ll see that we converted the &lt;input&gt; tags to be parameters in the query string. &lt;/p&gt;  &lt;p&gt;From the code behind it looks like this:&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:20edb5df-d2f7-403e-86c7-bc41d5b59577" class="wlWriterEditableSmartContent"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #ddd; max-height: 500px; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0 0 0 2em; padding: 0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="color:#0000ff"&gt;Protected&lt;/span&gt; &lt;span style="color:#0000ff"&gt;Sub&lt;/span&gt; btnSubscribeYear_Click(&lt;span style="color:#0000ff"&gt;ByVal&lt;/span&gt; sender &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff"&gt;Object&lt;/span&gt;, &lt;span style="color:#0000ff"&gt;ByVal&lt;/span&gt; e &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; System.&lt;span style="color:#2b91af"&gt;EventArgs&lt;/span&gt;) &lt;span style="color:#0000ff"&gt;Handles&lt;/span&gt; btnSubscribeYear.Click&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;Dim&lt;/span&gt; dblAmount &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff"&gt;Double&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    dblAmount = &lt;span style="color:#0000ff"&gt;Me&lt;/span&gt;.txtAmount.text&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt; &lt;/li&gt; &lt;li&gt;    https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&amp;amount=" &amp; dblAmount &amp; "&amp;hosted_button_id=3IMNOTREAL3E3&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="color:#0000ff"&gt;End&lt;/span&gt; &lt;span style="color:#0000ff"&gt;Sub&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Here’s a list of all the arguments (not guaranteed to be complete or correct, you’ll want to check with PayPal for complete information)&lt;/p&gt;  &lt;p&gt;&lt;font face="Courier New"&gt;&lt;strong&gt;Argument                Description        &lt;br /&gt;&lt;/strong&gt;business                Email address associated with seller's PayPal account       &lt;br /&gt;quantity                Quantity of items being sold       &lt;br /&gt;undefined_quantity      Allows user to edit quantity       &lt;br /&gt;item_name               Name of item       &lt;br /&gt;item_number             Optional item number       &lt;br /&gt;amount                  Price of each item (without currency symbol)       &lt;br /&gt;undefined_amount        Allows user to edit the amount (good for donations)       &lt;br /&gt;shipping                Price of shipping       &lt;br /&gt;currency_code           Code for type of currency (Default appears to be USD)       &lt;br /&gt;first_name              Customer's first name       &lt;br /&gt;last_name               Customer's last name       &lt;br /&gt;address1                Customer's first address line       &lt;br /&gt;address2                Customer's second address line       &lt;br /&gt;city                    Customer's city       &lt;br /&gt;state                   Customer's state       &lt;br /&gt;zip                     Customer's zip code       &lt;br /&gt;email                   Customer's email address       &lt;br /&gt;night_phone_a           Customers telephone area code       &lt;br /&gt;night_phone_b           Customers telephone prefix       &lt;br /&gt;night_phone_c           Remainder of customer's telephone number&lt;/font&gt;&lt;/p&gt;&lt;br /&gt;&lt;a href=http://devshed.us/Blogs/tabid/227/EntryId/1229/How-to-send-a-sale-to-PayPal-in-ASP-NET-and-not-have-the-lsquo-form-rsquo-issue.aspx&gt;More ...&lt;/a&gt;</description>
      <author>steve@4penny.net</author>
      <comments>http://devshed.us/Blogs/tabid/227/EntryId/1229/How-to-send-a-sale-to-PayPal-in-ASP-NET-and-not-have-the-lsquo-form-rsquo-issue.aspx#Comments</comments>
      <slash:comments>0</slash:comments>
      <guid isPermaLink="true">http://devshed.us/Blogs/tabid/227/EntryId/1229/How-to-send-a-sale-to-PayPal-in-ASP-NET-and-not-have-the-lsquo-form-rsquo-issue.aspx</guid>
      <pubDate>Thu, 26 May 2011 17:44:10 GMT</pubDate>
      <trackback:ping>http://devshed.usDesktopModules/BlogTrackback.aspx?id=1229</trackback:ping>
    </item>
    <item>
      <title>How to serialize a DataTable to a string (and back into a DataTable again)</title>
      <link>http://devshed.us/Blogs/tabid/227/EntryId/1221/How-to-serialize-a-datatable-to-a-string.aspx</link>
      <description>&lt;p&gt;This piece of code will show how to serialize a DataTable to a string, where it can be saved to disk, and then how to read that string back into a DataTable again. Actually, we’ll have to use a DataSet to read the string (in XML format) back in, if you use a DataTable you’ll get:&lt;/p&gt;  &lt;p&gt;&lt;font color="#ff0000"&gt;DataTable does not support schema inference from Xml&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;Oddly, the DataSet works just fine&lt;/p&gt;  &lt;p&gt;There are code comments for each line below, you should not have any trouble with it.&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:cbd198a5-1689-49d2-8459-6246cad7b006" class="wlWriterEditableSmartContent"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #ddd; max-height: 500px; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0 0 0 2.5em; padding: 0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="color:#0000ff"&gt;Imports&lt;/span&gt; System.IO&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="color:#0000ff"&gt;Imports&lt;/span&gt; System.Xml&lt;/li&gt; &lt;li&gt; &lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="color:#0000ff"&gt;Module&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Module1&lt;/span&gt;&lt;/li&gt; &lt;li&gt; &lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;Sub&lt;/span&gt; Main()&lt;/li&gt; &lt;li&gt;        &lt;span style="color:#008000"&gt;'declare a datatable and populate it with data. Here, we call a &lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="color:#008000"&gt;'subroutine that loads invoices from a text file.&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="color:#0000ff"&gt;Dim&lt;/span&gt; oDT &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#2b91af"&gt;DataTable&lt;/span&gt; = getAPInvoices(&lt;span style="color:#a31515"&gt;"Data.txt"&lt;/span&gt;)&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt; &lt;/li&gt; &lt;li&gt;        &lt;span style="color:#008000"&gt;'declare a stringWriter and an XmlTextWriter&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="color:#0000ff"&gt;Dim&lt;/span&gt; sw &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff"&gt;New&lt;/span&gt; &lt;span style="color:#2b91af"&gt;StringWriter&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="color:#0000ff"&gt;Dim&lt;/span&gt; tw &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff"&gt;New&lt;/span&gt; &lt;span style="color:#2b91af"&gt;XmlTextWriter&lt;/span&gt;(sw)&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="color:#008000"&gt;'give the table a name. This name will become the name of each row in the XML file&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        oDT.TableName = &lt;span style="color:#a31515"&gt;"invoice"&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt; &lt;/li&gt; &lt;li&gt;        &lt;span style="color:#008000"&gt;'make the XML pretty&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        tw.Formatting = &lt;span style="color:#2b91af"&gt;Formatting&lt;/span&gt;.Indented&lt;/li&gt; &lt;li&gt; &lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="color:#008000"&gt;'write to the XmlTextWriter/StringWriter&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        oDT.WriteXml(tw)&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt; &lt;/li&gt; &lt;li&gt;        &lt;span style="color:#008000"&gt;'view the results&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        MsgBox(sw.ToString)&lt;/li&gt; &lt;li&gt; &lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="color:#008000"&gt;'declare a new DataSet. Note that we're not using a DataTable... you'll get&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="color:#008000"&gt;'an error if you do:&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="color:#008000"&gt;'DataTable does not support schema inference from Xml&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="color:#0000ff"&gt;Dim&lt;/span&gt; oDSNew &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff"&gt;New&lt;/span&gt; &lt;span style="color:#2b91af"&gt;DataSet&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt; &lt;/li&gt; &lt;li&gt;        &lt;span style="color:#008000"&gt;'declare a StringReader, populate it with our XML String&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="color:#0000ff"&gt;Dim&lt;/span&gt; sr &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff"&gt;New&lt;/span&gt; &lt;span style="color:#2b91af"&gt;StringReader&lt;/span&gt;(sw.ToString)&lt;/li&gt; &lt;li&gt; &lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="color:#008000"&gt;'read in the XML into our DataSet&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        oDSNew.ReadXml(sr)&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt; &lt;/li&gt; &lt;li&gt;        &lt;span style="color:#008000"&gt;'loop through it to prove it worked.&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="color:#0000ff"&gt;For&lt;/span&gt; &lt;span style="color:#0000ff"&gt;Each&lt;/span&gt; oRow &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#2b91af"&gt;DataRow&lt;/span&gt; &lt;span style="color:#0000ff"&gt;In&lt;/span&gt; oDSNew.Tables(0).Rows&lt;/li&gt; &lt;li&gt;            &lt;span style="color:#2b91af"&gt;Console&lt;/span&gt;.WriteLine(oRow(&lt;span style="color:#a31515"&gt;"vchnumwk"&lt;/span&gt;))&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="color:#0000ff"&gt;Next&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#0000ff"&gt;End&lt;/span&gt; &lt;span style="color:#0000ff"&gt;Sub&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;&lt;br /&gt;&lt;a href=http://devshed.us/Blogs/tabid/227/EntryId/1221/How-to-serialize-a-datatable-to-a-string.aspx&gt;More ...&lt;/a&gt;</description>
      <author>steve@4penny.net</author>
      <comments>http://devshed.us/Blogs/tabid/227/EntryId/1221/How-to-serialize-a-datatable-to-a-string.aspx#Comments</comments>
      <slash:comments>0</slash:comments>
      <guid isPermaLink="true">http://devshed.us/Blogs/tabid/227/EntryId/1221/How-to-serialize-a-datatable-to-a-string.aspx</guid>
      <pubDate>Tue, 24 May 2011 18:42:20 GMT</pubDate>
      <trackback:ping>http://devshed.usDesktopModules/BlogTrackback.aspx?id=1221</trackback:ping>
    </item>
    <item>
      <title>Embed an image into an email</title>
      <link>http://devshed.us/Blogs/tabid/227/EntryId/1218/Embed-an-image-into-an-email.aspx</link>
      <description>&lt;p&gt;This piece of code shows how to embed an image into an email using the System.Net.Mail namespace&lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:d3032cf5-0d6e-404f-a665-a6e330b044ef" class="wlWriterEditableSmartContent"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #ddd; max-height: 500px; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0 0 0 2.5em; padding: 0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="color:#0000ff"&gt;Try&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;Dim&lt;/span&gt; strServer &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff"&gt;String&lt;/span&gt; = strMailServer&lt;/li&gt; &lt;li&gt; &lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;Dim&lt;/span&gt; mail &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff"&gt;New&lt;/span&gt; System.Net.Mail.&lt;span style="color:#2b91af"&gt;MailMessage&lt;/span&gt;(strFrom, strTo)&lt;/li&gt; &lt;li&gt; &lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;For&lt;/span&gt; &lt;span style="color:#0000ff"&gt;Each&lt;/span&gt; cc &lt;span style="color:#0000ff"&gt;In&lt;/span&gt; strCC.Split(&lt;span style="color:#a31515"&gt;";"&lt;/span&gt;)&lt;/li&gt; &lt;li&gt;        &lt;span style="color:#0000ff"&gt;If&lt;/span&gt; cc &gt; &lt;span style="color:#a31515"&gt;""&lt;/span&gt; &lt;span style="color:#0000ff"&gt;Then&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;            mail.CC.Add(cc)&lt;/li&gt; &lt;li&gt;        &lt;span style="color:#0000ff"&gt;End&lt;/span&gt; &lt;span style="color:#0000ff"&gt;If&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;Next&lt;/span&gt;&lt;/li&gt; &lt;li&gt; &lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;For&lt;/span&gt; &lt;span style="color:#0000ff"&gt;Each&lt;/span&gt; bcc &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff"&gt;String&lt;/span&gt; &lt;span style="color:#0000ff"&gt;In&lt;/span&gt; strBCC.Split(&lt;span style="color:#a31515"&gt;";"&lt;/span&gt;)&lt;/li&gt; &lt;li&gt;        &lt;span style="color:#0000ff"&gt;If&lt;/span&gt; bcc &gt; &lt;span style="color:#a31515"&gt;""&lt;/span&gt; &lt;span style="color:#0000ff"&gt;Then&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;            mail.Bcc.Add(bcc)&lt;/li&gt; &lt;li&gt;        &lt;span style="color:#0000ff"&gt;End&lt;/span&gt; &lt;span style="color:#0000ff"&gt;If&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;Next&lt;/span&gt;&lt;/li&gt; &lt;li&gt; &lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;Dim&lt;/span&gt; htmlView &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; Net.Mail.&lt;span style="color:#2b91af"&gt;AlternateView&lt;/span&gt; = Net.Mail.&lt;span style="color:#2b91af"&gt;AlternateView&lt;/span&gt;.CreateAlternateViewFromString(&lt;span style="color:#a31515"&gt;"Here is the image... &lt;img src=cid:myImage&gt;"&lt;/span&gt;, &lt;span style="color:#0000ff"&gt;Nothing&lt;/span&gt;, &lt;span style="color:#a31515"&gt;"text/html"&lt;/span&gt;)&lt;/li&gt; &lt;li&gt; &lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;Dim&lt;/span&gt; oImage &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff"&gt;New&lt;/span&gt; Net.Mail.&lt;span style="color:#2b91af"&gt;LinkedResource&lt;/span&gt;(strFilename)&lt;/li&gt; &lt;li&gt;    oImage.ContentId = &lt;span style="color:#a31515"&gt;"myImage"&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    htmlView.LinkedResources.Add(oImage)&lt;/li&gt; &lt;li&gt; &lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    mail.Subject = strSubject&lt;/li&gt; &lt;li&gt;    mail.Body = strBody&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    mail.Priority = intPriority&lt;/li&gt; &lt;li&gt;    mail.AlternateViews.Add(htmlView)&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt; &lt;/li&gt; &lt;li&gt;    &lt;span style="color:#0000ff"&gt;Dim&lt;/span&gt; serv &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff"&gt;New&lt;/span&gt; System.Net.Mail.&lt;span style="color:#2b91af"&gt;SmtpClient&lt;/span&gt;(strServer)&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt; &lt;/li&gt; &lt;li&gt;    serv.Send(mail)&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt; &lt;/li&gt; &lt;li&gt;&lt;span style="color:#0000ff"&gt;Catch&lt;/span&gt; ex &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Exception&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;Throw&lt;/span&gt; &lt;span style="color:#0000ff"&gt;New&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Exception&lt;/span&gt;(ex.Message)&lt;/li&gt; &lt;li&gt;&lt;span style="color:#0000ff"&gt;End&lt;/span&gt; &lt;span style="color:#0000ff"&gt;Try&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;&lt;br /&gt;&lt;a href=http://devshed.us/Blogs/tabid/227/EntryId/1218/Embed-an-image-into-an-email.aspx&gt;More ...&lt;/a&gt;</description>
      <author>steve@4penny.net</author>
      <comments>http://devshed.us/Blogs/tabid/227/EntryId/1218/Embed-an-image-into-an-email.aspx#Comments</comments>
      <slash:comments>0</slash:comments>
      <guid isPermaLink="true">http://devshed.us/Blogs/tabid/227/EntryId/1218/Embed-an-image-into-an-email.aspx</guid>
      <pubDate>Mon, 23 May 2011 17:43:08 GMT</pubDate>
      <trackback:ping>http://devshed.usDesktopModules/BlogTrackback.aspx?id=1218</trackback:ping>
    </item>
    <item>
      <title>URI.TryCreate examples</title>
      <link>http://devshed.us/Blogs/tabid/227/EntryId/1054/URI-TryCreate-examples.aspx</link>
      <description>&lt;p&gt;Recently I needed to concatenate two strings and form a URI. I had the base stored in the site config; then we needed to add the page onto that. I wanted to be sure that I didn’t have errors if the user added or didn’t add ‘/’ to the URI in the config so I started with Path.combine. &lt;smiles&gt; That worked (sort of) but it used the wrong ‘/’ and it generated an error.&lt;/p&gt;  &lt;p&gt;Enter URI.TriCreate. According to the &lt;a href="http://msdn.microsoft.com/en-us/library/d6skwte6.aspx" target="_blank"&gt;documentation&lt;/a&gt; this would do the trick. But the documentation didn’t have any examples; and I couldn’t figure out the syntax. How bad is the documentation if you read all the way through it and still don’t have a clue?&lt;/p&gt;  &lt;p&gt;At any rate, I searched on line for a while and put it all together. Here are code sample for the three overloads. &lt;/p&gt;  &lt;p&gt;A few definitions so that you don’t have the same issues that I did:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;URI: Uniform Resource Identifier. A string of characters used to identify a name or a resource on the Internet. &lt;/li&gt;    &lt;li&gt;UriKind: URIs can be Absolute or Relative. “www.devshed.us” is Absolute. “/links.aspx” is relative. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:473f6d8b-e396-4f00-951a-06f93b925312" class="wlWriterEditableSmartContent"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px"&gt;Code Snippet&lt;/div&gt; &lt;div style="background: #fff; max-height: 500px; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="color:#0000ff"&gt;Module&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Module1&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt; &lt;/li&gt; &lt;li&gt;    &lt;span style="color:#0000ff"&gt;Sub&lt;/span&gt; Main()&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        TryCreate1()&lt;/li&gt; &lt;li&gt;        TryCreate2()&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        TryCreate3()&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#0000ff"&gt;End&lt;/span&gt; &lt;span style="color:#0000ff"&gt;Sub&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt; &lt;/li&gt; &lt;li&gt;    &lt;span style="color:#0000ff"&gt;Sub&lt;/span&gt; TryCreate1()&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="color:#008000"&gt;'demonstrates Uri.TriCreate(Uri,String,Uri)&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="color:#0000ff"&gt;Dim&lt;/span&gt; UriIn &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Uri&lt;/span&gt; = &lt;span style="color:#0000ff"&gt;New&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Uri&lt;/span&gt;(&lt;span style="color:#a31515"&gt;"http://devshed.us/"&lt;/span&gt;)&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="color:#0000ff"&gt;Dim&lt;/span&gt; strPage &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff"&gt;String&lt;/span&gt; = &lt;span style="color:#a31515"&gt;"/links.aspx"&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="color:#0000ff"&gt;Dim&lt;/span&gt; UriOut &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Uri&lt;/span&gt; = &lt;span style="color:#0000ff"&gt;Nothing&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt; &lt;/li&gt; &lt;li&gt;        &lt;span style="color:#0000ff"&gt;If&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Uri&lt;/span&gt;.TryCreate(UriIn, strPage, UriOut) &lt;span style="color:#0000ff"&gt;Then&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;            &lt;span style="color:#2b91af"&gt;Debug&lt;/span&gt;.Print(UriOut.ToString)&lt;/li&gt; &lt;li&gt;        &lt;span style="color:#0000ff"&gt;Else&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;            &lt;span style="color:#0000ff"&gt;Throw&lt;/span&gt; &lt;span style="color:#0000ff"&gt;New&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Exception&lt;/span&gt;(&lt;span style="color:#a31515"&gt;"Invalid URI"&lt;/span&gt;)&lt;/li&gt; &lt;li&gt;        &lt;span style="color:#0000ff"&gt;End&lt;/span&gt; &lt;span style="color:#0000ff"&gt;If&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;End&lt;/span&gt; &lt;span style="color:#0000ff"&gt;Sub&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#0000ff"&gt;Sub&lt;/span&gt; TryCreate2()&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="color:#008000"&gt;'demonstrates Uri.TriCreate(String,Urikind, Uri)&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="color:#008000"&gt;'this form doesn't create anything. It just tells us if the URI that we're passing &lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="color:#008000"&gt;'in the first parameter is Relative or Absolute. Or valid at in any form&lt;/span&gt;&lt;/li&gt; &lt;li&gt; &lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="color:#008000"&gt;'test to see if this string is a valid URI&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="color:#0000ff"&gt;Dim&lt;/span&gt; strUrl &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff"&gt;String&lt;/span&gt; = &lt;span style="color:#a31515"&gt;"http://devshed.us/"&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt; &lt;/li&gt; &lt;li&gt;        &lt;span style="color:#008000"&gt;'placeholder for our output&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="color:#0000ff"&gt;Dim&lt;/span&gt; UriOut &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Uri&lt;/span&gt; = &lt;span style="color:#0000ff"&gt;Nothing&lt;/span&gt;&lt;/li&gt; &lt;li&gt; &lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="color:#008000"&gt;'see if our input qualifies as an Absolute URI&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="color:#0000ff"&gt;If&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Uri&lt;/span&gt;.TryCreate(strUrl, &lt;span style="color:#2b91af"&gt;UriKind&lt;/span&gt;.Absolute, UriOut) &lt;span style="color:#0000ff"&gt;Then&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;            &lt;span style="color:#008000"&gt;'yes&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="color:#2b91af"&gt;Debug&lt;/span&gt;.Print(UriOut.ToString &amp; &lt;span style="color:#a31515"&gt;" is absolute"&lt;/span&gt;)&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="color:#0000ff"&gt;Else&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="color:#008000"&gt;'no&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;            &lt;span style="color:#2b91af"&gt;Debug&lt;/span&gt;.Print(strUrl &amp; &lt;span style="color:#a31515"&gt;" is not absolute"&lt;/span&gt;)&lt;/li&gt; &lt;li&gt;        &lt;span style="color:#0000ff"&gt;End&lt;/span&gt; &lt;span style="color:#0000ff"&gt;If&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt; &lt;/li&gt; &lt;li&gt;        &lt;span style="color:#008000"&gt;'see if our input qualifies as a Relative URI&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="color:#0000ff"&gt;If&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Uri&lt;/span&gt;.TryCreate(strUrl, &lt;span style="color:#2b91af"&gt;UriKind&lt;/span&gt;.Relative, UriOut) &lt;span style="color:#0000ff"&gt;Then&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="color:#008000"&gt;'yes&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;            &lt;span style="color:#2b91af"&gt;Debug&lt;/span&gt;.Print(UriOut.ToString &amp; &lt;span style="color:#a31515"&gt;" is Relative"&lt;/span&gt;)&lt;/li&gt; &lt;li&gt;        &lt;span style="color:#0000ff"&gt;Else&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;            &lt;span style="color:#008000"&gt;'no&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="color:#2b91af"&gt;Debug&lt;/span&gt;.Print(strUrl &amp; &lt;span style="color:#a31515"&gt;" is not Relative"&lt;/span&gt;)&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="color:#0000ff"&gt;End&lt;/span&gt; &lt;span style="color:#0000ff"&gt;If&lt;/span&gt;&lt;/li&gt; &lt;li&gt; &lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="color:#008000"&gt;'same as above, but this time with a string that is Relative&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        strUrl = &lt;span style="color:#a31515"&gt;"/index.aspx"&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="color:#0000ff"&gt;If&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Uri&lt;/span&gt;.TryCreate(strUrl, &lt;span style="color:#2b91af"&gt;UriKind&lt;/span&gt;.Absolute, UriOut) &lt;span style="color:#0000ff"&gt;Then&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="color:#2b91af"&gt;Debug&lt;/span&gt;.Print(UriOut.ToString &amp; &lt;span style="color:#a31515"&gt;" is absolute"&lt;/span&gt;)&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="color:#0000ff"&gt;Else&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="color:#2b91af"&gt;Debug&lt;/span&gt;.Print(strUrl &amp; &lt;span style="color:#a31515"&gt;" is not absolute"&lt;/span&gt;)&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="color:#0000ff"&gt;End&lt;/span&gt; &lt;span style="color:#0000ff"&gt;If&lt;/span&gt;&lt;/li&gt; &lt;li&gt; &lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="color:#0000ff"&gt;If&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Uri&lt;/span&gt;.TryCreate(strUrl, &lt;span style="color:#2b91af"&gt;UriKind&lt;/span&gt;.Relative, UriOut) &lt;span style="color:#0000ff"&gt;Then&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="color:#2b91af"&gt;Debug&lt;/span&gt;.Print(UriOut.ToString &amp; &lt;span style="color:#a31515"&gt;" is Relative"&lt;/span&gt;)&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="color:#0000ff"&gt;Else&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="color:#2b91af"&gt;Debug&lt;/span&gt;.Print(strUrl &amp; &lt;span style="color:#a31515"&gt;" is not Relative"&lt;/span&gt;)&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="color:#0000ff"&gt;End&lt;/span&gt; &lt;span style="color:#0000ff"&gt;If&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#0000ff"&gt;End&lt;/span&gt; &lt;span style="color:#0000ff"&gt;Sub&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;Sub&lt;/span&gt; TryCreate3()&lt;/li&gt; &lt;li&gt;        &lt;span style="color:#008000"&gt;'demonstrates Uri.TriCreate(Uri,Uri,Uri)&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="color:#008000"&gt;'concatonates the first two URIs into the third&lt;/span&gt;&lt;/li&gt; &lt;li&gt; &lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="color:#008000"&gt;'get a base uri&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="color:#0000ff"&gt;Dim&lt;/span&gt; BaseUri &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Uri&lt;/span&gt; = &lt;span style="color:#0000ff"&gt;New&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Uri&lt;/span&gt;(&lt;span style="color:#a31515"&gt;"http://devshed.us/"&lt;/span&gt;)&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt; &lt;/li&gt; &lt;li&gt;        &lt;span style="color:#008000"&gt;'note that we have to specify the urikind&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="color:#0000ff"&gt;Dim&lt;/span&gt; RelativeUri &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff"&gt;New&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Uri&lt;/span&gt;(&lt;span style="color:#a31515"&gt;"/links.aspx"&lt;/span&gt;, &lt;span style="color:#2b91af"&gt;UriKind&lt;/span&gt;.Relative)&lt;/li&gt; &lt;li&gt; &lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="color:#008000"&gt;'placeholder for the return val&lt;/span&gt;&lt;/li&gt; &lt;li&gt;        &lt;span style="color:#0000ff"&gt;Dim&lt;/span&gt; UriOut &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Uri&lt;/span&gt; = &lt;span style="color:#0000ff"&gt;Nothing&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt; &lt;/li&gt; &lt;li&gt;        &lt;span style="color:#008000"&gt;'add the two together&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="color:#0000ff"&gt;If&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Uri&lt;/span&gt;.TryCreate(BaseUri, RelativeUri, UriOut) &lt;span style="color:#0000ff"&gt;Then&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="color:#2b91af"&gt;Debug&lt;/span&gt;.Print(UriOut.ToString)&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="color:#0000ff"&gt;Else&lt;/span&gt;&lt;/li&gt; &lt;li&gt;            &lt;span style="color:#0000ff"&gt;Throw&lt;/span&gt; &lt;span style="color:#0000ff"&gt;New&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Exception&lt;/span&gt;(&lt;span style="color:#a31515"&gt;"Invalid URI"&lt;/span&gt;)&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;        &lt;span style="color:#0000ff"&gt;End&lt;/span&gt; &lt;span style="color:#0000ff"&gt;If&lt;/span&gt;&lt;/li&gt; &lt;li&gt; &lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;End&lt;/span&gt; &lt;span style="color:#0000ff"&gt;Sub&lt;/span&gt;&lt;/li&gt; &lt;li&gt; &lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="color:#0000ff"&gt;End&lt;/span&gt; &lt;span style="color:#0000ff"&gt;Module&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;&lt;br /&gt;&lt;a href=http://devshed.us/Blogs/tabid/227/EntryId/1054/URI-TryCreate-examples.aspx&gt;More ...&lt;/a&gt;</description>
      <author>steve@4penny.net</author>
      <comments>http://devshed.us/Blogs/tabid/227/EntryId/1054/URI-TryCreate-examples.aspx#Comments</comments>
      <slash:comments>0</slash:comments>
      <guid isPermaLink="true">http://devshed.us/Blogs/tabid/227/EntryId/1054/URI-TryCreate-examples.aspx</guid>
      <pubDate>Tue, 22 Mar 2011 22:55:36 GMT</pubDate>
      <trackback:ping>http://devshed.usDesktopModules/BlogTrackback.aspx?id=1054</trackback:ping>
    </item>
    <item>
      <title>Tools &amp;gt; Options</title>
      <link>http://devshed.us/Blogs/tabid/227/EntryId/1018/Tools-gt-Options.aspx</link>
      <description>&lt;p&gt;I spend most of my day in either SMSS or Visual Studio (currently 2010), and there are a couple of small changes that I’m fond of making. It’s not a big deal, but I really like VS to close the quote marks for me in the HTML editor, it makes typing slightly faster. And, I like the tabs on the tab well to be all the same size. It’s slightly easier to close a bunch of them quickly, you don’t have to move the cursor, you can just click. &lt;/p&gt;  &lt;p&gt;But, I hate to spend the time to look for these options in Tools &gt; Options, there are so many options. So I thought I’d blog the options and have them on hand the next time I need to set them. &lt;/p&gt;  &lt;p&gt;In order to get the ‘tabs’ feature, you’ll want to install the &lt;a href="http://visualstudiogallery.msdn.microsoft.com/d0d33361-18e2-46c0-8ff2-4adea1e34fef/" target="_blank"&gt;Productivity Power Pack&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;(click to enlarge)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://devshed.us/Portals/3/Blog/Files/3/1018/Windows-Live-Writer-Tools--Options_7F52-image_2.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="/Portals/3/Blog/Files/3/1018/Windows-Live-Writer-Tools--Options_7F52-image_thumb.png" width="244" height="170" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Here is the ‘tab’ settings &lt;/p&gt;  &lt;p&gt;&lt;a href="http://devshed.us/Portals/3/Blog/Files/3/1018/Windows-Live-Writer-Tools--Options_7F52-image_4.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="/Portals/3/Blog/Files/3/1018/Windows-Live-Writer-Tools--Options_7F52-image_thumb_1.png" width="244" height="144" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;&lt;a href=http://devshed.us/Blogs/tabid/227/EntryId/1018/Tools-gt-Options.aspx&gt;More ...&lt;/a&gt;</description>
      <author>steve@4penny.net</author>
      <comments>http://devshed.us/Blogs/tabid/227/EntryId/1018/Tools-gt-Options.aspx#Comments</comments>
      <slash:comments>0</slash:comments>
      <guid isPermaLink="true">http://devshed.us/Blogs/tabid/227/EntryId/1018/Tools-gt-Options.aspx</guid>
      <pubDate>Tue, 15 Mar 2011 13:08:34 GMT</pubDate>
      <trackback:ping>http://devshed.usDesktopModules/BlogTrackback.aspx?id=1018</trackback:ping>
    </item>
    <item>
      <title>Creating a DataTable dynamically</title>
      <link>http://devshed.us/Blogs/tabid/227/EntryId/961/Creating-a-DataTable-dynamically.aspx</link>
      <description>&lt;p&gt;This is a short example on how to create a DataTable dynamically, assign a primary key to it, and then how to update it&lt;/p&gt;  &lt;p&gt;You can search a data table with or without a primary key, but if you don’t use the key you’ll get back an array of rows; in this case the single row is really what we need. &lt;/p&gt;  &lt;p&gt;This code is very useful for submitting samples to vendors, you don’t have to fake data connections.&lt;/p&gt;  &lt;p&gt;There is no error checking, this is just template code. &lt;/p&gt;  &lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:1d2a5ff1-5d72-49de-ada6-bbab83ba9c27" class="wlWriterEditableSmartContent"&gt; &lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt; &lt;div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px"&gt;Code Snippet&lt;/div&gt; &lt;div style="background: #fff; max-height: 300px; overflow: auto"&gt; &lt;ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px;"&gt; &lt;li&gt;&lt;span style="color:#0000ff"&gt;Function&lt;/span&gt; GetDataTable() &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#2b91af"&gt;DataTable&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;Dim&lt;/span&gt; oDT &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff"&gt;New&lt;/span&gt; &lt;span style="color:#2b91af"&gt;DataTable&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#0000ff"&gt;Dim&lt;/span&gt; oKeys(0) &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#2b91af"&gt;DataColumn&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#008000"&gt;'create a data table to use as our input source&lt;/span&gt;&lt;/li&gt; &lt;li&gt; &lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#008000"&gt;'create columns &lt;/span&gt;&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#0000ff"&gt;Dim&lt;/span&gt; oCol &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#2b91af"&gt;DataColumn&lt;/span&gt; = &lt;span style="color:#0000ff"&gt;New&lt;/span&gt; &lt;span style="color:#2b91af"&gt;DataColumn&lt;/span&gt;(&lt;span style="color:#a31515"&gt;"order"&lt;/span&gt;, System.&lt;span style="color:#2b91af"&gt;Type&lt;/span&gt;.GetType(&lt;span style="color:#a31515"&gt;"System.String"&lt;/span&gt;))&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    oDT.Columns.Add(oCol)&lt;/li&gt; &lt;li&gt;    oKeys(0) = oCol&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    oDT.Columns.Add(&lt;span style="color:#0000ff"&gt;New&lt;/span&gt; &lt;span style="color:#2b91af"&gt;DataColumn&lt;/span&gt;(&lt;span style="color:#a31515"&gt;"salesperson"&lt;/span&gt;, System.&lt;span style="color:#2b91af"&gt;Type&lt;/span&gt;.GetType(&lt;span style="color:#a31515"&gt;"System.String"&lt;/span&gt;)))&lt;/li&gt; &lt;li&gt;    oDT.Columns.Add(&lt;span style="color:#0000ff"&gt;New&lt;/span&gt; &lt;span style="color:#2b91af"&gt;DataColumn&lt;/span&gt;(&lt;span style="color:#a31515"&gt;"amount"&lt;/span&gt;, System.&lt;span style="color:#2b91af"&gt;Type&lt;/span&gt;.GetType(&lt;span style="color:#a31515"&gt;"System.Double"&lt;/span&gt;)))&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    oDT.PrimaryKey = oKeys&lt;/li&gt; &lt;li&gt; &lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#008000"&gt;'create the rows &lt;/span&gt;&lt;/li&gt; &lt;li&gt;    oDT.Rows.Add(&lt;span style="color:#a31515"&gt;"ORD00100"&lt;/span&gt;, &lt;span style="color:#a31515"&gt;"Bob@test.com"&lt;/span&gt;, 1.23)&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    oDT.Rows.Add(&lt;span style="color:#a31515"&gt;"ORD00102"&lt;/span&gt;, &lt;span style="color:#a31515"&gt;"Bob@test.com"&lt;/span&gt;, 3.23)&lt;/li&gt; &lt;li&gt;    oDT.Rows.Add(&lt;span style="color:#a31515"&gt;"ORD00104"&lt;/span&gt;, &lt;span style="color:#a31515"&gt;"Sam@test.com"&lt;/span&gt;, 2.23)&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    oDT.Rows.Add(&lt;span style="color:#a31515"&gt;"ORD00105"&lt;/span&gt;, &lt;span style="color:#a31515"&gt;"Sam@test.com"&lt;/span&gt;, 4.23)&lt;/li&gt; &lt;li&gt; &lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;Return&lt;/span&gt; oDT&lt;/li&gt; &lt;li&gt; &lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="color:#0000ff"&gt;End&lt;/span&gt; &lt;span style="color:#0000ff"&gt;Function&lt;/span&gt;&lt;/li&gt; &lt;li&gt; &lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="color:#0000ff"&gt;Sub&lt;/span&gt; updateDataTable(&lt;span style="color:#0000ff"&gt;ByVal&lt;/span&gt; strOrder &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff"&gt;String&lt;/span&gt;, &lt;span style="color:#0000ff"&gt;ByVal&lt;/span&gt; dblAmount &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff"&gt;Double&lt;/span&gt;)&lt;/li&gt; &lt;li&gt;    &lt;span style="color:#0000ff"&gt;Dim&lt;/span&gt; oRow &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#2b91af"&gt;DataRow&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt; &lt;/li&gt; &lt;li&gt;    &lt;span style="color:#008000"&gt;'"order" is our primary key. Search the primary key for strOrder&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    oRow = oDT.Rows.Find(strOrder)&lt;/li&gt; &lt;li&gt; &lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#008000"&gt;'in the row found, set the Amount column&lt;/span&gt;&lt;/li&gt; &lt;li&gt;    oRow(&lt;span style="color:#a31515"&gt;"amount"&lt;/span&gt;) = dblAmount&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt; &lt;/li&gt; &lt;li&gt;    &lt;span style="color:#008000"&gt;'save&lt;/span&gt;&lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;    oDT.AcceptChanges()&lt;/li&gt; &lt;li&gt; &lt;/li&gt; &lt;li style="background: #f3f3f3"&gt;&lt;span style="color:#0000ff"&gt;End&lt;/span&gt; &lt;span style="color:#0000ff"&gt;Sub&lt;/span&gt;&lt;/li&gt; &lt;/ol&gt; &lt;/div&gt; &lt;/div&gt; &lt;/div&gt;&lt;br /&gt;&lt;a href=http://devshed.us/Blogs/tabid/227/EntryId/961/Creating-a-DataTable-dynamically.aspx&gt;More ...&lt;/a&gt;</description>
      <author>steve@4penny.net</author>
      <comments>http://devshed.us/Blogs/tabid/227/EntryId/961/Creating-a-DataTable-dynamically.aspx#Comments</comments>
      <slash:comments>0</slash:comments>
      <guid isPermaLink="true">http://devshed.us/Blogs/tabid/227/EntryId/961/Creating-a-DataTable-dynamically.aspx</guid>
      <pubDate>Mon, 21 Feb 2011 20:40:12 GMT</pubDate>
      <trackback:ping>http://devshed.usDesktopModules/BlogTrackback.aspx?id=961</trackback:ping>
    </item>
    <item>
      <title>Enterprise Library 5.0 Data Access Application Block (DAAB) starter</title>
      <link>http://devshed.us/Blogs/tabid/227/EntryId/837/Enterprise-Library-5-0-Data-Access-Application-Block-DAAB-starter.aspx</link>
      <description>&lt;p&gt;Every time I add the DAAB to an application, I struggle a little with which .dlls to add to my project. &lt;/p&gt;  &lt;p&gt;So, here it a walk through to get you (and me) started.&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Download and install the &lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyId=bcb166f7-dd16-448b-a152-9845760d9b4c&amp;displaylang=en" target="_blank"&gt;Enterprise Library 5.0&lt;/a&gt; objects. Choose the larger install, the second one. &lt;/p&gt;  &lt;p&gt;Create a project, and set a reference to these dlls:&lt;/p&gt;  &lt;p&gt;Microsoft.Practices.EnterpriseLibrary.Common.dll    &lt;br /&gt;Microsoft.Practices.EnterpriseLibrary.Data.dll     &lt;br /&gt;Microsoft.Practices.ServiceLocation.dll     &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;That should do it. &lt;/p&gt;&lt;br /&gt;&lt;a href=http://devshed.us/Blogs/tabid/227/EntryId/837/Enterprise-Library-5-0-Data-Access-Application-Block-DAAB-starter.aspx&gt;More ...&lt;/a&gt;</description>
      <author>steve@4penny.net</author>
      <comments>http://devshed.us/Blogs/tabid/227/EntryId/837/Enterprise-Library-5-0-Data-Access-Application-Block-DAAB-starter.aspx#Comments</comments>
      <slash:comments>0</slash:comments>
      <guid isPermaLink="true">http://devshed.us/Blogs/tabid/227/EntryId/837/Enterprise-Library-5-0-Data-Access-Application-Block-DAAB-starter.aspx</guid>
      <pubDate>Fri, 17 Dec 2010 16:19:03 GMT</pubDate>
      <trackback:ping>http://devshed.usDesktopModules/BlogTrackback.aspx?id=837</trackback:ping>
    </item>
    <item>
      <title>StoredProcedure Class</title>
      <link>http://devshed.us/Blogs/tabid/227/EntryId/815/StoredProcedure-Class.aspx</link>
      <description>&lt;p&gt;This is the class that I use to abstract the Enterprise Library DAAB. There are other classes, &lt;a href="http://devshed.us/Indexes/DataAccess.aspx" target="_blank"&gt;found here&lt;/a&gt;&lt;/p&gt;  &lt;pre class="code"&gt; &lt;/pre&gt;





&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:9ce6104f-a9aa-4a17-a79f-3a39532ebf7c:32e2165e-ce11-4f47-ad5b-88df1f01c537" class="wlWriterEditableSmartContent"&gt;
&lt;div style="border: #000080 1px solid; color: #000; font-family: 'Courier New', Courier, Monospace; font-size: 10pt"&gt;
&lt;div style="background: #000080; color: #fff; font-family: Verdana, Tahoma, Arial, sans-serif; font-weight: bold; padding: 2px 5px"&gt;Code Snippet&lt;/div&gt;
&lt;div style="background: #fff; max-height: 500px; overflow: auto"&gt;
&lt;ol style="background: #ffffff; margin: 0; padding: 0 0 0 5px;"&gt;
&lt;li&gt;&lt;span style="color:#0000ff"&gt;Imports&lt;/span&gt; Microsoft.VisualBasic&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;&lt;span style="color:#0000ff"&gt;Imports&lt;/span&gt; System.Data.SqlClient&lt;/li&gt;
&lt;li&gt;&lt;span style="color:#0000ff"&gt;Imports&lt;/span&gt; System.Data&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;&lt;span style="color:#0000ff"&gt;Imports&lt;/span&gt; Microsoft.Practices.EnterpriseLibrary.Data&lt;/li&gt;
&lt;li&gt;&lt;span style="color:#0000ff"&gt;Imports&lt;/span&gt; Microsoft.Practices.EnterpriseLibrary.Data.Sql&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;&lt;span style="color:#0000ff"&gt;Imports&lt;/span&gt; System.Configuration&lt;/li&gt;
&lt;li&gt; &lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;&lt;span style="color:#0000ff"&gt;Public&lt;/span&gt; &lt;span style="color:#0000ff"&gt;Class&lt;/span&gt; &lt;span style="color:#2b91af"&gt;storedProcedure&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;    &lt;span style="color:#0000ff"&gt;Dim&lt;/span&gt; _storedProcName &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff"&gt;String&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;Dim&lt;/span&gt; _db &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff"&gt;String&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;    &lt;span style="color:#0000ff"&gt;Public&lt;/span&gt; commandParameters &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; System.Collections.Generic.&lt;span style="color:#2b91af"&gt;List&lt;/span&gt;(&lt;span style="color:#0000ff"&gt;Of&lt;/span&gt; &lt;span style="color:#2b91af"&gt;commandParameter&lt;/span&gt;)&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;Public&lt;/span&gt; CommandTimeout &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Int16&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;    &lt;span style="color:#0000ff"&gt;Dim&lt;/span&gt; cs &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff"&gt;New&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Dictionary&lt;/span&gt;(&lt;span style="color:#0000ff"&gt;Of&lt;/span&gt; &lt;span style="color:#0000ff"&gt;String&lt;/span&gt;, &lt;span style="color:#0000ff"&gt;String&lt;/span&gt;)&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt; &lt;/li&gt;
&lt;li&gt;    &lt;span style="color:#0000ff"&gt;Sub&lt;/span&gt; &lt;span style="color:#0000ff"&gt;New&lt;/span&gt;(&lt;span style="color:#0000ff"&gt;ByVal&lt;/span&gt; StoredProcName &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff"&gt;String&lt;/span&gt;, &lt;span style="color:#0000ff"&gt;ByVal&lt;/span&gt; db &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff"&gt;String&lt;/span&gt;)&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;        _storedProcName = StoredProcName&lt;/li&gt;
&lt;li&gt;        _db = db.ToUpper&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;        commandParameters = &lt;span style="color:#0000ff"&gt;New&lt;/span&gt; System.Collections.Generic.&lt;span style="color:#2b91af"&gt;List&lt;/span&gt;(&lt;span style="color:#0000ff"&gt;Of&lt;/span&gt; &lt;span style="color:#2b91af"&gt;commandParameter&lt;/span&gt;)&lt;/li&gt;
&lt;li&gt; &lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;        cs.Add(&lt;span style="color:#a31515"&gt;"NGB01"&lt;/span&gt;, &lt;span style="color:#a31515"&gt;"Data Source=ngb-sql-05;User Id=4pennyapp;Password=app4me;Initial Catalog=NGB01"&lt;/span&gt;)&lt;/li&gt;
&lt;li&gt;        cs.Add(&lt;span style="color:#a31515"&gt;"ELSTN"&lt;/span&gt;, &lt;span style="color:#a31515"&gt;"Data Source=ngb-sql-05;User Id=4pennyapp;Password=app4me;Initial Catalog=ELSTN"&lt;/span&gt;)&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;        cs.Add(&lt;span style="color:#a31515"&gt;"NGBOED"&lt;/span&gt;, &lt;span style="color:#a31515"&gt;"Data Source=ngb-sql-05;User Id=4pennyapp;Password=app4me;Initial Catalog=NGBOED"&lt;/span&gt;)&lt;/li&gt;
&lt;li&gt;        cs.Add(&lt;span style="color:#a31515"&gt;"STONE"&lt;/span&gt;, &lt;span style="color:#a31515"&gt;"Data Source=ngb-sql-05;User Id=4pennyapp;Password=app4me;Initial Catalog=STONE"&lt;/span&gt;)&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;        cs.Add(&lt;span style="color:#a31515"&gt;"INTRANET2"&lt;/span&gt;, &lt;span style="color:#a31515"&gt;"Data Source=ngb-sql-05;User Id=4pennyapp;Password=app4me;Initial Catalog=Intranet2"&lt;/span&gt;)&lt;/li&gt;
&lt;li&gt;        cs.Add(&lt;span style="color:#a31515"&gt;"TWO"&lt;/span&gt;, &lt;span style="color:#a31515"&gt;"Data Source=vmGP11;User Id=4pennyapp;Password=app4me;Initial Catalog=TWO"&lt;/span&gt;)&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;End&lt;/span&gt; &lt;span style="color:#0000ff"&gt;Sub&lt;/span&gt;&lt;/li&gt;
&lt;li&gt; &lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;Function&lt;/span&gt; execute(&lt;span style="color:#0000ff"&gt;ByVal&lt;/span&gt; timeout &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Int32&lt;/span&gt;, &lt;span style="color:#0000ff"&gt;ByRef&lt;/span&gt; cps &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; System.Collections.Generic.&lt;span style="color:#2b91af"&gt;List&lt;/span&gt;(&lt;span style="color:#0000ff"&gt;Of&lt;/span&gt; &lt;span style="color:#2b91af"&gt;commandParameter&lt;/span&gt;)) &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Int32&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;        &lt;span style="color:#0000ff"&gt;Dim&lt;/span&gt; strError &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff"&gt;String&lt;/span&gt; = &lt;span style="color:#a31515"&gt;""&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;        &lt;span style="color:#0000ff"&gt;Try&lt;/span&gt;&lt;/li&gt;
&lt;li&gt; &lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;            &lt;span style="color:#0000ff"&gt;Dim&lt;/span&gt; aParams &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#2b91af"&gt;SqlParameter&lt;/span&gt;() = &lt;span style="color:#0000ff"&gt;Nothing&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;            &lt;span style="color:#0000ff"&gt;Dim&lt;/span&gt; a &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Int16&lt;/span&gt; = 0&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt; &lt;/li&gt;
&lt;li&gt;            &lt;span style="color:#0000ff"&gt;Dim&lt;/span&gt; db &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Database&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;            db = &lt;span style="color:#0000ff"&gt;New&lt;/span&gt; &lt;span style="color:#2b91af"&gt;SqlDatabase&lt;/span&gt;(cs(_db))&lt;/li&gt;
&lt;li&gt; &lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;            &lt;span style="color:#0000ff"&gt;Dim&lt;/span&gt; dbCommand &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; Common.&lt;span style="color:#2b91af"&gt;DbCommand&lt;/span&gt; = db.GetStoredProcCommand(_storedProcName)&lt;/li&gt;
&lt;li&gt; &lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;            &lt;span style="color:#0000ff"&gt;If&lt;/span&gt; timeout &gt; 0 &lt;span style="color:#0000ff"&gt;Then&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;                dbCommand.CommandTimeout = timeout&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;            &lt;span style="color:#0000ff"&gt;End&lt;/span&gt; &lt;span style="color:#0000ff"&gt;If&lt;/span&gt;&lt;/li&gt;
&lt;li&gt; &lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;            &lt;span style="color:#0000ff"&gt;For&lt;/span&gt; &lt;span style="color:#0000ff"&gt;Each&lt;/span&gt; cp &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#2b91af"&gt;commandParameter&lt;/span&gt; &lt;span style="color:#0000ff"&gt;In&lt;/span&gt; commandParameters&lt;/li&gt;
&lt;li&gt;                &lt;span style="color:#0000ff"&gt;Select&lt;/span&gt; &lt;span style="color:#0000ff"&gt;Case&lt;/span&gt; cp.ParamDirection&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;                    &lt;span style="color:#0000ff"&gt;Case&lt;/span&gt; &lt;span style="color:#2b91af"&gt;ParameterDirection&lt;/span&gt;.Input&lt;/li&gt;
&lt;li&gt;                        db.AddInParameter(dbCommand, cp.ParamName, cp.ParamType, cp.ParamValue)&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;                    &lt;span style="color:#0000ff"&gt;Case&lt;/span&gt; &lt;span style="color:#2b91af"&gt;ParameterDirection&lt;/span&gt;.InputOutput&lt;/li&gt;
&lt;li&gt;                        &lt;span style="color:#008000"&gt;'not handled&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;                    &lt;span style="color:#0000ff"&gt;Case&lt;/span&gt; &lt;span style="color:#2b91af"&gt;ParameterDirection&lt;/span&gt;.Output&lt;/li&gt;
&lt;li&gt;                        db.AddOutParameter(dbCommand, cp.ParamName, cp.ParamType, cp.ParamSize)&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;                    &lt;span style="color:#0000ff"&gt;Case&lt;/span&gt; &lt;span style="color:#2b91af"&gt;ParameterDirection&lt;/span&gt;.ReturnValue&lt;/li&gt;
&lt;li&gt;                        &lt;span style="color:#008000"&gt;'not handled&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;                &lt;span style="color:#0000ff"&gt;End&lt;/span&gt; &lt;span style="color:#0000ff"&gt;Select&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;            &lt;span style="color:#0000ff"&gt;Next&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;            db.AddParameter(dbCommand, &lt;span style="color:#a31515"&gt;"@ReturnValue"&lt;/span&gt;, &lt;span style="color:#2b91af"&gt;DbType&lt;/span&gt;.Int32, &lt;span style="color:#2b91af"&gt;ParameterDirection&lt;/span&gt;.ReturnValue, &lt;span style="color:#0000ff"&gt;String&lt;/span&gt;.Empty, System.Data.&lt;span style="color:#2b91af"&gt;DataRowVersion&lt;/span&gt;.Default, 0)&lt;/li&gt;
&lt;li&gt; &lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;            db.ExecuteNonQuery(dbCommand)&lt;/li&gt;
&lt;li&gt;            &lt;span style="color:#0000ff"&gt;For&lt;/span&gt; &lt;span style="color:#0000ff"&gt;Each&lt;/span&gt; cp &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#2b91af"&gt;commandParameter&lt;/span&gt; &lt;span style="color:#0000ff"&gt;In&lt;/span&gt; commandParameters&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;                cp.ParamValue = db.GetParameterValue(dbCommand, cp.ParamName)&lt;/li&gt;
&lt;li&gt;            &lt;span style="color:#0000ff"&gt;Next&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt; &lt;/li&gt;
&lt;li&gt;            &lt;span style="color:#0000ff"&gt;Dim&lt;/span&gt; rcp &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#2b91af"&gt;commandParameter&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;            rcp = &lt;span style="color:#0000ff"&gt;New&lt;/span&gt; &lt;span style="color:#2b91af"&gt;commandParameter&lt;/span&gt;(&lt;span style="color:#a31515"&gt;"@Return_Value"&lt;/span&gt;, 0, &lt;span style="color:#2b91af"&gt;DbType&lt;/span&gt;.Int16)&lt;/li&gt;
&lt;li&gt;            rcp.ParamValue = db.GetParameterValue(dbCommand, &lt;span style="color:#a31515"&gt;"@ReturnValue"&lt;/span&gt;)&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;            commandParameters.Add(rcp)&lt;/li&gt;
&lt;li&gt; &lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;            cps = commandParameters&lt;/li&gt;
&lt;li&gt;            &lt;span style="color:#0000ff"&gt;Return&lt;/span&gt; rcp.ParamValue&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;        &lt;span style="color:#0000ff"&gt;Catch&lt;/span&gt; ex &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Exception&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;            strError = &lt;span style="color:#a31515"&gt;"query: "&lt;/span&gt; &amp; _storedProcName &amp; &lt;span style="color:#a31515"&gt;"&lt;BR&gt;"&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;            &lt;span style="color:#0000ff"&gt;For&lt;/span&gt; &lt;span style="color:#0000ff"&gt;Each&lt;/span&gt; cp &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#2b91af"&gt;commandParameter&lt;/span&gt; &lt;span style="color:#0000ff"&gt;In&lt;/span&gt; commandParameters&lt;/li&gt;
&lt;li&gt;                strError += &lt;span style="color:#a31515"&gt;"params: "&lt;/span&gt; &amp; cp.ParamName &amp; &lt;span style="color:#a31515"&gt;" = "&lt;/span&gt; &amp; cp.ParamValue.ToString &amp; &lt;span style="color:#a31515"&gt;"&lt;br&gt;"&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;            &lt;span style="color:#0000ff"&gt;Next&lt;/span&gt;&lt;/li&gt;
&lt;li&gt; &lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;            ex.Source = strError&lt;/li&gt;
&lt;li&gt;            &lt;span style="color:#0000ff"&gt;Throw&lt;/span&gt; ex&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt; &lt;/li&gt;
&lt;li&gt;        &lt;span style="color:#0000ff"&gt;End&lt;/span&gt; &lt;span style="color:#0000ff"&gt;Try&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt; &lt;/li&gt;
&lt;li&gt;    &lt;span style="color:#0000ff"&gt;End&lt;/span&gt; &lt;span style="color:#0000ff"&gt;Function&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;Function&lt;/span&gt; execute() &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Int32&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;        &lt;span style="color:#0000ff"&gt;Dim&lt;/span&gt; intTimeout &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Int32&lt;/span&gt; = -1&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;        &lt;span style="color:#0000ff"&gt;Dim&lt;/span&gt; cp &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff"&gt;New&lt;/span&gt; System.Collections.Generic.&lt;span style="color:#2b91af"&gt;List&lt;/span&gt;(&lt;span style="color:#0000ff"&gt;Of&lt;/span&gt; &lt;span style="color:#2b91af"&gt;commandParameter&lt;/span&gt;)&lt;/li&gt;
&lt;li&gt;        &lt;span style="color:#0000ff"&gt;Return&lt;/span&gt; execute(intTimeout, cp)&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;End&lt;/span&gt; &lt;span style="color:#0000ff"&gt;Function&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;    &lt;span style="color:#0000ff"&gt;Function&lt;/span&gt; execute(&lt;span style="color:#0000ff"&gt;ByRef&lt;/span&gt; cp &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; System.Collections.Generic.&lt;span style="color:#2b91af"&gt;List&lt;/span&gt;(&lt;span style="color:#0000ff"&gt;Of&lt;/span&gt; &lt;span style="color:#2b91af"&gt;commandParameter&lt;/span&gt;)) &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Int32&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;        &lt;span style="color:#0000ff"&gt;Dim&lt;/span&gt; intTimeout &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Int32&lt;/span&gt; = -1&lt;/li&gt;
&lt;li&gt;        &lt;span style="color:#0000ff"&gt;Return&lt;/span&gt; execute(intTimeout, cp)&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;End&lt;/span&gt; &lt;span style="color:#0000ff"&gt;Function&lt;/span&gt;&lt;/li&gt;
&lt;li&gt; &lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;Function&lt;/span&gt; executeScalar() &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff"&gt;Object&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;        &lt;span style="color:#0000ff"&gt;Dim&lt;/span&gt; strError &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff"&gt;String&lt;/span&gt; = &lt;span style="color:#a31515"&gt;""&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;        &lt;span style="color:#0000ff"&gt;Try&lt;/span&gt;&lt;/li&gt;
&lt;li&gt; &lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;            &lt;span style="color:#0000ff"&gt;Dim&lt;/span&gt; aParams &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#2b91af"&gt;SqlParameter&lt;/span&gt;() = &lt;span style="color:#0000ff"&gt;Nothing&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;            &lt;span style="color:#0000ff"&gt;Dim&lt;/span&gt; a &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Int16&lt;/span&gt; = 0&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;            &lt;span style="color:#0000ff"&gt;Dim&lt;/span&gt; db &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Database&lt;/span&gt; &lt;span style="color:#008000"&gt;'= DatabaseFactory.CreateDatabase(_db)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;            db = &lt;span style="color:#0000ff"&gt;New&lt;/span&gt; &lt;span style="color:#2b91af"&gt;SqlDatabase&lt;/span&gt;(cs(_db))&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;            &lt;span style="color:#0000ff"&gt;Dim&lt;/span&gt; dbCommand &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; Common.&lt;span style="color:#2b91af"&gt;DbCommand&lt;/span&gt; = db.GetStoredProcCommand(_storedProcName)&lt;/li&gt;
&lt;li&gt;            &lt;span style="color:#0000ff"&gt;For&lt;/span&gt; &lt;span style="color:#0000ff"&gt;Each&lt;/span&gt; cp &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#2b91af"&gt;commandParameter&lt;/span&gt; &lt;span style="color:#0000ff"&gt;In&lt;/span&gt; commandParameters&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;                db.AddInParameter(dbCommand, cp.ParamName, cp.ParamType, cp.ParamValue)&lt;/li&gt;
&lt;li&gt;            &lt;span style="color:#0000ff"&gt;Next&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt; &lt;/li&gt;
&lt;li&gt;            &lt;span style="color:#0000ff"&gt;Return&lt;/span&gt; db.ExecuteScalar(dbCommand)&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;        &lt;span style="color:#0000ff"&gt;Catch&lt;/span&gt; ex &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Exception&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;            strError = &lt;span style="color:#a31515"&gt;"query: "&lt;/span&gt; &amp; _storedProcName &amp; &lt;span style="color:#a31515"&gt;"&lt;BR&gt;"&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;            &lt;span style="color:#0000ff"&gt;For&lt;/span&gt; &lt;span style="color:#0000ff"&gt;Each&lt;/span&gt; cp &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#2b91af"&gt;commandParameter&lt;/span&gt; &lt;span style="color:#0000ff"&gt;In&lt;/span&gt; commandParameters&lt;/li&gt;
&lt;li&gt;                strError += &lt;span style="color:#a31515"&gt;"params: "&lt;/span&gt; &amp; cp.ParamName &amp; &lt;span style="color:#a31515"&gt;" = "&lt;/span&gt; &amp; cp.ParamValue.ToString &amp; &lt;span style="color:#a31515"&gt;"&lt;br&gt;"&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;            &lt;span style="color:#0000ff"&gt;Next&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;            strError += ex.Message&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;            &lt;span style="color:#0000ff"&gt;Throw&lt;/span&gt; &lt;span style="color:#0000ff"&gt;New&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Exception&lt;/span&gt;(strError)&lt;/li&gt;
&lt;li&gt; &lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;        &lt;span style="color:#0000ff"&gt;End&lt;/span&gt; &lt;span style="color:#0000ff"&gt;Try&lt;/span&gt;&lt;/li&gt;
&lt;li&gt; &lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;        executeScalar = &lt;span style="color:#0000ff"&gt;Nothing&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;    &lt;span style="color:#0000ff"&gt;End&lt;/span&gt; &lt;span style="color:#0000ff"&gt;Function&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;Function&lt;/span&gt; getReader(&lt;span style="color:#0000ff"&gt;ByVal&lt;/span&gt; timeout &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Int32&lt;/span&gt;) &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#2b91af"&gt;SqlDataReader&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;        &lt;span style="color:#0000ff"&gt;Dim&lt;/span&gt; strError &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff"&gt;String&lt;/span&gt; = &lt;span style="color:#a31515"&gt;""&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;        &lt;span style="color:#0000ff"&gt;Try&lt;/span&gt;&lt;/li&gt;
&lt;li&gt; &lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;            &lt;span style="color:#0000ff"&gt;Dim&lt;/span&gt; aParams &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#2b91af"&gt;SqlParameter&lt;/span&gt;() = &lt;span style="color:#0000ff"&gt;Nothing&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;            &lt;span style="color:#0000ff"&gt;Dim&lt;/span&gt; a &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Int16&lt;/span&gt; = 0&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;            &lt;span style="color:#0000ff"&gt;Dim&lt;/span&gt; db &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Database&lt;/span&gt; &lt;span style="color:#008000"&gt;'= DatabaseFactory.CreateDatabase(_db)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;            db = &lt;span style="color:#0000ff"&gt;New&lt;/span&gt; &lt;span style="color:#2b91af"&gt;SqlDatabase&lt;/span&gt;(cs(_db))&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;            &lt;span style="color:#0000ff"&gt;Dim&lt;/span&gt; dbCommand &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; Common.&lt;span style="color:#2b91af"&gt;DbCommand&lt;/span&gt; = db.GetStoredProcCommand(_storedProcName)&lt;/li&gt;
&lt;li&gt;            &lt;span style="color:#0000ff"&gt;If&lt;/span&gt; timeout &gt; 0 &lt;span style="color:#0000ff"&gt;Then&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;                dbCommand.CommandTimeout = timeout&lt;/li&gt;
&lt;li&gt;            &lt;span style="color:#0000ff"&gt;End&lt;/span&gt; &lt;span style="color:#0000ff"&gt;If&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;            &lt;span style="color:#0000ff"&gt;For&lt;/span&gt; &lt;span style="color:#0000ff"&gt;Each&lt;/span&gt; cp &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#2b91af"&gt;commandParameter&lt;/span&gt; &lt;span style="color:#0000ff"&gt;In&lt;/span&gt; commandParameters&lt;/li&gt;
&lt;li&gt;                db.AddInParameter(dbCommand, cp.ParamName, cp.ParamType, cp.ParamValue)&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;            &lt;span style="color:#0000ff"&gt;Next&lt;/span&gt;&lt;/li&gt;
&lt;li&gt; &lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;            &lt;span style="color:#0000ff"&gt;Return&lt;/span&gt; db.ExecuteReader(dbCommand)&lt;/li&gt;
&lt;li&gt;        &lt;span style="color:#0000ff"&gt;Catch&lt;/span&gt; ex &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Exception&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;            strError = &lt;span style="color:#a31515"&gt;"query: "&lt;/span&gt; &amp; _storedProcName &amp; &lt;span style="color:#a31515"&gt;"&lt;BR&gt;"&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;            &lt;span style="color:#0000ff"&gt;For&lt;/span&gt; &lt;span style="color:#0000ff"&gt;Each&lt;/span&gt; cp &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#2b91af"&gt;commandParameter&lt;/span&gt; &lt;span style="color:#0000ff"&gt;In&lt;/span&gt; commandParameters&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;                strError += &lt;span style="color:#a31515"&gt;"params: "&lt;/span&gt; &amp; cp.ParamName &amp; &lt;span style="color:#a31515"&gt;" = "&lt;/span&gt; &amp; cp.ParamValue.ToString &amp; &lt;span style="color:#a31515"&gt;"&lt;br&gt;"&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;            &lt;span style="color:#0000ff"&gt;Next&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt; &lt;/li&gt;
&lt;li&gt;            ex.Source = strError&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;            &lt;span style="color:#0000ff"&gt;Throw&lt;/span&gt; ex&lt;/li&gt;
&lt;li&gt; &lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;        &lt;span style="color:#0000ff"&gt;End&lt;/span&gt; &lt;span style="color:#0000ff"&gt;Try&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;        getReader = &lt;span style="color:#0000ff"&gt;Nothing&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt; &lt;/li&gt;
&lt;li&gt;    &lt;span style="color:#0000ff"&gt;End&lt;/span&gt; &lt;span style="color:#0000ff"&gt;Function&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;Function&lt;/span&gt; getReader() &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#2b91af"&gt;SqlDataReader&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;        getReader = getReader(-1)&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt; &lt;/li&gt;
&lt;li&gt;    &lt;span style="color:#0000ff"&gt;End&lt;/span&gt; &lt;span style="color:#0000ff"&gt;Function&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;Function&lt;/span&gt; getTable() &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#2b91af"&gt;DataTable&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;        getTable = getTable(-1)&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;End&lt;/span&gt; &lt;span style="color:#0000ff"&gt;Function&lt;/span&gt;&lt;/li&gt;
&lt;li&gt; &lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;    &lt;span style="color:#0000ff"&gt;Function&lt;/span&gt; getTable(&lt;span style="color:#0000ff"&gt;ByVal&lt;/span&gt; timeout &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Int32&lt;/span&gt;) &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#2b91af"&gt;DataTable&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;        &lt;span style="color:#0000ff"&gt;Dim&lt;/span&gt; strError &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#0000ff"&gt;String&lt;/span&gt; = &lt;span style="color:#a31515"&gt;""&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;        &lt;span style="color:#0000ff"&gt;Try&lt;/span&gt;&lt;/li&gt;
&lt;li&gt; &lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;            &lt;span style="color:#0000ff"&gt;Dim&lt;/span&gt; aParams &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#2b91af"&gt;SqlParameter&lt;/span&gt;() = &lt;span style="color:#0000ff"&gt;Nothing&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;            &lt;span style="color:#0000ff"&gt;Dim&lt;/span&gt; a &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Int16&lt;/span&gt; = 0&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt; &lt;/li&gt;
&lt;li&gt;            &lt;span style="color:#0000ff"&gt;Dim&lt;/span&gt; db &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Database&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;            db = &lt;span style="color:#0000ff"&gt;New&lt;/span&gt; &lt;span style="color:#2b91af"&gt;SqlDatabase&lt;/span&gt;(cs(_db))&lt;/li&gt;
&lt;li&gt; &lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;            &lt;span style="color:#0000ff"&gt;Dim&lt;/span&gt; dbCommand &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; Common.&lt;span style="color:#2b91af"&gt;DbCommand&lt;/span&gt; = db.GetStoredProcCommand(_storedProcName)&lt;/li&gt;
&lt;li&gt; &lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;            &lt;span style="color:#008000"&gt;'set the command timeout&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;            &lt;span style="color:#0000ff"&gt;If&lt;/span&gt; timeout &gt; 0 &lt;span style="color:#0000ff"&gt;Then&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;                dbCommand.CommandTimeout = timeout&lt;/li&gt;
&lt;li&gt;            &lt;span style="color:#0000ff"&gt;End&lt;/span&gt; &lt;span style="color:#0000ff"&gt;If&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt; &lt;/li&gt;
&lt;li&gt;            &lt;span style="color:#0000ff"&gt;For&lt;/span&gt; &lt;span style="color:#0000ff"&gt;Each&lt;/span&gt; cp &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#2b91af"&gt;commandParameter&lt;/span&gt; &lt;span style="color:#0000ff"&gt;In&lt;/span&gt; commandParameters&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;                db.AddInParameter(dbCommand, cp.ParamName, cp.ParamType, cp.ParamValue)&lt;/li&gt;
&lt;li&gt;            &lt;span style="color:#0000ff"&gt;Next&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt; &lt;/li&gt;
&lt;li&gt;            &lt;span style="color:#0000ff"&gt;Return&lt;/span&gt; db.ExecuteDataSet(dbCommand).Tables(0)&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;        &lt;span style="color:#0000ff"&gt;Catch&lt;/span&gt; ex &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#2b91af"&gt;Exception&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;            strError = &lt;span style="color:#a31515"&gt;"query: "&lt;/span&gt; &amp; _storedProcName &amp; &lt;span style="color:#a31515"&gt;"&lt;BR&gt;"&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;            &lt;span style="color:#0000ff"&gt;For&lt;/span&gt; &lt;span style="color:#0000ff"&gt;Each&lt;/span&gt; cp &lt;span style="color:#0000ff"&gt;As&lt;/span&gt; &lt;span style="color:#2b91af"&gt;commandParameter&lt;/span&gt; &lt;span style="color:#0000ff"&gt;In&lt;/span&gt; commandParameters&lt;/li&gt;
&lt;li&gt;                &lt;span style="color:#0000ff"&gt;If&lt;/span&gt; &lt;span style="color:#0000ff"&gt;Not&lt;/span&gt; cp.ParamValue &lt;span style="color:#0000ff"&gt;Is&lt;/span&gt; &lt;span style="color:#0000ff"&gt;Nothing&lt;/span&gt; &lt;span style="color:#0000ff"&gt;Then&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;                    strError += &lt;span style="color:#a31515"&gt;"params: "&lt;/span&gt; &amp; cp.ParamName &amp; &lt;span style="color:#a31515"&gt;" = "&lt;/span&gt; &amp; cp.ParamValue.ToString &amp; &lt;span style="color:#a31515"&gt;"&lt;br&gt;"&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;                &lt;span style="color:#0000ff"&gt;Else&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;                    strError += &lt;span style="color:#a31515"&gt;"params: "&lt;/span&gt; &amp; cp.ParamName &amp; &lt;span style="color:#a31515"&gt;" = Nothing&lt;br&gt;"&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;                &lt;span style="color:#0000ff"&gt;End&lt;/span&gt; &lt;span style="color:#0000ff"&gt;If&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;            &lt;span style="color:#0000ff"&gt;Next&lt;/span&gt;&lt;/li&gt;
&lt;li&gt; &lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;            ex.Source = strError&lt;/li&gt;
&lt;li&gt;            &lt;span style="color:#0000ff"&gt;Throw&lt;/span&gt; ex&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt;        &lt;span style="color:#0000ff"&gt;End&lt;/span&gt; &lt;span style="color:#0000ff"&gt;Try&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;        getTable = &lt;span style="color:#0000ff"&gt;Nothing&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt; &lt;/li&gt;
&lt;li&gt;    &lt;span style="color:#0000ff"&gt;End&lt;/span&gt; &lt;span style="color:#0000ff"&gt;Function&lt;/span&gt;&lt;/li&gt;
&lt;li style="background: #f3f3f3"&gt; &lt;/li&gt;
&lt;li&gt;&lt;span style="color:#0000ff"&gt;End&lt;/span&gt; &lt;span style="color:#0000ff"&gt;Class&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;br /&gt;&lt;a href=http://devshed.us/Blogs/tabid/227/EntryId/815/StoredProcedure-Class.aspx&gt;More ...&lt;/a&gt;</description>
      <author>steve@4penny.net</author>
      <comments>http://devshed.us/Blogs/tabid/227/EntryId/815/StoredProcedure-Class.aspx#Comments</comments>
      <slash:comments>2</slash:comments>
      <guid isPermaLink="true">http://devshed.us/Blogs/tabid/227/EntryId/815/StoredProcedure-Class.aspx</guid>
      <pubDate>Thu, 09 Dec 2010 21:16:35 GMT</pubDate>
      <trackback:ping>http://devshed.usDesktopModules/BlogTrackback.aspx?id=815</trackback:ping>
    </item>
    <item>
      <title>SmartXLS</title>
      <link>http://devshed.us/Blogs/tabid/227/EntryId/642/SmartXLS.aspx</link>
      <description>&lt;p&gt;I’m testing a product called SmartXLS, here’s my first stab at a class to use it’s properties&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;Imports &lt;/span&gt;&lt;span style="color: #2b91af"&gt;SmartXLS
&lt;/span&gt;&lt;span style="color: blue"&gt;Imports &lt;/span&gt;System.IO

&lt;span style="color: blue"&gt;Public Class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;SmartXLS
    &lt;/span&gt;&lt;span style="color: blue"&gt;Dim &lt;/span&gt;wb &lt;span style="color: blue"&gt;As New &lt;/span&gt;&lt;span style="color: #2b91af"&gt;WorkBook
    &lt;/span&gt;&lt;span style="color: green"&gt;''' &lt;/span&gt;&lt;span style="color: gray"&gt;&lt;remarks&gt;&lt;/span&gt;&lt;span style="color: green"&gt;zero based&lt;/span&gt;&lt;span style="color: gray"&gt;&lt;/remarks&gt;
    &lt;/span&gt;&lt;span style="color: blue"&gt;Public &lt;/span&gt;Columns &lt;span style="color: blue"&gt;As &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Int16
    &lt;/span&gt;&lt;span style="color: green"&gt;''' &lt;/span&gt;&lt;span style="color: gray"&gt;&lt;remarks&gt;&lt;/span&gt;&lt;span style="color: green"&gt;zero based&lt;/span&gt;&lt;span style="color: gray"&gt;&lt;/remarks&gt;
    &lt;/span&gt;&lt;span style="color: blue"&gt;Public &lt;/span&gt;Rows &lt;span style="color: blue"&gt;As &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Int16

    &lt;/span&gt;&lt;span style="color: green"&gt;''' &lt;/span&gt;&lt;span style="color: gray"&gt;&lt;summary&gt;
    &lt;/span&gt;&lt;span style="color: green"&gt;''' Creates a new instance of the SmartXML class
    ''' &lt;/span&gt;&lt;span style="color: gray"&gt;&lt;/summary&gt;
    &lt;/span&gt;&lt;span style="color: green"&gt;''' &lt;/span&gt;&lt;span style="color: gray"&gt;&lt;param name="strFileName"&gt;&lt;/span&gt;&lt;span style="color: green"&gt;Excel FileName, includes the fill path&lt;/span&gt;&lt;span style="color: gray"&gt;&lt;/param&gt;
    &lt;/span&gt;&lt;span style="color: green"&gt;''' &lt;/span&gt;&lt;span style="color: gray"&gt;&lt;remarks&gt;&lt;/remarks&gt;
    &lt;/span&gt;&lt;span style="color: blue"&gt;Sub New&lt;/span&gt;(&lt;span style="color: blue"&gt;ByVal &lt;/span&gt;strFileName &lt;span style="color: blue"&gt;As String&lt;/span&gt;)
        &lt;span style="color: blue"&gt;Dim &lt;/span&gt;strExt &lt;span style="color: blue"&gt;As String &lt;/span&gt;= &lt;span style="color: #2b91af"&gt;Path&lt;/span&gt;.GetExtension(strFileName)

        &lt;span style="color: blue"&gt;Select Case &lt;/span&gt;strExt.ToUpper
            &lt;span style="color: blue"&gt;Case &lt;/span&gt;&lt;span style="color: #a31515"&gt;".XLS"
                &lt;/span&gt;wb.read(strFileName)
            &lt;span style="color: blue"&gt;Case &lt;/span&gt;&lt;span style="color: #a31515"&gt;".XLSX"
                &lt;/span&gt;wb.readXLSX(strFileName)
            &lt;span style="color: blue"&gt;Case Else
                Throw New &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Exception&lt;/span&gt;(&lt;span style="color: #a31515"&gt;"Invalid file name"&lt;/span&gt;)
        &lt;span style="color: blue"&gt;End Select

        &lt;/span&gt;Columns = wb.LastCol
        Rows = wb.LastRow

    &lt;span style="color: blue"&gt;End Sub

    &lt;/span&gt;&lt;span style="color: green"&gt;''' &lt;/span&gt;&lt;span style="color: gray"&gt;&lt;summary&gt;
    &lt;/span&gt;&lt;span style="color: green"&gt;''' To Read an Excel File and return a Generic List of the column headers
    ''' &lt;/span&gt;&lt;span style="color: gray"&gt;&lt;/summary&gt;
    &lt;/span&gt;&lt;span style="color: green"&gt;''' &lt;/span&gt;&lt;span style="color: gray"&gt;&lt;returns&gt;&lt;/span&gt;&lt;span style="color: green"&gt;A Generic List of String values&lt;/span&gt;&lt;span style="color: gray"&gt;&lt;/returns&gt;
    &lt;/span&gt;&lt;span style="color: blue"&gt;Public Function &lt;/span&gt;GetExcelColumnHeaders() &lt;span style="color: blue"&gt;As &lt;/span&gt;&lt;span style="color: #2b91af"&gt;List&lt;/span&gt;(&lt;span style="color: blue"&gt;Of String&lt;/span&gt;)
        &lt;span style="color: blue"&gt;Dim &lt;/span&gt;oColumnHeaders &lt;span style="color: blue"&gt;As New &lt;/span&gt;&lt;span style="color: #2b91af"&gt;List&lt;/span&gt;(&lt;span style="color: blue"&gt;Of String&lt;/span&gt;)
        &lt;span style="color: blue"&gt;Dim &lt;/span&gt;Dt &lt;span style="color: blue"&gt;As New &lt;/span&gt;&lt;span style="color: #2b91af"&gt;DataTable&lt;/span&gt;()

        &lt;span style="color: blue"&gt;Try

            Dim &lt;/span&gt;i &lt;span style="color: blue"&gt;As &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Int32
            &lt;/span&gt;&lt;span style="color: blue"&gt;For &lt;/span&gt;i = 0 &lt;span style="color: blue"&gt;To &lt;/span&gt;Columns
                oColumnHeaders.Add(wb.getFormattedText(0, i))
            &lt;span style="color: blue"&gt;Next

            Return &lt;/span&gt;oColumnHeaders
        &lt;span style="color: blue"&gt;Catch &lt;/span&gt;ex &lt;span style="color: blue"&gt;As &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Exception
            &lt;/span&gt;&lt;span style="color: blue"&gt;Throw &lt;/span&gt;ex
        &lt;span style="color: blue"&gt;End Try

    End Function

    &lt;/span&gt;&lt;span style="color: green"&gt;''' &lt;/span&gt;&lt;span style="color: gray"&gt;&lt;summary&gt;
    &lt;/span&gt;&lt;span style="color: green"&gt;''' To Read an Excel File and Get a DataTable with its values
    ''' &lt;/span&gt;&lt;span style="color: gray"&gt;&lt;/summary&gt;
    &lt;/span&gt;&lt;span style="color: green"&gt;''' &lt;/span&gt;&lt;span style="color: gray"&gt;&lt;returns&gt;&lt;/span&gt;&lt;span style="color: green"&gt;A DataTable with Excel Values&lt;/span&gt;&lt;span style="color: gray"&gt;&lt;/returns&gt;
    &lt;/span&gt;&lt;span style="color: green"&gt;''' &lt;/span&gt;&lt;span style="color: gray"&gt;&lt;remarks&gt;&lt;/remarks&gt;
    &lt;/span&gt;&lt;span style="color: blue"&gt;Public Function &lt;/span&gt;GetExcelAsDataTable() &lt;span style="color: blue"&gt;As &lt;/span&gt;&lt;span style="color: #2b91af"&gt;DataTable

        &lt;/span&gt;&lt;span style="color: blue"&gt;Dim &lt;/span&gt;Dt &lt;span style="color: blue"&gt;As New &lt;/span&gt;&lt;span style="color: #2b91af"&gt;DataTable&lt;/span&gt;()

        &lt;span style="color: blue"&gt;Dim &lt;/span&gt;c &lt;span style="color: blue"&gt;As Integer &lt;/span&gt;= 0
        &lt;span style="color: blue"&gt;Dim &lt;/span&gt;r &lt;span style="color: blue"&gt;As Integer &lt;/span&gt;= 0

        &lt;span style="color: green"&gt;'add the correct number of columns to our datatable
        &lt;/span&gt;&lt;span style="color: blue"&gt;For &lt;/span&gt;c = 0 &lt;span style="color: blue"&gt;To &lt;/span&gt;Columns
            Dt.Columns.Add(GetExcelColumnHeaders(c))
        &lt;span style="color: blue"&gt;Next

        &lt;/span&gt;&lt;span style="color: green"&gt;'skip the first row
        &lt;/span&gt;&lt;span style="color: blue"&gt;For &lt;/span&gt;r = 1 &lt;span style="color: blue"&gt;To &lt;/span&gt;Rows
            &lt;span style="color: blue"&gt;Dim &lt;/span&gt;dr &lt;span style="color: blue"&gt;As &lt;/span&gt;&lt;span style="color: #2b91af"&gt;DataRow &lt;/span&gt;= Dt.NewRow

            &lt;span style="color: blue"&gt;For &lt;/span&gt;c = 0 &lt;span style="color: blue"&gt;To &lt;/span&gt;Columns
                dr(c) = (wb.getFormattedText(r, c))
            &lt;span style="color: blue"&gt;Next
            &lt;/span&gt;Dt.Rows.Add(dr)

        &lt;span style="color: blue"&gt;Next

        Return &lt;/span&gt;Dt
    &lt;span style="color: blue"&gt;End Function

End Class

&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href=http://devshed.us/Blogs/tabid/227/EntryId/642/SmartXLS.aspx&gt;More ...&lt;/a&gt;</description>
      <author>steve@4penny.net</author>
      <comments>http://devshed.us/Blogs/tabid/227/EntryId/642/SmartXLS.aspx#Comments</comments>
      <slash:comments>0</slash:comments>
      <guid isPermaLink="true">http://devshed.us/Blogs/tabid/227/EntryId/642/SmartXLS.aspx</guid>
      <pubDate>Thu, 23 Sep 2010 14:52:08 GMT</pubDate>
      <trackback:ping>http://devshed.usDesktopModules/BlogTrackback.aspx?id=642</trackback:ping>
    </item>
    <item>
      <title>Decorate (document) a class in VB.NET</title>
      <link>http://devshed.us/Blogs/tabid/227/EntryId/641/Decorate-document-a-class-in-VB-NET.aspx</link>
      <description>&lt;p&gt;I ran across a technique that I’ve not used before (you learn something new every day, don’t you?) that I want to document here. It involves decorating a class so that the methods and properties show up in VB when you call the class. &lt;/p&gt;  &lt;p&gt;Basically, you just add comments above the methods like this:&lt;/p&gt;  &lt;pre class="code"&gt;    &lt;span style="color: green"&gt;''' &lt;/span&gt;&lt;span style="color: gray"&gt;&lt;summary&gt;
    &lt;/span&gt;&lt;span style="color: green"&gt;''' Creates a new instance of the ExcelHelper class
    ''' &lt;/span&gt;&lt;span style="color: gray"&gt;&lt;/summary&gt;
    &lt;/span&gt;&lt;span style="color: green"&gt;''' &lt;/span&gt;&lt;span style="color: gray"&gt;&lt;param name="strfile"&gt;&lt;/span&gt;&lt;span style="color: green"&gt;Excel File as Stream&lt;/span&gt;&lt;span style="color: gray"&gt;&lt;/param&gt;
    &lt;/span&gt;&lt;span style="color: blue"&gt;Public Sub New&lt;/span&gt;(&lt;span style="color: blue"&gt;ByVal &lt;/span&gt;strFile &lt;span style="color: blue"&gt;As String&lt;/span&gt;)
        myWorkbook = &lt;span style="color: #2b91af"&gt;SpreadsheetDocument&lt;/span&gt;.Open(strFile, &lt;span style="color: blue"&gt;False&lt;/span&gt;)
        workbookpart = myWorkbook.WorkbookPart
        worksheetPart = workbookpart.WorksheetParts.FirstOrDefault()
        stringTablePart = workbookpart.SharedStringTablePart
        columns = GetExcelColumns()
    &lt;span style="color: blue"&gt;End Sub

&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;And when you call the class, you can see the documentation:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://devshed.us/Portals/3/Blog/Files/3/641/WLW-DecoratedocumentaclassinVB.NET_8D22-SNAGHTMLdc89093.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="SNAGHTMLdc89093" border="0" alt="SNAGHTMLdc89093" src="/Portals/3/Blog/Files/3/641/WLW-DecoratedocumentaclassinVB.NET_8D22-SNAGHTMLdc89093_thumb.png" width="485" height="104" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;Nice, right?&lt;/p&gt;

&lt;p&gt;The following XML comment tags are officially supported in VB.NET: c,code, example, exception, include, list, para, param, paramref, permission, remarks, returns, see, seealso, summary and typeparam.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;c&lt;/b&gt;: This tag is used to denote code, so it can be used to identify sample code associated with a particular entity within the source code. Note that the tag can only be used to represent a single line of code or to denote that some of the text on a line should be marked up as code. Example: &lt;c&gt;Dim MyObject As MyType&lt;/c&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;code&lt;/b&gt;: This tag is used to denote more than one line of code, so it can be used to identify longer areas of sample code.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;example&lt;/b&gt;: This tag may be used to describe an example of using a particular method or class. It is possible to include code samples within the &lt;b&gt;example&lt;/b&gt; tag by making use of either the &lt;b&gt;c&lt;/b&gt; or &lt;b&gt;code&lt;/b&gt; tags.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;exception&lt;/b&gt;: The &lt;b&gt;exception&lt;/b&gt; tag allows a method's exception handling to be documented. The &lt;i&gt;cref&lt;/i&gt; attribute allows the namespace of the exception handler to be included. Example: &lt;exception cref="System.Exception" &gt;Throws an exception if the customer is not found.&lt;/exception&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;include&lt;/b&gt;: This tag allows documentation to be imported from an external XML file rather than being stored within the source code itself. As such it may be useful if the documentation is written by people other than the software developers (e.g. technical writers).&lt;/p&gt;

&lt;p&gt;&lt;b&gt;list&lt;/b&gt;: This tag allows bulleted or numbered lists or tables to be added to XML comments.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;para&lt;/b&gt;: This tag indicates that the text within the tags should be formatted within a paragraph. As such it can be used to format text within other tags such as &lt;b&gt;summary&lt;/b&gt; or &lt;b&gt;returns&lt;/b&gt;. Example: &lt;para&gt;This is a paragraph&lt;/para&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;param&lt;/b&gt;: The &lt;b&gt;param&lt;/b&gt; tag is used to document a method's arguments. The tag's &lt;i&gt;name&lt;/i&gt; attribute specifies the name of the argument to which the tag refers. The tag is also used by Visual Studio's Intellisense system to show a description of a method's arguments. It is also used by the Visual Studio Object Browser. Example: &lt;param name="FileName" &gt;The filename of the file to be loaded.&lt;/param&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;paramref&lt;/b&gt;: This tag can be used to refer to a method's argument elsewhere within the method's XML comments. The tag's &lt;i&gt;name&lt;/i&gt; attribute specifies the name of the argument to which the tag refers. Note that the &lt;b&gt;param&lt;/b&gt; tag is actually used to describe the parameter. Example: Use the &lt;paramref name="FileName"/&gt; argument to specify which filename is loaded.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;permission&lt;/b&gt;: The &lt;b&gt;permission&lt;/b&gt; tag can be used to describe any special permissions a specific object needs. The object to which the permission refers is included as the cref attribute. Example: Class needs to write to the file system, ensure user has appropriate access.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;summary&lt;/b&gt;: The &lt;b&gt;summary&lt;/b&gt; tag describes a method or class, so it is the most important tag. As well as being used in a project's documentation, the tag is also used by Visual Studio's Intellisense system to show a description of the method or class being referenced. It is also used by the Visual Studio Object Browser.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;remarks&lt;/b&gt;: The &lt;b&gt;remarks&lt;/b&gt; tag can be used to supply additional information about a method or class, supplementing the details given in the &lt;b&gt;summary&lt;/b&gt; tag. As with the &lt;b&gt;summary&lt;/b&gt; tag, this tag is also used by Visual Studio's Intellisense system and the Visual Studio Object Browser.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;returns&lt;/b&gt;: Describes the return value of a method. Example: &lt;returns&gt;True if user has permission to access the resource, otherwise False.&lt;/returns&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;see&lt;/b&gt;: The &lt;b&gt;see&lt;/b&gt; tag is used to reference other entities (such as classes) in the project. The &lt;b&gt;see&lt;/b&gt; tag is intended for use within other tags such as the &lt;b&gt;summary&lt;/b&gt; tag. Example: &lt;seealso cref="System.Configuration"/&gt;&lt;/p&gt;

&lt;p&gt;&lt;b&gt;seealso&lt;/b&gt;: The &lt;b&gt;seealso&lt;/b&gt; tag resembles the &lt;b&gt;see&lt;/b&gt; tag and has identical syntax, except that the text is intended to be used to create a separate &lt;b&gt;seealso&lt;/b&gt; section for the entity's documentation.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;typeparam&lt;/b&gt;: Typeparam is used in an identical way to &lt;b&gt;param&lt;/b&gt;, except that it is used to document a type associated with a generic class or function.&lt;/p&gt;

&lt;p&gt;&lt;b&gt;value&lt;/b&gt;: Value is only used when documenting a property, and is used to describe the value assigned to that. The comment is not required for properties that are marked as read only. Example: &lt;value&gt;Sets the employee's salary&lt;/value&gt;&lt;/p&gt;&lt;br /&gt;&lt;a href=http://devshed.us/Blogs/tabid/227/EntryId/641/Decorate-document-a-class-in-VB-NET.aspx&gt;More ...&lt;/a&gt;</description>
      <author>steve@4penny.net</author>
      <comments>http://devshed.us/Blogs/tabid/227/EntryId/641/Decorate-document-a-class-in-VB-NET.aspx#Comments</comments>
      <slash:comments>0</slash:comments>
      <guid isPermaLink="true">http://devshed.us/Blogs/tabid/227/EntryId/641/Decorate-document-a-class-in-VB-NET.aspx</guid>
      <pubDate>Thu, 23 Sep 2010 14:02:12 GMT</pubDate>
      <trackback:ping>http://devshed.usDesktopModules/BlogTrackback.aspx?id=641</trackback:ping>
    </item>
  </channel>
</rss>
