<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-8756753752160166655</id><updated>2012-01-10T21:52:45.737-05:00</updated><category term='Flex'/><category term='.net'/><category term='ALM'/><category term='MySQL'/><category term='java'/><category term='CRM'/><category term='data'/><category term='boats'/><category term='oracle'/><category term='casual'/><title type='text'>Edgewaters</title><subtitle type='html'>Technology, activities, etc.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default?start-index=101&amp;max-results=100'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>164</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-4439086900551858237</id><published>2011-12-01T00:02:00.003-05:00</published><updated>2011-12-01T00:08:42.759-05:00</updated><title type='text'>Windows 8 in a VM</title><content type='html'>&lt;div&gt;I finally got my VM NAT working thanks to the comments in an &lt;a href="http://www.windows7hacker.com/index.php/2011/09/install-windows-8-developer-preview-on-virtualbox/"&gt;installation blog post&lt;/a&gt;.  The key was changing the Adapter Type (Network - Advanced) to Intel PRO /1000 MT Desktop.  As soon as I restarted the VM, it recognized the adapter.&lt;br /&gt;&lt;br /&gt;Windows 8 on my Dell Duo has COMPLETELY REVOLUTIONIZED my tablet.  With Windows 7, the Duo was better in "netbook mode" but now I rarely flip to the keyboard.  The split on-screen keyboard is a huge improvement and the pinch-zoom on IE 10 is FANTASTIC.&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-4439086900551858237?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/4439086900551858237/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=4439086900551858237' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/4439086900551858237'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/4439086900551858237'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2011/12/windows-8-in-vm.html' title='Windows 8 in a VM'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-3397526205317526927</id><published>2011-09-07T11:20:00.001-04:00</published><updated>2011-09-07T11:20:44.832-04:00</updated><title type='text'>Supported Extensions for CRM 2011</title><content type='html'>&lt;div class=WordSection1&gt;&lt;p class=MsoNormal&gt;I thought it was worth highlighting the &lt;a href="http://msdn.microsoft.com/en-us/library/gg328350.aspx"&gt;official Do&amp;#8217;s and Don&amp;#8217;ts of CRM extension&lt;/a&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;It seems obvious, but no modifying the physical database schema is permitted (except indexes):&lt;br&gt;&lt;br&gt;&lt;i&gt;&lt;span style='font-size:9.5pt;font-family:"Segoe UI","sans-serif";color:black'&gt;Modifications to the physical schema of the database, other than adding or updating indexes. This includes any actions performed against the database without going through System Customization. Modifying tables, stored procedures, or views in the database is not supported. Adding tables, stored procedures, or views to the database is also not supported because of referential integrity or upgrade issues. Adding indexes is supported per the guidelines in the &amp;#8220;Microsoft Dynamics&amp;nbsp;CRM&amp;nbsp;2011 Implementation Guide&amp;#8221;. This applies to all Microsoft Dynamics&amp;nbsp;CRM databases and the Microsoft Dynamics&amp;nbsp;CRM for Microsoft Office Outlook local database.&lt;/span&gt;&lt;/i&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;One infraction that I have seen cause disastrous results is saved for last:&lt;br&gt;&lt;br&gt;&lt;i&gt;&lt;span style='font-size:9.5pt;font-family:"Segoe UI","sans-serif";color:black'&gt;Editing a solutions file to edit any solution components other than Ribbons, Forms, SiteMap or Saved Queries not supported. &lt;/span&gt;&lt;/i&gt;&lt;b&gt;&lt;i&gt;&lt;span style='font-size:9.5pt;font-family:"Segoe UI","sans-serif";color:red'&gt;Defining new solution components by editing the solutions file is not supported.&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;i&gt;&lt;span style='font-size:9.5pt;font-family:"Segoe UI","sans-serif";color:black'&gt; Editing Web Resource files exported with a solution is not supported. Editing the contents of a managed solution is not supported.&lt;/span&gt;&lt;/i&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-3397526205317526927?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/3397526205317526927/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=3397526205317526927' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/3397526205317526927'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/3397526205317526927'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2011/09/supported-extensions-for-crm-2011.html' title='Supported Extensions for CRM 2011'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-4150999002394728312</id><published>2011-08-17T11:38:00.000-04:00</published><updated>2011-08-17T11:40:28.210-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ALM'/><title type='text'>TFS Build Service Tips</title><content type='html'>&lt;div class=WordSection1&gt;&lt;p class=MsoNormal&gt;My organization is hosting TFS for multiple customers.&amp;nbsp; To keep everyone isolated (and happy) we have multiple Team Project Collections, but the downside is we need to setup a separate Build Controller for each Site Collection (see &lt;a href="http://msdn.microsoft.com/en-us/library/dd236915.aspx"&gt;MSDN article&lt;/a&gt; for more pros/cons).&amp;nbsp; TFS 2010 changed to only allow a 1 to 1 pairing between a TFS Collection and a Build Controller.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;Setting up a Build Controller is fairly straightforward.&amp;nbsp; Here are some tips that I have found helpful:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoListParagraph style='text-indent:-.25in;mso-list:l0 level1 lfo1'&gt;&lt;![if !supportLists]&gt;&lt;span style='mso-list:Ignore'&gt;1.&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;Create an AD account for the service.&amp;nbsp; It&amp;#8217;s easier to grant permissions to output folders and network shares using named users/groups.&amp;nbsp; Do this before running the Build Controller wizard &amp;#8211; it will add the necessary groups and permissions for you.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoListParagraph style='text-indent:-.25in;mso-list:l0 level1 lfo1'&gt;&lt;![if !supportLists]&gt;&lt;span style='mso-list:Ignore'&gt;2.&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;Run the TFS Setup and only select &amp;#8220;Build Controller&amp;#8221; for the install.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoListParagraph style='text-indent:-.25in;mso-list:l0 level1 lfo1'&gt;&lt;![if !supportLists]&gt;&lt;span style='mso-list:Ignore'&gt;3.&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;Use the Build Controller wizard at the end of the install to connect to your Team Project Collection.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoListParagraph style='text-indent:-.25in;mso-list:l0 level1 lfo1'&gt;&lt;![if !supportLists]&gt;&lt;span style='mso-list:Ignore'&gt;4.&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;If Visual Studio is not installed on the Build Controller, copy the MS Build targets from a developer machine to:&lt;br&gt;&lt;span style='font-family:"Courier New"'&gt;&amp;nbsp; C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoListParagraph style='text-indent:-.25in;mso-list:l0 level1 lfo1'&gt;&lt;![if !supportLists]&gt;&lt;span style='mso-list:Ignore'&gt;5.&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;Add a Build project to copy our compiled output to an integration server (see example file below)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:9.5pt;font-family:Consolas;color:blue'&gt;&amp;lt;?&lt;/span&gt;&lt;span style='font-size:9.5pt;font-family:Consolas;color:#A31515'&gt;xml&lt;/span&gt;&lt;span style='font-size:9.5pt;font-family:Consolas;color:blue'&gt; &lt;/span&gt;&lt;span style='font-size:9.5pt;font-family:Consolas;color:red'&gt;version&lt;/span&gt;&lt;span style='font-size:9.5pt;font-family:Consolas;color:blue'&gt;=&lt;/span&gt;&lt;span style='font-size:9.5pt;font-family:Consolas'&gt;&amp;quot;&lt;span style='color:blue'&gt;1.0&lt;/span&gt;&amp;quot;&lt;span style='color:blue'&gt; &lt;/span&gt;&lt;span style='color:red'&gt;encoding&lt;/span&gt;&lt;span style='color:blue'&gt;=&lt;/span&gt;&amp;quot;&lt;span style='color:blue'&gt;utf-8&lt;/span&gt;&amp;quot;&lt;span style='color:blue'&gt;?&amp;gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:9.5pt;font-family:Consolas;color:blue'&gt;&amp;lt;&lt;/span&gt;&lt;span style='font-size:9.5pt;font-family:Consolas;color:#A31515'&gt;Project&lt;/span&gt;&lt;span style='font-size:9.5pt;font-family:Consolas;color:blue'&gt; &lt;/span&gt;&lt;span style='font-size:9.5pt;font-family:Consolas;color:red'&gt;xmlns&lt;/span&gt;&lt;span style='font-size:9.5pt;font-family:Consolas;color:blue'&gt;=&lt;/span&gt;&lt;span style='font-size:9.5pt;font-family:Consolas'&gt;&amp;quot;&lt;span style='color:blue'&gt;http://schemas.microsoft.com/developer/msbuild/2003&lt;/span&gt;&amp;quot;&lt;span style='color:blue'&gt;&amp;gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:9.5pt;font-family:Consolas;color:blue'&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style='font-size:9.5pt;font-family:Consolas;color:#A31515'&gt;ItemGroup&lt;/span&gt;&lt;span style='font-size:9.5pt;font-family:Consolas;color:blue'&gt;&amp;gt;&lt;/span&gt;&lt;span style='font-size:9.5pt;font-family:Consolas'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:9.5pt;font-family:Consolas;color:blue'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style='font-size:9.5pt;font-family:Consolas;color:#A31515'&gt;MySourceFiles&lt;/span&gt;&lt;span style='font-size:9.5pt;font-family:Consolas;color:blue'&gt; &lt;/span&gt;&lt;span style='font-size:9.5pt;font-family:Consolas;color:red'&gt;Include&lt;/span&gt;&lt;span style='font-size:9.5pt;font-family:Consolas;color:blue'&gt;=&lt;/span&gt;&lt;span style='font-size:9.5pt;font-family:Consolas'&gt;&amp;quot;&lt;span style='color:blue'&gt;$(OutDir)_PublishedWebsites\&amp;lt;Your Web Project&amp;gt;\**\*.*&lt;/span&gt;&amp;quot;&lt;span style='color:blue'&gt; /&amp;gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:9.5pt;font-family:Consolas;color:blue'&gt;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style='font-size:9.5pt;font-family:Consolas;color:#A31515'&gt;ItemGroup&lt;/span&gt;&lt;span style='font-size:9.5pt;font-family:Consolas;color:blue'&gt;&amp;gt;&lt;/span&gt;&lt;span style='font-size:9.5pt;font-family:Consolas'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:9.5pt;font-family:Consolas;color:blue'&gt;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style='font-size:9.5pt;font-family:Consolas;color:#A31515'&gt;Target&lt;/span&gt;&lt;span style='font-size:9.5pt;font-family:Consolas;color:blue'&gt; &lt;/span&gt;&lt;span style='font-size:9.5pt;font-family:Consolas;color:red'&gt;Name&lt;/span&gt;&lt;span style='font-size:9.5pt;font-family:Consolas;color:blue'&gt;=&lt;/span&gt;&lt;span style='font-size:9.5pt;font-family:Consolas'&gt;&amp;quot;&lt;span style='color:blue'&gt;CopyFiles&lt;/span&gt;&amp;quot;&lt;span style='color:blue'&gt;&amp;gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:9.5pt;font-family:Consolas;color:blue'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;span style='font-size:9.5pt;font-family:Consolas;color:#A31515'&gt;Copy&lt;/span&gt;&lt;span style='font-size:9.5pt;font-family:Consolas'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:9.5pt;font-family:Consolas;color:blue'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style='font-size:9.5pt;font-family:Consolas;color:red'&gt;SourceFiles&lt;/span&gt;&lt;span style='font-size:9.5pt;font-family:Consolas;color:blue'&gt;=&lt;/span&gt;&lt;span style='font-size:9.5pt;font-family:Consolas'&gt;&amp;quot;&lt;span style='color:blue'&gt;@(MySourceFiles)&lt;/span&gt;&amp;quot;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:9.5pt;font-family:Consolas;color:blue'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;span style='font-size:9.5pt;font-family:Consolas;color:red'&gt;DestinationFolder&lt;/span&gt;&lt;span style='font-size:9.5pt;font-family:Consolas;color:blue'&gt;=&lt;/span&gt;&lt;span style='font-size:9.5pt;font-family:Consolas'&gt;&amp;quot;&lt;span style='color:blue'&gt;\\&amp;lt;&lt;/span&gt;&lt;span style='color:#A31515'&gt;Network&lt;/span&gt;&lt;span style='color:blue'&gt; &lt;/span&gt;&lt;span style='color:red'&gt;Share&lt;/span&gt;&lt;span style='color:blue'&gt;&amp;gt;&lt;/span&gt;&amp;quot;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:9.5pt;font-family:Consolas'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:9.5pt;font-family:Consolas;color:blue'&gt;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;span style='font-size:9.5pt;font-family:Consolas;color:#A31515'&gt;Target&lt;/span&gt;&lt;span style='font-size:9.5pt;font-family:Consolas;color:blue'&gt;&amp;gt;&lt;/span&gt;&lt;span style='font-size:9.5pt;font-family:Consolas'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:9.5pt;font-family:Consolas;color:blue'&gt;&amp;lt;/&lt;/span&gt;&lt;span style='font-size:9.5pt;font-family:Consolas;color:#A31515'&gt;Project&lt;/span&gt;&lt;span style='font-size:9.5pt;font-family:Consolas;color:blue'&gt;&amp;gt;&lt;/span&gt;&lt;span style='font-size:9.5pt;font-family:Consolas'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:9.5pt;font-family:Consolas'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-4150999002394728312?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/4150999002394728312/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=4150999002394728312' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/4150999002394728312'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/4150999002394728312'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2011/08/tfs-build-service-tips.html' title='TFS Build Service Tips'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-7343065221349028098</id><published>2011-07-20T09:45:00.001-04:00</published><updated>2011-08-04T18:00:50.910-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CRM'/><title type='text'>CRM ideas and products I discovered at WPC 2011</title><content type='html'>&lt;div class=WordSection1&gt;&lt;p class=MsoNormal&gt;&lt;b&gt;&lt;u&gt;CRM Solutions&lt;o:p&gt;&lt;/o:p&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;There are some new change management options available in CRM 2011.&amp;nbsp; With Managed Solutions, you can achieve a layered effect where one solution builds on the next and it is even possible to isolate and rollback individual solutions.&amp;nbsp; This is particularly important for teams that have multiple simultaneous development projects proceeding at different rates/release dates.&amp;nbsp; There is a good discussion of the implications of solutions as well as fundamentals of the entire CRM development spectrum in the new &lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=23416"&gt;&lt;b&gt;CRM Developer&amp;#8217;s Training Kit&lt;/b&gt;&lt;/a&gt;.&amp;nbsp; This is tricky stuff, so make sure you get it working in a &amp;#8220;sandbox&amp;#8221; before trying this in your main Dev branch.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;b&gt;&lt;u&gt;CRM Marketplace&lt;o:p&gt;&lt;/o:p&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;I just attended the Microsoft Worldwide Partner Conference where I had the chance to talk to a number of ISVs and Microsoft engineers.&amp;nbsp; There are a lot of cool products emerging around the CRM platform.&amp;nbsp; There are two products that I am particularly keen to try out: &lt;a href="http://products.neudesic.com/pulse/features-crm.php"&gt;&lt;b&gt;NeuDesic&amp;#8217;s Pulse&lt;/b&gt;&lt;/a&gt; and &lt;a href="http://www.adxstudio.com/"&gt;&lt;b&gt;ADX Studios portals&lt;/b&gt;&lt;/a&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;Pulse is a way to bring social-like conversations into CRM and SharePoint and looks like it would have fantastic application wherever team collaboration is going on.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;ADX Studios (makers of the LINQ based SDK that Microsoft ships with CRM) has a number of ready-to-run public facing portals that have built-in claims based authentication to re-use Facebook, Google, and Live accounts.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;b&gt;&lt;u&gt;Plugins, Workflows and Dialogs&lt;o:p&gt;&lt;/o:p&gt;&lt;/u&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;Finally, I just came across this helpful &lt;a href="http://blogs.msdn.com/b/crm/archive/2011/06/22/options-plugin-workflow-or-dialog.aspx"&gt;&lt;b&gt;CRM team blog post&lt;/b&gt;&lt;/a&gt; that outlines the best time to use a plugin vs workflow.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-7343065221349028098?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/7343065221349028098/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=7343065221349028098' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/7343065221349028098'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/7343065221349028098'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2011/07/crm-ideas-and-products-i-discovered-at.html' title='CRM ideas and products I discovered at WPC 2011'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-8724739640960095736</id><published>2011-07-06T15:52:00.000-04:00</published><updated>2011-07-06T16:03:18.281-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CRM'/><title type='text'>Synchronizing CRM Records in Outlook using Local Data Groups</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://2.bp.blogspot.com/-H0meVjKf5Ow/ThS9YeXi7tI/AAAAAAAAFLw/_E5yR93dMaM/s1600/CRM_sync1-749226.png"&gt;&lt;img src="http://2.bp.blogspot.com/-H0meVjKf5Ow/ThS9YeXi7tI/AAAAAAAAFLw/_E5yR93dMaM/s320/CRM_sync1-749226.png"  border="0" alt="" id="BLOGGER_PHOTO_ID_5626330062658924242" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class="mobile-photo"&gt;&lt;a href="http://2.bp.blogspot.com/-nuHZ9JNQMbg/ThS9Yn-9mjI/AAAAAAAAFL4/aAraOAEOxYY/s1600/CRM_sync2-750700.png"&gt;&lt;img src="http://2.bp.blogspot.com/-nuHZ9JNQMbg/ThS9Yn-9mjI/AAAAAAAAFL4/aAraOAEOxYY/s320/CRM_sync2-750700.png"  border="0" alt="" id="BLOGGER_PHOTO_ID_5626330065240169010" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=WordSection1&gt;&lt;p class=MsoNormal&gt;My customer wanted to have all the Contacts owned by their Business Unit synchronized to Outlook and that is easily accomplished using the Local Data Groups feature!&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-8724739640960095736?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/8724739640960095736/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=8724739640960095736' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/8724739640960095736'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/8724739640960095736'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2011/07/synchronizing-crm-records-in-outlook.html' title='Synchronizing CRM Records in Outlook using Local Data Groups'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-H0meVjKf5Ow/ThS9YeXi7tI/AAAAAAAAFLw/_E5yR93dMaM/s72-c/CRM_sync1-749226.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-7605584122969948833</id><published>2011-07-01T17:39:00.001-04:00</published><updated>2011-07-06T16:03:18.281-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CRM'/><title type='text'>Bing Map Browser for CRM 2011</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://1.bp.blogspot.com/-VEWw5GvDRgM/Tg4-i_yNjyI/AAAAAAAAFGg/8Na1qBXGDXQ/s1600/BingMaps-762904.png"&gt;&lt;img src="http://1.bp.blogspot.com/-VEWw5GvDRgM/Tg4-i_yNjyI/AAAAAAAAFGg/8Na1qBXGDXQ/s320/BingMaps-762904.png"  border="0" alt="" id="BLOGGER_PHOTO_ID_5624501755590840098" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=WordSection1&gt;&lt;p class=MsoNormal&gt;There is a very usable &lt;a href="http://mapsforcrm2011.codeplex.com/"&gt;Silverlight Bing Map Browser&lt;/a&gt; on Codeplex.&amp;nbsp; The documentation is a little light so here are a couple of tips on setup:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;u&gt;There are two different HTML resources&lt;/u&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoListParagraph style='text-indent:-.25in;mso-list:l0 level1 lfo1'&gt;&lt;![if !supportLists]&gt;&lt;span style='mso-list:Ignore'&gt;1.&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;LocateAddress &amp;#8211; this is used on a form like Contact to find the Lat/Lon of an address&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoListParagraph style='text-indent:-.25in;mso-list:l0 level1 lfo1'&gt;&lt;![if !supportLists]&gt;&lt;span style='mso-list:Ignore'&gt;2.&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;BingMapBrowser &amp;#8211; this is the control that maps multiple records based on the FetchXML you configure&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;u&gt;Mapping a Contact&lt;o:p&gt;&lt;/o:p&gt;&lt;/u&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;I followed the &amp;#8220;configure entity form&amp;#8221; instructions and added the web resource in a section on a new Contact form.&amp;nbsp; One thing that was confusing to me, the control only works with Lat/Lon BUT it will do an address lookup and enter Lat/Lon on your Contact form if you press the &amp;#8220;FillLatLong&amp;#8221; button.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;u&gt;Mapping multiple records&lt;/u&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;I left the default BingMapConfig.xml settings and the browser mapped all my Contacts and Accounts.&amp;nbsp; You can test it by clicking on the link in the URL property of the BingMapBrowser web resource. &amp;nbsp;&amp;nbsp;To add a link in the left nav, you need to export and modify your Sitemap (WARNING: always keep a backup copy).&amp;nbsp; I added &amp;#8220;Maps&amp;#8221; to the Workplace bar:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;SubArea Id=&amp;quot;nav_maps&amp;quot; Url=&amp;quot;$webresource:new_BingMapBrowser&amp;quot; &amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Titles&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Title LCID=&amp;quot;1033&amp;quot; Title=&amp;quot;Maps&amp;quot;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Titles&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/SubArea&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-7605584122969948833?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/7605584122969948833/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=7605584122969948833' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/7605584122969948833'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/7605584122969948833'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2011/07/bing-map-browser-for-crm-2011.html' title='Bing Map Browser for CRM 2011'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-VEWw5GvDRgM/Tg4-i_yNjyI/AAAAAAAAFGg/8Na1qBXGDXQ/s72-c/BingMaps-762904.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-1234032388059593458</id><published>2011-06-29T14:37:00.001-04:00</published><updated>2011-06-29T14:37:02.875-04:00</updated><title type='text'>Cool OneNote feature</title><content type='html'>&lt;div class=WordSection1&gt;&lt;p class=MsoNormal&gt;I was already very impressed by OneNote, but I am blown-away after stumbling upon the built-in OCR capability.&amp;nbsp; When I did a content search for &amp;#8220;Attendee&amp;#8221; it not only found the image, it even &lt;b&gt;highlighted&lt;/b&gt; the word on the image!&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;img width=760 height=709 id="Picture_x0020_1" src="cid:image001.png@01CC3669.FCBE07C0"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-1234032388059593458?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/1234032388059593458/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=1234032388059593458' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/1234032388059593458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/1234032388059593458'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2011/06/cool-onenote-feature.html' title='Cool OneNote feature'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-3164448279394825709</id><published>2011-06-27T16:30:00.003-04:00</published><updated>2011-06-27T16:34:33.429-04:00</updated><title type='text'>Removing the Dell DataSafe Upgrade Discount pop-up</title><content type='html'>I was baffled by a Dell product pop-up that did not appear to have a way to disable/ignore it...until I unlocked the taskbar and resized it.  After that, the entire ad was displayed, including the option "Don't remind me of dicount offerings".  Now if I can just get Dell to reimburse 30 minutes of life.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-3164448279394825709?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/3164448279394825709/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=3164448279394825709' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/3164448279394825709'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/3164448279394825709'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2011/06/removing-dell-datasafe-upgrade-discount.html' title='Removing the Dell DataSafe Upgrade Discount pop-up'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-3287358533692750428</id><published>2011-06-22T12:05:00.001-04:00</published><updated>2011-06-22T12:58:31.009-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CRM'/><title type='text'>Mail Merge Templates No Entity error</title><content type='html'>&lt;div class=WordSection1&gt;&lt;p class=MsoNormal&gt;&lt;span style='color:#1F497D'&gt;I removed an entity that we were no longer using, but the Mail Merge Templates were still there.&amp;nbsp; CRM throws an error when there are templates that are missing their entity.&amp;nbsp; I discovered this by running the &lt;a href="http://blogs.msdn.com/b/benlec/archive/2008/03/04/crmdiagtool4-for-microsoft-crm-4-0-has-been-released.aspx"&gt;CRM Diag Tool&lt;/a&gt; and the &lt;a href="http://www.stunnware.com/crm2/topic.aspx?id=TraceLogViewer"&gt;CRM Trace Log Viewer&lt;/a&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;span style='color:#1F497D'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;span style='color:#1F497D'&gt;To fix this, I had to manually set the records to &amp;#8220;deleted&amp;#8221; in the CRM database (DeletionStateCode=1).&amp;nbsp; Lesson learned: remove Mail Templates before deleting an entity!&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;span style='color:#1F497D'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-3287358533692750428?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/3287358533692750428/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=3287358533692750428' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/3287358533692750428'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/3287358533692750428'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2011/06/mail-merge-templates-no-entity-error.html' title='Mail Merge Templates No Entity error'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-1043738322186783428</id><published>2011-06-02T16:41:00.001-04:00</published><updated>2011-06-22T12:58:37.400-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='data'/><title type='text'>Oracle regexp_replace function</title><content type='html'>&lt;div class=WordSection1&gt;&lt;p class=MsoNormal&gt;I needed to remove non-ASCII characters from an Oracle column and this regular expression did the trick nicely:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;update TABLE set COLUMN = regexp_replace( COLUMN,'[^a-z,_, ,A-Z,0-9,@,&amp;amp;,$,:,.,%,'']','');&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-1043738322186783428?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/1043738322186783428/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=1043738322186783428' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/1043738322186783428'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/1043738322186783428'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2011/06/oracle-regexpreplace-function.html' title='Oracle regexp_replace function'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-473901978343356797</id><published>2011-05-20T15:13:00.001-04:00</published><updated>2011-05-20T15:18:35.006-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CRM'/><title type='text'>CRM 4.0 SRS Connector "Same Account" Setup Error</title><content type='html'>&lt;div class=WordSection1&gt;&lt;p class=MsoNormal&gt;After performing my &lt;a href="http://edgewaters.blogspot.com/2011/01/troubleshooting-crm-ssrs-errors.html"&gt;steps for troubleshooting SSRS issues in CRM&lt;/a&gt;, I realized my CRM environment was having a double-hop error saying &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal style='margin-left:.5in'&gt;&lt;span style='color:red'&gt;Cannot create a connection to data source 'Portal'.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='margin-left:.5in'&gt;&lt;span style='color:red'&gt;Login failed for user 'NT AUTHORITY\ANONYMOUS LOGON'&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='margin-left:.5in'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;I was getting an error while trying to install the CRM SRS Connector:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal style='margin-left:.5in'&gt;&lt;span style='color:red'&gt;A Microsoft Dynamics CRM Server component is using the same account as the instance of SQL Server Reporting Services&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;My SSRS Service was running as Network Service.&amp;nbsp; I changed it to run as an AD user account that has database permissions and that took care of the setup error and SRS connector completed.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;After changing the CRM SSRS Data Source I got an error saying:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal style='margin-left:.5in'&gt;&lt;span style='color:red'&gt;Login credentials not being passed for one or more data source&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;Then I remembered my CRM was on Rollup 11, so I installed the SRS Rollup 11.&amp;nbsp; After an IISRESET my reports finally came up.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-473901978343356797?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/473901978343356797/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=473901978343356797' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/473901978343356797'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/473901978343356797'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2011/05/crm-40-srs-connector-same-account-setup.html' title='CRM 4.0 SRS Connector &quot;Same Account&quot; Setup Error'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-6917561388961993191</id><published>2011-05-10T11:59:00.000-04:00</published><updated>2011-05-20T15:18:54.421-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='data'/><title type='text'>Rendering HTML in SSRS 2008 Reports</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://2.bp.blogspot.com/-8aQIUO9Yky0/TclhFQLhIFI/AAAAAAAAEIE/MIOTZnw9MoU/s1600/SSRS_HTML-721254.png"&gt;&lt;img src="http://2.bp.blogspot.com/-8aQIUO9Yky0/TclhFQLhIFI/AAAAAAAAEIE/MIOTZnw9MoU/s320/SSRS_HTML-721254.png"  border="0" alt="" id="BLOGGER_PHOTO_ID_5605117954109808722" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=WordSection1&gt;&lt;p class=MsoNormal&gt;Some of the data in my report was stored with simple HTML formatting tags.&amp;nbsp; It turns out that the expressions I had on my report was already a &amp;#8220;placeholder&amp;#8221; and SSRS Placeholders have the ability to set the Markup Type to &amp;#8220;HTML &amp;#8211; Interpret HTML tags as styles&amp;#8221;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;Note: &amp;nbsp;I had to click &lt;i&gt;THREE&lt;/i&gt; times on the expression to drill past the Rectangle and Text Box containers to finally select the expression placeholder.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-6917561388961993191?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/6917561388961993191/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=6917561388961993191' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/6917561388961993191'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/6917561388961993191'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2011/05/rendering-html-in-ssrs-2008-reports.html' title='Rendering HTML in SSRS 2008 Reports'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-8aQIUO9Yky0/TclhFQLhIFI/AAAAAAAAEIE/MIOTZnw9MoU/s72-c/SSRS_HTML-721254.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-3043023868226078614</id><published>2011-03-22T11:45:00.001-04:00</published><updated>2011-05-20T15:19:05.992-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><title type='text'>SOLVED: Connecting to Team Foundation Server 2010 (TFS 2010) from Visual Studio 2008 (VS2008)</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://3.bp.blogspot.com/--2yTLjfX4G8/TYjEKtP6lOI/AAAAAAAADL8/JV1gwmW3rQ4/s1600/TFS1-745748.png"&gt;&lt;img src="http://3.bp.blogspot.com/--2yTLjfX4G8/TYjEKtP6lOI/AAAAAAAADL8/JV1gwmW3rQ4/s320/TFS1-745748.png"  border="0" alt="" id="BLOGGER_PHOTO_ID_5586931025977185506" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=WordSection1&gt;&lt;p class=MsoNormal&gt;It took two different &lt;a href="http://social.msdn.microsoft.com/Forums/eu/vstsstart/thread/c7a2fe92-bac2-4c3a-b7bf-23193cc625bc"&gt;forum posts&lt;/a&gt; for me to get this working, so this deserves permanent blog recognition.&amp;nbsp; The key was that Visual Studio 2008 doesn&amp;#8217;t have a concept of TFS &amp;#8220;Collections&amp;#8221; so you have to help it by providing the URL to the exact collection you are connecting to.&amp;nbsp; Not sure what the URL is?&amp;nbsp; Open up the collection in VS 2010 and copy the URL property in the Collection Properties.&amp;nbsp; Here are the steps from the forum post:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p style='margin-left:12.0pt;background:white'&gt;&lt;span style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#333333'&gt;To connect to TFS 2010 using VS2008, you need to install the below components in mentioned order. The Installation order is really important to make it work.&lt;/span&gt;&lt;span style='font-family:"Segoe UI","sans-serif";color:#333333'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='mso-margin-top-alt:0in;margin-right:0in;margin-bottom:0in;margin-left:12.0pt;margin-bottom:.0001pt;line-height:125%;background:white'&gt;&lt;span style='font-size:11.0pt;line-height:125%;font-family:"Calibri","sans-serif";color:#333333'&gt;- Install Visual Studio 2008&lt;br&gt;- Install &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=0ed12659-3d41-4420-bbb0-a46e51bfca86&amp;amp;displaylang=en"&gt;Team Explorer 2008&lt;/a&gt; &lt;br&gt;- Install &lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=fbee1648-7106-44a7-9649-6d9f6d58056e&amp;amp;displaylang=en"&gt;Visual Studio 2008 SP1&lt;/a&gt; (This will upgrade both VS2008 and Team Explorer 2008 to SP1)&lt;br&gt;- Install &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=cf13ea45-d17b-4edc-8e6c-6c5b208ec54d&amp;amp;displaylang=en"&gt;VSTS 2008 Forward Compatibility Update&lt;/a&gt; &lt;/span&gt;&lt;span style='font-family:"Segoe UI","sans-serif";color:#333333'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left:12.0pt;line-height:125%;background:white'&gt;&lt;span style='font-size:11.0pt;line-height:125%;font-family:"Calibri","sans-serif";color:#333333'&gt;As TFS2010 introduces the notion of Team Project Collections. After the installation is completed successfully, you should provide the&amp;nbsp;entire URL to connect TFS2010 server. &lt;/span&gt;&lt;span style='font-family:"Segoe UI","sans-serif";color:#333333'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left:12.0pt;line-height:125%;background:white'&gt;&lt;span style='font-size:11.0pt;line-height:125%;font-family:"Calibri","sans-serif";color:#333333'&gt;You can express the connection string as follows:&lt;/span&gt;&lt;span style='font-family:"Segoe UI","sans-serif";color:#333333'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='mso-margin-top-alt:0in;margin-right:0in;margin-bottom:0in;margin-left:12.0pt;margin-bottom:.0001pt;line-height:125%;background:white'&gt;&lt;em&gt;&lt;span style='font-family:"Segoe UI","sans-serif";color:#333333'&gt;http://&amp;lt;serverName&amp;gt;:&amp;lt;port&amp;gt;/&amp;lt;vdir&amp;gt;/&amp;lt;collectionName&amp;gt;&lt;/span&gt;&lt;/em&gt;&lt;span style='font-family:"Segoe UI","sans-serif";color:#333333'&gt; (e.g.&amp;nbsp;&lt;a href="http://tfsserver:8080/Tfs/ProjectCollectionName"&gt;http://TfsServer:8080/Tfs/ProjectCollectionName &lt;/a&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left:12.0pt;background:white'&gt;&lt;span style='font-family:"Segoe UI","sans-serif";color:#333333'&gt;The &amp;lt;vdir&amp;gt; is an optional path for the TFS web sites specified by the administrator during setup. By default it is &amp;#8220;tfs&amp;#8221;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-3043023868226078614?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/3043023868226078614/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=3043023868226078614' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/3043023868226078614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/3043023868226078614'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2011/03/solved-connecting-to-team-foundation.html' title='SOLVED: Connecting to Team Foundation Server 2010 (TFS 2010) from Visual Studio 2008 (VS2008)'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/--2yTLjfX4G8/TYjEKtP6lOI/AAAAAAAADL8/JV1gwmW3rQ4/s72-c/TFS1-745748.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-1645196816898082723</id><published>2011-03-10T13:13:00.004-05:00</published><updated>2011-03-24T11:07:18.418-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CRM'/><title type='text'>Hiding Custom ISV.Config Buttons in CRM 4.0</title><content type='html'>&lt;p class="MsoNormal"&gt;I needed to hide/show my ISV.config buttons (note the ToolTip is the key here): &lt;/p&gt;&lt;pre  style="font-family:arial;font-size:12px;border:1px dashed #CCCCCC;width:99%;height:auto;overflow:auto;background:#f0f0f0;padding:0px;color:#000000;text-align:left;line-height:20px;"&gt;&lt;code style="color:#000000;word-wrap:normal;"&gt; &amp;lt;Entity name="new_myentity"&amp;gt;  &lt;br /&gt;  &amp;lt;ToolBar&amp;gt;  &lt;br /&gt;   &amp;lt;Button AccessKey="P" Icon="/_imgs/button_approve.ico"   &lt;br /&gt;     ValidForCreate="1" ValidForUpdate="1"   &lt;br /&gt;     JavaScript="ApproveApplication();"&amp;gt;  &lt;br /&gt;    &amp;lt;Titles&amp;gt;  &lt;br /&gt;     &amp;lt;Title LCID="1033" Text="Approve" /&amp;gt;  &lt;br /&gt;    &amp;lt;/Titles&amp;gt;  &lt;br /&gt;    &amp;lt;ToolTips&amp;gt;  &lt;br /&gt;     &amp;lt;ToolTip LCID="1033" Text="Approve"/&amp;gt;  &lt;br /&gt;    &amp;lt;/ToolTips&amp;gt;  &lt;br /&gt;   &amp;lt;/Button&amp;gt;  &lt;br /&gt;  &amp;lt;/ToolBar&amp;gt;  &lt;br /&gt; &amp;lt;/Entity&amp;gt;  &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;p class="MsoNormal"&gt;&lt;?xml:namespace prefix = o /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;div class="WordSection1"&gt;So I found some sources that led me to this function that I call in the Entity’s OnLoad event:&lt;o:p&gt;&lt;/o:p&gt; &lt;/div&gt;&lt;div class="WordSection1"&gt;&lt;br /&gt;&lt;pre style="BORDER-BOTTOM: #cccccc 1px dashed; TEXT-ALIGN: left; BORDER-LEFT: #cccccc 1px dashed; PADDING-BOTTOM: 0px; LINE-HEIGHT: 20px; PADDING-LEFT: 0px; WIDTH: 99%; PADDING-RIGHT: 0px; FONT-FAMILY: arial; BACKGROUND: #f0f0f0; HEIGHT: 250px; COLOR: #000000; FONT-SIZE: 12px; OVERFLOW: auto; BORDER-TOP: #cccccc 1px dashed; BORDER-RIGHT: #cccccc 1px dashed; PADDING-TOP: 0px"&gt;&lt;code style="WORD-WRAP: normal; COLOR: #000000"&gt; // hide ISV buttons that don't apply&lt;br /&gt;&lt;br /&gt; function hideISVButton(buttonTitle) {&lt;br /&gt;   var comps = document.getElementsByTagName('li');&lt;br /&gt;   for (var i = 0; i &amp;lt; comps.length; i++) {&lt;br /&gt;     if (comps[i].title == buttonTitle)&lt;br /&gt;     {&lt;br /&gt;       comps[i].style.display = "none";&lt;br /&gt;       break;&lt;br /&gt;     }&lt;br /&gt;   }&lt;br /&gt; }&lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p class="WordSection1"&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;***Interesting to note about the ISV.Config JavaScript…it calls a function that is also defined in the Entity’s OnLoad…a much cleaner alternative to real JS in the ISV.Config file:&lt;o:p&gt;&lt;/p&gt;&lt;pre style="BORDER-BOTTOM: #cccccc 1px dashed; TEXT-ALIGN: left; BORDER-LEFT: #cccccc 1px dashed; PADDING-BOTTOM: 0px; LINE-HEIGHT: 20px; PADDING-LEFT: 0px; WIDTH: 99%; PADDING-RIGHT: 0px; FONT-FAMILY: arial; BACKGROUND: #f0f0f0; HEIGHT: auto; COLOR: #000000; FONT-SIZE: 12px; OVERFLOW: auto; BORDER-TOP: #cccccc 1px dashed; BORDER-RIGHT: #cccccc 1px dashed; PADDING-TOP: 0px"&gt;&lt;code style="WORD-WRAP: normal; COLOR: #000000"&gt; ApproveApplication = function() {&lt;br /&gt; &lt;br /&gt;  // Your function code here&lt;br /&gt; &lt;br /&gt; } &lt;br /&gt;&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-1645196816898082723?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/1645196816898082723/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=1645196816898082723' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/1645196816898082723'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/1645196816898082723'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2011/03/hiding-custom-isvconfig-buttons-in-crm.html' title='Hiding Custom ISV.Config Buttons in CRM 4.0'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-9048803629317498412</id><published>2011-03-09T13:17:00.001-05:00</published><updated>2011-03-09T13:17:22.250-05:00</updated><title type='text'>Fun with Enums: Calculate next Monday</title><content type='html'>&lt;div class=WordSection1&gt;&lt;p class=MsoNormal&gt;I needed to calculate a couple of interesting dates for the Notary system.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;Next Monday: &lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;span style='font-size:10.0pt;font-family:"Courier New";color:#2B91AF'&gt;DateTime&lt;/span&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;.Now.AddDays(8 - (&lt;span style='color:blue'&gt;int&lt;/span&gt;)&lt;span style='color:#2B91AF'&gt;DateTime&lt;/span&gt;.Now.DayOfWeek)&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;The last day of the birth month, 4 years from now: &lt;br&gt;&amp;nbsp;&amp;nbsp;&lt;span style='font-size:10.0pt;font-family:"Courier New";color:blue'&gt;new&lt;/span&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt; &lt;span style='color:#2B91AF'&gt;DateTime&lt;/span&gt;(&lt;span style='color:#2B91AF'&gt;DateTime&lt;/span&gt;.Now.Year + 4, dobDt.Month, 1).AddMonths(1).AddDays(-1);&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-9048803629317498412?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/9048803629317498412/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=9048803629317498412' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/9048803629317498412'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/9048803629317498412'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2011/03/fun-with-enums-calculate-next-monday.html' title='Fun with Enums: Calculate next Monday'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-4479315160324008542</id><published>2011-03-01T13:59:00.001-05:00</published><updated>2011-03-01T13:59:52.873-05:00</updated><title type='text'>Scribe Console Access Denied Error</title><content type='html'>&lt;div class=WordSection1&gt;&lt;p class=MsoNormal&gt;Today I tried to create an Integration Process for a new DTS I had just finished, but every time the Console tried to access the file system I got an &amp;#8220;&lt;span lang=EN style='font-size:9.0pt;font-family:"Tahoma","sans-serif"'&gt;Access Denied&lt;/span&gt;&amp;#8221; error.&amp;nbsp; Turned out that restarting the Scribe AdminServer restored whatever permissions the Console needed.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-4479315160324008542?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/4479315160324008542/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=4479315160324008542' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/4479315160324008542'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/4479315160324008542'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2011/03/scribe-console-access-denied-error.html' title='Scribe Console Access Denied Error'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-6326156110691788202</id><published>2011-02-16T12:28:00.000-05:00</published><updated>2011-07-06T16:03:49.476-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='data'/><title type='text'>Date Validation is SSIS</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://2.bp.blogspot.com/-1TAKXi0pJ9Q/TVwJaVXOVeI/AAAAAAAACaU/MeOegxF-w4g/s1600/SSIS_date-752527.png"&gt;&lt;img src="http://2.bp.blogspot.com/-1TAKXi0pJ9Q/TVwJaVXOVeI/AAAAAAAACaU/MeOegxF-w4g/s320/SSIS_date-752527.png"  border="0" alt="" id="BLOGGER_PHOTO_ID_5574340786793633250" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=WordSection1&gt;&lt;p class=MsoNormal&gt;I needed to import a large amount of data from an Access database and the standard SQL Server Management Studio would fail when it ran into a record with a bad date.&amp;nbsp; I ended up saving the import as an SSIS package (file system) and then editing the DTSX file.&amp;nbsp; I was able to override bad dates to Null by adding a Derived Column &lt;a href="http://dbaspot.com/forums/sqlserver-dts/183919-ssis-date-validation-expressions.html"&gt;with a date validation&lt;/a&gt; that replaced the existing column in the dataset.&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;Full SSIS validation expression:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;span style='font-family:"Courier New"'&gt;((DT_Date)Date_to_validate &amp;lt; (DT_DATE)&amp;quot;1753-1-1&amp;quot;) ? NULL(DT_DATE) : (DT_Date)Date_to_validate&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-6326156110691788202?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/6326156110691788202/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=6326156110691788202' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/6326156110691788202'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/6326156110691788202'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2011/02/date-validation-is-ssis.html' title='Date Validation is SSIS'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/-1TAKXi0pJ9Q/TVwJaVXOVeI/AAAAAAAACaU/MeOegxF-w4g/s72-c/SSIS_date-752527.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-6403887254516150611</id><published>2011-02-10T15:21:00.001-05:00</published><updated>2011-07-06T16:03:56.463-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CRM'/><title type='text'>CRM Outlook Client Error "input string was not in a correct format"</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://1.bp.blogspot.com/-S-OOM2LMrPg/TVRI2H6atQI/AAAAAAAACRk/-GXXF-Orhbw/s1600/CRM_Reg1_001-704156.png"&gt;&lt;img src="http://1.bp.blogspot.com/-S-OOM2LMrPg/TVRI2H6atQI/AAAAAAAACRk/-GXXF-Orhbw/s320/CRM_Reg1_001-704156.png"  border="0" alt="" id="BLOGGER_PHOTO_ID_5572158733638350082" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=WordSection1&gt;&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:"Verdana","sans-serif";color:black'&gt;I ran into an issue with the CRM Outlook client configuration wizard that turned out to be a quick registry edit:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:"Verdana","sans-serif";color:black'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:"Verdana","sans-serif";color:black'&gt;Set sPositiveSign to &amp;#8220;+&amp;#8221; at&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:"Verdana","sans-serif";color:black'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:"Verdana","sans-serif";color:black'&gt;HKEY_CURRENT_USER.Control Panel.International&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:"Verdana","sans-serif";color:black'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:"Verdana","sans-serif";color:black'&gt;Make sure to update the Default and all profiles under HKEY_USERS if the person running RegEdit is not the actual user (e.g. a desktop support person) &lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-6403887254516150611?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/6403887254516150611/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=6403887254516150611' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/6403887254516150611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/6403887254516150611'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2011/02/crm-outlook-client-error-input-string.html' title='CRM Outlook Client Error &quot;input string was not in a correct format&quot;'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-S-OOM2LMrPg/TVRI2H6atQI/AAAAAAAACRk/-GXXF-Orhbw/s72-c/CRM_Reg1_001-704156.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-3112221961331858346</id><published>2011-02-02T10:08:00.003-05:00</published><updated>2011-02-02T10:38:13.966-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CRM'/><title type='text'>Automate your CRM Plugin deployment using the PluginDeveloper</title><content type='html'>&lt;div class="WordSection1"&gt;&lt;br /&gt;        &lt;p class="MsoNormal"&gt;&lt;br /&gt;            Automating the Plugin deployment process has helped our team reduce errors and speed&lt;br /&gt;            up the development and debugging of our custom plugins and workflows.&amp;nbsp; Using&lt;br /&gt;            a combination of the PluginDeveloper included in the SDK (&amp;lt;sdk install&amp;gt;\tools\plugindeveloper\),&lt;br /&gt;            &lt;a href="http://edgewaters.s3.amazonaws.com/RunPD.bat.zip"&gt;a batch file&lt;/a&gt;, and&lt;br /&gt;            configuring an external tool in Visual Studio allows our CRM build manager to deploy&lt;br /&gt;            plugins to Dev, Test or Production directly from Visual Studio.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;br /&gt;        &lt;p class="MsoNormal"&gt;&lt;br /&gt;            Our team uses separate &lt;i&gt;register.xml&lt;/i&gt; files for Dev, Test and Prod that are&lt;br /&gt;            set in Visual Studio to &lt;b&gt;Copy always&lt;/b&gt; in the &lt;i&gt;Copy to Output Directory&lt;/i&gt;&lt;br /&gt;            in the Visual Studio&amp;#8217;s File Properties window.&amp;nbsp; The batch file copies&lt;br /&gt;            the project&amp;#8217;s output directory to the PluginDeveloper&amp;#8217;s directory and&lt;br /&gt;            prompts the user to select which environment to deploy to.&lt;a href="http://4.bp.blogspot.com/_1spBxVsA54A/TUlzlB2Ax5I/AAAAAAAACIg/-Jc1T32lxZ4/s1600/p1-747630.png"&gt;&lt;br /&gt;            &lt;img src="http://4.bp.blogspot.com/_1spBxVsA54A/TUlzlB2Ax5I/AAAAAAAACIg/-Jc1T32lxZ4/s320/p1-747630.png" border="0" alt="" id="Img1" /&gt;&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;br /&gt;        &lt;p class="MsoNormal"&gt;&lt;br /&gt;            &lt;u&gt;Build the PluginDeveloper Executable&lt;/u&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;br /&gt;        &lt;p class="MsoListParagraph" style='text-indent: -.25in; mso-list: l3 level1 lfo2'&gt;&lt;br /&gt;            1.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Follow the Readme.doc in the project root.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;br /&gt;        &lt;p class="MsoListParagraph" style='text-indent: -.25in; mso-list: l3 level1 lfo2'&gt;&lt;br /&gt;            2.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Copy the RunPD.bat file to the PluginDeveloper.exe&amp;#8217;s&lt;br /&gt;            location (we use a common file system path \CRM\tools\PluginDeveloper)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;br /&gt;        &lt;br /&gt;        &lt;p class="MsoNormal"&gt;&lt;br /&gt;            &lt;u&gt;Configuring Visual Studio&amp;#8217;s External Tools&lt;/u&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;br /&gt;        &lt;p class="MsoListParagraph" style='text-indent: -.25in; mso-list: l1 level1 lfo1'&gt;&lt;br /&gt;            1.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Select the &lt;b&gt;Tools &amp;#8211; External Tools &amp;#8230;&lt;/b&gt;&lt;u&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/u&gt;&lt;/p&gt;&lt;br /&gt;        &lt;p class="MsoListParagraph" style='text-indent: -.25in; mso-list: l1 level1 lfo1'&gt;&lt;br /&gt;            2.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Click &lt;b&gt;Add&lt;/b&gt; and enter the details for the batch file&lt;u&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/u&gt;&lt;/p&gt;&lt;br /&gt;        &lt;p class="MsoListParagraph" style='margin-left: 1.0in; text-indent: -.25in; mso-list: l1 level2 lfo1'&gt;&lt;br /&gt;            a.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;For &lt;i&gt;Arguments&lt;/i&gt; specify $(BinDir) for select &lt;b&gt;Binary&lt;br /&gt;                Directory&lt;/b&gt; from the options&lt;u&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/u&gt;&lt;/p&gt;&lt;br /&gt;        &lt;p class="mobile-photo"&gt;&lt;br /&gt;        &lt;a href="http://4.bp.blogspot.com/_1spBxVsA54A/TUlzlZJf3kI/AAAAAAAACIo/oaPws-Nh1qw/s1600/p2a-749074.png"&gt;&lt;br /&gt;            &lt;img src="http://4.bp.blogspot.com/_1spBxVsA54A/TUlzlZJf3kI/AAAAAAAACIo/oaPws-Nh1qw/s320/p2a-749074.png" border="0" alt="" id="Img2" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;br /&gt;        &lt;br /&gt;        &lt;p class="MsoNormal"&gt;&lt;br /&gt;            &lt;u&gt;Create register.xml Files for Each CRM Environment&lt;o:p&gt;&lt;/o:p&gt;&lt;/u&gt;&lt;/p&gt;&lt;br /&gt;        &lt;p class="MsoListParagraph" style='text-indent: -.25in; mso-list: l2 level1 lfo3'&gt;&lt;br /&gt;            1.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;The batch file expects to find files named:&lt;u&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/u&gt;&lt;/p&gt;&lt;br /&gt;        &lt;p class="MsoListParagraph" style='margin-left: 1.0in; text-indent: -.25in; mso-list: l2 level2 lfo3'&gt;&lt;br /&gt;            a.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DEV register.xml&lt;u&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/u&gt;&lt;/p&gt;&lt;br /&gt;        &lt;p class="MsoListParagraph" style='margin-left: 1.0in; text-indent: -.25in; mso-list: l2 level2 lfo3'&gt;&lt;br /&gt;            b.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;TEST register.xml&lt;u&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/u&gt;&lt;/p&gt;&lt;br /&gt;        &lt;p class="MsoListParagraph" style='margin-left: 1.0in; text-indent: -.25in; mso-list: l2 level2 lfo3'&gt;&lt;br /&gt;            c.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;register.xml&lt;u&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/u&gt;&lt;/p&gt;&lt;br /&gt;        &lt;br /&gt;        &lt;p class="MsoNormal"&gt;&lt;br /&gt;            &lt;u&gt;Running the Tool from Visual Studio&lt;o:p&gt;&lt;/o:p&gt;&lt;/u&gt;&lt;/p&gt;&lt;br /&gt;        &lt;p class="MsoListParagraph" style='text-indent: -.25in; mso-list: l0 level1 lfo4'&gt;&lt;br /&gt;            1.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Select Tools &amp;#8211; Run Plugin Developer&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;br /&gt;        &lt;p class="MsoListParagraph" style='text-indent: -.25in; mso-list: l0 level1 lfo4'&gt;&lt;br /&gt;            2.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;At the menu, type 1,2 or 3 for the desired environment and&lt;br /&gt;            press &lt;b&gt;Enter&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;br /&gt;        &lt;p class="MsoListParagraph" style='text-indent: -.25in; mso-list: l0 level1 lfo4'&gt;&lt;br /&gt;            3.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Enter password when prompted&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;br /&gt;        &lt;a href="http://2.bp.blogspot.com/_1spBxVsA54A/TUlzl3h7EvI/AAAAAAAACIw/2v07kKdycvg/s1600/p3-750969.png"&gt;&lt;br /&gt;            &lt;img src="http://2.bp.blogspot.com/_1spBxVsA54A/TUlzl3h7EvI/AAAAAAAACIw/2v07kKdycvg/s320/p3-750969.png" border="0" alt="" id="BLOGGER_PHOTO_ID_5569109508618916594" /&gt;&lt;/a&gt;&lt;br /&gt;        &lt;br /&gt;        &lt;p class="MsoNormal"&gt;&lt;br /&gt;            *Credit goes to DosTips.com for &lt;a href="http://www.dostips.com/DtCodeBatchFiles.php#Batch.Menu"&gt;&lt;br /&gt;                the menu framework&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;br /&gt;    &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-3112221961331858346?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/3112221961331858346/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=3112221961331858346' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/3112221961331858346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/3112221961331858346'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2011/02/automate-your-crm-plugin-deployment.html' title='Automate your CRM Plugin deployment using the PluginDeveloper'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_1spBxVsA54A/TUlzlB2Ax5I/AAAAAAAACIg/-Jc1T32lxZ4/s72-c/p1-747630.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-73675359638658756</id><published>2011-01-28T10:07:00.000-05:00</published><updated>2011-02-02T08:14:48.521-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CRM'/><title type='text'>Fool Proof Data Imports in CRM</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://2.bp.blogspot.com/_1spBxVsA54A/TULcFJa9EaI/AAAAAAAACA0/bbSrhxIL-Uo/s1600/CRM_Data_Imports-747844.png"&gt;&lt;img src="http://2.bp.blogspot.com/_1spBxVsA54A/TULcFJa9EaI/AAAAAAAACA0/bbSrhxIL-Uo/s320/CRM_Data_Imports-747844.png"  border="0" alt="" id="BLOGGER_PHOTO_ID_5567254070369784226" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=WordSection1&gt;&lt;p class=MsoNormal&gt;Sometimes it can be a challenge to get the data maps to work properly, but using the &amp;#8220;Automatic&amp;#8221; map is almost foolproof.&amp;nbsp; Follow these basic steps:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoListParagraph style='text-indent:-.25in;mso-list:l0 level1 lfo2'&gt;&lt;![if !supportLists]&gt;&lt;span style='mso-list:Ignore'&gt;1.&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;Create an advanced find with all of the entity&amp;#8217;s &amp;#8220;custom columns&amp;#8221; (ignore CRM columns like created by, status, etc)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoListParagraph style='text-indent:-.25in;mso-list:l0 level1 lfo2'&gt;&lt;![if !supportLists]&gt;&lt;span style='mso-list:Ignore'&gt;2.&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;Export the results to Excel and &lt;b&gt;&lt;u&gt;remove the hidden GUID column&lt;/u&gt;&lt;/b&gt; (Column A)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoListParagraph style='text-indent:-.25in;mso-list:l0 level1 lfo2'&gt;&lt;![if !supportLists]&gt;&lt;span style='mso-list:Ignore'&gt;3.&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;Using the exported data as a guide for picklist values, insert the new data&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoListParagraph style='text-indent:-.25in;mso-list:l0 level1 lfo2'&gt;&lt;![if !supportLists]&gt;&lt;span style='mso-list:Ignore'&gt;4.&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;Run the Import wizard.&amp;nbsp; You should see &amp;#8220;Automatic&amp;#8221; in the Data Map&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-73675359638658756?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/73675359638658756/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=73675359638658756' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/73675359638658756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/73675359638658756'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2011/01/fool-proof-data-imports-in-crm.html' title='Fool Proof Data Imports in CRM'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_1spBxVsA54A/TULcFJa9EaI/AAAAAAAACA0/bbSrhxIL-Uo/s72-c/CRM_Data_Imports-747844.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-889560659030730198</id><published>2011-01-20T12:49:00.001-05:00</published><updated>2011-02-02T08:14:48.521-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CRM'/><title type='text'>CRM 4.0 Required TCP Ports</title><content type='html'>&lt;div class=WordSection1&gt;&lt;p class=MsoNormal&gt;I was trying to install CRM on a Server 2003 connecting to SQL 2008 and ran into &lt;a href="http://sundium.wordpress.com/2009/09/28/failure-the-sql-server-0-is-unavailable/"&gt;this error&lt;/a&gt;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p&gt;&lt;span lang=EN&gt;The warning message:&lt;br&gt;&lt;em&gt;&lt;span style='color:red'&gt;|Warning| Check SqlServerAgentValidator : Warning: Setup was unable to verify that SQL Server Agent (SqlAgent$crm) was running.&lt;/span&gt;&lt;/em&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span lang=EN&gt;The error message:&lt;br&gt;&lt;em&gt;&lt;span style='color:red'&gt;|&amp;nbsp; Error| Check CrmSqlDomainValidator : Failure: The SQL Server &amp;#8216;{0}&amp;#8217; is unavailable.&lt;/span&gt;&lt;/em&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;Windows Server 2003 requires TCP/UDP port 445 to be open between CRM and the Database.&amp;nbsp; Once the firewall was opened, the installation went off without a hitch.&amp;nbsp; In my experience with Server 2008, this port was not required.&amp;nbsp; Microsoft has &lt;a href="http://msdn.microsoft.com/en-us/library/dd979226.aspx"&gt;a comprehensive port list&lt;/a&gt;, but my list is below:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;Ports I request for CRM on Server 2008 installs:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;TCP 1433&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;TCP 135&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;Ports I request &lt;i&gt;[now]&lt;/i&gt; for CRM on Server 2003 installs:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;TCP 1433&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;TCP 135&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;TCP/UDP 445&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-889560659030730198?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/889560659030730198/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=889560659030730198' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/889560659030730198'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/889560659030730198'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2011/01/crm-40-required-tcp-ports.html' title='CRM 4.0 Required TCP Ports'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-4073539342378811066</id><published>2011-01-20T09:19:00.001-05:00</published><updated>2011-02-02T08:14:48.522-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CRM'/><title type='text'>Using CRM's TargetRetrieveDynamic to retrieve a DynamicEntity via Guid</title><content type='html'>&lt;div class=WordSection1&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;This is a snippet from the SDK example: &amp;lt;sdk loction&amp;gt;\sdk\server\reference\cs\crmservice\dynamicentityretrieve.cs&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style='color:green'&gt;// Create the retrieve target.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style='color:#2B91AF'&gt;TargetRetrieveDynamic&lt;/span&gt; targetRetrieve = &lt;span style='color:blue'&gt;new&lt;/span&gt; &lt;span style='color:#2B91AF'&gt;TargetRetrieveDynamic&lt;/span&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style='color:green'&gt;// Set the properties of the target.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; targetRetrieve.EntityName = &lt;span style='color:#2B91AF'&gt;EntityName&lt;/span&gt;.contact.ToString();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; targetRetrieve.EntityId = created.id;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style='color:green'&gt;// Create the request object.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style='color:#2B91AF'&gt;RetrieveRequest&lt;/span&gt; retrieve = &lt;span style='color:blue'&gt;new&lt;/span&gt; &lt;span style='color:#2B91AF'&gt;RetrieveRequest&lt;/span&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style='color:green'&gt;// Set the properties of the request object.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; retrieve.Target = targetRetrieve;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; retrieve.ColumnSet = &lt;span style='color:blue'&gt;new&lt;/span&gt; &lt;span style='color:#2B91AF'&gt;AllColumns&lt;/span&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color:green'&gt;// Indicate that the BusinessEntity should be retrieved as a DynamicEntity.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; retrieve.ReturnDynamicEntities = &lt;span style='color:blue'&gt;true&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style='color:green'&gt;// Execute the request.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style='color:#2B91AF'&gt;RetrieveResponse&lt;/span&gt; retrieved = (&lt;span style='color:#2B91AF'&gt;RetrieveResponse&lt;/span&gt;)&lt;span style='color:#2B91AF'&gt;service&lt;/span&gt;.Execute(retrieve);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color:green'&gt;// Extract the DynamicEntity from the request.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style='color:#2B91AF'&gt;DynamicEntity&lt;/span&gt; entity = (&lt;span style='color:#2B91AF'&gt;DynamicEntity&lt;/span&gt;)retrieved.BusinessEntity;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-4073539342378811066?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/4073539342378811066/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=4073539342378811066' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/4073539342378811066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/4073539342378811066'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2011/01/using-crms-targetretrievedynamic-to.html' title='Using CRM&apos;s TargetRetrieveDynamic to retrieve a DynamicEntity via Guid'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-1058127922373387327</id><published>2011-01-15T09:24:00.001-05:00</published><updated>2011-02-02T08:14:48.522-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CRM'/><title type='text'>Troubleshooting CRM SSRS Errors</title><content type='html'>&lt;DIV class=WordSection1&gt; &lt;P class=MsoNormal&gt;I had a perfectly happy production CRM environment humming along nicely&amp;#8230;until I tried to install a second CRM instance that used the same SSRS server.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;After the install (and rebooting the SSRS server), my production reports stopped working and the new CRM&amp;#8217;s reports we&amp;#8217;re not working either.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt; &lt;P class=MsoNormal&gt;I went through an episode of this w/ MS Premier Support during the first CRM install and I remembered some of the troubleshooting steps we took back then.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;/P&gt; &lt;P class=MsoNormal&gt;&amp;nbsp;&lt;/P&gt; &lt;P class=MsoNormal&gt;The first thing I tried was to &lt;A href="http://technet.microsoft.com/en-us/library/aa337165.aspx"&gt;enable remote errors in SSRS&lt;/A&gt;.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;That only helped a little because CRM still displayed the friendly error page, &amp;#8220;Report cannot be displayed&amp;#8221;.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;To have CRM give me the detailed error message I had to &lt;A href="http://ayazahmad.wordpress.com/2007/02/13/enabling-development-errors-tip-for-developers/"&gt;set the &lt;SPAN class=SpellE&gt;DevErrors&lt;/SPAN&gt; key to &amp;#8220;true&amp;#8221; in the CRM &lt;SPAN class=SpellE&gt;Web.Config&lt;/SPAN&gt;&lt;/A&gt; and now I can see the error.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;After adding the SSRS service account to my new CRM&amp;#8217;s AD Group &lt;SPAN class=SpellE&gt;PrivReportingGroup&lt;/SPAN&gt; and restarting the SSRS service, my &amp;#8220;new&amp;#8221; CRM reports started working, but the old ones were still broken.&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;Opening &lt;SPAN class=SpellE&gt;Regedit&lt;/SPAN&gt; on the SSRS server to HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSCRM I can see my &lt;SPAN class=SpellE&gt;&lt;B&gt;configdb&lt;/B&gt;&lt;/SPAN&gt;&amp;nbsp;key is pointing to the wrong server (this is what the CRM Data Connecor uses).&lt;SPAN&gt;&amp;nbsp; &lt;/SPAN&gt;&lt;SPAN class=GramE&gt;When I changed that key back to my production database instance (similar to &lt;A href="http://support.microsoft.com/kb/952934"&gt;the procedure for moving a CRM database&lt;/A&gt;) and rebooting my SSRS server, the reports worked again.&lt;/SPAN&gt;&lt;/P&gt; &lt;P class=MsoNormal&gt;&amp;nbsp;&lt;/P&gt; &lt;P class=MsoNormal&gt;Summary:&lt;/P&gt; &lt;P class=MsoNormal&gt;Step One &amp;#8211; Enable Remote Errors on SSRS&lt;/P&gt; &lt;P class=MsoNormal&gt;Step Two &amp;#8211; Change CRM &lt;SPAN class=SpellE&gt;Web.Config&lt;/SPAN&gt; &lt;SPAN class=SpellE&gt;DevErrors&lt;/SPAN&gt; key to &amp;#8220;On&amp;#8221;&lt;/P&gt; &lt;P class=MsoNormal&gt;Step Three &amp;#8211; Check the Active Directory groups (&lt;SPAN class=GramE&gt;Start &lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;--&lt;/SPAN&gt; Run -- DSA.MSC )&lt;/P&gt; &lt;P class=MsoNormal&gt;Step Four &amp;#8211; Check Registry Keys&lt;/P&gt; &lt;P class=MsoNormal&gt;&amp;nbsp;&lt;/P&gt; &lt;P class=MsoNormal&gt;Microsoft support confirmed my predicament.&amp;nbsp; To do what I want (two CRMs on one SSRS server) I need to install a second SSRS instance.&lt;/P&gt;&lt;/DIV&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-1058127922373387327?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/1058127922373387327/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=1058127922373387327' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/1058127922373387327'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/1058127922373387327'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2011/01/troubleshooting-crm-ssrs-errors.html' title='Troubleshooting CRM SSRS Errors'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-5856703888665175996</id><published>2011-01-07T17:17:00.001-05:00</published><updated>2011-01-08T07:56:00.949-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CRM'/><title type='text'>Setting the Primary Key of a Custom Entity in a Plugin</title><content type='html'>&lt;div class=WordSection1&gt;&lt;p class=MsoNormal&gt;I needed to set the primary key Guid on a custom entity in the Pre stage of a Plugin.&amp;nbsp; It required adding a &lt;a href="http://msdn.microsoft.com/en-us/library/bb956921.aspx"&gt;KeyProperty&lt;/a&gt; to my &lt;a href="http://msdn.microsoft.com/en-us/library/bb928424.aspx"&gt;DynamicEntity&lt;/a&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style='color:#2B91AF'&gt;Guid&lt;/span&gt; requestId = &lt;span style='color:#2B91AF'&gt;Guid&lt;/span&gt;.NewGuid();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style='color:#2B91AF'&gt;Key&lt;/span&gt; newReqKey = &lt;span style='color:blue'&gt;new&lt;/span&gt; &lt;span style='color:#2B91AF'&gt;Key&lt;/span&gt;(requestId);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; entity.Properties.Add(&lt;span style='color:blue'&gt;new&lt;/span&gt; &lt;span style='color:#2B91AF'&gt;KeyProperty&lt;/span&gt;(&lt;span style='color:#A31515'&gt;&amp;quot;new_myentityid&amp;quot;&lt;/span&gt;, newReqKey));&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-5856703888665175996?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/5856703888665175996/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=5856703888665175996' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/5856703888665175996'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/5856703888665175996'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2011/01/setting-primary-key-of-custom-entity-in.html' title='Setting the Primary Key of a Custom Entity in a Plugin'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-626487152389190965</id><published>2011-01-07T12:42:00.001-05:00</published><updated>2011-01-08T07:56:00.950-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CRM'/><title type='text'>Troubleshooting CRM Entity Publish Errors</title><content type='html'>&lt;div class=WordSection1&gt;&lt;p class=MsoNormal&gt;Here are a few things to keep in mind when working w/ entities in CRM&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;1.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; When you export your entities, make sure you export all N:1 related entities.&amp;nbsp; When you select an entity and click export, there is a warning dialogue that reminds you of this, but nobody reads it.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;2.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Make sure you have Published your entities after importing them.&amp;nbsp; I had an entity that was &amp;#8220;broken&amp;#8221;, but I couldn&amp;#8217;t delete it until I had published it.&amp;nbsp; Running a query like this will help you determine if your entity has been published: SELECT * FROM OrganizationUIBase &amp;nbsp;WHERE ObjectTypeCode = &amp;lt;offending entity code&amp;gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;3.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Finally, if you cannot delete a published entity, Compare the fields in the Form with the entity attributes.&amp;nbsp; Microsoft Support gave me a tool to run a FormXML comparison.&amp;nbsp; Two times now there has been an attribute in the form was missing from the entity. Once you add the attribute back (type doesn&amp;#8217;t matter), you can delete the entity and start fresh.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-626487152389190965?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/626487152389190965/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=626487152389190965' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/626487152389190965'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/626487152389190965'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2011/01/troubleshooting-crm-entity-publish.html' title='Troubleshooting CRM Entity Publish Errors'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-3299820737659951916</id><published>2010-12-20T17:08:00.000-05:00</published><updated>2010-12-22T08:24:00.121-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CRM'/><title type='text'>Two ways to build a CRM QueryExpression</title><content type='html'>&lt;div class=WordSection1&gt;&lt;p class=MsoNormal&gt;I always wondered what FetchXML was useful for and I&amp;#8217;m starting to see its value.&amp;nbsp; I ran into a wall with the new Linq based Advanced Developer Extensions and have reverted back to the &amp;#8220;stone-age&amp;#8221; web services.&amp;nbsp; Having to build QueryExpressions by hand led me to the discovery that I could actually use FetchXML syntax to build my expressions by using a &lt;span style='font-size:10.0pt;font-family:"Courier New";color:#2B91AF'&gt;FetchXmlToQueryExpressionRequest&lt;/span&gt; Combining this with &lt;a href="http://www.stunnware.com/"&gt;Stunnware&amp;#8217;s FetchXML builder&lt;/a&gt; might be even faster once you get the hang of it.&amp;nbsp; Certainly makes debugging a complex join query snappy.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;Check out these two ways to get the exact same dataset:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style='color:blue'&gt;private&lt;/span&gt; &lt;span style='color:blue'&gt;static&lt;/span&gt; &lt;span style='color:blue'&gt;void&lt;/span&gt; FetchAppsToProcess(Microsoft.Crm.SdkTypeProxy.&lt;span style='color:#2B91AF'&gt;CrmService&lt;/span&gt; crmWebSvc)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style='color:blue'&gt;string&lt;/span&gt; fxml = &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color:#A31515'&gt;@&amp;quot;&amp;lt;fetch mapping='logical' count='50' version='1.0'&amp;gt;&amp;quot;&lt;/span&gt; +&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style='color:#A31515'&gt;&amp;quot; &amp;lt;entity name='new_transistionapplication'&amp;gt;&amp;quot;&lt;/span&gt; +&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style='color:#A31515'&gt;&amp;quot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;attribute name='new_transistionapplicationid' /&amp;gt;&amp;quot;&lt;/span&gt; +&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style='color:#A31515'&gt;&amp;quot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;filter&amp;gt;&amp;quot;&lt;/span&gt; +&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style='color:#A31515'&gt;&amp;quot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;condition attribute='createdon' operator='lt' value='9/17/2010' /&amp;gt;&amp;quot;&lt;/span&gt; +&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style='color:#A31515'&gt;&amp;quot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;condition attribute='new_lastname' operator='eq' value='Smith' /&amp;gt;&amp;quot;&lt;/span&gt; +&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style='color:#A31515'&gt;&amp;quot;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/filter&amp;gt;&amp;quot;&lt;/span&gt; +&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style='color:#A31515'&gt;&amp;quot; &amp;lt;/entity&amp;gt;&amp;quot;&lt;/span&gt; +&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style='color:#A31515'&gt;&amp;quot;&amp;lt;/fetch&amp;gt;&amp;quot;&lt;/span&gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style='color:green'&gt;//string xmlResult = crmWebSvc.Fetch(fxml);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style='color:#2B91AF'&gt;FetchXmlToQueryExpressionRequest&lt;/span&gt; fxmlReq = &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color:blue'&gt;new&lt;/span&gt; &lt;span style='color:#2B91AF'&gt;FetchXmlToQueryExpressionRequest&lt;/span&gt;() { FetchXml = fxml };&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style='color:#2B91AF'&gt;FetchXmlToQueryExpressionResponse&lt;/span&gt; expression = &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;(&lt;span style='color:#2B91AF'&gt;FetchXmlToQueryExpressionResponse&lt;/span&gt;)crmWebSvc.Execute(fxmlReq);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style='color:blue'&gt;var&lt;/span&gt; request = &lt;span style='color:blue'&gt;new&lt;/span&gt; &lt;span style='color:#2B91AF'&gt;RetrieveMultipleRequest&lt;/span&gt; { Query = expression.Query, ReturnDynamicEntities = &lt;span style='color:blue'&gt;true&lt;/span&gt; };&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style='color:blue'&gt;var&lt;/span&gt; response = (&lt;span style='color:#2B91AF'&gt;RetrieveMultipleResponse&lt;/span&gt;)crmWebSvc.Execute(request);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style='color:blue'&gt;private&lt;/span&gt; &lt;span style='color:blue'&gt;static&lt;/span&gt; &lt;span style='color:blue'&gt;void&lt;/span&gt; GetAppsToProcess(Microsoft.Crm.SdkTypeProxy.&lt;span style='color:#2B91AF'&gt;CrmService&lt;/span&gt; crmWebSvc)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style='color:#2B91AF'&gt;List&lt;/span&gt;&amp;lt;&lt;span style='color:blue'&gt;string&lt;/span&gt;&amp;gt; reqBoards = &lt;span style='color:blue'&gt;new&lt;/span&gt; &lt;span style='color:#2B91AF'&gt;List&lt;/span&gt;&amp;lt;&lt;span style='color:blue'&gt;string&lt;/span&gt;&amp;gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style='color:blue'&gt;var&lt;/span&gt; con = &lt;span style='color:blue'&gt;new&lt;/span&gt; &lt;span style='color:#2B91AF'&gt;ConditionExpression&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AttributeName = &lt;span style='color:#A31515'&gt;&amp;quot;createdon&amp;quot;&lt;/span&gt;,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Operator = &lt;span style='color:#2B91AF'&gt;ConditionOperator&lt;/span&gt;.LessThan,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Values = &lt;span style='color:blue'&gt;new&lt;/span&gt; &lt;span style='color:blue'&gt;object&lt;/span&gt;[] { &lt;span style='color:#2B91AF'&gt;DateTime&lt;/span&gt;.Parse(&lt;span style='color:#A31515'&gt;&amp;quot;9/17/2010&amp;quot;&lt;/span&gt;) }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style='color:blue'&gt;var&lt;/span&gt; conName = &lt;span style='color:blue'&gt;new&lt;/span&gt; &lt;span style='color:#2B91AF'&gt;ConditionExpression&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; AttributeName = &lt;span style='color:#A31515'&gt;&amp;quot;new_lastname&amp;quot;&lt;/span&gt;,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Operator = &lt;span style='color:#2B91AF'&gt;ConditionOperator&lt;/span&gt;.Equal,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Values = &lt;span style='color:blue'&gt;new&lt;/span&gt;[] { &lt;span style='color:#A31515'&gt;&amp;quot;Smith&amp;quot;&lt;/span&gt; }&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style='color:blue'&gt;var&lt;/span&gt; filter = &lt;span style='color:blue'&gt;new&lt;/span&gt; &lt;span style='color:#2B91AF'&gt;FilterExpression&lt;/span&gt;();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;filter.AddCondition(con);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; filter.AddCondition(conName);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; filter.FilterOperator = &lt;span style='color:#2B91AF'&gt;LogicalOperator&lt;/span&gt;.And;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style='color:green'&gt;// The Entity returning the results&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style='color:blue'&gt;var&lt;/span&gt; expression = &lt;span style='color:blue'&gt;new&lt;/span&gt; &lt;span style='color:#2B91AF'&gt;QueryExpression&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; EntityName = &lt;span style='color:#A31515'&gt;&amp;quot;new_transistionapplication&amp;quot;&lt;/span&gt;,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Criteria = filter&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; };&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;expression.ColumnSet = &lt;span style='color:blue'&gt;new&lt;/span&gt; &lt;span style='color:#2B91AF'&gt;ColumnSet&lt;/span&gt;(&lt;span style='color:blue'&gt;new&lt;/span&gt; &lt;span style='color:blue'&gt;string&lt;/span&gt;[] { &lt;span style='color:#A31515'&gt;&amp;quot;new_transistionapplicationid&amp;quot;&lt;/span&gt;, &lt;span style='color:#A31515'&gt;&amp;quot;new_requestedboardappointments&amp;quot;&lt;/span&gt; });&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style='color:blue'&gt;var&lt;/span&gt; request = &lt;span style='color:blue'&gt;new&lt;/span&gt; &lt;span style='color:#2B91AF'&gt;RetrieveMultipleRequest&lt;/span&gt; { Query = expression, ReturnDynamicEntities = &lt;span style='color:blue'&gt;true&lt;/span&gt; };&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style='color:blue'&gt;var&lt;/span&gt; response = (&lt;span style='color:#2B91AF'&gt;RetrieveMultipleResponse&lt;/span&gt;)crmWebSvc.Execute(request);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-3299820737659951916?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/3299820737659951916/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=3299820737659951916' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/3299820737659951916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/3299820737659951916'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2010/12/two-ways-to-build-crm-queryexpression.html' title='Two ways to build a CRM QueryExpression'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-1005144069220046317</id><published>2010-12-17T12:26:00.001-05:00</published><updated>2010-12-22T08:24:00.121-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CRM'/><title type='text'>Installing SSRS - SocketException: No such host is known</title><content type='html'>&lt;div class=WordSection1&gt;&lt;p class=MsoNormal&gt;I just about went crazy trying to do a SSRS install on a named instance.&amp;nbsp; Every time I ran through the database configuration, I got this error.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p style='margin:0in;margin-bottom:.0001pt;line-height:10.5pt;background:white'&gt;&lt;span lang=EN style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#333333;background:yellow;mso-highlight:yellow'&gt;System.Net.Sockets.SocketException: No such host is known&lt;/span&gt;&lt;span lang=EN style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#333333'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='margin:0in;margin-bottom:.0001pt;line-height:10.5pt;background:white'&gt;&lt;span lang=EN style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#333333;background:yellow;mso-highlight:yellow'&gt;&amp;nbsp;&amp;nbsp; at System.Net.Dns.GetAddrInfo(String name)&lt;/span&gt;&lt;span lang=EN style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#333333'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='margin:0in;margin-bottom:.0001pt;line-height:10.5pt;background:white'&gt;&lt;span lang=EN style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#333333;background:yellow;mso-highlight:yellow'&gt;&amp;nbsp;&amp;nbsp; at System.Net.Dns.InternalGetHostByName(String hostName, Boolean includeIPv6)&lt;/span&gt;&lt;span lang=EN style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#333333'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='margin:0in;margin-bottom:.0001pt;line-height:10.5pt;background:white'&gt;&lt;span lang=EN style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#333333;background:yellow;mso-highlight:yellow'&gt;&amp;nbsp;&amp;nbsp; at System.Net.Dns.GetHostEntry(String hostNameOrAddress)&lt;/span&gt;&lt;span lang=EN style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#333333'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='margin:0in;margin-bottom:.0001pt;line-height:10.5pt;background:white'&gt;&lt;span lang=EN style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#333333;background:yellow;mso-highlight:yellow'&gt;&amp;nbsp;&amp;nbsp; at ReportServicesConfigUI.RSDatabase.IsLocalDbServer(String dbServer)&lt;/span&gt;&lt;span lang=EN style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#333333'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='margin:0in;margin-bottom:.0001pt;line-height:10.5pt;background:white'&gt;&lt;span lang=EN style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#333333;background:yellow;mso-highlight:yellow'&gt;&amp;nbsp;&amp;nbsp; at ReportServicesConfigUI.RSDatabase.GrantRSConnectionRights()&lt;/span&gt;&lt;span lang=EN style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#333333'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='margin:0in;margin-bottom:.0001pt;line-height:10.5pt;background:white'&gt;&lt;span lang=EN style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#333333;background:yellow;mso-highlight:yellow'&gt;&amp;nbsp;&amp;nbsp; at ReportServicesConfigUI.RSDatabase.CreateNewDatabase()&lt;/span&gt;&lt;span lang=EN style='font-size:10.0pt;font-family:"Arial","sans-serif";color:#333333'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;Turns out, this issue has a simple, but hidden workaround.&amp;nbsp; Specify the Server Name &lt;a href="http://blogs.msdn.com/b/sameersurve/archive/2009/06/15/no-such-host-is-known-error-when-configuring-ssrs-2008.aspx"&gt;as outlined on this blog post&lt;/a&gt;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p style='margin:0in;margin-bottom:.0001pt;mso-line-height-alt:10.5pt;background:white'&gt;&lt;span lang=EN style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='margin:0in;margin-bottom:.0001pt;mso-line-height-alt:10.5pt;background:white'&gt;&lt;span lang=EN style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'&gt;It seems if you use a connection format like &amp;#8220;&lt;span style='background:yellow;mso-highlight:yellow'&gt;ServerName\InstanceName,&lt;/span&gt;&lt;/span&gt;&lt;span lang=EN style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:red;background:yellow;mso-highlight:yellow'&gt;Port&lt;/span&gt;&lt;span lang=EN style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D;background:yellow;mso-highlight:yellow'&gt;&amp;#8221;,&lt;/span&gt;&lt;span lang=EN style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'&gt; then SSRS Configuration manager is able to connect without requiring the SQL Browser service.&lt;/span&gt;&lt;span lang=EN style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#333333'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='margin:0in;margin-bottom:.0001pt;mso-line-height-alt:10.5pt;background:white'&gt;&lt;span lang=EN style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'&gt;&amp;nbsp;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='margin:0in;margin-bottom:.0001pt;mso-line-height-alt:10.5pt;background:white'&gt;&lt;span lang=EN style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'&gt;Without SQL Browser service running (either shutdown or blocked behind the firewall), SSRS Configuration Manager still does not work with &amp;#8220;&lt;span style='background:yellow;mso-highlight:yellow'&gt;ServerName,&lt;/span&gt;&lt;/span&gt;&lt;span lang=EN style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:red;background:yellow;mso-highlight:yellow'&gt;Port&lt;/span&gt;&lt;span lang=EN style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D;background:yellow;mso-highlight:yellow'&gt;\InstanceName&lt;/span&gt;&lt;span lang=EN style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'&gt;&amp;#8221; format or via SQL Aliases.&lt;/span&gt;&lt;span lang=EN style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#333333'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-1005144069220046317?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/1005144069220046317/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=1005144069220046317' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/1005144069220046317'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/1005144069220046317'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2010/12/installing-ssrs-socketexception-no-such.html' title='Installing SSRS - SocketException: No such host is known'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-5192969050166134133</id><published>2010-12-14T16:18:00.001-05:00</published><updated>2010-12-22T08:23:48.561-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='casual'/><title type='text'>Daddy Bread</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://3.bp.blogspot.com/_1spBxVsA54A/TQffMNAtwDI/AAAAAAAABFQ/-eKt-5R5xBA/s1600/25lbs_of_flour-718887.jpg"&gt;&lt;img src="http://3.bp.blogspot.com/_1spBxVsA54A/TQffMNAtwDI/AAAAAAAABFQ/-eKt-5R5xBA/s320/25lbs_of_flour-718887.jpg"  border="0" alt="" id="BLOGGER_PHOTO_ID_5550650466501509170" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=WordSection1&gt;&lt;p class=MsoNormal&gt;After reading the article, &lt;a href="http://www.motherearthnews.com/Real-Food/Artisan-Bread-In-Five-Minutes-A-Day.aspx"&gt;Artisian Bread in Five Minutes a Day&lt;/a&gt;, I have been making about 1-2 loaves and a pizza every week.&amp;nbsp; My kids have dubbed it, &amp;#8220;Daddy bread&amp;#8221; and it goes fast!&amp;nbsp; As you might imagine we go through a decent amount of flour, so we buy 25lbs bags at Costco.&amp;nbsp; This picture of six coffee cans is the latest supply of flour.&amp;nbsp; I can almost smell the bread cooking!&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-5192969050166134133?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/5192969050166134133/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=5192969050166134133' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/5192969050166134133'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/5192969050166134133'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2010/12/daddy-bread.html' title='Daddy Bread'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_1spBxVsA54A/TQffMNAtwDI/AAAAAAAABFQ/-eKt-5R5xBA/s72-c/25lbs_of_flour-718887.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-8815099132433943343</id><published>2010-12-13T16:14:00.002-05:00</published><updated>2010-12-13T16:21:08.137-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CRM'/><title type='text'>How to Hide System Views in CRM 4.0</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://4.bp.blogspot.com/_1spBxVsA54A/TQaMxtthTUI/AAAAAAAABDo/XiP4aPIOD7M/s1600/CRM_Reg1-785640.png"&gt;&lt;img src="http://4.bp.blogspot.com/_1spBxVsA54A/TQaMxtthTUI/AAAAAAAABDo/XiP4aPIOD7M/s320/CRM_Reg1-785640.png"  border="0" alt="" id="BLOGGER_PHOTO_ID_5550278376492715330" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=WordSection1&gt;&lt;p class=MsoNormal&gt;This post could also be titled, how to pass configuration to CRM Plugins.&amp;nbsp; I found &lt;a href="http://code.msdn.microsoft.com/crm40hidesystemviews/Release/ProjectReleases.aspx?ReleaseId=1402"&gt;a sample solution in the MSDN Code Gallery&lt;/a&gt; but the installation details were left to the imagination.&amp;nbsp; Fortunately &lt;a href="http://www.crowehorwath.com/cs/blogs/crm/archive/2008/02/25/hiding-view-in-crm-4-0-using-plug-in.aspx"&gt;another person posted on how to hard-code a plugin&lt;/a&gt; with the Assembly Registration information needed.&amp;nbsp; First you register the assembly, then add a step with this information:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;Message: RetrieveMultiple&lt;br /&gt;Primary Entity: savedquery&lt;br /&gt;Stage of Execution: Post Stage&lt;br /&gt;Execution Mode: Synchronous&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;Unsecure Configuration: &amp;lt;the XML from the sample config file&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;There was a problem with the code from the gallery in that the constructor for plugins seems to have changed.&amp;nbsp; Plugin constructors require two string parameters &lt;a href="http://mscrm-developer.blogspot.com/2010/06/writing-plug-in-constructor.html"&gt;as detailed in this blog post&lt;/a&gt;.&amp;nbsp; The first is the &amp;#8220;unsecure configuration&amp;#8221; and the second is the &amp;#8220;secure configuration&amp;#8221;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;The nice thing is that the views are hidden as soon as you &amp;#8220;Update&amp;#8221; the Step Registration.&amp;nbsp; No need to restart CRM or anything fancy.&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;You can &lt;a href="http://edgewaters.s3.amazonaws.com/PluginHideSystemViews.zip"&gt;download the source of my plugin here (6 Kb zip)&lt;/a&gt; (you may have to update the references to the SDK dlls).&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-8815099132433943343?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/8815099132433943343/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=8815099132433943343' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/8815099132433943343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/8815099132433943343'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2010/12/how-to-hide-system-views-in-crm-40.html' title='How to Hide System Views in CRM 4.0'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_1spBxVsA54A/TQaMxtthTUI/AAAAAAAABDo/XiP4aPIOD7M/s72-c/CRM_Reg1-785640.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-133436374514919284</id><published>2010-12-02T08:40:00.001-05:00</published><updated>2010-12-02T08:45:12.243-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CRM'/><title type='text'>How to set a recipient in the CRM Send Email window via URL querystring</title><content type='html'>&lt;div class=WordSection1&gt;&lt;p class=MsoNormal&gt;&lt;span style='font-size:9.5pt;font-family:"Verdana","sans-serif";color:black'&gt;I need to let the user edit the email before sending, so email templates seem to be the best choice.&amp;nbsp; I love how CRM set the Regarding to my current entity.&amp;nbsp; In addition I wanted to be able to set the To: field based on a contact record.&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;p style='mso-margin-top-alt:0in;margin-right:0in;margin-bottom:0in;margin-left:12.0pt;margin-bottom:.0001pt;background:white'&gt;&lt;span style='font-size:9.5pt;font-family:"Verdana","sans-serif";color:black'&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/cc150850.aspx"&gt;MSDN - URL Addressable Forms and Views&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left:12.0pt;background:white'&gt;&lt;span style='font-size:9.5pt;font-family:"Verdana","sans-serif";color:black'&gt;and here:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='mso-margin-top-alt:0in;margin-right:0in;margin-bottom:0in;margin-left:12.0pt;margin-bottom:.0001pt;background:white'&gt;&lt;span style='font-size:9.5pt;font-family:"Verdana","sans-serif";color:black'&gt;&lt;a href="http://sites.google.com/site/ranjitclub/working-with-datatypes-in-javascript"&gt;Working With All MS CRM DataTypes In Javascript&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left:12.0pt;background:white'&gt;&lt;span style='font-size:9.5pt;font-family:"Verdana","sans-serif";color:black'&gt;and ultimately, I figured out the querystring parameters that allow you set a PartyList attribute (To is a PartyList - thanks to Stunnware tool for that detail).&amp;nbsp; So by adding these parameters to the original Send E-Mail link, the email opens pre-populated:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p style='margin-left:12.0pt;background:white'&gt;&lt;span style='font-size:9.5pt;font-family:"Verdana","sans-serif";color:black'&gt;&amp;amp;&lt;strong&gt;&lt;span style='font-family:"Verdana","sans-serif"'&gt;partytype&lt;/span&gt;&lt;/strong&gt;=2&amp;amp;&lt;strong&gt;&lt;span style='font-family:"Verdana","sans-serif"'&gt;partyname&lt;/span&gt;&lt;/strong&gt;=John%20Doe&amp;amp;&lt;strong&gt;&lt;span style='font-family:"Verdana","sans-serif"'&gt;partyId&lt;/span&gt;&lt;/strong&gt;={1FF3C7A9-D8BC-DF11-8337-005056BC7B56}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-133436374514919284?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/133436374514919284/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=133436374514919284' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/133436374514919284'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/133436374514919284'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2010/12/how-to-set-recipient-in-crm-send-email.html' title='How to set a recipient in the CRM Send Email window via URL querystring'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-6022476018023209094</id><published>2010-11-30T13:22:00.000-05:00</published><updated>2010-12-02T08:45:12.243-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CRM'/><title type='text'>Microsoft CRM SDK Advanced Developer Extensions Linq Cache Issue</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://3.bp.blogspot.com/_1spBxVsA54A/TPVBPjRdygI/AAAAAAAAAyA/fq9EApmRujQ/s1600/webconfig-738107.png"&gt;&lt;img src="http://3.bp.blogspot.com/_1spBxVsA54A/TPVBPjRdygI/AAAAAAAAAyA/fq9EApmRujQ/s320/webconfig-738107.png"  border="0" alt="" id="BLOGGER_PHOTO_ID_5545410251598973442" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=WordSection1&gt;&lt;p class=MsoNormal&gt;There has been a significant improvement in the XRM Linq provider in the 4.0.13 SDK that &lt;a href="http://msdn.microsoft.com/en-us/library/gg398020.aspx"&gt;allows you to specify how you want your DataContext to use caching&lt;/a&gt;.&amp;nbsp; One thing I noticed was I had to change my &lt;i&gt;default&lt;/i&gt; &lt;b&gt;Service&lt;/b&gt; to use the disabled cached to get it to use the &lt;span style='font-size:10.0pt;font-family:"Courier New";color:blue'&gt;Microsoft.Xrm.Client.Services.OrganizationService&lt;/span&gt; which is the &amp;#8220;un-cached&amp;#8221; service.&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;There seems to be a noticeable speed &lt;u&gt;improvement&lt;/u&gt; for the initial connection time and I don&amp;#8217;t see any difference in query time using the un-cached service.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;a href="http://edgewaters.s3.amazonaws.com/Web.Config.xml"&gt;Sample web.config entries&lt;/a&gt; (2kb XML file)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-6022476018023209094?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/6022476018023209094/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=6022476018023209094' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/6022476018023209094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/6022476018023209094'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2010/11/microsoft-crm-sdk-advanced-developer.html' title='Microsoft CRM SDK Advanced Developer Extensions Linq Cache Issue'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_1spBxVsA54A/TPVBPjRdygI/AAAAAAAAAyA/fq9EApmRujQ/s72-c/webconfig-738107.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-6574072942241676981</id><published>2010-11-22T09:03:00.001-05:00</published><updated>2010-12-02T08:45:22.796-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>Checking Java memory usage on a Linux server</title><content type='html'>&lt;div class=WordSection1&gt;&lt;p class=MsoNormal&gt;A customer reported slowness in a production system, so I ran the following commands to check the state of the memory usage (since recently we had out-of-memory errors):&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;b&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;b&gt;ps -ef|grep java&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;b&gt;jmap -heap &amp;lt;pid&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/b&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;u&gt;The output&lt;/u&gt;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;Attaching to process ID 1715, please wait...&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;Debugger attached successfully.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;Server compiler detected.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;JVM version is 14.0-b16&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;using thread-local object allocation.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;Parallel GC with 2 thread(s)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;Heap Configuration:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&amp;nbsp;&amp;nbsp; MinHeapFreeRatio = 40&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&amp;nbsp;&amp;nbsp; MaxHeapFreeRatio = 70&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&amp;nbsp;&amp;nbsp; MaxHeapSize&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 2015363072 (1922.0MB)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&amp;nbsp;&amp;nbsp; NewSize&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 2686976 (2.5625MB)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&amp;nbsp;&amp;nbsp; MaxNewSize&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 17592186044415 MB&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&amp;nbsp;&amp;nbsp; OldSize&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 5439488 (5.1875MB)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&amp;nbsp;&amp;nbsp; NewRatio&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 2&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&amp;nbsp;&amp;nbsp; SurvivorRatio&amp;nbsp;&amp;nbsp;&amp;nbsp; = 8&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&amp;nbsp;&amp;nbsp; PermSize&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 21757952 (20.75MB)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&amp;nbsp;&amp;nbsp; MaxPermSize&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 134217728 (128.0MB)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;Heap Usage:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;PS Young Generation&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;Eden Space:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&amp;nbsp;&amp;nbsp; capacity = 368246784 (351.1875MB)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&amp;nbsp;&amp;nbsp; used&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 259936376 (247.89464569091797MB)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&amp;nbsp;&amp;nbsp; free&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 108310408 (103.29285430908203MB)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&amp;nbsp;&amp;nbsp; 70.58754815900849% used&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;From Space:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&amp;nbsp;&amp;nbsp; capacity = 11534336 (11.0MB)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&amp;nbsp;&amp;nbsp; used&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 11502000 (10.969161987304688MB)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&amp;nbsp;&amp;nbsp; free&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 32336 (0.0308380126953125MB)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&amp;nbsp; &amp;nbsp;99.71965443004261% used&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;To Space:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&amp;nbsp;&amp;nbsp; capacity = 12451840 (11.875MB)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&amp;nbsp;&amp;nbsp; used&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 0 (0.0MB)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&amp;nbsp;&amp;nbsp; free&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 12451840 (11.875MB)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&amp;nbsp;&amp;nbsp; 0.0% used&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;PS Old Generation&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&amp;nbsp;&amp;nbsp; capacity = 122290176 (116.625MB)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&amp;nbsp;&amp;nbsp; used&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 76169032 (72.64044952392578MB)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&amp;nbsp;&amp;nbsp; free&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 46121144 (43.98455047607422MB)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&amp;nbsp;&amp;nbsp; 62.285487265959944% used&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;PS Perm Generation&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&amp;nbsp;&amp;nbsp; capacity = 88211456 (84.125MB)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&amp;nbsp;&amp;nbsp; used&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 39361424 (37.53797912597656MB)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&amp;nbsp;&amp;nbsp; free&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = 48850032 (46.58702087402344MB)&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&amp;nbsp;&amp;nbsp; 44.62166909477155% used&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-6574072942241676981?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/6574072942241676981/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=6574072942241676981' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/6574072942241676981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/6574072942241676981'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2010/11/checking-java-memory-usage-on-linux.html' title='Checking Java memory usage on a Linux server'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-3726911219673058778</id><published>2010-11-15T08:20:00.000-05:00</published><updated>2010-12-02T08:45:34.150-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='boats'/><category scheme='http://www.blogger.com/atom/ns#' term='casual'/><title type='text'>Severn River Cruise on the Mobjack Bay</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://2.bp.blogspot.com/_1spBxVsA54A/TOEzw0jfTdI/AAAAAAAAAs8/yaTWEuPkCmg/s1600/IMG_2377-765960.JPG"&gt;&lt;img src="http://2.bp.blogspot.com/_1spBxVsA54A/TOEzw0jfTdI/AAAAAAAAAs8/yaTWEuPkCmg/s320/IMG_2377-765960.JPG"  border="0" alt="" id="BLOGGER_PHOTO_ID_5539765930476654034" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=WordSection1&gt;  &lt;p class=MsoNormal&gt;The weather around Veterans Day 2010 was absolutely stunning; Crystal clear blue skies, 65F, and a fresh 15-20Kts out of the NE.&amp;nbsp; I got permission to take the Alberg 22 docked near Yorktown, VA for a two-day solo cruise.&amp;nbsp; With the wind creating Small Craft Advisory conditions, I was thinking of heading NW up the York see West Point from the water and then find a little creek to tuck into.&amp;nbsp; As I headed out into the York, I was surprised to find ideal flat water conditions.&amp;nbsp; I realized there was quite a bit of protection from the land, but it was so tempting to head east&amp;#8230;so that&amp;#8217;s what I did.&amp;nbsp; As I got nearer to the Guinea flats, the wind picked up.&amp;nbsp; As I cleared the land and the full fetch of the Mobjack was felt, the waves were a short steep 3-5&amp;#8217; seas.&amp;nbsp; The Alberg could really have used a reef at this point, but easing the sheet just a little helped with the weather helm.&amp;nbsp; The boat kept a stead 4.5-5 kts with a nice motion.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;Being a mid-November Thursday, there weren&amp;#8217;t a lot of boats on the wather, so I was relieved to see a 50&amp;#8217; M/V and a little later, I saw what looked like two boats sailing really close together.&amp;nbsp; Later this turned out to be a gaff-rigged schooner that I followed into the Severn River.&amp;nbsp; I headed up the North branch and noticed what looked like a large sailboat behind a spit of land.&amp;nbsp; The tide was about 3&amp;#8217; above normal so it seemed like my 3&amp;#8217; draft should have no trouble getting back there.&amp;nbsp; I was rewarded with a beautiful little anchorage that was surrounded by some gorgeous Matthew&amp;#8217;s County properties.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;I didn&amp;#8217;t have too many chances to snap pictures while sailing (solo SCA kept my attention), but the anchorage afforded an amazing sunset:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;a href="http://picasaweb.google.com/snyd1437/ChesapeakBay#"&gt;http://picasaweb.google.com/snyd1437/ChesapeakBay#&lt;/a&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-3726911219673058778?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/3726911219673058778/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=3726911219673058778' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/3726911219673058778'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/3726911219673058778'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2010/11/severn-river-cruise-on-mobjack-bay.html' title='Severn River Cruise on the Mobjack Bay'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_1spBxVsA54A/TOEzw0jfTdI/AAAAAAAAAs8/yaTWEuPkCmg/s72-c/IMG_2377-765960.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-5250125896284556457</id><published>2010-11-06T01:31:00.001-04:00</published><updated>2010-12-02T08:45:43.479-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><title type='text'>IIS 404 error!!!  It's now 2am...thank you very much Microsoft security team</title><content type='html'>&lt;div class=WordSection1&gt;  &lt;p class=MsoNormal&gt;&lt;a href="http://support.microsoft.com/kb/315122"&gt;http://support.microsoft.com/kb/315122&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;span style='font-size:8.5pt;font-family:"Verdana","sans-serif"; color:black'&gt;By default, when IIS is installed on any version of the Windows Server 2003 family, IIS only serves static content (HTML).&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-5250125896284556457?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/5250125896284556457/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=5250125896284556457' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/5250125896284556457'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/5250125896284556457'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2010/11/iis-404-error-its-now-2amthank-you-very.html' title='IIS 404 error!!!  It&apos;s now 2am...thank you very much Microsoft security team'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-8406865486462484470</id><published>2010-10-28T07:30:00.001-04:00</published><updated>2010-12-02T08:45:12.244-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CRM'/><title type='text'>Creating a WebReference to a specific CRM tenant</title><content type='html'>&lt;div class=WordSection1&gt;  &lt;p class=MsoNormal&gt;Sometimes it&amp;#8217;s the little things that can take forever to figure out.&amp;nbsp; I inherited a web application that connected to a CRM tenant and after adding a few new attributes to CRM, I needed to update my WebReference.&amp;nbsp; Unfortunately the last developer had been working in a VPC so my WebReference that I had set to the CRM server resulted in the proxy classes that were &amp;#8220;generic&amp;#8221; and did not contain my customizations.&amp;nbsp; I remembered doing this before, but it had been awhile so I had to search for the answer (again):&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:blue'&gt;&amp;lt;&lt;/span&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:#A31515'&gt;add&lt;/span&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:blue'&gt; &lt;/span&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:red'&gt;key&lt;/span&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:blue'&gt;=&lt;/span&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;quot;&lt;span style='color:blue'&gt;crmservice.CrmServiceWsdl&lt;/span&gt;&amp;quot;&lt;span style='color:blue'&gt; &lt;/span&gt;&lt;span style='color:red'&gt;value&lt;/span&gt;&lt;span style='color:blue'&gt;=&lt;/span&gt;&amp;quot;&lt;span style='color:blue'&gt;http://&amp;lt;CRM Server&amp;gt;/mscrmservices/2007/crmservice.asmx?uniquename=&amp;lt;tenant&amp;gt;&lt;/span&gt;&amp;quot;&lt;span style='color:blue'&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-8406865486462484470?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/8406865486462484470/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=8406865486462484470' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/8406865486462484470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/8406865486462484470'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2010/10/creating-webreference-to-specific-crm.html' title='Creating a WebReference to a specific CRM tenant'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-8191788719209014267</id><published>2010-10-05T16:06:00.000-04:00</published><updated>2010-10-05T16:10:18.324-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CRM'/><title type='text'>Setup a domain user account as the CrmAppPool identity</title><content type='html'>&lt;div class=Section1&gt;  &lt;p class=MsoNormal&gt;It was difficult to find the documentation on exactly which groups / policies the CrmAppPool identity needed when changing from Network Service to a domain user account.&amp;nbsp; Fortunately I found &lt;a href="http://support.microsoft.com/kb/929388"&gt;this Microsoft KB which gives you step-by-step instructions&lt;/a&gt; (note, I removed the CRM 3.0 portions) and it worked on the first try:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:.5in;text-indent:-.25in;line-height:18.0pt;mso-list:l0 level1 lfo1'&gt;&lt;![if !supportLists]&gt;&lt;span style='font-size:8.5pt;font-family:"Verdana","sans-serif";color:black'&gt;&lt;span style='mso-list:Ignore'&gt;1.&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;&lt;span style='font-size:8.5pt;font-family:"Verdana","sans-serif"; color:black'&gt;Include the domain account user in the following groups in Active Directory: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:1.0in;text-indent:-.25in;line-height:18.0pt;mso-list:l0 level2 lfo1'&gt;&lt;![if !supportLists]&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New";color:black'&gt;&lt;span style='mso-list:Ignore'&gt;o&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;&lt;span style='font-size:8.5pt;font-family:"Verdana","sans-serif"; color:black'&gt;The Domain Users Active Directory group &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:1.0in;text-indent:-.25in;line-height:18.0pt;mso-list:l0 level2 lfo1'&gt;&lt;![if !supportLists]&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New";color:black'&gt;&lt;span style='mso-list:Ignore'&gt;o&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;&lt;span style='font-size:8.5pt;font-family:"Verdana","sans-serif"; color:black'&gt;The PrivUserGroup &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:1.0in;text-indent:-.25in;line-height:18.0pt;mso-list:l0 level2 lfo1'&gt;&lt;![if !supportLists]&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New";color:black'&gt;&lt;span style='mso-list:Ignore'&gt;o&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;&lt;span style='font-size:8.5pt;font-family:"Verdana","sans-serif"; color:black'&gt;The SQLAccessGroup&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:.5in;line-height:18.0pt'&gt;&lt;span style='font-size:8.5pt;font-family: "Verdana","sans-serif";color:black'&gt;To do this, follow these steps: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:.5in;text-indent:0in;line-height:18.0pt;mso-list:l0 level2 lfo2'&gt;&lt;![if !supportLists]&gt;&lt;span style='font-size:8.5pt;font-family:"Verdana","sans-serif";color:black'&gt;&lt;span style='mso-list:Ignore'&gt;d.&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;&lt;span style='font-size:8.5pt;font-family:"Verdana","sans-serif"; color:black'&gt;Log on to a server as a user who has the Domain Admin rights or the rights to update these groups. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:1.0in;text-indent:-.25in;line-height:18.0pt;mso-list:l0 level2 lfo2'&gt;&lt;![if !supportLists]&gt;&lt;span style='font-size:8.5pt;font-family:"Verdana","sans-serif";color:black'&gt;&lt;span style='mso-list:Ignore'&gt;e.&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;&lt;span style='font-size:8.5pt;font-family:"Verdana","sans-serif"; color:black'&gt;Right-click the &lt;strong&gt;&lt;span style='font-family:"Verdana","sans-serif"'&gt;Domain Users&lt;/span&gt;&lt;/strong&gt; group in Active Directory, and then click &lt;strong&gt;&lt;span style='font-family:"Verdana","sans-serif"'&gt;Properties&lt;/span&gt;&lt;/strong&gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:1.0in;text-indent:-.25in;line-height:18.0pt;mso-list:l0 level2 lfo2'&gt;&lt;![if !supportLists]&gt;&lt;span style='font-size:8.5pt;font-family:"Verdana","sans-serif";color:black'&gt;&lt;span style='mso-list:Ignore'&gt;f.&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;&lt;span style='font-size:8.5pt;font-family:"Verdana","sans-serif"; color:black'&gt;In the &lt;strong&gt;&lt;span style='font-family:"Verdana","sans-serif"'&gt;Group name&lt;/span&gt;&lt;/strong&gt; box, type the name of the user who is running the CRM Application Pool, and then click &lt;strong&gt;&lt;span style='font-family:"Verdana","sans-serif"'&gt;OK&lt;/span&gt;&lt;/strong&gt; two times. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:1.0in;text-indent:-.25in;line-height:18.0pt;mso-list:l0 level2 lfo2'&gt;&lt;![if !supportLists]&gt;&lt;span style='font-size:8.5pt;font-family:"Verdana","sans-serif";color:black'&gt;&lt;span style='mso-list:Ignore'&gt;g.&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;&lt;span style='font-size:8.5pt;font-family:"Verdana","sans-serif"; color:black'&gt;Repeat steps b and c for the PrivUserGroup group and for the SQLAccessGroup group.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:.5in;line-height:18.0pt'&gt;&lt;span style='font-size:8.5pt;font-family: "Verdana","sans-serif";color:black'&gt;If you have more than one Microsoft Dynamics CRM deployment installed, multiple groups exist in Active Directory. To determine the groups that you want to update, follow these steps.&lt;br&gt; &lt;br&gt; &lt;b&gt;For Microsoft Dynamics CRM 4.0&lt;/b&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:.5in;text-indent:0in;line-height:18.0pt;mso-list:l0 level2 lfo4'&gt;&lt;![if !supportLists]&gt;&lt;span style='font-size:8.5pt;font-family:"Verdana","sans-serif";color:black'&gt;&lt;span style='mso-list:Ignore'&gt;h.&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;&lt;span style='font-size:8.5pt;font-family:"Verdana","sans-serif"; color:black'&gt;Run the following SQL statement against the MSCRM_config database: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;pre style='margin-left:1.0in;line-height:18.0pt;background:white'&gt;&lt;span style='font-family:Consolas;color:#333333'&gt;select id, friendlyname from organization&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/pre&gt;  &lt;p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:0in;text-indent:0in;line-height:18.0pt;mso-list:l0 level2 lfo4'&gt;&lt;![if !supportLists]&gt;&lt;span style='font-size:8.5pt;font-family:"Verdana","sans-serif";color:black'&gt;&lt;span style='mso-list:Ignore'&gt;i.&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;&lt;span style='font-size:8.5pt;font-family:"Verdana","sans-serif"; color:black'&gt;Note the GUID. For example, the GUID may be C8AB1D52-9383-4164-B571-4C80D46674E3 Org Name. &lt;/span&gt;&lt;span style='font-size: 8.5pt;font-family:"Verdana","sans-serif";color:black'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:1.0in;text-indent:-.25in;line-height:18.0pt;mso-list:l0 level2 lfo4'&gt;&lt;![if !supportLists]&gt;&lt;span style='font-size:8.5pt;font-family:"Verdana","sans-serif";color:black'&gt;&lt;span style='mso-list:Ignore'&gt;j.&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;&lt;span style='font-size:8.5pt;font-family:"Verdana","sans-serif"; color:black'&gt;Find the PrivUserGroup group and the SQLAccessGroup group in Active Directory. The group name contains the GUID that you noted in step b.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:.5in;text-indent:-.25in;line-height:18.0pt;mso-list:l0 level1 lfo4'&gt;&lt;![if !supportLists]&gt;&lt;span style='font-size:8.5pt;font-family:"Verdana","sans-serif";color:black'&gt;&lt;span style='mso-list:Ignore'&gt;2.&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;&lt;span style='font-size:8.5pt;font-family:"Verdana","sans-serif"; color:black'&gt;Include the domain account user in the following groups in the Microsoft Dynamics CRM server: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:1.0in;text-indent:-.25in;line-height:18.0pt;mso-list:l0 level2 lfo5'&gt;&lt;![if !supportLists]&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New";color:black'&gt;&lt;span style='mso-list:Ignore'&gt;o&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;&lt;span style='font-size:8.5pt;font-family:"Verdana","sans-serif"; color:black'&gt;The local IIS_WPG group &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:1.0in;text-indent:-.25in;line-height:18.0pt;mso-list:l0 level2 lfo5'&gt;&lt;![if !supportLists]&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New";color:black'&gt;&lt;span style='mso-list:Ignore'&gt;o&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;&lt;span style='font-size:8.5pt;font-family:"Verdana","sans-serif"; color:black'&gt;The local CRM_WPG group&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:.5in;line-height:18.0pt'&gt;&lt;b&gt;&lt;span style='font-size:8.5pt; font-family:"Verdana","sans-serif";color:black'&gt;Note&lt;/span&gt;&lt;/b&gt;&lt;span style='font-size:8.5pt;font-family:"Verdana","sans-serif";color:black'&gt; The domain account user must have the following local user rights: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:1.0in;text-indent:-.25in;line-height:18.0pt;mso-list:l0 level2 lfo5'&gt;&lt;![if !supportLists]&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New";color:black'&gt;&lt;span style='mso-list:Ignore'&gt;o&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;&lt;span style='font-size:8.5pt;font-family:"Verdana","sans-serif"; color:black'&gt;The &lt;strong&gt;&lt;span style='font-family:"Verdana","sans-serif"'&gt;Impersonate a client after authentication&lt;/span&gt;&lt;/strong&gt; right &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:1.0in;text-indent:-.25in;line-height:18.0pt;mso-list:l0 level2 lfo5'&gt;&lt;![if !supportLists]&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New";color:black'&gt;&lt;span style='mso-list:Ignore'&gt;o&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;&lt;span style='font-size:8.5pt;font-family:"Verdana","sans-serif"; color:black'&gt;The &lt;strong&gt;&lt;span style='font-family:"Verdana","sans-serif"'&gt;Log on as a service&lt;/span&gt;&lt;/strong&gt; right&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:.5in;line-height:18.0pt'&gt;&lt;span style='font-size:8.5pt;font-family: "Verdana","sans-serif";color:black'&gt;To do this, follow these steps: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:1.0in;text-indent:-.25in;line-height:18.0pt;mso-list:l0 level2 lfo6'&gt;&lt;![if !supportLists]&gt;&lt;span style='font-size:8.5pt;font-family:"Verdana","sans-serif";color:black'&gt;&lt;span style='mso-list:Ignore'&gt;d.&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;&lt;span style='font-size:8.5pt;font-family:"Verdana","sans-serif"; color:black'&gt;In the Microsoft Dynamics CRM server, click &lt;strong&gt;&lt;span style='font-family:"Verdana","sans-serif"'&gt;Start&lt;/span&gt;&lt;/strong&gt;, point to &lt;strong&gt;&lt;span style='font-family:"Verdana","sans-serif"'&gt;Administrative Tools&lt;/span&gt;&lt;/strong&gt;, and then click &lt;strong&gt;&lt;span style='font-family:"Verdana","sans-serif"'&gt;Local Security Policy&lt;/span&gt;&lt;/strong&gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:1.0in;text-indent:-.25in;line-height:18.0pt;mso-list:l0 level2 lfo6'&gt;&lt;![if !supportLists]&gt;&lt;span style='font-size:8.5pt;font-family:"Verdana","sans-serif";color:black'&gt;&lt;span style='mso-list:Ignore'&gt;e.&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;&lt;span style='font-size:8.5pt;font-family:"Verdana","sans-serif"; color:black'&gt;Expand &lt;strong&gt;&lt;span style='font-family:"Verdana","sans-serif"'&gt;Local Policies&lt;/span&gt;&lt;/strong&gt;, and then click &lt;strong&gt;&lt;span style='font-family:"Verdana","sans-serif"'&gt;User Rights Assignment&lt;/span&gt;&lt;/strong&gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:1.0in;text-indent:-.25in;line-height:18.0pt;mso-list:l0 level2 lfo6'&gt;&lt;![if !supportLists]&gt;&lt;span style='font-size:8.5pt;font-family:"Verdana","sans-serif";color:black'&gt;&lt;span style='mso-list:Ignore'&gt;f.&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;&lt;span style='font-size:8.5pt;font-family:"Verdana","sans-serif"; color:black'&gt;Right-click &lt;strong&gt;&lt;span style='font-family:"Verdana","sans-serif"'&gt;Impersonate a client after authentication&lt;/span&gt;&lt;/strong&gt;, and then click &lt;strong&gt;&lt;span style='font-family:"Verdana","sans-serif"'&gt;Properties&lt;/span&gt;&lt;/strong&gt;. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:1.0in;text-indent:-.25in;line-height:18.0pt;mso-list:l0 level2 lfo6'&gt;&lt;![if !supportLists]&gt;&lt;span style='font-size:8.5pt;font-family:"Verdana","sans-serif";color:black'&gt;&lt;span style='mso-list:Ignore'&gt;g.&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;&lt;span style='font-size:8.5pt;font-family:"Verdana","sans-serif"; color:black'&gt;Click &lt;strong&gt;&lt;span style='font-family:"Verdana","sans-serif"'&gt;Add User or Group&lt;/span&gt;&lt;/strong&gt;. &lt;br&gt; &lt;br&gt; &lt;b&gt;Note&lt;/b&gt; You may have to click &lt;strong&gt;&lt;span style='font-family:"Verdana","sans-serif"'&gt;Location&lt;/span&gt;&lt;/strong&gt; to select the domain instead of the local computer. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:1.0in;text-indent:-.25in;line-height:18.0pt;mso-list:l0 level2 lfo6'&gt;&lt;![if !supportLists]&gt;&lt;span style='font-size:8.5pt;font-family:"Verdana","sans-serif";color:black'&gt;&lt;span style='mso-list:Ignore'&gt;h.&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;&lt;span style='font-size:8.5pt;font-family:"Verdana","sans-serif"; color:black'&gt;In the &lt;strong&gt;&lt;span style='font-family:"Verdana","sans-serif"'&gt;Group name&lt;/span&gt;&lt;/strong&gt; box, type the name of the user who is running the CRM Application Pool, and then click &lt;strong&gt;&lt;span style='font-family:"Verdana","sans-serif"'&gt;OK&lt;/span&gt;&lt;/strong&gt; two times. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:1.0in;text-indent:-.25in;line-height:18.0pt;mso-list:l0 level2 lfo6'&gt;&lt;![if !supportLists]&gt;&lt;span style='font-size:8.5pt;font-family:"Verdana","sans-serif";color:black'&gt;&lt;span style='mso-list:Ignore'&gt;i.&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;&lt;span style='font-size:8.5pt;font-family:"Verdana","sans-serif"; color:black'&gt;Repeat steps 2c through 2e for the &lt;strong&gt;&lt;span style='font-family: "Verdana","sans-serif"'&gt;Log on as a service&lt;/span&gt;&lt;/strong&gt; right.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto; margin-left:.5in;text-indent:-.25in;line-height:18.0pt;mso-list:l0 level1 lfo7'&gt;&lt;![if !supportLists]&gt;&lt;span style='font-size:8.5pt;font-family:"Verdana","sans-serif";color:black'&gt;&lt;span style='mso-list:Ignore'&gt;3.&lt;span style='font:7.0pt "Times New Roman"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;![endif]&gt;&lt;span style='font-size:8.5pt;font-family:"Verdana","sans-serif"; color:black'&gt;Restart Internet Information Services (IIS). To do this, click &lt;strong&gt;&lt;span style='font-family:"Verdana","sans-serif"'&gt;Start&lt;/span&gt;&lt;/strong&gt;, click &lt;strong&gt;&lt;span style='font-family:"Verdana","sans-serif"'&gt;Run&lt;/span&gt;&lt;/strong&gt;, type &lt;b&gt;IISRESET&lt;/b&gt;, and then click &lt;strong&gt;&lt;span style='font-family:"Verdana","sans-serif"'&gt;OK&lt;/span&gt;&lt;/strong&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;  &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-8191788719209014267?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/8191788719209014267/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=8191788719209014267' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/8191788719209014267'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/8191788719209014267'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2010/10/setup-domain-user-account-as-crmapppool.html' title='Setup a domain user account as the CrmAppPool identity'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-8145762362356839824</id><published>2010-08-17T11:18:00.003-04:00</published><updated>2010-08-17T11:21:38.202-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CRM'/><title type='text'>Connect to CRM Web Service using impersonation</title><content type='html'>&lt;div class="Section1"&gt;&lt;p class="MsoNormal"&gt;My Dev and Test servers live in two different domains and I am developing an external “portal” for public users to interface with CRM using web services.  I am developing locally, but my CRM server is on a different domain, so I need to use a different domain user to connect to the web service.  I am using the new SDK and the connection string was easy to change from “Integrated” to “AD”:&lt;?xml:namespace prefix = o /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;&amp;lt;add name="Crm" &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;  connectionString="Authentication Type=AD;Server=http://CRM/Org1;User ID=USA\user1;Password=pass1"&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:'Courier New';font-size:8;"&gt;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;But I also need to use the MetadataService to lookup some picklist values and that requires connecting the “old school” way.  We were already using the Crm connection string to configure the MetadataService, so I just needed to check the Auth type and grab the User ID and Password:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;br /&gt;&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; MetadataService GetMetadataServiceForConnString()&lt;br /&gt;{&lt;br /&gt;    &lt;span class="kwrd"&gt;string&lt;/span&gt; serverPath = GetConfigAttribute(&lt;span class="str"&gt;"server=http://"&lt;/span&gt;);&lt;br /&gt;    &lt;span class="kwrd"&gt;string&lt;/span&gt;[] serverPathParts = serverPath.Split(&lt;span class="str"&gt;'/'&lt;/span&gt;);&lt;br /&gt;    &lt;span class="kwrd"&gt;string&lt;/span&gt; connServer = serverPathParts[0];&lt;br /&gt;    &lt;span class="kwrd"&gt;string&lt;/span&gt; connOrgName = serverPathParts[1];&lt;br /&gt;    &lt;span class="kwrd"&gt;string&lt;/span&gt; username = &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;br /&gt;    &lt;span class="kwrd"&gt;string&lt;/span&gt; password = &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;br /&gt;    &lt;span class="kwrd"&gt;string&lt;/span&gt; domain = &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;br /&gt;    &lt;span class="kwrd"&gt;if&lt;/span&gt; (GetConfigAttribute(&lt;span class="str"&gt;"authentication type="&lt;/span&gt;).ToLower() == &lt;span class="str"&gt;"ad"&lt;/span&gt;)&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="rem"&gt;// need to use active directory credentials&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;string&lt;/span&gt;[] usernameParts = GetConfigAttribute(&lt;span class="str"&gt;"user id="&lt;/span&gt;).Split('\\');&lt;br /&gt;        domain = usernameParts[0];&lt;br /&gt;        username = usernameParts[1];&lt;br /&gt;        password = GetConfigAttribute(&lt;span class="str"&gt;"password="&lt;/span&gt;);&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;    &lt;span class="kwrd"&gt;return&lt;/span&gt; GetMetadataService(connServer, connOrgName, username, password, domain);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; &lt;span class="kwrd"&gt;string&lt;/span&gt; GetConfigAttribute(&lt;span class="kwrd"&gt;string&lt;/span&gt; searchString)&lt;br /&gt;{&lt;br /&gt;    &lt;span class="kwrd"&gt;string&lt;/span&gt; connCrm = System.Configuration.ConfigurationManager.ConnectionStrings[&lt;span class="str"&gt;"Crm"&lt;/span&gt;].ConnectionString;&lt;br /&gt;    &lt;span class="kwrd"&gt;int&lt;/span&gt; pathPadding = searchString.Length;&lt;br /&gt;    &lt;span class="kwrd"&gt;int&lt;/span&gt; pathStart = connCrm.ToLower().IndexOf(searchString.ToLower()) + pathPadding;&lt;br /&gt;    &lt;span class="kwrd"&gt;int&lt;/span&gt; pathLength = connCrm.IndexOf(&lt;span class="str"&gt;";"&lt;/span&gt;, pathStart);&lt;br /&gt;    &lt;span class="kwrd"&gt;if&lt;/span&gt; (pathLength == -1)&lt;br /&gt;        pathLength = connCrm.Length;&lt;br /&gt;    pathLength -= pathStart;&lt;br /&gt;    &lt;span class="kwrd"&gt;return&lt;/span&gt; connCrm.Substring(pathStart, pathLength);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; MetadataService GetMetadataService(&lt;span class="kwrd"&gt;string&lt;/span&gt; server, &lt;span class="kwrd"&gt;string&lt;/span&gt; organizationName, &lt;span class="kwrd"&gt;string&lt;/span&gt; username, &lt;span class="kwrd"&gt;string&lt;/span&gt; password, &lt;span class="kwrd"&gt;string&lt;/span&gt; domain)&lt;br /&gt;{&lt;br /&gt;    CrmAuthenticationToken token = &lt;span class="kwrd"&gt;new&lt;/span&gt; CrmAuthenticationToken();&lt;br /&gt;    token.AuthenticationType = AuthenticationType.AD; &lt;span class="rem"&gt;//Active Directory&lt;/span&gt;&lt;br /&gt;    token.OrganizationName = organizationName;&lt;br /&gt;    MetadataService service = &lt;span class="kwrd"&gt;new&lt;/span&gt; MetadataService();&lt;br /&gt;    service.Url = &lt;span class="kwrd"&gt;string&lt;/span&gt;.Format(&lt;span class="str"&gt;"http://{0}/mscrmservices/2007/MetadataService.asmx"&lt;/span&gt;, server);&lt;br /&gt;    &lt;span class="kwrd"&gt;if&lt;/span&gt; (username == &lt;span class="kwrd"&gt;null&lt;/span&gt;)&lt;br /&gt;    {&lt;br /&gt;        service.UseDefaultCredentials = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;    }&lt;br /&gt;    &lt;span class="kwrd"&gt;else&lt;/span&gt;&lt;br /&gt;    {&lt;br /&gt;        service.UseDefaultCredentials = &lt;span class="kwrd"&gt;false&lt;/span&gt;;&lt;br /&gt;        System.Net.ICredentials WebServiceCredentials = &lt;br /&gt;            &lt;span class="kwrd"&gt;new&lt;/span&gt; System.Net.NetworkCredential(username,password,domain);&lt;br /&gt;        service.Credentials = WebServiceCredentials;&lt;br /&gt;    }&lt;br /&gt;    service.PreAuthenticate = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;    service.CrmAuthenticationTokenValue = token;&lt;br /&gt;    &lt;span class="kwrd"&gt;return&lt;/span&gt; service;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-8145762362356839824?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/8145762362356839824/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=8145762362356839824' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/8145762362356839824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/8145762362356839824'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2010/08/connect-to-crm-web-service-using.html' title='Connect to CRM Web Service using impersonation'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-2443089554720227611</id><published>2010-08-05T14:19:00.001-04:00</published><updated>2010-08-05T14:23:53.003-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='data'/><title type='text'>Use xp_cmdshell and BCP to Export SQL Server data to CSV</title><content type='html'>&lt;div class=Section1&gt;  &lt;p class=MsoNormal&gt;&lt;a href="http://www.mssqltips.com/tip.asp?tip=1633"&gt;This article&lt;/a&gt; describes how to use &lt;span style='font-size:10.0pt;font-family: "Courier New"'&gt;xp_cmdshell&lt;/span&gt; and BCP to export data to CSV.&amp;nbsp; One problem I ran into was the error &amp;#8220;Unable to open BCP host data-file&amp;#8221;.&amp;nbsp; This turned out to be a file permission issue.&amp;nbsp; I had to give NETWORK SERVICE (the local account that runs my SQL Server service) Full Access rights to the &lt;b&gt;queryout&lt;/b&gt; directory.&amp;nbsp; I also had to use the &amp;#8211;S flag to specify which SQL Instance (my server has two) to connect to:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;EXEC xp_cmdshell 'bcp &amp;quot;SELECT * FROM &amp;lt;my database&amp;gt;.dbo.account&amp;quot; queryout &amp;quot;D:\queryout\bcptest.txt&amp;quot; -T -S &amp;quot;&amp;lt;my server&amp;gt;\&amp;lt;my instance&amp;gt;&amp;quot; -c -t,'&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;  &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-2443089554720227611?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/2443089554720227611/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=2443089554720227611' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/2443089554720227611'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/2443089554720227611'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2010/08/use-xpcmdshell-and-bcp-to-export-sql.html' title='Use xp_cmdshell and BCP to Export SQL Server data to CSV'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-3665471307684909140</id><published>2010-08-05T14:02:00.001-04:00</published><updated>2010-08-05T14:23:53.004-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='data'/><title type='text'>Get a list of all the tables in a SQL 2005/2008 database</title><content type='html'>&lt;div class=Section1&gt;  &lt;p class=MsoNormal&gt;I thought this SQL 2005/2008 tip was very cool.&amp;nbsp; This gets a list of all the tables in my database:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;SELECT [name] FROM &amp;lt;my database&amp;gt;.sys.tables;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;  &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-3665471307684909140?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/3665471307684909140/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=3665471307684909140' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/3665471307684909140'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/3665471307684909140'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2010/08/get-list-of-all-tables-in-sql-20052008.html' title='Get a list of all the tables in a SQL 2005/2008 database'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-1331088645009299051</id><published>2010-07-21T14:03:00.000-04:00</published><updated>2010-08-05T14:23:53.005-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='data'/><title type='text'>Grant Permission for SQL User for Membership Provider using Database Role</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://4.bp.blogspot.com/_1spBxVsA54A/TEc2ksA8FJI/AAAAAAAAAg4/UE0RPm0cpKs/s1600/aspnetdb_db_role-741989.png"&gt;&lt;img src="http://4.bp.blogspot.com/_1spBxVsA54A/TEc2ksA8FJI/AAAAAAAAAg4/UE0RPm0cpKs/s320/aspnetdb_db_role-741989.png"  border="0" alt="" id="BLOGGER_PHOTO_ID_5496421874147267730" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=Section1&gt;  &lt;p class=MsoNormal&gt;The SQL User connecting to your Membershp Provider database (default named &lt;b&gt;aspnetdb&lt;/b&gt;) should have the following database role:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;b&gt;&lt;span style='font-size:14.0pt'&gt;aspnet_Membership_FullAccess&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;span style='font-size:14.0pt'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;Otherwise you will get the following error:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;EXECUTE permission denied on object 'aspnet_CheckSchemaVersion', database 'aspnetdb', schema 'dbo'.&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-1331088645009299051?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/1331088645009299051/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=1331088645009299051' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/1331088645009299051'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/1331088645009299051'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2010/07/grant-permission-for-sql-user-for.html' title='Grant Permission for SQL User for Membership Provider using Database Role'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_1spBxVsA54A/TEc2ksA8FJI/AAAAAAAAAg4/UE0RPm0cpKs/s72-c/aspnetdb_db_role-741989.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-3148738035625225508</id><published>2010-07-21T13:55:00.001-04:00</published><updated>2010-08-05T14:24:13.674-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><title type='text'>Connection String for Membership Provider using a Trusted Connection over TCP/IP on a specific Port</title><content type='html'>&lt;div class=Section1&gt;  &lt;p class=MsoNormal&gt;&lt;span style='font-size:12.0pt;font-family:"Courier New"; color:black'&gt;&amp;lt;add name=&amp;quot;LocalSqlServer&amp;quot; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;span style='font-size:12.0pt;font-family:"Courier New"; color:black'&gt;&amp;nbsp; connectionString=&amp;quot;Data Source=192.0.0.1,2116;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;span style='font-size:12.0pt;font-family:"Courier New"; color:black'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Network Library=DBMSSOCN;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;span style='font-size:12.0pt;font-family:"Courier New"; color:black'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Initial Catalog=aspnetdb;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;span style='font-size:12.0pt;font-family:"Courier New"; color:black'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Integrated Security=SSPI;&amp;quot;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;  &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-3148738035625225508?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/3148738035625225508/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=3148738035625225508' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/3148738035625225508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/3148738035625225508'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2010/07/connection-string-for-membership.html' title='Connection String for Membership Provider using a Trusted Connection over TCP/IP on a specific Port'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-23020157545272392</id><published>2010-07-20T10:29:00.003-04:00</published><updated>2010-07-20T10:54:52.128-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><title type='text'>Using data binding with Eval to set TemplateField button Visible property</title><content type='html'>&lt;div class="Section1"&gt;&lt;p class="MsoNormal"&gt;I needed to conditionally hide a delete button in a GridView. This data binding expression did the trick:&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:ImageButton&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="ImageButton1"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt; &lt;span class="attr"&gt;CausesValidation&lt;/span&gt;&lt;span class="kwrd"&gt;="False"&lt;/span&gt;&lt;br /&gt;    &lt;span class="attr"&gt;CommandName&lt;/span&gt;&lt;span class="kwrd"&gt;="Delete"&lt;/span&gt; &lt;span class="attr"&gt;ImageUrl&lt;/span&gt;&lt;span class="kwrd"&gt;="~/_Images/cross.png"&lt;/span&gt; &lt;span class="attr"&gt;Text&lt;/span&gt;&lt;span class="kwrd"&gt;="Delete"&lt;/span&gt;&lt;br /&gt;    &lt;span class="attr"&gt;Visible&lt;/span&gt;&lt;span class="kwrd"&gt;='&amp;lt;%# ((string)Eval("statuscodeLabel") == "Draft") %&amp;gt;'&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;br /&gt;&lt;?xml:namespace prefix = o /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;o:p&gt;I also ran across this little beauty that calls a DAL class to do a check against the database (the data is hopefully cached):&lt;/o:p&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;o:p&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:HyperLink&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="lnkCert"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt; &lt;br /&gt;    &lt;span class="attr"&gt;Visible&lt;/span&gt;&lt;span class="kwrd"&gt;='&amp;lt;%# SomeDAL.UserCanDoSomething(CType(Container.DataItem, System.Data.DataRowView).Item("Code").ToString()) %&amp;gt;'&lt;/span&gt;&lt;br /&gt;    &lt;span class="attr"&gt;NavigateUrl&lt;/span&gt;&lt;span class="kwrd"&gt;='&amp;lt;%# Eval("ID", "~/forms/AgencyForm.aspx?pid={0}&amp;amp;mode=cert") %&amp;gt;'&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;img&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;="../images/tick.png"&lt;/span&gt; &lt;span class="attr"&gt;alt&lt;/span&gt;&lt;span class="kwrd"&gt;="Certify Agency Data"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp:HyperLink&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;/o:p&gt;&lt;/p&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-23020157545272392?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/23020157545272392/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=23020157545272392' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/23020157545272392'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/23020157545272392'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2010/07/using-data-binding-with-eval-to-set.html' title='Using data binding with Eval to set TemplateField button Visible property'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-823841628128655397</id><published>2010-07-17T23:18:00.000-04:00</published><updated>2010-08-05T14:24:22.300-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='casual'/><title type='text'>Pride goeth before a fall</title><content type='html'>&lt;a href="http://goo.gl/photos/3OJa" imageanchor="1" style="clear:right;margin-bottom:1em;margin-left:1em"&gt;&lt;img border="0" src="http://lh6.ggpht.com/_1spBxVsA54A/TEJu4uM1XvI/AAAAAAAAAeI/ikEtthzCCWs/s512/Water%20skiing%202010%20083.JPG" /&gt;&lt;/a&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I assure you...this did not end well.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-823841628128655397?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/823841628128655397/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=823841628128655397' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/823841628128655397'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/823841628128655397'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2010/07/pride-goeth-before-fall.html' title='Pride goeth before a fall'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://lh6.ggpht.com/_1spBxVsA54A/TEJu4uM1XvI/AAAAAAAAAeI/ikEtthzCCWs/s72-c/Water%20skiing%202010%20083.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-8349031052069464716</id><published>2010-07-16T12:25:00.001-04:00</published><updated>2010-08-05T14:24:31.206-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CRM'/><title type='text'>Using CRM Advanced Developer Extensions to Add Attachment to Contact</title><content type='html'>&lt;div class=Section1&gt;  &lt;p class=MsoNormal&gt;This &lt;a href="http://msdn.microsoft.com/en-us/library/ff681566.aspx"&gt;code sample is straight from MSDN&lt;/a&gt;, but it is so often used, I wanted to make sure I kept it handy:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='word-break:break-all'&gt;&lt;span style='font-size:10.0pt; font-family:Consolas;color:black'&gt;// Add a note with a document attachment to the contact's record.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='word-break:break-all'&gt;&lt;span style='font-size:10.0pt; font-family:Consolas;color:black'&gt;var attachment = File.OpenRead(&amp;quot;capture.png&amp;quot;);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='word-break:break-all'&gt;&lt;span style='font-size:10.0pt; font-family:Consolas;color:black'&gt;var data = new byte[attachment.Length];&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='word-break:break-all'&gt;&lt;span style='font-size:10.0pt; font-family:Consolas;color:black'&gt;attachment.Read(data, 0, (int)attachment.Length);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='word-break:break-all'&gt;&lt;span style='font-size:10.0pt; font-family:Consolas;color:black'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='word-break:break-all'&gt;&lt;span style='font-size:10.0pt; font-family:Consolas;color:black'&gt;var note = new Xrm.annotation()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='word-break:break-all'&gt;&lt;span style='font-size:10.0pt; font-family:Consolas;color:black'&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='word-break:break-all'&gt;&lt;span style='font-size:10.0pt; font-family:Consolas;color:black'&gt;&amp;nbsp; subject = &amp;quot;Note subject...&amp;quot;,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='word-break:break-all'&gt;&lt;span style='font-size:10.0pt; font-family:Consolas;color:black'&gt;&amp;nbsp; notetext = &amp;quot;Note Details....&amp;quot;,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='word-break:break-all'&gt;&lt;span style='font-size:10.0pt; font-family:Consolas;color:black'&gt;&amp;nbsp; Contact_Annotation_id = contact.contactid,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='word-break:break-all'&gt;&lt;span style='font-size:10.0pt; font-family:Consolas;color:black'&gt;&amp;nbsp; objecttypecode = &amp;quot;contact&amp;quot;,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='word-break:break-all'&gt;&lt;span style='font-size:10.0pt; font-family:Consolas;color:black'&gt;&amp;nbsp; documentbody = Convert.ToBase64String(data),&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='word-break:break-all'&gt;&lt;span style='font-size:10.0pt; font-family:Consolas;color:black'&gt;&amp;nbsp; filename = Path.GetFileName(attachment.Name),&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='word-break:break-all'&gt;&lt;span style='font-size:10.0pt; font-family:Consolas;color:black'&gt;&amp;nbsp; mimetype = &amp;quot;image/png&amp;quot;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='word-break:break-all'&gt;&lt;span style='font-size:10.0pt; font-family:Consolas;color:black'&gt;};&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='word-break:break-all'&gt;&lt;span style='font-size:10.0pt; font-family:Consolas;color:black'&gt;crm.AddToannotations(note);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='word-break:break-all'&gt;&lt;span style='font-size:10.0pt; font-family:Consolas;color:black'&gt;crm.SaveChanges();&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;  &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-8349031052069464716?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/8349031052069464716/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=8349031052069464716' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/8349031052069464716'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/8349031052069464716'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2010/07/using-crm-advanced-developer-extensions.html' title='Using CRM Advanced Developer Extensions to Add Attachment to Contact'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-1523982282381505784</id><published>2010-07-09T15:44:00.002-04:00</published><updated>2010-07-09T15:48:06.227-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CRM'/><title type='text'>Retrieve CRM Entity's Picklist using MetadataService</title><content type='html'>&lt;div class="Section1"&gt;&lt;p class="MsoNormal"&gt;This method returns a NameValueCollection of picklist items. CrmHelper is similar to the &lt;a href="http://msdn.microsoft.com/en-us/library/cc308186.aspx"&gt;SDK utility sample&lt;/a&gt;.&lt;/p&gt;&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; NameValueCollection GetAgencyRelationshipTypePicklist()&lt;br /&gt;{&lt;br /&gt;    CrmHelper helper = &lt;span class="kwrd"&gt;new&lt;/span&gt; CrmHelper();&lt;br /&gt;&lt;br /&gt;    NameValueCollection picklist = &lt;span class="kwrd"&gt;new&lt;/span&gt; NameValueCollection();&lt;br /&gt;&lt;br /&gt;    RetrieveAttributeRequest attribReq = &lt;span class="kwrd"&gt;new&lt;/span&gt; RetrieveAttributeRequest();&lt;br /&gt;    attribReq.EntityLogicalName = &lt;span class="str"&gt;"new_agencycontact"&lt;/span&gt;;&lt;br /&gt;    attribReq.LogicalName = &lt;span class="str"&gt;"new_agencycontacttype"&lt;/span&gt;;&lt;br /&gt;    attribReq.RetrieveAsIfPublished = &lt;span class="kwrd"&gt;true&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;    MetadataService service = helper.GetMetadataService(); &lt;br /&gt;&lt;br /&gt;    RetrieveAttributeResponse attribResp = service.Execute(attribReq) &lt;span class="kwrd"&gt;as&lt;/span&gt; RetrieveAttributeResponse;&lt;br /&gt;&lt;br /&gt;    PicklistAttributeMetadata listData = attribResp.AttributeMetadata &lt;span class="kwrd"&gt;as&lt;/span&gt; PicklistAttributeMetadata;&lt;br /&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;foreach&lt;/span&gt; (Option item &lt;span class="kwrd"&gt;in&lt;/span&gt; listData.Options)&lt;br /&gt;    {&lt;br /&gt;        picklist.Add(item.Value.formattedvalue, item.Label.UserLocLabel.Label);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;return&lt;/span&gt; picklist;&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-1523982282381505784?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/1523982282381505784/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=1523982282381505784' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/1523982282381505784'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/1523982282381505784'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2010/07/retrieve-crm-entitys-picklist-using.html' title='Retrieve CRM Entity&apos;s Picklist using MetadataService'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-6184330803562895522</id><published>2010-07-09T11:45:00.001-04:00</published><updated>2010-07-09T15:48:17.638-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><title type='text'>Use JavaScript to hide an ASP.Net Button</title><content type='html'>&lt;div class=Section1&gt;  &lt;p class=MsoNormal&gt;To be 508 compliant, my page must allow users to select items from a drop-down list with JavaScript disabled, so I added a &amp;#8220;select&amp;#8221; button (called &lt;b&gt;btnAgSelect&lt;/b&gt;) next to the list.&amp;nbsp; When JS is enabled, I do not want the button to be visible, so I used this in my Page.Load() event:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:#2B91AF'&gt;ScriptManager&lt;/span&gt;&lt;span style='font-size:10.0pt;font-family: "Courier New"'&gt;.RegisterStartupScript(&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp; &lt;span style='color:blue'&gt;this&lt;/span&gt; ,&lt;span style='color:blue'&gt;this&lt;/span&gt;.GetType(), &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp; &lt;span style='color:#A31515'&gt;&amp;quot;&amp;quot;&lt;/span&gt;, &lt;span style='color:#A31515'&gt;&amp;quot;document.getElementById('&amp;quot;&lt;/span&gt; + &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp; btnAgSelect.ClientID + &lt;span style='color:#A31515'&gt;&amp;quot;').style.visibility='hidden';&amp;quot;&lt;/span&gt;,&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&lt;span style='color:blue'&gt;true&lt;/span&gt;);&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-6184330803562895522?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/6184330803562895522/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=6184330803562895522' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/6184330803562895522'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/6184330803562895522'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2010/07/use-javascript-to-hide-aspnet-button.html' title='Use JavaScript to hide an ASP.Net Button'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-1969744425874876562</id><published>2010-07-03T07:44:00.001-04:00</published><updated>2010-07-03T07:44:42.428-04:00</updated><title type='text'>Windows XP Standby Wakes Up</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://4.bp.blogspot.com/_1spBxVsA54A/TC8iqjO0BBI/AAAAAAAAAbM/6ZeD6MG66mk/s1600/LaptopWakeUp-782429.png"&gt;&lt;img src="http://4.bp.blogspot.com/_1spBxVsA54A/TC8iqjO0BBI/AAAAAAAAAbM/6ZeD6MG66mk/s320/LaptopWakeUp-782429.png"  border="0" alt="" id="BLOGGER_PHOTO_ID_5489644585195144210" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=Section1&gt;  &lt;p class=MsoNormal&gt;I got a new work laptop that I typically left on Standby, but it kept waking up in the middle of the night and draining the battery.&amp;nbsp; I assumed it was the NIC&amp;#8217;s Wake-On-LAN setting so I disabled the following setting (note the OS warning that someone had obviously ignored) using Hardware Manager (System &amp;#8211; Hardware tab):&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;  &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-1969744425874876562?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/1969744425874876562/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=1969744425874876562' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/1969744425874876562'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/1969744425874876562'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2010/07/windows-xp-standby-wakes-up.html' title='Windows XP Standby Wakes Up'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_1spBxVsA54A/TC8iqjO0BBI/AAAAAAAAAbM/6ZeD6MG66mk/s72-c/LaptopWakeUp-782429.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-2947694898690949961</id><published>2010-06-11T14:59:00.001-04:00</published><updated>2010-07-09T15:48:28.658-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CRM'/><title type='text'>Finding CRM 4.0 Entities with Attachments by Querying annotationBase Table</title><content type='html'>&lt;div class=Section1&gt;  &lt;p class=MsoNormal&gt;I needed to find all of the inactive records for an entity that had documents attached:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:blue'&gt;SELECT&lt;/span&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&lt;i&gt;&lt;span style='color:fuchsia'&gt;COUNT&lt;/span&gt;&lt;/i&gt;&lt;span style='color:maroon'&gt;(&lt;/span&gt;&lt;span style='color:silver'&gt;*&lt;/span&gt;&lt;span style='color:maroon'&gt;)&lt;/span&gt; &lt;br&gt; &lt;span style='color:blue'&gt;FROM&lt;/span&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color:maroon'&gt;new_myEntityBase&lt;/span&gt;&amp;nbsp;&lt;span style='color:maroon'&gt;t&lt;/span&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color:blue'&gt;JOIN&lt;/span&gt;&amp;nbsp;&lt;span style='color:maroon'&gt;annotationBase&lt;/span&gt;&amp;nbsp;&lt;span style='color:maroon'&gt;ab&lt;/span&gt; &lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;span style='color:blue'&gt;ON&lt;/span&gt;&amp;nbsp;&lt;span style='color:maroon'&gt;t&lt;/span&gt;&lt;span style='color:silver'&gt;.&lt;/span&gt;&lt;span style='color:maroon'&gt;myentityid&lt;/span&gt;&amp;nbsp;&lt;span style='color:silver'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color:maroon'&gt;ab&lt;/span&gt;&lt;span style='color:silver'&gt;.&lt;/span&gt;&lt;span style='color:maroon'&gt;objectid&lt;/span&gt; &lt;br&gt; &lt;span style='color:blue'&gt;WHERE&lt;/span&gt;&amp;nbsp;&amp;nbsp;&lt;span style='color:maroon'&gt;statecode&lt;/span&gt;&amp;nbsp;&lt;span style='color:silver'&gt;=&lt;/span&gt;&amp;nbsp;&lt;span style='color:black'&gt;1&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-2947694898690949961?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/2947694898690949961/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=2947694898690949961' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/2947694898690949961'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/2947694898690949961'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2010/06/finding-crm-40-entities-with.html' title='Finding CRM 4.0 Entities with Attachments by Querying annotationBase Table'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-5067402150461316800</id><published>2010-05-11T16:38:00.001-04:00</published><updated>2010-05-11T17:00:01.564-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><title type='text'>Move Flex Alert.show on the screen</title><content type='html'>&lt;div class=Section1&gt;  &lt;p class=MsoNormal&gt;I have a tall Flex application that uses Alert.show( ) to display error messages.&amp;nbsp; This created problems when the error messages were centered on the screen, but not visible when the screen was at an extreme scroll position (top or bottom).&amp;nbsp; To solve this, I capture the MouseEvent and use it to set the Alert&amp;#8217;s &amp;#8220;Y&amp;#8221; position.&amp;nbsp; Note this code did not work &lt;u&gt;UNTIL&lt;/u&gt; I used the PopUpManager.centerPopUp prior to moving:&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;b&gt;&lt;span style='font-size:10.0pt; font-family:"Courier New";color:#6699CC'&gt;var&lt;/span&gt;&lt;/b&gt;&lt;span style='font-size: 10.0pt;font-family:"Courier New";color:black'&gt; errorMsg:Alert = Alert.show(errmsg,&lt;/span&gt;&lt;b&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:#990000'&gt;&amp;quot;Error&amp;quot;&lt;/span&gt;&lt;/b&gt;&lt;span style='font-size:10.0pt; font-family:"Courier New";color:black'&gt;, Alert.OK, &lt;/span&gt;&lt;b&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New";color:#0033FF'&gt;this&lt;/span&gt;&lt;/b&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New";color:black'&gt;);&lt;/span&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt; font-family:"Courier New";color:black'&gt;PopUpManager.centerPopUp(errorMsg);&lt;/span&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt; font-family:"Courier New"'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;b&gt;&lt;span style='font-size:10.0pt; font-family:"Courier New";color:#6699CC'&gt;var&lt;/span&gt;&lt;/b&gt;&lt;span style='font-size: 10.0pt;font-family:"Courier New";color:black'&gt; mousePt:Point = &lt;/span&gt;&lt;b&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New";color:#0033FF'&gt;new&lt;/span&gt;&lt;/b&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New";color:black'&gt; Point(event.localX, event.localY);&lt;/span&gt;&lt;span style='font-size:10.0pt; font-family:"Courier New"'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='text-autospace:none'&gt;&lt;span style='font-size:10.0pt; font-family:"Courier New";color:black'&gt;mousePt = event.target.localToGlobal(mousePt);&lt;/span&gt;&lt;span style='font-size:10.0pt; font-family:"Courier New"'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:black'&gt;errorMsg.move(errorMsg.x, mousePt.y - 50); &lt;/span&gt;&lt;i&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New";color:#009900'&gt;// try to vertical center it at button&lt;/span&gt;&lt;/i&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-5067402150461316800?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/5067402150461316800/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=5067402150461316800' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/5067402150461316800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/5067402150461316800'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2010/05/move-flex-alertshow-on-screen.html' title='Move Flex Alert.show on the screen'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-8119359259470373066</id><published>2010-05-04T10:49:00.005-04:00</published><updated>2010-07-09T15:45:10.400-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><category scheme='http://www.blogger.com/atom/ns#' term='CRM'/><title type='text'>Compiling the CRM SDK CrmServiceUtility Class without Web References</title><content type='html'>&lt;div class="Section1"&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;span style="font-size:10;"&gt;According to Shan’s Blog post &lt;a href="http://www.shanmcarthur.net/crm/developers-corner/using-crm-sdk-instead-of-web-reference"&gt;Using CRM SDK Instead of Web References&lt;/a&gt;, it is often preferable to use the SDK classes instead of the proxy classes generated when you add web references. Using the CrmServiceUtility class found in the 4.0 SDK in the &lt;i&gt;&lt;span style="FONT-STYLE: italic"&gt;\server\reference\cs&lt;/span&gt;&lt;/i&gt; folder is a perfect case in point. The way the code is written, you can compile it without a web reference simply by adding references to &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&lt;span style="font-family:';font-size:10;"&gt;Microsoft.Crm.Sdk.dll,&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:10;"&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&lt;span style="font-family:';font-size:10;"&gt;Microsoft.Crm.SdkTypeProxy.dll, and System.Web.Services&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:10;"&gt; and two using statements:&lt;?xml:namespace prefix = o /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;span style="font-size:10;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;/div&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; Microsoft.Crm.SdkTypeProxy;&lt;br /&gt;&lt;span class="kwrd"&gt;using&lt;/span&gt; Microsoft.Crm.SdkTypeProxy.Metadata;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-8119359259470373066?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/8119359259470373066/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=8119359259470373066' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/8119359259470373066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/8119359259470373066'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2010/05/compiling-crm-sdk-crmserviceutility.html' title='Compiling the CRM SDK CrmServiceUtility Class without Web References'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-6657054379157422615</id><published>2010-03-11T21:05:00.003-05:00</published><updated>2010-03-11T21:08:51.208-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><title type='text'>Google Maps and Flex are beautiful together</title><content type='html'>All I can say is WOW!  Working with Google Maps in ActionScript is SOOOO much easier than HTML/JavaScript.  In 5 minutes I had a working map and in 20 minutes of &lt;a href="http://code.google.com/apis/maps/documentation/flash/events.html"&gt;Google examples&lt;/a&gt; I had this:&lt;div&gt;&lt;a href="http://edgewaters.s3.amazonaws.com/maps/Places.html"&gt;http://edgewaters.s3.amazonaws.com/maps/Places.html&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I am sold.  &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-6657054379157422615?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/6657054379157422615/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=6657054379157422615' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/6657054379157422615'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/6657054379157422615'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2010/03/google-maps-and-flex-are-beautiful.html' title='Google Maps and Flex are beautiful together'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-165416216511561231</id><published>2010-02-28T21:51:00.002-05:00</published><updated>2010-03-01T10:08:23.191-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='casual'/><title type='text'>EveryTrail.com GPS Visualizer</title><content type='html'>I went for a mountain bike ride today (the trails are finally dry enough) and I was packing my &lt;a href="http://www.amazon.com/M-241-Bluetooth-Battery-Chipset-Waypoints/dp/B0011XV19O/ref=pd_sim_e_1"&gt;Holux GPS&lt;/a&gt; to record the trek.  I was running the new GPS Sport Tracker softare on my Windows Mobile 6.0 phone and the logs are in GPX file format.  I found &lt;a href="http://www.everytrail.com"&gt;EveryTrail.com&lt;/a&gt; that will create a Flash animation of your GPX trip:&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;img style="visibility:hidden;width:0px;height:0px;" border="0" width="0" height="0" src="http://counters.gigya.com/wildfire/IMP/CXNID=2000002.0NXC/bT*xJmx*PTEyNjc*MTE4MzA4NzkmcHQ9MTI2NzQxMTg*MzU*NSZwPTg1ODYyMSZkPSZnPTEmbz1jN2NkNjg2YzdjNDU*Y2ZmODJj/OWU3MDEyN2Q3ZTYwZCZvZj*w.gif" /&gt;&lt;h2&gt;&lt;a href="http://www.everytrail.com/view_trip.php?trip_id=514878"&gt;45 Minutes in Powhite &lt;/a&gt;&lt;/h2&gt; &lt;object width="400" height="300" codebase="http://fpdownload.macromedia.com/get/flashplayer/current/swflash.cab"&gt;&lt;param name="movie" value="http://www.everytrail.com/swf/widget.swf"&gt;&lt;param name="FlashVars" value="units=english&amp;amp;mode=1&amp;amp;key=ABQIAAAAggE6oX7o-2CFkLBRN20X9BTCaWgBOrVzmDbJc0e41WeTNzCWNBSYkdZ8D6iOk2yqQd-kgDCXfoqiUQ&amp;amp;tripId=514878&amp;amp;startLat=37.51778&amp;amp;startLon=-77.527809&amp;amp;mapType=Terrain&amp;amp;"&gt;&lt;embed src="http://www.everytrail.com/swf/widget.swf" quality="high" width="400" height="300" flashvars="units=english&amp;amp;mode=1&amp;amp;key=ABQIAAAAggE6oX7o-2CFkLBRN20X9BTCaWgBOrVzmDbJc0e41WeTNzCWNBSYkdZ8D6iOk2yqQd-kgDCXfoqiUQ&amp;amp;tripId=514878&amp;amp;startLat=37.51778&amp;amp;startLon=-77.527809&amp;amp;mapType=Terrain&amp;amp;" play="true" type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;a href="http://www.everytrail.com/"&gt;Map your trip with EveryTrail&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-165416216511561231?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/165416216511561231/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=165416216511561231' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/165416216511561231'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/165416216511561231'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2010/02/everytrailcom-gps-visualizer.html' title='EveryTrail.com GPS Visualizer'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-2028438557837667259</id><published>2010-02-24T14:55:00.001-05:00</published><updated>2010-03-01T10:08:23.191-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='casual'/><title type='text'>Windows Mobile GPS Sport Tracker Software</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://3.bp.blogspot.com/_1spBxVsA54A/S4WEOBafBlI/AAAAAAAAAaU/VBUrkWMNp3g/s1600-h/Dash_r-736204.png"&gt;&lt;img src="http://3.bp.blogspot.com/_1spBxVsA54A/S4WEOBafBlI/AAAAAAAAAaU/VBUrkWMNp3g/s320/Dash_r-736204.png"  border="0" alt="" id="BLOGGER_PHOTO_ID_5441901101179668050" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=Section1&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;I just discovered an excellent free (donations accepted) GPS software for Windows Mobile phones called &lt;a href="http://gpsst.struntaev.webege.com/"&gt;GPS Sport Tracker&lt;/a&gt;.&amp;nbsp; It has amazing features for running, biking, hiking, boating and probably many other things.&amp;nbsp; I can&amp;#8217;t wait to get this in the boat and fine tune the sail adjustments.&amp;nbsp; The features I particularly like are:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;ul style='margin-top:0in' type=disc&gt;  &lt;li class=MsoNormal style='mso-list:l0 level1 lfo1'&gt;&lt;font size=2 face=Arial&gt;&lt;span      style='font-size:10.0pt'&gt;Speed in 1/10s of MPH&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/li&gt;  &lt;li class=MsoNormal style='mso-list:l0 level1 lfo1'&gt;&lt;font size=2 face=Arial&gt;&lt;span      style='font-size:10.0pt'&gt;Distance travelled&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/li&gt;  &lt;li class=MsoNormal style='mso-list:l0 level1 lfo1'&gt;&lt;font size=2 face=Arial&gt;&lt;span      style='font-size:10.0pt'&gt;Average/Max speed&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/li&gt;  &lt;li class=MsoNormal style='mso-list:l0 level1 lfo1'&gt;&lt;font size=2 face=Arial&gt;&lt;span      style='font-size:10.0pt'&gt;Elevation change&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/li&gt;  &lt;li class=MsoNormal style='mso-list:l0 level1 lfo1'&gt;&lt;font size=2 face=Arial&gt;&lt;span      style='font-size:10.0pt'&gt;Data logging to GPX file format&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/li&gt;  &lt;li class=MsoNormal style='mso-list:l0 level1 lfo1'&gt;&lt;font size=2 face=Arial&gt;&lt;span      style='font-size:10.0pt'&gt;Maps of your track&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/li&gt;  &lt;li class=MsoNormal style='mso-list:l0 level1 lfo1'&gt;&lt;font size=2 face=Arial&gt;&lt;span      style='font-size:10.0pt'&gt;Profile of your elevation&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;This is fantastic work!&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-2028438557837667259?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/2028438557837667259/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=2028438557837667259' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/2028438557837667259'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/2028438557837667259'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2010/02/windows-mobile-gps-sport-tracker.html' title='Windows Mobile GPS Sport Tracker Software'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_1spBxVsA54A/S4WEOBafBlI/AAAAAAAAAaU/VBUrkWMNp3g/s72-c/Dash_r-736204.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-4595630508715345146</id><published>2010-02-23T10:52:00.000-05:00</published><updated>2010-03-01T10:08:36.175-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>New in Tomcat 6.0.19 - Realm lock-out feature</title><content type='html'>&lt;b&gt;&lt;u&gt;NOW&lt;/u&gt;&lt;/b&gt; they tell me.  Man it pays to RTFM...&lt;br&gt;&lt;br&gt;&lt;a href="http://www.jeremythomerson.com/blog/2008/11/apachecon-securing-apache-tomcat-for-your-environment/"&gt;http://www.jeremythomerson.com/blog/2008/11/apachecon-securing-apache-tomcat-for-your-environment/&lt;/a&gt;&lt;br&gt;  &lt;br&gt;&lt;blockquote style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;" class="gmail_quote"&gt;New in 6.0.19 [the] LockOut realm - it wraps around standard realms and provides a lock-out mechanism for multiple failed attempts for the same user.  With this, there will also be the ability to have multiple realms for authentication - if any match, you get access - so you could use, for example, a tomcat users file for admins and a JNDI realm for users.&lt;br&gt;&lt;/blockquote&gt;&lt;div&gt;&lt;br&gt;Full details here:&lt;br&gt;&lt;a href="http://tomcat.apache.org/tomcat-6.0-doc/config/realm.html"&gt;http://tomcat.apache.org/tomcat-6.0-doc/config/realm.html&lt;/a&gt;&lt;br&gt;&lt;br&gt;You just wrap this around your existing realm (JDBC in our case).  I got this working and it will serve as a &amp;quot;backup&amp;quot; to my custom login attempts table.  The LockOut realm will prevent a brute force attack that hits the JAAS servlet directly. &lt;br&gt;  &lt;/div&gt; &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-4595630508715345146?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/4595630508715345146/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=4595630508715345146' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/4595630508715345146'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/4595630508715345146'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2010/02/new-in-tomcat-6019-realm-lock-out.html' title='New in Tomcat 6.0.19 - Realm lock-out feature'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-6169545439475539750</id><published>2010-02-22T16:33:00.002-05:00</published><updated>2010-03-01T10:08:48.532-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='data'/><title type='text'>SQL that return 1 or more rows, but is never empty</title><content type='html'>The alternate title for this post is "how I worked  around the Spring JdbcTemplate queryForObject method throwing an EmptyResultDataAccessException when the query returned zero rows", but that didn't seemed a little verbose.&lt;br /&gt;&lt;br /&gt;I added a SELECT 0 as a table source and joined to that to ensure there would always be one row:&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; &lt;span class="kwrd"&gt;Coalesce&lt;/span&gt;(i.UserID, 0) UserID, &lt;span class="kwrd"&gt;Coalesce&lt;/span&gt;(i.Password, &lt;span class="str"&gt;''&lt;/span&gt;) Password, &lt;span class="kwrd"&gt;Count&lt;/span&gt;(a.UserID) Attempts&lt;br /&gt;&lt;span class="kwrd"&gt;FROM&lt;/span&gt; (&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; 0 &lt;span class="kwrd"&gt;AS&lt;/span&gt; id) mstr &lt;span class="kwrd"&gt;LEFT&lt;/span&gt; &lt;span class="kwrd"&gt;JOIN&lt;/span&gt;&lt;br /&gt;(&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; 0 &lt;span class="kwrd"&gt;AS&lt;/span&gt; id, UserID, UserName, Password &lt;span class="kwrd"&gt;FROM&lt;/span&gt; &lt;span class="kwrd"&gt;User&lt;/span&gt; &lt;span class="kwrd"&gt;WHERE&lt;/span&gt; UserName = &lt;span class="str"&gt;'Scooby'&lt;/span&gt;) i &lt;span class="kwrd"&gt;ON&lt;/span&gt; mstr.id = i.id&lt;br /&gt;&lt;span class="kwrd"&gt;LEFT&lt;/span&gt; &lt;span class="kwrd"&gt;JOIN&lt;/span&gt; UserAttempts a &lt;span class="kwrd"&gt;ON&lt;/span&gt; i.UserID = a.UserID &lt;span class="kwrd"&gt;AND&lt;/span&gt; LastAttempt &amp;gt; 1266602785&lt;br /&gt;&lt;span class="kwrd"&gt;GROUP&lt;/span&gt; &lt;span class="kwrd"&gt;BY&lt;/span&gt; i.UserID,i.Password&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-6169545439475539750?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/6169545439475539750/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=6169545439475539750' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/6169545439475539750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/6169545439475539750'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2010/02/sql-that-return-1-or-more-rows-but-is.html' title='SQL that return 1 or more rows, but is never empty'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-3897489093384865708</id><published>2010-02-22T10:59:00.001-05:00</published><updated>2010-02-22T11:01:54.232-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>Using Spring JdbcTemplate to queryForObject example</title><content type='html'>I needed to make a quick query to check some data before inserting a new record.  The &lt;span style="font-weight: bold;"&gt;queryForObject &lt;/span&gt;allows you to create an inner RowMapper class to handle the ResultSet…in this case, I needed to return two integers so I mapped the results to an integer array with two elements:&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;JdbcTemplate springTemplate = &lt;span class="kwrd"&gt;new&lt;/span&gt; JdbcTemplate(&lt;span class="kwrd"&gt;this&lt;/span&gt;.currDs);&lt;br /&gt;&lt;span class="kwrd"&gt;int&lt;/span&gt;[] user = springTemplate.queryForObject(&lt;br /&gt;      &lt;span class="str"&gt;"select UserID, count(*) from t_actor where orgID = ?"&lt;/span&gt;,&lt;br /&gt;      &lt;span class="kwrd"&gt;new&lt;/span&gt; Object[]{&lt;span class="kwrd"&gt;new&lt;/span&gt; Long(1212)},&lt;br /&gt;      &lt;span class="kwrd"&gt;new&lt;/span&gt; RowMapper&amp;lt;&lt;span class="kwrd"&gt;int&lt;/span&gt;[]&amp;gt;() {&lt;br /&gt;&lt;br /&gt;          &lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt;[] mapRow(ResultSet rs, &lt;span class="kwrd"&gt;int&lt;/span&gt; rowNum) throws SQLException {&lt;br /&gt;              &lt;span class="kwrd"&gt;int&lt;/span&gt;[] user = &lt;span class="kwrd"&gt;new&lt;/span&gt; &lt;span class="kwrd"&gt;int&lt;/span&gt;[2];&lt;br /&gt;              user[0] = rs.getInt(0);&lt;br /&gt;              user[1] = rs.getInt(1);&lt;br /&gt;              &lt;span class="kwrd"&gt;return&lt;/span&gt; user;&lt;br /&gt;          }&lt;br /&gt;      });&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-3897489093384865708?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/3897489093384865708/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=3897489093384865708' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/3897489093384865708'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/3897489093384865708'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2010/02/using-spring-jdbctemplate-to.html' title='Using Spring JdbcTemplate to queryForObject example'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-2483447010573777776</id><published>2010-02-19T11:33:00.003-05:00</published><updated>2010-02-19T11:42:32.521-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><title type='text'>Adding new folders in Eclipse</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_1spBxVsA54A/S36_Jl3JfhI/AAAAAAAAAaE/y4LozV_Y4JI/s1600-h/Eclipse_new_folders.png"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 320px; height: 219px;" src="http://4.bp.blogspot.com/_1spBxVsA54A/S36_Jl3JfhI/AAAAAAAAAaE/y4LozV_Y4JI/s320/Eclipse_new_folders.png" alt="" id="BLOGGER_PHOTO_ID_5439995571413286418" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;I discovered a great feature/shortcut for adding new folders in Eclipse.  Java/Flex packages sometimes have very deep folder structures which are a bit of a pain to recreate by hand.  The good news is Eclipse will create the folder structure in one fell swoop if you enter it.  Here's what I do: I find the folder in Windows Explorer and copy the location (e.g. com\adobe\crypto ) and paste it into the new folder dialog and viola!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-2483447010573777776?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/2483447010573777776/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=2483447010573777776' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/2483447010573777776'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/2483447010573777776'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2010/02/adding-new-folders-in-eclipse.html' title='Adding new folders in Eclipse'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_1spBxVsA54A/S36_Jl3JfhI/AAAAAAAAAaE/y4LozV_Y4JI/s72-c/Eclipse_new_folders.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-4955961020300378414</id><published>2010-02-10T14:55:00.001-05:00</published><updated>2010-03-01T10:08:57.903-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>Eclipse WTP Axis2 Web Service Tutorial Hints</title><content type='html'>&lt;div class=Section1&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;I have attempted to follow this &lt;a href="http://www.eclipse.org/webtools/community/tutorials/BottomUpAxis2WebService/bu_tutorial.html"&gt;Axis2 Tutorial&lt;/a&gt; and it has been painful.&amp;nbsp; I will attempt to ease other&amp;#8217;s pain by providing the mistakes that I made to prevent others from making the same&amp;#8230;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;When I got this error:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 color=red face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New";color:red'&gt;ClassDefNotFoundException org.apache.http.HttpResponseFactory&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;It was because I was using Axis2 ver 1.5.1.&amp;nbsp; When I switched to 1.4.1 it was gone.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;The tutorial says that opening &lt;a href="http://localhost:8080/MyProject"&gt;http://localhost:8080/MyProject&lt;/a&gt; should display the Axis2 start page, but I found &lt;a href="http://www.softwareagility.gr/index.php?q=node/21"&gt;another Axis2 tutorial&lt;/a&gt; that said there was a bug and you actually needed to use: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;&lt;a href="http://localhost:8080/MyProject/axis2-web/index.jsp"&gt;http://localhost:8080/MyProject/axis2-web/index.jsp&lt;/a&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=3 face=Arial&gt;&lt;span style='font-size:12.0pt'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-4955961020300378414?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/4955961020300378414/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=4955961020300378414' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/4955961020300378414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/4955961020300378414'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2010/02/eclipse-wtp-axis2-web-service-tutorial.html' title='Eclipse WTP Axis2 Web Service Tutorial Hints'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-4709389424088307808</id><published>2010-02-09T16:15:00.001-05:00</published><updated>2010-03-01T10:09:04.234-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><title type='text'>Flex mx:Label htmlText and Font color behaviors</title><content type='html'>&lt;div class=Section1&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;I just &lt;i&gt;&lt;span style='font-style:italic'&gt;discovered&lt;/span&gt;&lt;/i&gt; a few qwerks with the Flex Label&amp;#8217;s &lt;b&gt;&lt;span style='font-weight:bold'&gt;htmlText &lt;/span&gt;&lt;/b&gt;property that I thought were worth passing along.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;First off, Labels are limited to one line, so the default behavior of the &amp;lt;mx:htmlText&amp;gt; &amp;lt;![CDATA[ will not display:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 color=blue face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:blue'&gt;&amp;lt;mx:Label&amp;gt;&lt;/span&gt;&lt;/font&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 color=black face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:black'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;font size=2 color=blue face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:blue'&gt;&amp;lt;mx:htmlText&amp;gt;&lt;/span&gt;&lt;/font&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 color=black face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:black'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;![CDATA[ &lt;/span&gt;&lt;/font&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt; font-family:"Courier New"'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 color=black face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:black'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;font color=&amp;quot;Red&amp;quot;&amp;gt;*&amp;lt;/font&amp;gt; indicates required field.&lt;/span&gt;&lt;/font&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 color=black face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:black'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ]]&amp;gt;&lt;/span&gt;&lt;/font&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 color=black face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:black'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;font size=2 color=blue face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:blue'&gt;&amp;lt;/mx:htmlText&amp;gt;&lt;/span&gt;&lt;/font&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 color=blue face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:blue'&gt;&amp;lt;/mx:Label&amp;gt;&lt;/span&gt;&lt;/font&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;Once I consolidated the the CDATA lines into one it displayed: &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 color=blue face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:blue'&gt;&amp;lt;mx:Label&amp;gt;&lt;/span&gt;&lt;/font&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 color=black face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:black'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;font size=2 color=blue face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:blue'&gt;&amp;lt;mx:htmlText&amp;gt;&lt;/span&gt;&lt;/font&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 color=black face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:black'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;![CDATA[ &amp;lt;font color=&amp;quot;Red &amp;quot;&amp;gt;*&amp;lt;/font&amp;gt; indicates required field.]]&amp;gt;&lt;/span&gt;&lt;/font&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 color=black face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:black'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;font size=2 color=blue face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:blue'&gt;&amp;lt;/mx:htmlText&amp;gt;&lt;/span&gt;&lt;/font&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 color=blue face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New";color:blue'&gt;&amp;lt;/mx:Label&amp;gt;&lt;/span&gt;&lt;/font&gt;&lt;font size=2&gt;&lt;span style='font-size:10.0pt'&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;&amp;#8230;but the color still didn&amp;#8217;t work.&amp;nbsp; Turns out you have to use Hex to specify font color:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 color=blue face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:blue'&gt;&amp;lt;mx:Label&amp;gt;&lt;/span&gt;&lt;/font&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 color=black face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:black'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;font size=2 color=blue face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:blue'&gt;&amp;lt;mx:htmlText&amp;gt;&lt;/span&gt;&lt;/font&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 color=black face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:black'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;![CDATA[ &amp;lt;font color=&amp;quot;#FF0000&amp;quot;&amp;gt;*&amp;lt;/font&amp;gt; indicates required field.]]&amp;gt;&lt;/span&gt;&lt;/font&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 color=black face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:black'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;font size=2 color=blue face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:blue'&gt;&amp;lt;/mx:htmlText&amp;gt;&lt;/span&gt;&lt;/font&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 color=blue face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New";color:blue'&gt;&amp;lt;/mx:Label&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;The Adobe &lt;a href="http://livedocs.adobe.com/flex/3/html/help.html?content=textcontrols_04.html"&gt;&lt;font color=black&gt;&lt;span style='color:windowtext'&gt;LiveDocs explain all this&lt;/span&gt;&lt;/font&gt;&lt;/a&gt; in more detail.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-4709389424088307808?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/4709389424088307808/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=4709389424088307808' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/4709389424088307808'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/4709389424088307808'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2010/02/flex-mxlabel-htmltext-and-font-color.html' title='Flex mx:Label htmlText and Font color behaviors'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-7072378747676395759</id><published>2010-02-04T11:15:00.001-05:00</published><updated>2010-02-04T11:16:45.744-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><title type='text'>Flex Builder stopped generating HTML wrapper after adding VSS</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://3.bp.blogspot.com/_1spBxVsA54A/S2rysmewPSI/AAAAAAAAAZ4/mS7XnjxGT9E/s1600-h/2010-02-04_1111-746903.png"&gt;&lt;img src="http://3.bp.blogspot.com/_1spBxVsA54A/S2rysmewPSI/AAAAAAAAAZ4/mS7XnjxGT9E/s320/2010-02-04_1111-746903.png"  border="0" alt="" id="BLOGGER_PHOTO_ID_5434422748433628450" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=Section1&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=3 face=Arial&gt;&lt;span style='font-size:12.0pt'&gt;After adding my Flex project to VSS, the Flex Builder silently stopped generating the HTML wrapper files.&amp;nbsp; To fix the problem, I unchecked the &lt;b&gt;&lt;span style='font-weight:bold'&gt;Generate HTML wrapper file&lt;/span&gt;&lt;/b&gt; in the project properties.&amp;nbsp; I was prompted to delete the &lt;i&gt;&lt;span style='font-style:italic'&gt;html-template&lt;/span&gt;&lt;/i&gt; directory and I did remove it (including the VSS linkage).&amp;nbsp; I then changed the project properties back and the HTML wrappers generated again.&amp;nbsp; Note, I did not check the &lt;i&gt;&lt;span style='font-style:italic'&gt;html-template&lt;/span&gt;&lt;/i&gt; directory back in to VSS.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-7072378747676395759?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/7072378747676395759/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=7072378747676395759' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/7072378747676395759'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/7072378747676395759'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2010/02/flex-builder-stopped-generating-html.html' title='Flex Builder stopped generating HTML wrapper after adding VSS'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_1spBxVsA54A/S2rysmewPSI/AAAAAAAAAZ4/mS7XnjxGT9E/s72-c/2010-02-04_1111-746903.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-3454910127249178187</id><published>2010-02-02T16:06:00.004-05:00</published><updated>2010-02-02T16:17:03.207-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><title type='text'>Improved Flex Validation: Display Error Tooltip</title><content type='html'>I combined two validation concepts to arrive at my Improved Flex Validation.  The key component is Joel Hooks &lt;a href="http://joelhooks.com/2009/02/01/form-validation-for-the-lazy-programmer-in-flex/"&gt;Form Validation for the Lazy Programmer&lt;/a&gt;.  I incorporated the UIComponent.callLater() hack for displaying error ToolTips and viola!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://edgewaters.s3.amazonaws.com/FormValidator.as"&gt;Full Source&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Here is what the callLater() looks like:&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;...&lt;br /&gt;    &lt;span class="rem"&gt;// display errorTip&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;if&lt;/span&gt; (showErrorsImmediately &amp;amp;&amp;amp; &lt;br /&gt;        currentControlIsValid == &lt;span class="kwrd"&gt;false&lt;/span&gt; &amp;amp;&amp;amp; &lt;br /&gt;        supressEvents == &lt;span class="kwrd"&gt;false&lt;/span&gt;)&lt;br /&gt;    {&lt;br /&gt;        &lt;span class="rem"&gt;// cast the focussed control to a UIComp to use callLater&lt;/span&gt;&lt;br /&gt;        var ffc:UIComponent = focusedFormControl &lt;span class="kwrd"&gt;as&lt;/span&gt; UIComponent;&lt;br /&gt;        ffc.callLater(showDeferred, [focusedFormControl]);&lt;br /&gt;    }&lt;br /&gt;    &lt;br /&gt;    &lt;span class="kwrd"&gt;return&lt;/span&gt; currentControlIsValid;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; function showDeferred(target:DisplayObject):&lt;span class="kwrd"&gt;void&lt;/span&gt; {&lt;br /&gt;      target.dispatchEvent(&lt;span class="kwrd"&gt;new&lt;/span&gt; MouseEvent(MouseEvent.MOUSE_OUT));&lt;br /&gt;      target.dispatchEvent(&lt;span class="kwrd"&gt;new&lt;/span&gt; MouseEvent(MouseEvent.MOUSE_OVER));&lt;br /&gt;}            &lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-3454910127249178187?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/3454910127249178187/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=3454910127249178187' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/3454910127249178187'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/3454910127249178187'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2010/02/improved-flex-validation-display-error.html' title='Improved Flex Validation: Display Error Tooltip'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-3007985721593478679</id><published>2010-02-02T15:18:00.003-05:00</published><updated>2010-02-02T15:39:58.821-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><title type='text'>Flex CompareValidator custom Validator</title><content type='html'>I have been using &lt;a href="http://www.mattholden.com/dslabs/PasswordEntry.mxml"&gt;Matt Holden's Password Strength Indicator&lt;/a&gt; component with great success, but I was asked to make the input errors more obvious.  The Flex Validators are a nice start, but their red-outline + tooltip approach is not the most intuitive.  So, in conjunction with my improved Flex validation, I created a custom Validator for the password component to do the confirmation password comparison.  The CompareValidator is generic enough that it can be reused for other components like account numbers or email addresses.&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;package core.util&lt;br /&gt;{&lt;br /&gt;import mx.validators.ValidationResult;&lt;br /&gt;import mx.validators.Validator;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;public&lt;/span&gt; &lt;span class="kwrd"&gt;class&lt;/span&gt; CompareValidator extends Validator&lt;br /&gt;{&lt;br /&gt;   &lt;span class="kwrd"&gt;public&lt;/span&gt; var valueToCompare:Object;&lt;br /&gt;   &lt;span class="kwrd"&gt;public&lt;/span&gt; var errorMessage:String = &lt;span class="str"&gt;"Value does not match."&lt;/span&gt;;&lt;br /&gt;&lt;br /&gt;   &lt;span class="kwrd"&gt;public&lt;/span&gt; function CompareValidator()&lt;br /&gt;   {&lt;br /&gt;       super();&lt;br /&gt;   }&lt;br /&gt;&lt;br /&gt;   &lt;span class="kwrd"&gt;override&lt;/span&gt; &lt;span class="kwrd"&gt;protected&lt;/span&gt; function doValidation(&lt;span class="kwrd"&gt;value&lt;/span&gt;:Object):Array {&lt;br /&gt;       var results:Array = [];&lt;br /&gt;       var srcVal:Object = &lt;span class="kwrd"&gt;this&lt;/span&gt;.getValueFromSource();&lt;br /&gt; &lt;br /&gt;       &lt;span class="kwrd"&gt;if&lt;/span&gt; (srcVal != valueToCompare) {&lt;br /&gt;           results.push(&lt;span class="kwrd"&gt;new&lt;/span&gt; ValidationResult(&lt;span class="kwrd"&gt;true&lt;/span&gt;, &lt;span class="kwrd"&gt;null&lt;/span&gt;, &lt;span class="str"&gt;"Match"&lt;/span&gt;,errorMessage));&lt;br /&gt;       }&lt;br /&gt;       &lt;span class="kwrd"&gt;return&lt;/span&gt; results;&lt;br /&gt;&lt;br /&gt;   }&lt;br /&gt;}&lt;br /&gt;}&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The MXML looks like this:&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;coreutil:CompareValidator&lt;/span&gt;&lt;br /&gt;      &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="comparePasswords"&lt;/span&gt;&lt;br /&gt;      &lt;span class="attr"&gt;source&lt;/span&gt;&lt;span class="kwrd"&gt;="{password2}"&lt;/span&gt;&lt;br /&gt;      &lt;span class="attr"&gt;property&lt;/span&gt;&lt;span class="kwrd"&gt;="text"&lt;/span&gt;&lt;br /&gt;      &lt;span class="attr"&gt;valueToCompare&lt;/span&gt;&lt;span class="kwrd"&gt;="{password.text}"&lt;/span&gt;&lt;br /&gt;      &lt;span class="attr"&gt;errorMessage&lt;/span&gt;&lt;span class="kwrd"&gt;="Passwords do not match."&lt;/span&gt;&lt;br /&gt;  &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-3007985721593478679?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/3007985721593478679/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=3007985721593478679' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/3007985721593478679'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/3007985721593478679'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2010/02/flex-comparevalidator-custom-validator.html' title='Flex CompareValidator custom Validator'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-5106796312950901538</id><published>2009-12-23T13:36:00.002-05:00</published><updated>2009-12-23T13:39:03.750-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>Overriding the Java toString method using For loop</title><content type='html'>This solution uses a combination of reflection, constants and regular expressions to build a meaningful toString output:&lt;br /&gt;&lt;br /&gt;&lt;!-- code formatted by http://manoli.net/csharpformat/ --&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;private&lt;/span&gt; String TO_STRING_FIELDS = &lt;span class="str"&gt;"email isPKI isTrustedRoot isITU_TX509 caName"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    @Override &lt;span class="kwrd"&gt;public&lt;/span&gt; String toString() {&lt;br /&gt;        &lt;span class="kwrd"&gt;try&lt;/span&gt; {&lt;br /&gt;            StringBuilder result = &lt;span class="kwrd"&gt;new&lt;/span&gt; StringBuilder();&lt;br /&gt;            &lt;span class="rem"&gt;//String newLine = System.getProperty("line.separator");&lt;/span&gt;&lt;br /&gt;            String[] fieldList = TO_STRING_FIELDS.split( &lt;span class="str"&gt;"[\\s,]+"&lt;/span&gt;);&lt;br /&gt;            Field curField = &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;br /&gt;            &lt;span class="kwrd"&gt;for&lt;/span&gt; (String f : fieldList) {&lt;br /&gt;                curField = &lt;span class="kwrd"&gt;this&lt;/span&gt;.getClass().getDeclaredField(f);&lt;br /&gt;                result.append(&lt;span class="str"&gt;"  "&lt;/span&gt; + f);&lt;br /&gt;                result.append(&lt;span class="str"&gt;": "&lt;/span&gt;);&lt;br /&gt;                &lt;span class="rem"&gt;//requires access to private field:&lt;/span&gt;&lt;br /&gt;                result.append( curField.get(&lt;span class="kwrd"&gt;this&lt;/span&gt;) );&lt;br /&gt;            }&lt;br /&gt;        } &lt;span class="kwrd"&gt;catch&lt;/span&gt; (Exception e) {&lt;br /&gt;            System.&lt;span class="kwrd"&gt;out&lt;/span&gt;.println(&lt;span class="str"&gt;"Error in toString for class: "&lt;/span&gt; + &lt;span class="kwrd"&gt;this&lt;/span&gt;.getClass().getName() + &lt;span class="str"&gt;"\n"&lt;/span&gt; + e.getMessage());&lt;br /&gt;        }&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;return&lt;/span&gt; &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;br /&gt;    }&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-5106796312950901538?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/5106796312950901538/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=5106796312950901538' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/5106796312950901538'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/5106796312950901538'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2009/12/overriding-java-tostring-method.html' title='Overriding the Java toString method using For loop'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-5075861105302263750</id><published>2009-12-23T08:46:00.000-05:00</published><updated>2009-12-23T08:50:21.559-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='boats'/><title type='text'>Refurbishing a Morgan 30</title><content type='html'>&lt;a href="http://www.myholeinthewater.com/Hull%20Prep%20and%20Painting.htm"&gt;Hull Preparation and Painting&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;After all the work I did restoring my Flying Scot this summer, I can imagine what a labor (of love) this Morgan 30 refurb was.  There are a lot of great tips and experience&lt;img src="http://www.myholeinthewater.com/images/IMG_1129.jpg" align="right" height="60" width="80" /&gt; to be gleaned from his notes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-5075861105302263750?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.myholeinthewater.com/Hull%20Prep%20and%20Painting.htm' title='Refurbishing a Morgan 30'/><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/5075861105302263750/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=5075861105302263750' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/5075861105302263750'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/5075861105302263750'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2009/12/refurbishing-morgan-30.html' title='Refurbishing a Morgan 30'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-7618008165588053165</id><published>2009-12-22T10:53:00.004-05:00</published><updated>2009-12-22T11:00:36.988-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><title type='text'>Flex Relative paths for embedded images in buttons with @Embed</title><content type='html'>&lt;a href="http://www.bigosmallm.com/2007/05/relative-paths-for-embedded-images.html"&gt;Flash, Flex and ActionScript: Relative paths for embedded images&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Setting the @Embed source with an absolute path (based on flex_src root) :&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;mx:Button&lt;/span&gt; &lt;span class="attr"&gt;icon&lt;/span&gt;&lt;span class="kwrd"&gt;="@Embed(source='/assets/blue_delete.png')"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-7618008165588053165?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/7618008165588053165/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=7618008165588053165' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/7618008165588053165'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/7618008165588053165'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2009/12/flex-relative-paths-for-embedded-images.html' title='Flex Relative paths for embedded images in buttons with @Embed'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-5952052206220807927</id><published>2009-12-02T15:51:00.001-05:00</published><updated>2009-12-03T13:11:04.220-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><title type='text'>as3corelib Contains Crypto Utils for FLEX MD5 Hash</title><content type='html'>&lt;div class=Section1&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;I needed to store MD5 hashed passwords in the database and was delighted to find the &lt;a href="http://code.google.com/p/as3corelib/"&gt;as3corelib&lt;/a&gt; already contains the necessary libraries.&amp;nbsp; While there are many more features, I only needed the MD5 Hash function so I only copied in the &lt;i&gt;&lt;span style='font-style:italic'&gt;com.adobe.crypto.MD5&lt;/span&gt;&lt;/i&gt; and &lt;i&gt;&lt;span style='font-style:italic'&gt;com.adobe.utils.* &lt;/span&gt;&lt;/i&gt;files.&amp;nbsp; With the .as files added to my Flex project, hashing the password was a simple as calling:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt; font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; MD5.hash( passwordComp.getPassword() );&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt; font-family:"Courier New"'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;I verified that it returns the same hash as the MySQL MD5 function&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt; font-family:"Courier New"'&gt;UPDATE user_table SET password = MD5(&amp;#8216;change_me&amp;#8217;) WHERE username = &amp;#8216;sandman&amp;#8217;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-5952052206220807927?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/5952052206220807927/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=5952052206220807927' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/5952052206220807927'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/5952052206220807927'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2009/12/as3corelib-contains-crypto-utils-for.html' title='as3corelib Contains Crypto Utils for FLEX MD5 Hash'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-2501586777502357576</id><published>2009-10-26T15:36:00.001-04:00</published><updated>2009-12-03T13:11:04.220-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Flex'/><title type='text'>Dynamically position a Flex popup relative to a button mouse click</title><content type='html'>&lt;div class=Section1&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;I was having trouble with positioning a wide popup window that was in a component nested several containers deep.&amp;nbsp; The &lt;/span&gt;&lt;/font&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;PopUpManager.centerPopUp&lt;/span&gt;&lt;/font&gt;&lt;font size=2&gt;&lt;span style='font-size:10.0pt'&gt; method would center on the container and push the window off the right edge of the screen.&amp;nbsp; To correct this, I moved the popup over 100 pixels using:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt; font-family:"Courier New"'&gt;popup.x = popup.x &amp;#8211; 100;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;That worked, but the problem would come back if the window grew wider.&amp;nbsp; Bush league.&amp;nbsp; To make it a bit more reliable, I changed to use the mouseEvent localX/Y properties.&amp;nbsp; Note you have to &lt;a href="http://livedocs.adobe.com/flex/3/html/help.html?content=containers_intro_5.html"&gt;convert the &amp;#8220;local&amp;#8221; coordinates&lt;/a&gt; to &amp;#8220;global&amp;#8221;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 color=black face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:black'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;b&gt;&lt;font size=2 color="#0033ff" face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family: "Courier New";color:#0033FF;font-weight:bold'&gt;private&lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;font size=2 color=black face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family: "Courier New";color:black'&gt; &lt;/span&gt;&lt;/font&gt;&lt;b&gt;&lt;font size=2 color="#339966" face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:#339966;font-weight:bold'&gt;function&lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;font size=2 color=black face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:black'&gt; showPopup(event:MouseEvent):&lt;/span&gt;&lt;/font&gt;&lt;b&gt;&lt;font size=2 color="#0033ff" face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family: "Courier New";color:#0033FF;font-weight:bold'&gt;void&lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 color=black face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:black'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/span&gt;&lt;/font&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 color=black face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:black'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; pop = EnotaryRegReturnPopup(PopUpManager.createPopUp(&lt;/span&gt;&lt;/font&gt;&lt;b&gt;&lt;font size=2 color="#0033ff" face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family: "Courier New";color:#0033FF;font-weight:bold'&gt;this&lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;font size=2 color=black face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family: "Courier New";color:black'&gt;,EnotaryRegReturnPopup,&lt;/span&gt;&lt;/font&gt;&lt;b&gt;&lt;font size=2 color="#0033ff" face="Courier New"&gt;&lt;span style='font-size:10.0pt; font-family:"Courier New";color:#0033FF;font-weight:bold'&gt;true&lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;font size=2 color=black face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family: "Courier New";color:black'&gt;));&lt;/span&gt;&lt;/font&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 color=black face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:black'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; pop.title = &lt;/span&gt;&lt;/font&gt;&lt;b&gt;&lt;font size=2 color="#990000" face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New";color:#990000;font-weight: bold'&gt;&amp;quot;Please select return reasons.&amp;quot;&lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;font size=2 color=black face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:black'&gt;;&lt;/span&gt;&lt;/font&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 color=black face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:black'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; pop.showCloseButton =&lt;/span&gt;&lt;/font&gt;&lt;b&gt;&lt;font size=2 color="#0033ff" face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New";color:#0033FF;font-weight: bold'&gt;true&lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;font size=2 color=black face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New";color:black'&gt;;&lt;/span&gt;&lt;/font&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 color=black face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:black'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; pop.enotaryRegReturnList = &lt;/span&gt;&lt;/font&gt;&lt;b&gt;&lt;font size=2 color="#0033ff" face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New";color:#0033FF;font-weight: bold'&gt;this&lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;font size=2 color=black face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New";color:black'&gt;.enotaryRegReturnList;&lt;/span&gt;&lt;/font&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 color=black face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:black'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; pop.buildUnselectedReturns();&lt;/span&gt;&lt;/font&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 color=black face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:black'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 color=black face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:black'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;i&gt;&lt;font size=2 color="#009900" face="Courier New"&gt;&lt;span style='font-size:10.0pt; font-family:"Courier New";color:#009900;font-style:italic'&gt;// position the window next to the &amp;quot;add&amp;quot; button&lt;/span&gt;&lt;/font&gt;&lt;/i&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 color=black face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:black'&gt;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;b&gt;&lt;font size=2 color="#6699cc" face="Courier New"&gt;&lt;span style='font-size:10.0pt; font-family:"Courier New";color:#6699CC;font-weight:bold'&gt;var&lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;font size=2 color=black face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family: "Courier New";color:black'&gt; pt:Point = &lt;/span&gt;&lt;/font&gt;&lt;b&gt;&lt;font size=2 color="#0033ff" face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family: "Courier New";color:#0033FF;font-weight:bold'&gt;new&lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;font size=2 color=black face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family: "Courier New";color:black'&gt; Point(event.localX, event.localY);&lt;/span&gt;&lt;/font&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 color=black face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:black'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pt = event.target.localToGlobal(pt);&lt;/span&gt;&lt;/font&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 color=black face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:black'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; pop.x = pt.x - pop.width;&lt;/span&gt;&lt;/font&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 color=black face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:black'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; pop.y = pt.y;&lt;/span&gt;&lt;/font&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size: 10.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 color=black face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:black'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/span&gt;&lt;/font&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 color=black face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:black'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; pop.addEventListener(&lt;/span&gt;&lt;/font&gt;&lt;b&gt;&lt;font size=2 color="#990000" face="Courier New"&gt;&lt;span style='font-size:10.0pt; font-family:"Courier New";color:#990000;font-weight:bold'&gt;&amp;quot;close&amp;quot;&lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;font size=2 color=black face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family: "Courier New";color:black'&gt;,removeMe);&lt;/span&gt;&lt;/font&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 color=black face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:black'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; pop[&lt;/span&gt;&lt;/font&gt;&lt;b&gt;&lt;font size=2 color="#990000" face="Courier New"&gt;&lt;span style='font-size:10.0pt; font-family:"Courier New";color:#990000;font-weight:bold'&gt;&amp;quot;cancelButton&amp;quot;&lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;font size=2 color=black face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family: "Courier New";color:black'&gt;].addEventListener(&lt;/span&gt;&lt;/font&gt;&lt;b&gt;&lt;font size=2 color="#990000" face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family: "Courier New";color:#990000;font-weight:bold'&gt;&amp;quot;click&amp;quot;&lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;font size=2 color=black face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family: "Courier New";color:black'&gt;, removeMe);&lt;/span&gt;&lt;/font&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 color=black face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:black'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; pop[&lt;/span&gt;&lt;/font&gt;&lt;b&gt;&lt;font size=2 color="#990000" face="Courier New"&gt;&lt;span style='font-size:10.0pt; font-family:"Courier New";color:#990000;font-weight:bold'&gt;&amp;quot;okButton&amp;quot;&lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;font size=2 color=black face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family: "Courier New";color:black'&gt;].addEventListener(&lt;/span&gt;&lt;/font&gt;&lt;b&gt;&lt;font size=2 color="#990000" face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family: "Courier New";color:#990000;font-weight:bold'&gt;&amp;quot;click&amp;quot;&lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;font size=2 color=black face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family: "Courier New";color:black'&gt;,processReturns);&lt;/span&gt;&lt;/font&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 color=black face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:black'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;/font&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=3 face=Arial&gt;&lt;span style='font-size:12.0pt'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-2501586777502357576?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/2501586777502357576/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=2501586777502357576' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/2501586777502357576'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/2501586777502357576'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2009/10/dynamically-position-flex-popup.html' title='Dynamically position a Flex popup relative to a button mouse click'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-5991838190837363740</id><published>2009-10-05T16:01:00.000-04:00</published><updated>2010-02-04T11:17:14.314-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><title type='text'>Delete rows from DataTable using DataRow</title><content type='html'>&lt;div class=Section1&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;I was surprised by the delete functionality in DataTable.&amp;nbsp; It was my understanding that when you call DataRow.Delete it marks the row for deletion, but waits for a DataTable.AcceptChanges call before actually removing them, but when I tried to delete inside a &lt;/span&gt;&lt;/font&gt;&lt;font size=2 color=navy face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:navy'&gt;For Each dr as DataRow in dt.Rows&lt;/span&gt;&lt;/font&gt;&lt;font size=2&gt;&lt;span style='font-size:10.0pt'&gt; I was getting an error &amp;#8220;Collection was modified&amp;#8221;.&amp;nbsp; Thankfully I ran across &lt;a href="http://forums.asp.net/p/923971/1068467.aspx"&gt;a thread that suggested walking backwards&lt;/a&gt; through the collection to avoid those types of errors.&amp;nbsp; I ended up with this to solve my problem:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Do&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;While&lt;/span&gt;&lt;/font&gt; i &amp;gt;= 0&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;If&lt;/span&gt;&lt;/font&gt; dt.Rows(i)(&lt;font color="#a31515"&gt;&lt;span style='color:#A31515'&gt;&amp;quot;KEEP_ME&amp;quot;&lt;/span&gt;&lt;/font&gt;))) = &lt;font color=blue&gt;&lt;span style='color:blue'&gt;False&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Then&lt;/span&gt;&lt;/font&gt; dt.Rows(i).Delete()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i -= 1&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;st1:place w:st="on"&gt;&lt;font color=blue&gt;&lt;span style='color:blue'&gt;Loop&lt;/span&gt;&lt;/font&gt;&lt;/st1:place&gt;&lt;font color=blue&gt;&lt;span style='color:blue'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dt.AcceptChanges()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-5991838190837363740?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/5991838190837363740/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=5991838190837363740' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/5991838190837363740'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/5991838190837363740'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2009/10/delete-rows-from-datatable-using.html' title='Delete rows from DataTable using DataRow'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-7650172082792730513</id><published>2009-09-28T14:40:00.001-04:00</published><updated>2009-09-28T14:40:23.507-04:00</updated><title type='text'>DOS BAT File Copy Rename with String Manipulation</title><content type='html'>&lt;div class=Section1&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;I needed to rename a directory of files to truncate the file names to the first 5 characters (plus the file extension).&amp;nbsp; I found &lt;a href="http://jamesewelch.wordpress.com/2008/05/01/how-to-write-a-dos-batch-file-to-loop-through-files/"&gt;one example&lt;/a&gt; that showed how two write a FOR loop that broke out the filename and extension and passed it to a second BAT file:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt; font-family:"Courier New"'&gt;for /f %%a IN (&amp;#8217;dir /b *.txt&amp;#8217;) do call runner.bat %%~na %%~xa&lt;/span&gt;&lt;/font&gt;&lt;font size=2&gt;&lt;span style='font-size:10.0pt'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;And using &lt;a href="http://www.dostips.com/DtTipsStringManipulation.php#Snippets.LeftString"&gt;a second example that covered DOS string manipulation&lt;/a&gt;, I put together this batch file that accepts two parameters and does a substring to get the first 5 characters of the first parameter:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt; font-family:"Courier New"'&gt;set file=%1&lt;br&gt; set file=%file:~0,5%&lt;br&gt; ren %1%2 %file%%2&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-7650172082792730513?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/7650172082792730513/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=7650172082792730513' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/7650172082792730513'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/7650172082792730513'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2009/09/dos-bat-file-copy-rename-with-string.html' title='DOS BAT File Copy Rename with String Manipulation'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-87975229461041458</id><published>2009-09-17T15:27:00.001-04:00</published><updated>2009-09-17T15:32:00.265-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><title type='text'>Creating an Asynchronous ASP.NET Page To Initiate Batch Processes</title><content type='html'>&lt;div class=Section1&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;I recently created a page that gave the user the option of initiating a long-running batch process.&amp;nbsp; The batch required repeatedly calling external web services that would have taken far too long for a user to wait for the traditional page processing model. &amp;nbsp;But, by using ASP.NET asynchronous execution to initiate the batch process on a separate thread, the page response is excellent.&amp;nbsp; I started by working through &lt;a href="http://www.beansoftware.com/asp.net-tutorials/asynchronous-execution-pattern.aspx"&gt;this excellent tutorial on asynchronous execution&lt;/a&gt;, but quickly ran into problems when I began calling web services.&amp;nbsp; Creating an asynchronous process involves writing a method that can execute without needing anything from the HttpContext (Application, Page, Session, Cache, Configuration, etc.) since this is not available when you use &lt;/span&gt;&lt;/font&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;BeginInvoke&lt;/span&gt;&lt;/font&gt;&lt;font size=2&gt;&lt;span style='font-size:10.0pt'&gt; to run your subroutine.&amp;nbsp; This presented me with an issue since my project had a library that we used to setup web service instances (with WSE security), but that library relied on the HttpContext&amp;#8217;s Application object.&amp;nbsp; To work around this limitation, I created a private inner class that encapsulated the web service references.&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Private&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Class&lt;/span&gt;&lt;/font&gt; WebSvcInstances&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Public&lt;/span&gt;&lt;/font&gt; FSI &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; MyWseSVc1 = GetMyWseSVc1&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Public&lt;/span&gt;&lt;/font&gt; PSI &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; MyWseSVc2 = GetMyWseSVc2&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;End&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Class&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;The inner class was passed into the batch method while the Application object was still available and providing the objects the batch would need later.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;To start off, create the subroutine you want to initiate asynchronously:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 color=blue face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New";color:blue'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Private&lt;/span&gt;&lt;/font&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size: 10.0pt;font-family:"Courier New"'&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Sub&lt;/span&gt;&lt;/font&gt; InitiateBatch(&lt;font color=blue&gt;&lt;span style='color:blue'&gt;ByVal&lt;/span&gt;&lt;/font&gt; wsRefs &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; WebSvcInstances)&lt;/span&gt;&lt;/font&gt;&lt;font size=2&gt;&lt;span style='font-size:10.0pt'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;Create a Delegate in your code behind with the same signature as the subroutine:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 color=blue face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New";color:blue'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Private&lt;/span&gt;&lt;/font&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size: 10.0pt;font-family:"Courier New"'&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Delegate&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Sub&lt;/span&gt;&lt;/font&gt; Batch_Delegate(&lt;font color=blue&gt;&lt;span style='color:blue'&gt;ByVal&lt;/span&gt;&lt;/font&gt; wsRefs &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; WebSvcInstances)&lt;/span&gt;&lt;/font&gt;&lt;font size=2&gt;&lt;span style='font-size:10.0pt'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;Then you can initiate your subroutine in a page event like so:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Dim&lt;/span&gt;&lt;/font&gt; batchDelegate &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; InitiateBatch_Delegate&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Dim&lt;/span&gt;&lt;/font&gt; wsRefs &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;New&lt;/span&gt;&lt;/font&gt; WebSvcInstances&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; batchDelegate = &lt;font color=blue&gt;&lt;span style='color:blue'&gt;New&lt;/span&gt;&lt;/font&gt; InitiateBatch_Delegate(&lt;font color=blue&gt;&lt;span style='color:blue'&gt;AddressOf&lt;/span&gt;&lt;/font&gt; InitiateBatch)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Dim&lt;/span&gt;&lt;/font&gt; asyncResult &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; IAsyncResult&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; asyncResult = batchDelegate.BeginInvoke(wsRefs, &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Nothing&lt;/span&gt;&lt;/font&gt;, &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Nothing&lt;/span&gt;&lt;/font&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;You can read up on BeginInvoke to learn more about the callback features.&amp;nbsp; I didn&amp;#8217;t need to be notified when the execution finished, so I just set those to &lt;/span&gt;&lt;/font&gt;&lt;font size=2 color=blue face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New";color:blue'&gt;Nothing&lt;/span&gt;&lt;/font&gt;&lt;font size=2&gt;&lt;span style='font-size:10.0pt'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-87975229461041458?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/87975229461041458/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=87975229461041458' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/87975229461041458'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/87975229461041458'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2009/09/creating-asynchronous-aspnet-page-to.html' title='Creating an Asynchronous ASP.NET Page To Initiate Batch Processes'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-7652903289149690142</id><published>2009-09-17T12:23:00.005-04:00</published><updated>2009-09-17T15:31:51.712-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='boats'/><title type='text'>Before and AFTER</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/_1spBxVsA54A/SrJjLRZX5xI/AAAAAAAAAW0/-smFtEzwlkU/s1600-h/Scot_Stbd_Side.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5382473549960701714" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; WIDTH: 200px; CURSOR: hand; HEIGHT: 150px" alt="" src="http://1.bp.blogspot.com/_1spBxVsA54A/SrJjLRZX5xI/AAAAAAAAAW0/-smFtEzwlkU/s200/Scot_Stbd_Side.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;It hasn't taken quite as long as the lack of blog posts would have you believe, but the refurbishment of Flying Scot 338 is nearly complete. In addition to the fairing and painting, I've just finished replacing the gooseneck and standing rigging, installing a boom whoopie, turtle bags and guy hooks. I hope to get the transom port, bow bag, and stem band on before the Boathouse Regatta this weekend. I am SO glad I have a Flying Scot since the class builder has been SUPER helpful including instructions with all of the replacement parts.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Painting recap:&lt;/div&gt;&lt;br /&gt;&lt;div&gt;After talking to another club member who did the same paint job (but rolled everything) I should have been more aggressive with sanding the primer. I was concerned about sanding too &lt;a href="http://3.bp.blogspot.com/_1spBxVsA54A/SrJlWKJmfWI/AAAAAAAAAXE/4DoMP_TRH4s/s1600-h/Scot_Port_Side.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5382475936017317218" style="FLOAT: left; MARGIN: 0px 10px 10px 0px; WIDTH: 320px; CURSOR: hand; HEIGHT: 240px" alt="" src="http://3.bp.blogspot.com/_1spBxVsA54A/SrJlWKJmfWI/AAAAAAAAAXE/4DoMP_TRH4s/s320/Scot_Port_Side.JPG" border="0" /&gt;&lt;/a&gt;much off and not hiding the yellow gel coat so I wet sanded with 220. My friend said he used 80-100 on the primer which I now wish I had done (with a long board)...but time was limited. I didn't think I'd have a chance to put a 2nd primer coat on.&lt;br /&gt;I am very impressed with the shine and durability of Interlux Brightsides so far. I don't think I've scratched any paint off, though it's only been a couple months of light use.&lt;br /&gt;During the refurb, I decided to tackle the bottom as well, painting it with VC Performance (a 2-part epoxy) and given that experience, I think I would be more willing to attempt a 2-part poly for the topsides next time.  A warning about VC Performance though: it is extremely thin (runny), being designed to spray on.  They say it is possible to brush/roll it on, but it would seem far easier to spray given my limited experience.  My "spray rig" consisted of a $99 compressor and $15 gravity fed gun, both from Harbor Freight.&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Centerboard:&lt;/div&gt;&lt;br /&gt;&lt;div&gt;As earlier pictures showed, my centerboard was in terrible shap&lt;a href="http://2.bp.blogspot.com/_1spBxVsA54A/SrJlDLVF5TI/AAAAAAAAAW8/hI_ofTPHMb8/s1600-h/021.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5382475609916433714" style="FLOAT: right; MARGIN: 0px 0px 10px 10px; WIDTH: 200px; CURSOR: hand; HEIGHT: 97px" alt="" src="http://2.bp.blogspot.com/_1spBxVsA54A/SrJlDLVF5TI/AAAAAAAAAW8/hI_ofTPHMb8/s200/021.JPG" border="0" /&gt;&lt;/a&gt;e. The leading edge was so badly damaged, there was actually a large accumulation of clay &lt;strong&gt;&lt;u&gt;between&lt;/u&gt;&lt;/strong&gt; the lead balast and the outer fiberglass causing a bulging in the airfoil shape. I ended up cutting out a curved section of fiberglass from the leading edge (both sides) and repairing it with about 4-5 layers of 1.5oz mat. I faired the repair and other leading edge defects with Interlux Watertite and finished with two coast of VC Performance (after removing LOTS of bottom paint) the board looks almost new. &lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-7652903289149690142?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/7652903289149690142/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=7652903289149690142' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/7652903289149690142'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/7652903289149690142'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2009/09/before-and-after.html' title='Before and AFTER'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_1spBxVsA54A/SrJjLRZX5xI/AAAAAAAAAW0/-smFtEzwlkU/s72-c/Scot_Stbd_Side.JPG' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-6397238133444973954</id><published>2009-05-14T18:02:00.004-04:00</published><updated>2009-06-01T10:38:13.310-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='boats'/><title type='text'>Removing boat bottom paint</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/_1spBxVsA54A/SgyWpCVMemI/AAAAAAAAAM4/5igfFYc2I50/s1600-h/smartphone+009.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5335805290271767138" style="margin: 0px 0px 10px 10px; float: right; width: 320px; height: 216px;" alt="" src="http://3.bp.blogspot.com/_1spBxVsA54A/SgyWpCVMemI/AAAAAAAAAM4/5igfFYc2I50/s320/smartphone+009.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;I read somewhere that the best tool for removing bottom paint is your checkbook. After my experience, I would have to agree, but it can be done. Apparently the pros sandblast the stuff off. Not being a pro, I turned to Google and read about several different methods for DIY: scraping, stripping, and sanding being the top three. In the end, I believe the most efficient way is to scrape AND sand. &lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Important tip: have a file in your pocket and keep the scraper sharp. The copper bottom paint dulls the scraper quickly. To sharpen, you have to lay the file down and hold the scraper perpendicular to the file. Just a few strokes makes a huge difference.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;div&gt;Flying Scot #338 had several layers of bottom paint so scraping removed a bunch of material, but did not remove the last layer of paint.  The picture above shows the results of scraping on the right and after sanding on the left.  I sanded using a 1-2 punch of a 6" sander with 50 grit lightly and carefully run over the paint to remove 95% and then a 5" orbital sander with 80 grit to get the last bit off and smooth out the agressive grit.  This process took about 1 hour for the first side, second side TBD...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-6397238133444973954?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/6397238133444973954/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=6397238133444973954' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/6397238133444973954'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/6397238133444973954'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2009/05/removing-boat-bottom-paint.html' title='Removing boat bottom paint'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_1spBxVsA54A/SgyWpCVMemI/AAAAAAAAAM4/5igfFYc2I50/s72-c/smartphone+009.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-6767081415737345601</id><published>2009-04-27T08:38:00.001-04:00</published><updated>2009-06-01T10:55:37.979-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='boats'/><title type='text'>Fairing and repainting a Flying Scot</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://3.bp.blogspot.com/_1spBxVsA54A/SfWnZPtPAXI/AAAAAAAAAMM/0gZ0g-q4TjA/s1600-h/IMAGE_00178-740706.jpg"&gt;&lt;img src="http://3.bp.blogspot.com/_1spBxVsA54A/SfWnZPtPAXI/AAAAAAAAAMM/0gZ0g-q4TjA/s160/IMAGE_00178-740706.jpg" alt="" id="BLOGGER_PHOTO_ID_5329349786217677170" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class="mobile-photo"&gt;&lt;a href="http://2.bp.blogspot.com/_1spBxVsA54A/SfWnZckRYzI/AAAAAAAAAMU/-uxrvutRn_o/s1600-h/IMAGE_00179-741119.jpg"&gt;&lt;img src="http://2.bp.blogspot.com/_1spBxVsA54A/SfWnZckRYzI/AAAAAAAAAMU/-uxrvutRn_o/s160/IMAGE_00179-741119.jpg" alt="" id="BLOGGER_PHOTO_ID_5329349789669745458" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class="Section1"&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;span style="font-size:10;"&gt;I will be blogging regularly about this year’s refurbishment of Flying Scot 338.  Last weekend I removed all of the hardware including rub rails.  This weekend I removed the centerboard (with the help of the club hoist).  Launched the 338 onto dry land – a very unnaturally feeling.  And, with the help of 3 club members, flipped the hull onto low sawhorses.  Next up, cutting the bad balsa out of the aft deck and removing the bottom paint.  I feel itchy already.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;span style="font-size:10;"&gt;Take a look at that centerboard.  I got a chance to give it a close inspection while we were…uh…sideways a few weeks ago.  I think I see why light air has never been kind to us!&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-6767081415737345601?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/6767081415737345601/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=6767081415737345601' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/6767081415737345601'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/6767081415737345601'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2009/04/fairing-and-repainting-flying-scot.html' title='Fairing and repainting a Flying Scot'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_1spBxVsA54A/SfWnZPtPAXI/AAAAAAAAAMM/0gZ0g-q4TjA/s72-c/IMAGE_00178-740706.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-8589706091575112483</id><published>2009-04-09T14:49:00.004-04:00</published><updated>2009-06-18T14:28:55.801-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>Configuring Oracle XE connection pool in Glassfish and Using JPA</title><content type='html'>&lt;div class="Section1"&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;span style="font-size:10;"&gt;I followed &lt;a href="http://trycatchfinally.blogspot.com/2006/05/creating-oracle-datasource-in.html"&gt;these instructions&lt;/a&gt; for creating an Oracle JDBC datasource.  I needed to &lt;a href="http://www.oracle.com/technology/software/tech/java/sqlj_jdbc/index.html"&gt;download&lt;/a&gt; the Oracle JDBC driver (&lt;/span&gt;&lt;/span&gt;&lt;a name="ojdbc14_10105"&gt;&lt;/a&gt;&lt;a href="http://download.oracle.com/otn/utilities_drivers/jdbc/10105/ojdbc14.jar"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:10;"&gt;ojdbc14.jar&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:10;"&gt;) into my &amp;lt;Glassfish&amp;gt;/lib directory and restart the server.  After that the “&lt;st1:place st="on"&gt;Ping&lt;/st1:place&gt;” was successful. &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="mobile-photo"&gt;&lt;a href="http://2.bp.blogspot.com/_1spBxVsA54A/Sd5DQE_5ggI/AAAAAAAAAME/v7VjCDXTxzE/s1600-h/JDBC_Pool2-776555.png"&gt;&lt;img src="http://2.bp.blogspot.com/_1spBxVsA54A/Sd5DQE_5ggI/AAAAAAAAAME/v7VjCDXTxzE/s160/JDBC_Pool2-776555.png" alt="" id="BLOGGER_PHOTO_ID_5322765753097224706" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;span style="font-size:10;"&gt;In “step 2” I had to specify 4 properties: &lt;b&gt;&lt;span style="font-weight: bold;"&gt;user&lt;/span&gt;&lt;/b&gt;, &lt;b&gt;&lt;span style="font-weight: bold;"&gt;password&lt;/span&gt;&lt;/b&gt;, &lt;b&gt;&lt;span style="font-weight: bold;"&gt;url&lt;/span&gt;&lt;/b&gt;, and &lt;b&gt;&lt;span style="font-weight: bold;"&gt;xa-driver-does-not-support-non-tx-operations&lt;/span&gt;&lt;/b&gt;. &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="mobile-photo"&gt;&lt;a href="http://4.bp.blogspot.com/_1spBxVsA54A/Sd5DQHkTAGI/AAAAAAAAAL8/wEE9QjppxM8/s1600-h/JDBC_Pool1-776349.png"&gt;&lt;img src="http://4.bp.blogspot.com/_1spBxVsA54A/Sd5DQHkTAGI/AAAAAAAAAL8/wEE9QjppxM8/s160/JDBC_Pool1-776349.png" alt="" id="BLOGGER_PHOTO_ID_5322765753786761314" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;span style="font-size:10;"&gt;Next I needed to create a JDBC resource that my persistence.xml file would reference. &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p class="mobile-photo"&gt;&lt;a href="http://1.bp.blogspot.com/_1spBxVsA54A/Sd5DQDbUH5I/AAAAAAAAAL0/k6ReAtbOntA/s1600-h/JDBC_Res-775998.png"&gt;&lt;img src="http://1.bp.blogspot.com/_1spBxVsA54A/Sd5DQDbUH5I/AAAAAAAAAL0/k6ReAtbOntA/s160/JDBC_Res-775998.png" alt="" id="BLOGGER_PHOTO_ID_5322765752675344274" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;span style="font-size:10;"&gt;With those tasks complete, I modified an existing &lt;a href="http://edgewaters.blogspot.com/2009/04/excellent-ejb-3-persistence-tutorial.html"&gt;EJB 3 JPA project&lt;/a&gt; to utilize the new connection pool.  All that was necessary was to change two lines in the persistence.xml file.  First was to point to the new JNDI name:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;&lt;span style=";font-family:&amp;quot;;font-size:10;"  &gt;  &amp;lt;jta-data-source&amp;gt;jdbc/AMRPool&amp;lt;/jta-data-source&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;span style="font-size:10;"&gt;And second was to change the “toplink.platform.class.name” (now deprecated) to:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;&lt;span style=";font-family:&amp;quot;;font-size:10;"  &gt;  &amp;lt;property name="toplink.target-database" value="Oracle"/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;span style="font-size:10;"&gt;After redeploying the JAR the CUSTOMER table was added to my schema.  I re-ran the test client and was delighted to find a record in the table.  Bravo to the Java community!&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;&lt;span style=";font-family:&amp;quot;;font-size:10;"  &gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-8589706091575112483?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/8589706091575112483/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=8589706091575112483' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/8589706091575112483'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/8589706091575112483'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2009/04/configuring-oracle-xe-connection-pool.html' title='Configuring Oracle XE connection pool in Glassfish and Using JPA'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_1spBxVsA54A/Sd5DQE_5ggI/AAAAAAAAAME/v7VjCDXTxzE/s72-c/JDBC_Pool2-776555.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-4503976423803365088</id><published>2009-04-08T13:56:00.004-04:00</published><updated>2009-06-18T14:55:33.841-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><title type='text'>Excellent EJB 3 Persistence Tutorial</title><content type='html'>&lt;div class="Section1"&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;span style="font-size:10;"&gt;It had been a long time since I have visited the &lt;st1:place st="on"&gt;&lt;st1:placetype st="on"&gt;land&lt;/st1:placetype&gt; of &lt;st1:placename st="on"&gt;Java&lt;/st1:placename&gt;&lt;/st1:place&gt;.  When I was a regular traveler there, I remember feeling inundated by the rapidly progressing proliferation of APIs.  JMS, JNDI, RMI, CMP, and on…and on…and ON.  The technologies and vendors were spawning and/or evolving so fast and from so many directions it was difficult to stay current.  From what I can see the frameworks have matured and are stabilizing.  While there are still many innovations occuring, the rate of change does not appear to be the dizzying pace that I remembered.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;span style="font-size:10;"&gt;To get up-to-speed on the current J2EE release, I dutifully installed the latest version of the open source Java EE 5 implementation…something called GlassFish.  It has a decidedly un-Microsoft feel about it.  I had flashbacks of all the previous Weblogic/Tomcat/Apache configuration nightmares and had to steel myself for navigation through the narrow passages in the reefs surrounding a modern Java app server.  I have found…in general…that Java technologies are much less tolerant of the neophyte and the learning curve seems significantly steeper than the reciprocal Microsoft technology (“platform agnostic”…I know…I know).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;span style="font-size:10;"&gt;I also downloaded the Java EE tutorial and attempted to follow it using Eclipse instead of the recommend NetBeans because I had previously used Eclipse and thought it was generally a great IDE.  In doing so, I ran into trouble with creating the EJB example that was entirely related to my inexperience…and the 50 different project types Eclipse now ships with out of the box.  I left the Sun script and started working through simple JSP examples just to get some tiny amount of momentum built.  After following the online documentation, success was not far behind.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;span style="font-size:10;"&gt;Then I ran across the EJB 3 persistence topic and decided that looked interesting, particularly &lt;a href="http://www.hibernate.org/"&gt;hibernate.org&lt;/a&gt;.  &lt;a href="http://www.webagesolutions.com/knowledgebase/javakb/jkb006/index.html"&gt;The top tutorial on the matter&lt;/a&gt;…as declared by Google, was from Web Age Solutions.  It was short enough that it didn’t scare me off so I dove in with low expectations of a working example.  I was pleasantly surprised by the author’s accuracy and brevity.  The logical and successful progression was refreshing and rewarding.  By the end of the tutorial, I had a basic understanding of the Java Persistence API (JPA) and a new level of respect for the current Java specification.  Bravo!&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;span style="font-size:10;"&gt;&lt;a href="http://www.webagesolutions.com/knowledgebase/javakb/jkb006/index.html"&gt;http://www.webagesolutions.com/knowledgebase/javakb/jkb006/index.html&lt;/a&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;span style="font-size:10;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-4503976423803365088?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/4503976423803365088/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=4503976423803365088' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/4503976423803365088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/4503976423803365088'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2009/04/excellent-ejb-3-persistence-tutorial.html' title='Excellent EJB 3 Persistence Tutorial'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-9110780395413828376</id><published>2009-03-04T09:30:00.002-05:00</published><updated>2009-06-18T14:39:49.422-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='data'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Data densification using Oracle Partitioned Outer Joins</title><content type='html'>&lt;div class="Section1"&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;span style="font-size:10;"&gt;I ran across a feature of Oracle 10g called &lt;a href="http://download-uk.oracle.com/docs/cd/B14117_01/server.101/b10736/analysis.htm#i1014934"&gt;Partitioned Outer Joins&lt;/a&gt; while tracking down the answer to another problem.  Rather than get side tracked, I made a note to check them out at a later time and I’m glad I did.  I frequently get specifications for reports where the data has gaps, but the report should be continuous, regardless of the presence of the data.  The typical example is when you want a customer sales report, but some months a customer has no orders.  Oracle-Developer.Net has &lt;a href="http://www.oracle-developer.net/display.php?id=312"&gt;a great article&lt;/a&gt; explaining how to create just such a query (and proper use of &lt;a href="http://edgewaters.blogspot.com/2008/12/create-multiple-oracle-temporary-tables.html"&gt;WITH&lt;/a&gt;).  The first helpful piece of SQL is a WITH clause to generate a “time dimension” of continuous months&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Courier New;font-size:85%;color:blue;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:10;color:blue;"   &gt;WITH&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:10;"  &gt; &lt;span style="color:maroon;"&gt;&lt;span style="color:maroon;"&gt;year_months&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;  &lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;AS&lt;/span&gt;&lt;/span&gt; &lt;span style="color:maroon;"&gt;&lt;span style="color:maroon;"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;SELECT&lt;/span&gt;&lt;/span&gt; &lt;b&gt;&lt;span style="color:#ff0080;"&gt;&lt;span style="color: rgb(255, 0, 128); font-weight: bold;"&gt;To_char&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="color:maroon;"&gt;&lt;span style="color:maroon;"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="color:#ff0080;"&gt;&lt;span style="color: rgb(255, 0, 128); font-weight: bold;"&gt;Add_months&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="color:maroon;"&gt;&lt;span style="color:maroon;"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;DATE&lt;/span&gt;&lt;/span&gt; &lt;span style="color:red;"&gt;&lt;span style="color:red;"&gt;'2004-01-01'&lt;/span&gt;&lt;/span&gt;&lt;span style="color:silver;"&gt;&lt;span style="color:silver;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;ROWNUM&lt;/span&gt;&lt;/span&gt; &lt;span style="color:silver;"&gt;&lt;span style="color:silver;"&gt;-&lt;/span&gt;&lt;/span&gt; &lt;span style="color:black;"&gt;&lt;span style="color:black;"&gt;1&lt;/span&gt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;&lt;span style="color:maroon;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span style="color:silver;"&gt;&lt;span style="color:silver;"&gt;,&lt;/span&gt;&lt;/span&gt; &lt;span style="color:red;"&gt;&lt;span style="color:red;"&gt;'YYYYMM'&lt;/span&gt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;&lt;span style="color:maroon;"&gt;)&lt;/span&gt;&lt;/span&gt; &lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;AS&lt;/span&gt;&lt;/span&gt; &lt;span style="color:maroon;"&gt;&lt;span style="color:maroon;"&gt;year_month&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;FROM&lt;/span&gt;&lt;/span&gt;   &lt;span style="color:maroon;"&gt;&lt;span style="color:maroon;"&gt;dual&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;    &lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;CONNECT&lt;/span&gt;&lt;/span&gt; &lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;BY&lt;/span&gt;&lt;/span&gt; &lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;ROWNUM&lt;/span&gt;&lt;/span&gt; &lt;span style="color:silver;"&gt;&lt;span style="color:silver;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt; &lt;span style="color:black;"&gt;&lt;span style="color:black;"&gt;12&lt;/span&gt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;&lt;span style="color:maroon;"&gt;)&lt;/span&gt;&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:10;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;span style="font-size:10;"&gt;Adding the Partition clause turns out to be quite straightforward:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Courier New;font-size:85%;color:blue;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:10;color:blue;"   &gt;SELECT&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&lt;span style=";font-family:&amp;quot;;font-size:10;"  &gt;   &lt;span style="color:maroon;"&gt;&lt;span style="color:maroon;"&gt;co&lt;/span&gt;&lt;/span&gt;&lt;span style="color:silver;"&gt;&lt;span style="color:silver;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;&lt;span style="color:maroon;"&gt;name&lt;/span&gt;&lt;/span&gt;&lt;span style="color:silver;"&gt;&lt;span style="color:silver;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;         &lt;span style="color:maroon;"&gt;&lt;span style="color:maroon;"&gt;ym&lt;/span&gt;&lt;/span&gt;&lt;span style="color:silver;"&gt;&lt;span style="color:silver;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;&lt;span style="color:maroon;"&gt;year_month&lt;/span&gt;&lt;/span&gt;&lt;span style="color:silver;"&gt;&lt;span style="color:silver;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;         &lt;b&gt;&lt;span style="color:#ff0080;"&gt;&lt;span style="color: rgb(255, 0, 128); font-weight: bold;"&gt;Nvl&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="color:maroon;"&gt;&lt;span style="color:maroon;"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="color:#ff0080;"&gt;&lt;span style="color: rgb(255, 0, 128); font-weight: bold;"&gt;Sum&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="color:maroon;"&gt;&lt;span style="color:maroon;"&gt;(co&lt;/span&gt;&lt;/span&gt;&lt;span style="color:silver;"&gt;&lt;span style="color:silver;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;&lt;span style="color:maroon;"&gt;amt)&lt;/span&gt;&lt;/span&gt;&lt;span style="color:silver;"&gt;&lt;span style="color:silver;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span style="color:black;"&gt;&lt;span style="color:black;"&gt;0&lt;/span&gt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;&lt;span style="color:maroon;"&gt;)&lt;/span&gt;&lt;/span&gt; &lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;AS&lt;/span&gt;&lt;/span&gt; &lt;span style="color:maroon;"&gt;&lt;span style="color:maroon;"&gt;total_amount&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;FROM&lt;/span&gt;&lt;/span&gt;     &lt;span style="color:maroon;"&gt;&lt;span style="color:maroon;"&gt;year_months&lt;/span&gt;&lt;/span&gt; &lt;span style="color:maroon;"&gt;&lt;span style="color:maroon;"&gt;ym&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;         &lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;LEFT&lt;/span&gt;&lt;/span&gt; &lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;OUTER&lt;/span&gt;&lt;/span&gt; &lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;JOIN&lt;/span&gt;&lt;/span&gt; &lt;span style="color:maroon;"&gt;&lt;span style="color:maroon;"&gt;customer_orders&lt;/span&gt;&lt;/span&gt; &lt;span style="color:maroon;"&gt;&lt;span style="color:maroon;"&gt;co&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;         &lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;PARTITION BY &lt;/span&gt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;&lt;span style="color:maroon;"&gt;(co&lt;/span&gt;&lt;/span&gt;&lt;span style="color:silver;"&gt;&lt;span style="color:silver;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;&lt;span style="color:maroon;"&gt;name)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;           &lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;ON&lt;/span&gt;&lt;/span&gt; &lt;span style="color:maroon;"&gt;&lt;span style="color:maroon;"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="color:#ff0080;"&gt;&lt;span style="color: rgb(255, 0, 128); font-weight: bold;"&gt;To_char&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="color:maroon;"&gt;&lt;span style="color:maroon;"&gt;(co&lt;/span&gt;&lt;/span&gt;&lt;span style="color:silver;"&gt;&lt;span style="color:silver;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;&lt;span style="color:maroon;"&gt;dt&lt;/span&gt;&lt;/span&gt;&lt;span style="color:silver;"&gt;&lt;span style="color:silver;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span style="color:red;"&gt;&lt;span style="color:red;"&gt;'YYYYMM'&lt;/span&gt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;&lt;span style="color:maroon;"&gt;)&lt;/span&gt;&lt;/span&gt; &lt;span style="color:silver;"&gt;&lt;span style="color:silver;"&gt;=&lt;/span&gt;&lt;/span&gt; &lt;span style="color:maroon;"&gt;&lt;span style="color:maroon;"&gt;ym&lt;/span&gt;&lt;/span&gt;&lt;span style="color:silver;"&gt;&lt;span style="color:silver;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;&lt;span style="color:maroon;"&gt;year_month)&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;GROUP&lt;/span&gt;&lt;/span&gt; &lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;BY&lt;/span&gt;&lt;/span&gt; &lt;span style="color:maroon;"&gt;&lt;span style="color:maroon;"&gt;co&lt;/span&gt;&lt;/span&gt;&lt;span style="color:silver;"&gt;&lt;span style="color:silver;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;&lt;span style="color:maroon;"&gt;name&lt;/span&gt;&lt;/span&gt;&lt;span style="color:silver;"&gt;&lt;span style="color:silver;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;         &lt;span style="color:maroon;"&gt;&lt;span style="color:maroon;"&gt;ym&lt;/span&gt;&lt;/span&gt;&lt;span style="color:silver;"&gt;&lt;span style="color:silver;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;&lt;span style="color:maroon;"&gt;year_month&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;ORDER&lt;/span&gt;&lt;/span&gt; &lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;BY&lt;/span&gt;&lt;/span&gt; &lt;span style="color:maroon;"&gt;&lt;span style="color:maroon;"&gt;co&lt;/span&gt;&lt;/span&gt;&lt;span style="color:silver;"&gt;&lt;span style="color:silver;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;&lt;span style="color:maroon;"&gt;name&lt;/span&gt;&lt;/span&gt;&lt;span style="color:silver;"&gt;&lt;span style="color:silver;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;         &lt;span style="color:maroon;"&gt;&lt;span style="color:maroon;"&gt;ym&lt;/span&gt;&lt;/span&gt;&lt;span style="color:silver;"&gt;&lt;span style="color:silver;"&gt;.&lt;/span&gt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;&lt;span style="color:maroon;"&gt;year_month&lt;/span&gt;&lt;/span&gt;&lt;span style="color:silver;"&gt;&lt;span style="color:silver;"&gt;;&lt;/span&gt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;&lt;span style="color:maroon;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-9110780395413828376?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/9110780395413828376/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=9110780395413828376' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/9110780395413828376'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/9110780395413828376'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2009/03/data-densification-using-oracle.html' title='Data densification using Oracle Partitioned Outer Joins'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-923581922976382169</id><published>2009-02-25T14:47:00.003-05:00</published><updated>2009-06-18T14:36:02.767-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='data'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Use Oracle Table Function to Encapsulate and Modularize your Data Layer</title><content type='html'>&lt;div class="Section1"&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;span style="font-size:10;"&gt;I finally ran into a situation where I wanted the functionality of a Table Function so I was forced to learn the PL/SQL way to do this.  In this case, &lt;a href="http://www.orafaq.com/node/1881"&gt;the benefits&lt;/a&gt; of accepting parameters made the Table Function a clear winner.  To start off you need a table:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Courier New;font-size:85%;color:blue;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:10;color:blue;"   &gt;CREATE&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;&lt;span style=";font-family:&amp;quot;;font-size:10;"  &gt; &lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;TABLE&lt;/span&gt;&lt;/span&gt; &lt;span style="color:maroon;"&gt;&lt;span style="color:maroon;"&gt;cool_people&lt;/span&gt;&lt;/span&gt; &lt;span style="color:maroon;"&gt;&lt;span style="color:maroon;"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:maroon;"&gt;&lt;span style="color:maroon;"&gt;cp_id&lt;/span&gt;&lt;/span&gt;      &lt;span style="color:black;"&gt;&lt;span style="color:black;"&gt;NUMBER&lt;/span&gt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;&lt;span style="color:maroon;"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style="color:black;"&gt;&lt;span style="color:black;"&gt;8&lt;/span&gt;&lt;/span&gt;&lt;span style="color:silver;"&gt;&lt;span style="color:silver;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;span style="color:black;"&gt;&lt;span style="color:black;"&gt;0&lt;/span&gt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;&lt;span style="color:maroon;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span style="color:silver;"&gt;&lt;span style="color:silver;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:maroon;"&gt;&lt;span style="color:maroon;"&gt;first_name&lt;/span&gt;&lt;/span&gt; &lt;span style="color:black;"&gt;&lt;span style="color:black;"&gt;VARCHAR2&lt;/span&gt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;&lt;span style="color:maroon;"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style="color:black;"&gt;&lt;span style="color:black;"&gt;30&lt;/span&gt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;&lt;span style="color:maroon;"&gt;)&lt;/span&gt;&lt;/span&gt;&lt;span style="color:silver;"&gt;&lt;span style="color:silver;"&gt;,&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:maroon;"&gt;&lt;span style="color:maroon;"&gt;last_name&lt;/span&gt;&lt;/span&gt;  &lt;span style="color:black;"&gt;&lt;span style="color:black;"&gt;VARCHAR2&lt;/span&gt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;&lt;span style="color:maroon;"&gt;(&lt;/span&gt;&lt;/span&gt;&lt;span style="color:black;"&gt;&lt;span style="color:black;"&gt;30&lt;/span&gt;&lt;/span&gt;&lt;span style="color:maroon;"&gt;&lt;span style="color:maroon;"&gt;))&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:10;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;span style="font-size:10;"&gt;Next you need a new TYPE that describes a single “row” of your Table Function’s output.  In my contrived example, I’m only returning a formatted name:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Courier New;font-size:85%;color:blue;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:10;color:blue;"   &gt;create or replace TYPE&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;&lt;span style=";font-family:&amp;quot;;font-size:10;"  &gt; &lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;PEOPLE_OBJ&lt;/span&gt;&lt;/span&gt; &lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;AS OBJECT&lt;/span&gt;&lt;/span&gt;( &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;&lt;span style=";font-family:&amp;quot;;font-size:10;"  &gt;  &lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;PERSON_NAME&lt;/span&gt;&lt;/span&gt; VARCHAR(100));&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;span style="font-size:10;"&gt;Now that we have created the new type of OBJECT, we can declare a TABLE of that new type:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Courier New;font-size:85%;color:blue;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:10;color:blue;"   &gt;create or replace&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;&lt;span style=";font-family:&amp;quot;;font-size:10;"  &gt; &lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;TYPE&lt;/span&gt;&lt;/span&gt; &lt;span style="color: rgb(153, 51, 0);"&gt;&lt;span style="color: rgb(153, 51, 0);"&gt;PEOPLE_TABLE&lt;/span&gt;&lt;/span&gt; &lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;AS TABLE&lt;/span&gt;&lt;/span&gt; OF PEOPLE_OBJ;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;    &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;span style="font-size:10;"&gt;Now we can create our function that accepts a parameter of CHAR:&lt;o:p&gt;&lt;/o:p&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;CREATE&lt;/span&gt; &lt;span class="kwrd"&gt;OR&lt;/span&gt; REPLACE &lt;span class="kwrd"&gt;FUNCTION&lt;/span&gt;&lt;br /&gt;     TFN_GET_COOL_PEOPLE (formatName &lt;span class="kwrd"&gt;CHAR&lt;/span&gt;)&lt;br /&gt;     &lt;span class="kwrd"&gt;RETURN&lt;/span&gt; PEOPLE_TABLE PIPELINED&lt;br /&gt;&lt;span class="kwrd"&gt;IS&lt;/span&gt;&lt;br /&gt;     fName &lt;span class="kwrd"&gt;VARCHAR&lt;/span&gt;(30);&lt;br /&gt;     lName &lt;span class="kwrd"&gt;VARCHAR&lt;/span&gt;(30);&lt;br /&gt;     p1 PEOPLE_OBJ := PEOPLE_OBJ(&lt;span class="kwrd"&gt;NULL&lt;/span&gt;);&lt;br /&gt;     &lt;span class="kwrd"&gt;CURSOR&lt;/span&gt; C1 &lt;span class="kwrd"&gt;IS&lt;/span&gt;&lt;br /&gt;             &lt;span class="kwrd"&gt;SELECT&lt;/span&gt; FIRST_NAME,&lt;br /&gt;                    LAST_NAME&lt;br /&gt;             &lt;span class="kwrd"&gt;FROM&lt;/span&gt;   COOL_PEOPLE;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;BEGIN&lt;/span&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;OPEN&lt;/span&gt; C1;&lt;br /&gt;      LOOP&lt;br /&gt;              &lt;span class="kwrd"&gt;FETCH&lt;/span&gt; C1&lt;br /&gt;              &lt;span class="kwrd"&gt;INTO&lt;/span&gt;  fName,&lt;br /&gt;                    lName;&lt;br /&gt;           &lt;br /&gt;              &lt;span class="kwrd"&gt;EXIT&lt;/span&gt;&lt;br /&gt;      &lt;span class="kwrd"&gt;WHEN&lt;/span&gt; C1%NOTFOUND;&lt;br /&gt;              &lt;span class="kwrd"&gt;IF&lt;/span&gt; formatName           = &lt;span class="str"&gt;'Y'&lt;/span&gt; &lt;span class="kwrd"&gt;THEN&lt;/span&gt;&lt;br /&gt;                      p1.PERSON_NAME := lName&lt;br /&gt;                      || &lt;span class="str"&gt;', '&lt;/span&gt;&lt;br /&gt;                      || fName;&lt;br /&gt;              &lt;span class="kwrd"&gt;ELSE&lt;/span&gt;&lt;br /&gt;                      p1.PERSON_NAME := fName&lt;br /&gt;                      || &lt;span class="str"&gt;' '&lt;/span&gt;&lt;br /&gt;                      || lName;&lt;br /&gt;              &lt;span class="kwrd"&gt;END&lt;/span&gt; &lt;span class="kwrd"&gt;IF&lt;/span&gt;;&lt;br /&gt;              PIPE &lt;span class="kwrd"&gt;ROW&lt;/span&gt; (p1);&lt;br /&gt;      &lt;span class="kwrd"&gt;END&lt;/span&gt; LOOP;&lt;br /&gt;      &lt;span class="kwrd"&gt;RETURN&lt;/span&gt;;&lt;br /&gt;&lt;span class="kwrd"&gt;END&lt;/span&gt; TFN_GET_COOL_PEOPLE;&lt;/pre&gt;&lt;br /&gt;You can then use the function in a FROM clause:&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; * &lt;span class="kwrd"&gt;FROM&lt;/span&gt; &lt;span class="kwrd"&gt;TABLE&lt;/span&gt;(TFN_GET_COOL_PEOPLE(&lt;span class="str"&gt;'N'&lt;/span&gt;));&lt;/pre&gt;&lt;br /&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;span style="font-size:10;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;span style="font-size:10;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;span style="font-size:10;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-923581922976382169?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/923581922976382169/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=923581922976382169' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/923581922976382169'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/923581922976382169'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2009/02/use-oracle-table-function-to.html' title='Use Oracle Table Function to Encapsulate and Modularize your Data Layer'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-8490202987739782262</id><published>2009-02-23T12:19:00.001-05:00</published><updated>2009-06-18T14:36:02.767-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='data'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Private stored procedures in an Oracle package</title><content type='html'>&lt;div class=Section1&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;I never knew you could write a procedure in a package that isn&amp;#8217;t declared in the package declaration.&amp;nbsp; It&amp;#8217;s kind of like a private function/subroutine since it can&amp;#8217;t be called by anything outside of the package&amp;#8230;which is how I discovered this &amp;#8220;feature&amp;#8221;.&amp;nbsp; I was trying to call an &amp;#8220;undeclared&amp;#8221; procedure from a different package.&amp;nbsp; I had already written another procedure that called it from its own package, so I was mighty confused about the error I was getting: &amp;#8220;MY_PROC must be declared&amp;#8221; but now it makes perfect sense.&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;One other discovery I made is that you can pass NULL as a parameter to another procedure instead of declaring a null valued variable.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-8490202987739782262?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/8490202987739782262/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=8490202987739782262' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/8490202987739782262'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/8490202987739782262'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2009/02/private-stored-procedures-in-oracle.html' title='Private stored procedures in an Oracle package'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-7040086694186146039</id><published>2009-01-06T10:58:00.000-05:00</published><updated>2009-06-18T14:46:10.374-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><title type='text'>Using GeoIP's GeoLite to find an IP address City using C# .Net</title><content type='html'>&lt;div class=Section1&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;There&amp;#8217;s a terrific open source product offered by MaxMind called &lt;a href="http://www.maxmind.com/app/geolitecity"&gt;GeoLite City&lt;/a&gt; that is a binary (or CSV) database for doing IP location lookups.&amp;nbsp; There are many flavors of the GeoIP API that provide optimized access to the .DAT file, including &lt;a href="http://www.maxmind.com/app/csharp"&gt;C#&lt;/a&gt; and &lt;a href="http://www.maxmind.com/app/vb"&gt;VB.Net&lt;/a&gt; (Country only).&amp;nbsp; The C# version is a collection of 5 classes and is very easy to use:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 color=blue face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:blue'&gt;Dim&lt;/span&gt;&lt;/font&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt; ls &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;New&lt;/span&gt;&lt;/font&gt; LookupService(&lt;font color="#a31515"&gt;&lt;span style='color:#A31515'&gt;&amp;quot;C:\GeoIP\GeoLiteCity.dat&amp;quot;&lt;/span&gt;&lt;/font&gt;)&lt;br&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Dim&lt;/span&gt;&lt;/font&gt; IPLoc &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; Location = ls.getLocation(IPString)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-7040086694186146039?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/7040086694186146039/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=7040086694186146039' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/7040086694186146039'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/7040086694186146039'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2009/01/using-geoips-geolite-to-find-ip-address.html' title='Using GeoIP&apos;s GeoLite to find an IP address City using C# .Net'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-992268627477133666</id><published>2008-12-30T14:32:00.001-05:00</published><updated>2009-06-18T14:46:10.374-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><title type='text'>Long2IP in VB.Net and Narrowing Conversion</title><content type='html'>&lt;div class=Section1&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;This is post #2 demonstrating how VB.Net makes things harder than C#.&amp;nbsp; I am receiving IP data as a type Long number.&amp;nbsp; It turns out that PHP has this helpful built-in function called &lt;/span&gt;&lt;/font&gt;&lt;font size=2 color=red face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:red'&gt;long2ip&lt;/span&gt;&lt;/font&gt;&lt;font size=2&gt;&lt;span style='font-size:10.0pt'&gt; that will do the translation back to the familiar &amp;#8220;192.0.1.100&amp;#8221; string for you.&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;I found a few examples of VB code that could do the same, but as best I (and the compiler) could tell, they relied on functions that were not carried into VB.Net.&amp;nbsp; The problem is very simple though, or so I thought.&amp;nbsp; All I need to do is narrow the Long into a Byte and then shift the bits a Byte at a time.&amp;nbsp; In C# this is a piece of cake, but try as I might I could not convince the .Net CLR that I was intentionally overflowing the variable.&amp;nbsp; Despite trying every combination of Option Strict Off/On with CType, CByte, DirectCast, the runtime dutifully threw an OverflowException.&amp;nbsp; I was unable to find a way to do a &lt;i&gt;&lt;span style='font-style:italic'&gt;narrowing conversion&lt;/span&gt;&lt;/i&gt; in VB.Net. &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;I gave up and created a separate C# class library for my helper class based on &lt;a href="http://www.eggheadcafe.com/software/aspnet/33322073/converting-a-float-to-a-4.aspx"&gt;this code I found&lt;/a&gt;:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 color=blue face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:blue'&gt;public&lt;/span&gt;&lt;/font&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;static&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;void&lt;/span&gt;&lt;/font&gt; ToBigEndian(&lt;font color=blue&gt;&lt;span style='color:blue'&gt;long&lt;/span&gt;&lt;/font&gt; number, &lt;font color=blue&gt;&lt;span style='color:blue'&gt;byte&lt;/span&gt;&lt;/font&gt;[] outputArray) {&lt;br&gt; &amp;nbsp;&lt;font color=blue&gt;&lt;span style='color:blue'&gt;int&lt;/span&gt;&lt;/font&gt; length = outputArray.Length;&lt;br&gt; &amp;nbsp;outputArray[length - 1] = (&lt;font color=blue&gt;&lt;span style='color:blue'&gt;byte&lt;/span&gt;&lt;/font&gt;)number;&lt;br&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;&amp;nbsp;for&lt;/span&gt;&lt;/font&gt; (&lt;font color=blue&gt;&lt;span style='color:blue'&gt;int&lt;/span&gt;&lt;/font&gt; i = length - 2; i &amp;gt;= 0; i--)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; outputArray[i] = (&lt;font color=blue&gt;&lt;span style='color:blue'&gt;byte&lt;/span&gt;&lt;/font&gt;)(number &amp;gt;&amp;gt; (8 * (i + 1)));&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;}&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;With that, it was trivial to create my own version of Long2IP:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 color=blue face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:blue'&gt;Public&lt;/span&gt;&lt;/font&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Function&lt;/span&gt;&lt;/font&gt; Long2IP(&lt;font color=blue&gt;&lt;span style='color:blue'&gt;ByVal&lt;/span&gt;&lt;/font&gt; IP &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Long&lt;/span&gt;&lt;/font&gt;) &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;String&lt;br&gt; &amp;nbsp; Dim&lt;/span&gt;&lt;/font&gt; myIp(3) &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Byte&lt;br&gt; &amp;nbsp; &lt;/span&gt;&lt;/font&gt;IPHelp.ToBigEndian(IP, myIp)&lt;br&gt; &amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Return&lt;/span&gt;&lt;/font&gt; myIp(0) &amp;amp; &lt;font color="#a31515"&gt;&lt;span style='color:#A31515'&gt;&amp;quot;.&amp;quot;&lt;/span&gt;&lt;/font&gt; &amp;amp; myIp(1) &amp;amp; &lt;font color="#a31515"&gt;&lt;span style='color:#A31515'&gt;&amp;quot;.&amp;quot;&lt;/span&gt;&lt;/font&gt; &amp;amp; myIp(2) &amp;amp; &lt;font color="#a31515"&gt;&lt;span style='color:#A31515'&gt;&amp;quot;.&amp;quot;&lt;/span&gt;&lt;/font&gt; &amp;amp; myIp(3)&lt;br&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;End&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Function&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=3 face=Arial&gt;&lt;span style='font-size:12.0pt'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-992268627477133666?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/992268627477133666/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=992268627477133666' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/992268627477133666'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/992268627477133666'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2008/12/long2ip-in-vbnet-and-narrowing.html' title='Long2IP in VB.Net and Narrowing Conversion'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-6981719104476042498</id><published>2008-12-20T16:25:00.005-05:00</published><updated>2009-06-18T14:42:06.591-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='casual'/><title type='text'>My first time (geo) caching</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_1spBxVsA54A/SU1n0a2t9CI/AAAAAAAAAKM/nzMzQfk6auY/s1600-h/MatthewCache1.jpg"&gt;&lt;img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 200px; height: 160px;" src="http://2.bp.blogspot.com/_1spBxVsA54A/SU1n0a2t9CI/AAAAAAAAAKM/nzMzQfk6auY/s200/MatthewCache1.jpg" alt="" id="BLOGGER_PHOTO_ID_5281992088235144226" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;There are some days that I say, "we just have to blog about this."  Memories that I know we will want to revisit.  Today was one of those days.  Last night (after a enjoyable visit to the botanical gardens) we realized that we had absolutely &lt;span style="font-style: italic;"&gt;nothing&lt;/span&gt; scheduled...a rare event for a Saturday.  It was a good day for a family hike, but the neighborhood trails were undoubtedly muddy from all of the rain, so we decided to try the local park built on historic coal mines.  There was also the promise of a long-awaited geocaching adventure.&lt;br /&gt;&lt;br /&gt;I think the thrill of the hunt really livens up a walk in the woods for little people.  In the future we will definitely incorporate that into our hikes!  We struck out on the first cache (apparently it is often muggled), but after much searching we found our second hide.  The hike on the old rail grade, through the tunnel, and around the lake was quite challenging for our little guys, but they did great!&lt;br /&gt;&lt;br /&gt;Then to top it off, we enjoyed a filling lunch at a mama-favorite: Cheeburger Cheeburger.  The kids had a great time playing peek-a-boo with the staff :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-6981719104476042498?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/6981719104476042498/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=6981719104476042498' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/6981719104476042498'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/6981719104476042498'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2008/12/my-first-time-geo-caching.html' title='My first time (geo) caching'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_1spBxVsA54A/SU1n0a2t9CI/AAAAAAAAAKM/nzMzQfk6auY/s72-c/MatthewCache1.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-8953397469645553088</id><published>2008-12-19T15:21:00.001-05:00</published><updated>2009-06-18T14:36:02.768-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='data'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Use ROWNUM to return multiple non-aggreate GROUP BY columns</title><content type='html'>&lt;div class=Section1&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;Somebody needs to explain something to me.&amp;nbsp; Why in the world can&amp;#8217;t we use &lt;i&gt;&lt;span style='font-style:italic'&gt;some&lt;/span&gt;&lt;/i&gt; of the aggregate functions without having to GROUP BY every other column?&amp;nbsp; I know things like SUM and AVG won&amp;#8217;t work, but why can&amp;#8217;t I do the following:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt; font-family:"Courier New"'&gt;SELECT name, toy_category, Max(cool_factor) FROM toys GROUP BY toy_category&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;And have it just return the coolest toys?&amp;nbsp; Now that is a very simplistic example, but I needed to do something very similar to this. &amp;nbsp;The best way I found was to use Oracle&amp;#8217;s ROWNUM column on a sorted resultset to allow me to join back to said resultset.&amp;nbsp; This also seems like the perfect time to use a WITH Clause (&lt;a href="http://edgewaters.blogspot.com/2008/12/create-multiple-oracle-temporary-tables.html"&gt;my other post about using WITH Clause&lt;/a&gt;) since we need to hit that data several times &lt;u&gt;and&lt;/u&gt; preserve the ROWNUM.&amp;nbsp; The first thing we need to do is get the list of Toys into a named query &lt;b&gt;&lt;span style='font-weight:bold'&gt;ordered by the column we want to Max()&lt;/span&gt;&lt;/b&gt; &amp;#8211; the order is very important:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt; font-family:"Courier New"'&gt;WITH temp_all_toys AS (SELECT name, toy_category, cool_factor FROM toys ORDER BY cool_factor)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;Now that we have all the toys in a discreet list we can look for the &lt;/span&gt;&lt;/font&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;Max(ROWNUM)&lt;/span&gt;&lt;/font&gt;&lt;font size=2&gt;&lt;span style='font-size:10.0pt'&gt; for each &lt;/span&gt;&lt;/font&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;toy_category&lt;/span&gt;&lt;/font&gt;&lt;font size=2&gt;&lt;span style='font-size:10.0pt'&gt;.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt; font-family:"Courier New"'&gt;SELECT Max(rownum) as max_rownum FROM temp_all_toys GROUPY BY toy_category&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;The output of that query is pretty dull.&amp;nbsp; Just a bunch of random looking numbers&amp;#8230;but they are really the &amp;#8220;primary key&amp;#8221; for our temp table so if we join them back to the &lt;/span&gt;&lt;/font&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;temp_all_toys&lt;/span&gt;&lt;/font&gt;&lt;font size=2&gt;&lt;span style='font-size:10.0pt'&gt; table, we can get at &lt;i&gt;&lt;span style='font-style:italic'&gt;any&lt;/span&gt;&lt;/i&gt; of the columns!&amp;nbsp; Thanks for nothing GROUP BY.&amp;nbsp; There is one last trick I found for joining back: for some reason my query wouldn&amp;#8217;t work unless I joined to a second subquery to get at the ROWNUM:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt; font-family:"Courier New"'&gt;WITH temp_all_toys AS (SELECT name, toy_category, cool_factor FROM toys ORDER BY cool_factor)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt; font-family:"Courier New"'&gt;SELECT&lt;br&gt; &amp;nbsp; all_recs.*&lt;br&gt; FROM&lt;br&gt; &amp;nbsp; (SELECT rownum as rnum, name, toy_category FROM temp_all_toys GROUPY BY toy_category) all_recs&lt;br&gt; JOIN&lt;br&gt; &amp;nbsp; (SELECT Max(rownum) as max_rownum FROM temp_all_toys GROUPY BY toy_category) max_recs&lt;br&gt; ON all_recs.rnum = max_recs.max_rownum&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-8953397469645553088?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/8953397469645553088/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=8953397469645553088' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/8953397469645553088'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/8953397469645553088'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2008/12/use-rownum-to-return-multiple-non.html' title='Use ROWNUM to return multiple non-aggreate GROUP BY columns'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-6601713918787784790</id><published>2008-12-19T14:05:00.003-05:00</published><updated>2009-06-18T14:36:02.768-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='data'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Create multiple Oracle temporary tables using WITH Clause</title><content type='html'>&lt;div class="Section1"&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;span style="font-size:10;"&gt;According to &lt;a href="http://stanford.edu/dept/itss/docs/oracle/10g/server.101/b10736/aggreg.htm#i1007241"&gt;the Oracle docs&lt;/a&gt;, the WITH clause behaves much like a temporary table and is a great way to clean up lengthy SQL:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;span style="font-size:12;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;blockquote&gt;&lt;span style=";font-family:Arial;font-size:100%;"  &gt;&lt;span style="font-size:12;"&gt;The &lt;/span&gt;&lt;/span&gt;&lt;code&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;&lt;span style="font-size:10;"&gt;WITH&lt;/span&gt;&lt;/span&gt;&lt;/code&gt; clause (formally known as &lt;code&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;&lt;span style="font-size:10;"&gt;subquery_factoring_clause&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;) enables you to reuse the same query block in a &lt;code&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;&lt;span style="font-size:10;"&gt;SELECT&lt;/span&gt;&lt;/span&gt;&lt;/code&gt; statement when it occurs more than once within a complex query. &lt;code&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;&lt;span style="font-size:10;"&gt;WITH&lt;/span&gt;&lt;/span&gt;&lt;/code&gt; is a part of the SQL-99 standard. This is particularly useful when a query has multiple references to the same query block and there are joins and aggregations. Using the &lt;code&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;&lt;span style="font-size:10;"&gt;WITH&lt;/span&gt;&lt;/span&gt;&lt;/code&gt; clause, Oracle retrieves the results of a query block and stores them in the user's temporary tablespace. Note that Oracle Database does not support recursive use of the &lt;code&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;&lt;span style="font-size:10;"&gt;WITH&lt;/span&gt;&lt;/span&gt;&lt;/code&gt; clause.&lt;/blockquote&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:10;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;p&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;span style="font-size:10;"&gt;This is exactly what I was looking for to solve a difficult task involving ROWNUM (&lt;a href="http://edgewaters.blogspot.com/2008/12/use-rownum-to-return-multiple-non.html"&gt;ROWNUM post&lt;/a&gt;).  What’s more, you are not limited to only a single “named query”.  You can define as many as you want by separating them with a comma:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;pre&gt;&lt;b&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;&lt;span style="font-weight: bold;font-size:10;" &gt;WITH&lt;/span&gt;&lt;/span&gt;&lt;/b&gt; query_name &lt;b&gt;&lt;span style="font-weight: bold;"&gt;AS&lt;/span&gt;&lt;/b&gt; (subquery)&lt;o:p&gt;&lt;/o:p&gt;&lt;/pre&gt;&lt;pre&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;&lt;span style="font-size:10;"&gt;     [, query_name &lt;b&gt;&lt;span style="font-weight: bold;"&gt;AS&lt;/span&gt;&lt;/b&gt; (subquery) ]...&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;span style="font-size:10;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;span style="font-size:10;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-6601713918787784790?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/6601713918787784790/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=6601713918787784790' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/6601713918787784790'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/6601713918787784790'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2008/12/create-multiple-oracle-temporary-tables.html' title='Create multiple Oracle temporary tables using WITH Clause'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-3411997016976833299</id><published>2008-12-12T11:49:00.001-05:00</published><updated>2009-06-18T14:46:10.375-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><title type='text'>Calling a PHP SOAP 1.2 web service using Visual Studio and VB.Net</title><content type='html'>&lt;div class=Section1&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;Oh the fun of learning new technologies.&amp;nbsp; The endless errors, outbursts of profanity, stumping dead-ends&amp;#8230;and finally, the trill of success!&amp;nbsp; Nothing beats it in my book.&amp;nbsp; This story is about my latest &amp;#8220;trophy&amp;#8221; (a fishing metaphor), creating a PHP web service and then calling it from a .NET console application.&amp;nbsp; Once you get everything working, it all seems so simple&amp;#8230;but rest assured, creating a WSDL file by hand can be a tricky experience if you are new to one of the technologies in question.&amp;nbsp; First things first, to follow this example you need to &lt;a href="http://edgewaters.s3.amazonaws.com/PHP_Service.zip"&gt;download the sample application&lt;/a&gt; that contains a couple of PHP files and console application.&amp;nbsp; I tried to boil this down to the Hello World level so it would be easiest to understand.&amp;nbsp; I assume you already have PHP setup and have enabled the SOAP extension. Here is the part that took me awhile to get working.&amp;nbsp; I wanted a web service that took a string as a parameter and returned a string.&amp;nbsp; Apparently Visual Studio requires this &amp;#8220;complexType&amp;#8221; description in the &amp;#8220;types&amp;#8221; section; otherwise you could just define your parameters in the &amp;#8220;message&amp;#8221; section and be done with it.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 color=blue face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:blue'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;/font&gt;&lt;font size=2 color="#a31515" face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family: "Courier New";color:#A31515'&gt;s:element&lt;/span&gt;&lt;/font&gt;&lt;font size=2 color=blue face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:blue'&gt; &lt;/span&gt;&lt;/font&gt;&lt;font size=2 color=red face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New";color:red'&gt;name&lt;/span&gt;&lt;/font&gt;&lt;font size=2 color=blue face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family: "Courier New";color:blue'&gt;=&lt;/span&gt;&lt;/font&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;quot;&lt;font color=blue&gt;&lt;span style='color:blue'&gt;GetReportsListRequest&lt;/span&gt;&lt;/font&gt;&amp;quot;&lt;font color=blue&gt;&lt;span style='color:blue'&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 color=blue face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:blue'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;/font&gt;&lt;font size=2 color="#a31515" face="Courier New"&gt;&lt;span style='font-size:10.0pt; font-family:"Courier New";color:#A31515'&gt;s:complexType&lt;/span&gt;&lt;/font&gt;&lt;font size=2 color=blue face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family: "Courier New";color:blue'&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 color=blue face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:blue'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;/font&gt;&lt;font size=2 color="#a31515" face="Courier New"&gt;&lt;span style='font-size:10.0pt; font-family:"Courier New";color:#A31515'&gt;s:sequence&lt;/span&gt;&lt;/font&gt;&lt;font size=2 color=blue face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:blue'&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 color=blue face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:blue'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;/font&gt;&lt;font size=2 color="#a31515" face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New";color:#A31515'&gt;s:element&lt;/span&gt;&lt;/font&gt;&lt;font size=2 color=blue face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family: "Courier New";color:blue'&gt; &lt;/span&gt;&lt;/font&gt;&lt;font size=2 color=red face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:red'&gt;minOccurs&lt;/span&gt;&lt;/font&gt;&lt;font size=2 color=blue face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New";color:blue'&gt;=&lt;/span&gt;&lt;/font&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;quot;&lt;font color=blue&gt;&lt;span style='color:blue'&gt;1&lt;/span&gt;&lt;/font&gt;&amp;quot;&lt;font color=blue&gt;&lt;span style='color:blue'&gt; &lt;/span&gt;&lt;/font&gt;&lt;font color=red&gt;&lt;span style='color:red'&gt;maxOccurs&lt;/span&gt;&lt;/font&gt;&lt;font color=blue&gt;&lt;span style='color:blue'&gt;=&lt;/span&gt;&lt;/font&gt;&amp;quot;&lt;font color=blue&gt;&lt;span style='color:blue'&gt;1&lt;/span&gt;&lt;/font&gt;&amp;quot;&lt;font color=blue&gt;&lt;span style='color:blue'&gt; &lt;/span&gt;&lt;/font&gt;&lt;font color=red&gt;&lt;span style='color:red'&gt;name&lt;/span&gt;&lt;/font&gt;&lt;font color=blue&gt;&lt;span style='color:blue'&gt;=&lt;/span&gt;&lt;/font&gt;&amp;quot;&lt;font color=blue&gt;&lt;span style='color:blue'&gt;Category&lt;/span&gt;&lt;/font&gt;&amp;quot;&lt;font color=blue&gt;&lt;span style='color:blue'&gt; &lt;/span&gt;&lt;/font&gt;&lt;font color=red&gt;&lt;span style='color:red'&gt;type&lt;/span&gt;&lt;/font&gt;&lt;font color=blue&gt;&lt;span style='color:blue'&gt;=&lt;/span&gt;&lt;/font&gt;&amp;quot;&lt;font color=blue&gt;&lt;span style='color:blue'&gt;s:string&lt;/span&gt;&lt;/font&gt;&amp;quot;&lt;font color=blue&gt;&lt;span style='color:blue'&gt;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 color=blue face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:blue'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;/font&gt;&lt;font size=2 color="#a31515" face="Courier New"&gt;&lt;span style='font-size:10.0pt; font-family:"Courier New";color:#A31515'&gt;s:sequence&lt;/span&gt;&lt;/font&gt;&lt;font size=2 color=blue face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:blue'&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 color=blue face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:blue'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;/font&gt;&lt;font size=2 color="#a31515" face="Courier New"&gt;&lt;span style='font-size:10.0pt; font-family:"Courier New";color:#A31515'&gt;s:complexType&lt;/span&gt;&lt;/font&gt;&lt;font size=2 color=blue face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family: "Courier New";color:blue'&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 color=blue face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:blue'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;/font&gt;&lt;font size=2 color="#a31515" face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family: "Courier New";color:#A31515'&gt;s:element&lt;/span&gt;&lt;/font&gt;&lt;font size=2 color=blue face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:blue'&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 color=blue face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:blue'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;/font&gt;&lt;font size=2 color="#a31515" face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family: "Courier New";color:#A31515'&gt;s:element&lt;/span&gt;&lt;/font&gt;&lt;font size=2 color=blue face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:blue'&gt; &lt;/span&gt;&lt;/font&gt;&lt;font size=2 color=red face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New";color:red'&gt;name&lt;/span&gt;&lt;/font&gt;&lt;font size=2 color=blue face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family: "Courier New";color:blue'&gt;=&lt;/span&gt;&lt;/font&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;quot;&lt;font color=blue&gt;&lt;span style='color:blue'&gt;GetReportsListResponse&lt;/span&gt;&lt;/font&gt;&amp;quot;&lt;font color=blue&gt;&lt;span style='color:blue'&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 color=blue face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:blue'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;/font&gt;&lt;font size=2 color="#a31515" face="Courier New"&gt;&lt;span style='font-size:10.0pt; font-family:"Courier New";color:#A31515'&gt;s:complexType&lt;/span&gt;&lt;/font&gt;&lt;font size=2 color=blue face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family: "Courier New";color:blue'&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 color=blue face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:blue'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;/font&gt;&lt;font size=2 color="#a31515" face="Courier New"&gt;&lt;span style='font-size:10.0pt; font-family:"Courier New";color:#A31515'&gt;s:sequence&lt;/span&gt;&lt;/font&gt;&lt;font size=2 color=blue face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:blue'&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 color=blue face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:blue'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;&lt;/span&gt;&lt;/font&gt;&lt;font size=2 color="#a31515" face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New";color:#A31515'&gt;s:element&lt;/span&gt;&lt;/font&gt;&lt;font size=2 color=blue face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family: "Courier New";color:blue'&gt; &lt;/span&gt;&lt;/font&gt;&lt;font size=2 color=red face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:red'&gt;minOccurs&lt;/span&gt;&lt;/font&gt;&lt;font size=2 color=blue face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New";color:blue'&gt;=&lt;/span&gt;&lt;/font&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;quot;&lt;font color=blue&gt;&lt;span style='color:blue'&gt;1&lt;/span&gt;&lt;/font&gt;&amp;quot;&lt;font color=blue&gt;&lt;span style='color:blue'&gt; &lt;/span&gt;&lt;/font&gt;&lt;font color=red&gt;&lt;span style='color:red'&gt;maxOccurs&lt;/span&gt;&lt;/font&gt;&lt;font color=blue&gt;&lt;span style='color:blue'&gt;=&lt;/span&gt;&lt;/font&gt;&amp;quot;&lt;font color=blue&gt;&lt;span style='color:blue'&gt;1&lt;/span&gt;&lt;/font&gt;&amp;quot;&lt;font color=blue&gt;&lt;span style='color:blue'&gt; &lt;/span&gt;&lt;/font&gt;&lt;font color=red&gt;&lt;span style='color:red'&gt;name&lt;/span&gt;&lt;/font&gt;&lt;font color=blue&gt;&lt;span style='color:blue'&gt;=&lt;/span&gt;&lt;/font&gt;&amp;quot;&lt;font color=blue&gt;&lt;span style='color:blue'&gt;ReportsList&lt;/span&gt;&lt;/font&gt;&amp;quot;&lt;font color=blue&gt;&lt;span style='color:blue'&gt; &lt;/span&gt;&lt;/font&gt;&lt;font color=red&gt;&lt;span style='color:red'&gt;type&lt;/span&gt;&lt;/font&gt;&lt;font color=blue&gt;&lt;span style='color:blue'&gt;=&lt;/span&gt;&lt;/font&gt;&amp;quot;&lt;font color=blue&gt;&lt;span style='color:blue'&gt;s:string&lt;/span&gt;&lt;/font&gt;&amp;quot;&lt;font color=blue&gt;&lt;span style='color:blue'&gt;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 color=blue face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:blue'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;/font&gt;&lt;font size=2 color="#a31515" face="Courier New"&gt;&lt;span style='font-size:10.0pt; font-family:"Courier New";color:#A31515'&gt;s:sequence&lt;/span&gt;&lt;/font&gt;&lt;font size=2 color=blue face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:blue'&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 color=blue face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:blue'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;/font&gt;&lt;font size=2 color="#a31515" face="Courier New"&gt;&lt;span style='font-size:10.0pt; font-family:"Courier New";color:#A31515'&gt;s:complexType&lt;/span&gt;&lt;/font&gt;&lt;font size=2 color=blue face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family: "Courier New";color:blue'&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 color=blue face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:blue'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/&lt;/span&gt;&lt;/font&gt;&lt;font size=2 color="#a31515" face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family: "Courier New";color:#A31515'&gt;s:element&lt;/span&gt;&lt;/font&gt;&lt;font size=2 color=blue face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:blue'&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;When VS2005 reads this WSDL (lots of XML omitted in the above &amp;#8211; see download), it generates the following stub:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=1 color=black face=Tahoma&gt;&lt;span style='font-size: 9.0pt;font-family:Tahoma;color:black'&gt;Public Function &lt;b&gt;&lt;span style='font-weight:bold'&gt;GetReportsList&lt;/span&gt;&lt;/b&gt;(ByVal &lt;i&gt;&lt;span style='font-style:italic'&gt;Category&lt;/span&gt;&lt;/i&gt; As &lt;/span&gt;&lt;/font&gt;&lt;b&gt;&lt;u&gt;&lt;font size=1 color="#215dc6" face=Tahoma&gt;&lt;span style='font-size:9.0pt;font-family: Tahoma;color:#215DC6;font-weight:bold'&gt;String&lt;/span&gt;&lt;/font&gt;&lt;/u&gt;&lt;/b&gt;&lt;font size=1 color=black face=Tahoma&gt;&lt;span style='font-size:9.0pt;font-family:Tahoma; color:black'&gt;) As &lt;/span&gt;&lt;/font&gt;&lt;b&gt;&lt;u&gt;&lt;font size=1 color="#215dc6" face=Tahoma&gt;&lt;span style='font-size:9.0pt;font-family:Tahoma;color:#215DC6;font-weight:bold'&gt;String&lt;/span&gt;&lt;/font&gt;&lt;/u&gt;&lt;/b&gt;&lt;font size=2&gt;&lt;span style='font-size:10.0pt'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;Now another tricky part was getting the PHP service to return the string in the correct object hierarchy.&amp;nbsp; It took the following code to do so:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt; font-family:"Courier New"'&gt;function GetReportsList($P) { &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt; font-family:"Courier New"'&gt;&amp;nbsp; $reportList = &lt;font color=blue&gt;&lt;span style='color:blue'&gt;&amp;quot;Report1|Report2&amp;quot;&lt;/span&gt;&lt;/font&gt; . $P-&amp;gt;Category;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt; font-family:"Courier New"'&gt;&amp;nbsp; return array&lt;font color=blue&gt;&lt;span style='color:blue'&gt;(&amp;quot;ReportsList&amp;quot;&lt;/span&gt;&lt;/font&gt;=&amp;gt;$reportList);&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt; font-family:"Courier New"'&gt;}&lt;/span&gt;&lt;/font&gt;&lt;font size=2&gt;&lt;span style='font-size: 10.0pt'&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;For an example of how to return complex types, see the references section at the end of this article.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;One other quirky thing was how to call the web service from a PHP client (I&amp;#8217;ll throw that in for free).&amp;nbsp; You have to wrap your parameter array in a blank array because of the WSDL &lt;/span&gt;&lt;/font&gt;&lt;font size=2 color=blue face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:blue'&gt;GetReportsListRequest&lt;/span&gt;&lt;/font&gt;&lt;font size=2&gt;&lt;span style='font-size:10.0pt'&gt; hierarchy:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt; font-family:"Courier New"'&gt;$return = $client-&amp;gt;__soapCall(&lt;font color=blue&gt;&lt;span style='color:blue'&gt;&amp;quot;GetReportsList&amp;quot;&lt;/span&gt;&lt;/font&gt;,array(array( &lt;font color=blue&gt;&lt;span style='color:blue'&gt;&amp;quot;Category&amp;quot;&lt;/span&gt;&lt;/font&gt; =&amp;gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;&amp;quot;abc&amp;quot;&lt;/span&gt;&lt;/font&gt;)));&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;References:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;&lt;a href="http://us2.php.net/manual/en/book.soap.php"&gt;PHP SOAP Manual&lt;/a&gt;&lt;br&gt; &lt;a href="http://us2.php.net/manual/en/function.soap-soapserver-addfunction.php#52381"&gt;User Comment in SoapServer.addFunction documentation&lt;/a&gt;&lt;br&gt; &lt;a href="http://www.theserverside.net/discussions/thread.tss?thread_id=49279"&gt;Trouble with Visual Studio and WSDL&lt;/a&gt;&lt;br&gt; &lt;a href="http://www.developer.com/services/article.php/1602051"&gt;WSDL Essentials&lt;/a&gt;&lt;br&gt; &lt;br&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=3 face=Arial&gt;&lt;span style='font-size:12.0pt'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-3411997016976833299?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/3411997016976833299/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=3411997016976833299' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/3411997016976833299'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/3411997016976833299'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2008/12/calling-php-soap-12-web-service-using.html' title='Calling a PHP SOAP 1.2 web service using Visual Studio and VB.Net'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-5666925729658596666</id><published>2008-12-10T08:25:00.003-05:00</published><updated>2009-06-18T14:47:59.227-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><title type='text'>A .Net developer's guide to MySQL</title><content type='html'>&lt;div class="Section1"&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;span style="font-size:10;"&gt;I was &lt;s&gt;given the opportunity&lt;/s&gt; forced to get to know all things MySQL so these are the observations of a Microsoft/Oracle developer’s first foray into MySQL.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;span style="font-size:10;"&gt;The &lt;a href="http://dev.mysql.com/downloads/"&gt;MySQL Downloads page&lt;/a&gt; is the one-stop for the latest MySQL goodies.  As of this writing the Community Server (free) was at release 5.1.  Once you install the database, you quickly realize a need for some additional tools.  The MySQL GUI Tools bundle includes the essential Administrator and QueryBrowser applications that will be familiar to any Microsoft developer.  Now that you can create and maintain your new RDBMS, you need some drivers to connect the .NET code to.  I tested both the ODBC and the Native (Connector/Net) drivers and from what I can see, I’d go with the Native drivers for development, but I’d also install the ODBC drivers for general Microsoft bliss (Visio, Excel, etc.).&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;span style="font-size:10;"&gt;Working with the Native driver is nearly identical to any other ADO.Net provider, save that everything is prefixed with “MySql” (e.g. MySqlConnection, MySqlCommand, etc.).  After adding a project reference to MySql.Data, you need only import MySql.Data and MySql.Data.MySqlClient and the rest is completely straightforward:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;span style="font-size:10;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;Imports&lt;/span&gt; System.Web.Services&lt;br /&gt;&lt;span class="kwrd"&gt;Imports&lt;/span&gt; System.Web.Services.Protocols&lt;br /&gt;&lt;span class="kwrd"&gt;Imports&lt;/span&gt; System.ComponentModel&lt;br /&gt;&lt;span class="kwrd"&gt;Imports&lt;/span&gt; MySql.Data&lt;br /&gt;&lt;span class="kwrd"&gt;Imports&lt;/span&gt; MySql.Data.MySqlClient&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;System.Web.Services.WebService(&lt;span class="kwrd"&gt;Namespace&lt;/span&gt;:=&lt;span class="str"&gt;"http://tempuri.org/"&lt;/span&gt;)&amp;gt; _&lt;br /&gt;&amp;lt;System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)&amp;gt; _&lt;br /&gt;&amp;lt;ToolboxItem(&lt;span class="kwrd"&gt;False&lt;/span&gt;)&amp;gt; _&lt;br /&gt;&lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Class&lt;/span&gt; ReportService&lt;br /&gt;    &lt;span class="kwrd"&gt;Inherits&lt;/span&gt; System.Web.Services.WebService&lt;br /&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;Dim&lt;/span&gt; _connString &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt; = &lt;span class="str"&gt;"server=localhost;database=csrm;user id=root;password=****;"&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;WebMethod()&amp;gt; _&lt;br /&gt;    &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt; ReportList(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; group &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;) &lt;span class="kwrd"&gt;As&lt;/span&gt; Report()&lt;br /&gt;        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; newList &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;New&lt;/span&gt; ArrayList&lt;br /&gt;        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; newItem &lt;span class="kwrd"&gt;As&lt;/span&gt; Report&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; conn &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;New&lt;/span&gt; MySqlConnection(_connString)&lt;br /&gt;        &lt;span class="kwrd"&gt;Try&lt;/span&gt;&lt;br /&gt;            conn.Open()&lt;br /&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;Dim&lt;/span&gt; cmd &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;New&lt;/span&gt; MySqlCommand(&lt;span class="str"&gt;"SELECT * FROM report"&lt;/span&gt;, conn)&lt;br /&gt;            &lt;span class="kwrd"&gt;Dim&lt;/span&gt; reader &lt;span class="kwrd"&gt;As&lt;/span&gt; MySqlDataReader = cmd.ExecuteReader(CommandBehavior.SingleResult)&lt;br /&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;While&lt;/span&gt; reader.Read&lt;br /&gt;                newItem = &lt;span class="kwrd"&gt;New&lt;/span&gt; Report()&lt;br /&gt;                newItem.Code = reader(&lt;span class="str"&gt;"Code"&lt;/span&gt;)&lt;br /&gt;                newItem.Name = reader(&lt;span class="str"&gt;"Name"&lt;/span&gt;)&lt;br /&gt;                newList.Add(newItem)&lt;br /&gt;            &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;While&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;            reader.Close()&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;Catch&lt;/span&gt; ex &lt;span class="kwrd"&gt;As&lt;/span&gt; Exception&lt;br /&gt;            &lt;span class="kwrd"&gt;Throw&lt;/span&gt; &lt;span class="kwrd"&gt;New&lt;/span&gt; ApplicationException(&lt;span class="str"&gt;"Error occured: "&lt;/span&gt; &amp;amp; ex.Message, ex)&lt;br /&gt;        &lt;span class="kwrd"&gt;Finally&lt;/span&gt;&lt;br /&gt;            conn.Close()&lt;br /&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Try&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;Return&lt;/span&gt; newList.ToArray(&lt;span class="kwrd"&gt;GetType&lt;/span&gt;(Report))&lt;br /&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &amp;lt;WebMethod()&amp;gt; _&lt;br /&gt;    &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt; ReportOutput(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; reportCode &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;) &lt;span class="kwrd"&gt;As&lt;/span&gt; DataTable&lt;br /&gt;        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; dt &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;New&lt;/span&gt; DataTable(&lt;span class="str"&gt;"Report"&lt;/span&gt;)&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;Dim&lt;/span&gt; conn &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;New&lt;/span&gt; MySqlConnection(_connString)&lt;br /&gt;        &lt;span class="kwrd"&gt;Try&lt;/span&gt;&lt;br /&gt;            conn.Open()&lt;br /&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;Dim&lt;/span&gt; cmd &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;New&lt;/span&gt; MySqlCommand(&lt;span class="str"&gt;"ServiceReport"&lt;/span&gt;, conn)&lt;br /&gt;            cmd.CommandType = CommandType.StoredProcedure&lt;br /&gt;            cmd.Parameters.Add(&lt;span class="kwrd"&gt;New&lt;/span&gt; MySqlParameter(&lt;span class="str"&gt;"IN_REPORT_CODE"&lt;/span&gt;, reportCode))&lt;br /&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;Dim&lt;/span&gt; da &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;New&lt;/span&gt; MySqlDataAdapter(cmd)&lt;br /&gt;            da.Fill(dt)&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;Catch&lt;/span&gt; ex &lt;span class="kwrd"&gt;As&lt;/span&gt; Exception&lt;br /&gt;            &lt;span class="kwrd"&gt;Throw&lt;/span&gt; &lt;span class="kwrd"&gt;New&lt;/span&gt; ApplicationException(&lt;span class="str"&gt;"Error occured: "&lt;/span&gt; &amp;amp; ex.Message, ex)&lt;br /&gt;        &lt;span class="kwrd"&gt;Finally&lt;/span&gt;&lt;br /&gt;            conn.Close()&lt;br /&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Try&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;Return&lt;/span&gt; dt&lt;br /&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Function&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Class&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;Serializable()&amp;gt; _&lt;br /&gt;&lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Class&lt;/span&gt; Report&lt;br /&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;Private&lt;/span&gt; _code &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Property&lt;/span&gt; Code() &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;Get&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;Return&lt;/span&gt; _code&lt;br /&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Get&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;Set&lt;/span&gt;(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; value &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;)&lt;br /&gt;            _code = value&lt;br /&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Set&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Property&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;Private&lt;/span&gt; _name &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Property&lt;/span&gt; Name() &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;Get&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;Return&lt;/span&gt; _name&lt;br /&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Get&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;Set&lt;/span&gt;(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; value &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;)&lt;br /&gt;            _name = value&lt;br /&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Set&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Property&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;Private&lt;/span&gt; _description &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;Public&lt;/span&gt; &lt;span class="kwrd"&gt;Property&lt;/span&gt; Description() &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;Get&lt;/span&gt;&lt;br /&gt;            &lt;span class="kwrd"&gt;Return&lt;/span&gt; _description&lt;br /&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Get&lt;/span&gt;&lt;br /&gt;        &lt;span class="kwrd"&gt;Set&lt;/span&gt;(&lt;span class="kwrd"&gt;ByVal&lt;/span&gt; value &lt;span class="kwrd"&gt;As&lt;/span&gt; &lt;span class="kwrd"&gt;String&lt;/span&gt;)&lt;br /&gt;            _description = value&lt;br /&gt;        &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Set&lt;/span&gt;&lt;br /&gt;    &lt;span class="kwrd"&gt;End&lt;/span&gt; &lt;span class="kwrd"&gt;Property&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;End&lt;/span&gt; Class&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;span style="font-size:10;"&gt;The syntax for creating a stored procedure is slightly different than PL-SQL, but seems easy enough:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;span style="font-size:10;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre class="csharpcode"&gt;&lt;br /&gt;DELIMITER $$&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;DROP&lt;/span&gt; &lt;span class="kwrd"&gt;PROCEDURE&lt;/span&gt; &lt;span class="kwrd"&gt;IF&lt;/span&gt; &lt;span class="kwrd"&gt;EXISTS&lt;/span&gt; `csrm`.`ServiceReport`$$&lt;br /&gt;&lt;span class="kwrd"&gt;CREATE&lt;/span&gt; DEFINER=`root`@`localhost` &lt;span class="kwrd"&gt;PROCEDURE&lt;/span&gt;  `csrm`.`ServiceReport`(&lt;br /&gt;    &lt;span class="kwrd"&gt;IN&lt;/span&gt; IN_REPORT_CODE &lt;span class="kwrd"&gt;varchar&lt;/span&gt;(5)&lt;br /&gt;)&lt;br /&gt;&lt;span class="kwrd"&gt;BEGIN&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;SELECT&lt;/span&gt; * &lt;span class="kwrd"&gt;FROM&lt;/span&gt; emailAddr;&lt;br /&gt;&lt;br /&gt;&lt;span class="kwrd"&gt;END&lt;/span&gt; $$&lt;br /&gt;&lt;br /&gt;DELIMITER ;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style="font-family:Arial;font-size:85%;"&gt;&lt;span style="font-size:10;"&gt;&lt;o:p&gt; &lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-5666925729658596666?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/5666925729658596666/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=5666925729658596666' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/5666925729658596666'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/5666925729658596666'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2008/12/net-developers-guide-to-mysql.html' title='A .Net developer&apos;s guide to MySQL'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-8281879256897310587</id><published>2008-12-05T14:23:00.000-05:00</published><updated>2009-06-18T14:36:02.768-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='data'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Using Oracle SQL Developer Copy Wizard to create local XE schemas</title><content type='html'>&lt;p class="mobile-photo"&gt;&lt;a href="http://2.bp.blogspot.com/_1spBxVsA54A/STl_2Uhd2HI/AAAAAAAAAJk/muwrN_aPPMo/s1600-h/Ora_xe_admin-748392.png"&gt;&lt;img src="http://2.bp.blogspot.com/_1spBxVsA54A/STl_2Uhd2HI/AAAAAAAAAJk/muwrN_aPPMo/s160/Ora_xe_admin-748392.png"  border="0" alt="" id="BLOGGER_PHOTO_ID_5276389009639987314" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class="mobile-photo"&gt;&lt;a href="http://1.bp.blogspot.com/_1spBxVsA54A/STl_21F2_GI/AAAAAAAAAJs/w7FmQax5FKw/s1600-h/SQL_Dev-751618.png"&gt;&lt;img src="http://1.bp.blogspot.com/_1spBxVsA54A/STl_21F2_GI/AAAAAAAAAJs/w7FmQax5FKw/s160/SQL_Dev-751618.png"  border="0" alt="" id="BLOGGER_PHOTO_ID_5276389018382564450" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div class=Section1&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;Teleworking is great.&amp;nbsp; Actually, it&amp;#8217;s a modern wonder.&amp;nbsp; There are tons of benefits to the employee and employer.&amp;nbsp; In addition to better &lt;a href="http://en.wikipedia.org/wiki/Quality_of_life"&gt;QoL&lt;/a&gt; scores, in many cases teleworking boosts developer productivity thanks to fewer distractions.&amp;nbsp; There are some disadvantages however.&amp;nbsp; Working remotely places one at the whim of residential bandwidth.&amp;nbsp; Once considered ginormous, 10Mbps connections are almost the norm in many suburban areas, however local conditions can vary and an outage can be devastating.&amp;nbsp; Even when the bits are flowing, downloading large record sets can clog even the biggest pipe costing the developer time during repeated compile/test cycles.&amp;nbsp; That brings us to development &amp;#8220;unplugged&amp;#8221;.&amp;nbsp; If you are a Microsoft shop, running a local copy of SQL Server express is nothing new, but if your application is tied to an Oracle backend, replicating that was typically beyond the skill set/toolset of the average code jockey.&amp;nbsp; &lt;a href="http://www.oracle.com/technology/products/database/xe/index.html"&gt;Oracle 10g Express&lt;/a&gt; (XE) and SQL Developer has changed all that.&amp;nbsp; Now the process is as simple as adding a new user (see screenshot) to your local database with the browser admin utility and using the dead-simple &lt;b&gt;&lt;span style='font-weight: bold'&gt;Copy Wizard&lt;/span&gt;&lt;/b&gt; in SQL Developer&amp;#8217;s &lt;b&gt;&lt;span style='font-weight:bold'&gt;Tools&lt;/span&gt;&lt;/b&gt; menu.&amp;nbsp; Unplugged is fast, but don&amp;#8217;t forget to keep your integration server in-synch (daily at a minimum) so your work is not lost if the workstation croaks.&amp;nbsp; Note, the tns-free connection string did make my forehead wrinkle:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=1 color=navy face="Courier New"&gt;&lt;span style='font-size:8.0pt;font-family:"Courier New";color:navy'&gt;Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=localhost)(PORT=1521)))(CONNECT_DATA=(SID=XE)(SERVER=DEDICATED)));user id=&amp;lt;user&amp;gt;;password=&amp;lt;password&amp;gt;;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;Tip: keep multiple connection strings in your web.config to be able to switch between the local and integration server; whichever key is last, &amp;#8220;wins&amp;#8221;.&lt;/span&gt;&lt;/font&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/p&gt;  &lt;/div&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-8281879256897310587?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/8281879256897310587/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=8281879256897310587' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/8281879256897310587'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/8281879256897310587'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2008/12/using-oracle-sql-developer-copy-wizard.html' title='Using Oracle SQL Developer Copy Wizard to create local XE schemas'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_1spBxVsA54A/STl_2Uhd2HI/AAAAAAAAAJk/muwrN_aPPMo/s72-c/Ora_xe_admin-748392.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-3858476469554232469</id><published>2008-12-02T15:03:00.001-05:00</published><updated>2009-06-18T14:46:10.375-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><title type='text'>Making the AJAX Control Toolkit 508 Compliant - TabContainer</title><content type='html'>&lt;div class="Section1"&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;span style="font-size:10;"&gt;The new ASP.NET AJAX Control Toolkit has many useful new controls, but being constrained by Section 508 can make life difficult for those of us wanting to make use of asynchronous browser techniques.  Enter the TabContainer control.  The TabContainer couldn’t be easier to use.  Right out of the box you get a beautiful tab layout using familiar markup:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-top: 0in;"&gt;&lt;span style=";font-family:Courier New;font-size:85%;color:blue;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:10;color:blue;"   &gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);font-family:Courier New;font-size:85%;"  &gt;&lt;span style=";font-family:&amp;quot;;font-size:10;"  &gt;ajaxToolkit&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:Courier New;font-size:85%;color:blue;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:10;color:blue;"   &gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);font-family:Courier New;font-size:85%;"  &gt;&lt;span style=";font-family:&amp;quot;;font-size:10;"  &gt;TabContainer&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;&lt;span style=";font-family:&amp;quot;;font-size:10;"  &gt; &lt;span style="color:red;"&gt;&lt;span style="color:red;"&gt;runat&lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;="server"&lt;/span&gt;&lt;/span&gt; &lt;span style="color:red;"&gt;&lt;span style="color:red;"&gt;ID&lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;="Tabs"&lt;/span&gt;&lt;/span&gt; &lt;span style="color:red;"&gt;&lt;span style="color:red;"&gt;Height&lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;="138px"&lt;/span&gt;&lt;/span&gt;&amp;gt;&lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-top: 0in;"&gt;&lt;span style=";font-family:Courier New;font-size:85%;color:blue;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:10;color:blue;"   &gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);font-family:Courier New;font-size:85%;"  &gt;&lt;span style=";font-family:&amp;quot;;font-size:10;"  &gt;ajaxToolkit&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:Courier New;font-size:85%;color:blue;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:10;color:blue;"   &gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);font-family:Courier New;font-size:85%;"  &gt;&lt;span style=";font-family:&amp;quot;;font-size:10;"  &gt;TabPanel&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;&lt;span style=";font-family:&amp;quot;;font-size:10;"  &gt; &lt;span style="color:red;"&gt;&lt;span style="color:red;"&gt;runat&lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;="server"&lt;/span&gt;&lt;/span&gt; &lt;span style="color:red;"&gt;&lt;span style="color:red;"&gt;ID&lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;="Panel3"&lt;/span&gt;&lt;/span&gt; &lt;span style="color:red;"&gt;&lt;span style="color:red;"&gt;HeaderText&lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;="Email"&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-top: 0in;"&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;&lt;span style=";font-family:&amp;quot;;font-size:10;"  &gt;    &lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;ContentTemplate&lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-top: 0in;"&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;&lt;span style=";font-family:&amp;quot;;font-size:10;"  &gt;        Email:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-top: 0in;"&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;&lt;span style=";font-family:&amp;quot;;font-size:10;"  &gt;        &lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;asp&lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;TextBox&lt;/span&gt;&lt;/span&gt; &lt;span style="color:red;"&gt;&lt;span style="color:red;"&gt;ID&lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;="emailText"&lt;/span&gt;&lt;/span&gt; &lt;span style="color:red;"&gt;&lt;span style="color:red;"&gt;runat&lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;="server"&lt;/span&gt;&lt;/span&gt; &lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;/&amp;gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;br&lt;/span&gt;&lt;/span&gt; &lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;/&amp;gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;br&lt;/span&gt;&lt;/span&gt; &lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-top: 0in;"&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;&lt;span style=";font-family:&amp;quot;;font-size:10;"  &gt;        &lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;asp&lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;Button&lt;/span&gt;&lt;/span&gt; &lt;span style="color:red;"&gt;&lt;span style="color:red;"&gt;ID&lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;="Button1"&lt;/span&gt;&lt;/span&gt; &lt;span style="color:red;"&gt;&lt;span style="color:red;"&gt;runat&lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;="server"&lt;/span&gt;&lt;/span&gt; &lt;span style="color:red;"&gt;&lt;span style="color:red;"&gt;Text&lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;="Save"&lt;/span&gt;&lt;/span&gt; &lt;span style="color:red;"&gt;&lt;span style="color:red;"&gt;OnClick&lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;="SaveProfile"&lt;/span&gt;&lt;/span&gt; &lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;/&amp;gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;br&lt;/span&gt;&lt;/span&gt; &lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;/&amp;gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;br&lt;/span&gt;&lt;/span&gt; &lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;/&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-top: 0in;"&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;&lt;span style=";font-family:&amp;quot;;font-size:10;"  &gt;        Hit Save to cause a full postback.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-top: 0in;"&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;&lt;span style=";font-family:&amp;quot;;font-size:10;"  &gt;    &lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;/&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;ContentTemplate&lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-top: 0in;"&gt;&lt;span style=";font-family:Courier New;font-size:85%;color:blue;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:10;color:blue;"   &gt;&amp;lt;/&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);font-family:Courier New;font-size:85%;"  &gt;&lt;span style=";font-family:&amp;quot;;font-size:10;"  &gt;ajaxToolkit&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:Courier New;font-size:85%;color:blue;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:10;color:blue;"   &gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);font-family:Courier New;font-size:85%;"  &gt;&lt;span style=";font-family:&amp;quot;;font-size:10;"  &gt;TabPanel&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:Courier New;font-size:85%;color:blue;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:10;color:blue;"   &gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;span style="font-size:10;"&gt;This results in a nice looking tabbed control:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_1spBxVsA54A/STWXkFipuLI/AAAAAAAAAHo/8RpQpvpi-Ls/s1600-h/Tabs1.png"&gt;&lt;img style="cursor: pointer; width: 200px; height: 107px;" src="http://1.bp.blogspot.com/_1spBxVsA54A/STWXkFipuLI/AAAAAAAAAHo/8RpQpvpi-Ls/s200/Tabs1.png" alt="" id="BLOGGER_PHOTO_ID_5275289184753006770" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;span style="font-size:10;"&gt;&lt;br /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;span style="font-size:10;"&gt;Now the bad news: if you turn off JavaScript to test 508 accessibility, &lt;b&gt;&lt;span style="font-weight: bold;"&gt;nothing&lt;/span&gt;&lt;/b&gt; is displayed because the tabs are rendered as a DIV with style set to &lt;b&gt;&lt;i&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;visibility:hidden;&lt;/span&gt;&lt;/i&gt;&lt;/b&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;pre&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;&lt;span style="font-size:10;"&gt;&amp;lt;&lt;span class="start-tag"&gt;div&lt;/span&gt;&lt;span class="attribute-name"&gt; id&lt;/span&gt;=&lt;span class="attribute-value"&gt;"ctl00_ContentPlaceHolder1_Tabs" &lt;/span&gt;&lt;span class="attribute-name"&gt;class&lt;/span&gt;=&lt;span class="attribute-value"&gt;"ajax__tab_xp" &lt;/span&gt;&lt;span class="attribute-name"&gt;style&lt;/span&gt;=&lt;span class="attribute-value"&gt;"width:402px;visibility:hidden;"&lt;/span&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/pre&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;span style="font-size:10;"&gt;I couldn’t find an easy way to get at the DIV output other than to “overwrite” the style with an Attribute added on PreRender:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-top: 0in;"&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;&lt;span style=";font-family:&amp;quot;;font-size:10;"  &gt;    &lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;Private&lt;/span&gt;&lt;/span&gt; &lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;Sub&lt;/span&gt;&lt;/span&gt; Tabs_PreRender(&lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;ByVal&lt;/span&gt;&lt;/span&gt; sender &lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;As&lt;/span&gt;&lt;/span&gt; &lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;Object&lt;/span&gt;&lt;/span&gt;, &lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;ByVal&lt;/span&gt;&lt;/span&gt; e &lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;As&lt;/span&gt;&lt;/span&gt; System.EventArgs) &lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;Handles&lt;/span&gt;&lt;/span&gt; Tabs.PreRender&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-top: 0in;"&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;&lt;span style=";font-family:&amp;quot;;font-size:10;"  &gt;        Tabs.Attributes.Add(&lt;span style="color: rgb(163, 21, 21);"&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;"style"&lt;/span&gt;&lt;/span&gt;, &lt;span style="color: rgb(163, 21, 21);"&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;"visibility:visible"&lt;/span&gt;&lt;/span&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-top: 0in;"&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;&lt;span style=";font-family:&amp;quot;;font-size:10;"  &gt;        Tabs.ActiveTab.Attributes.Add(&lt;span style="color: rgb(163, 21, 21);"&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;"style"&lt;/span&gt;&lt;/span&gt;, &lt;span style="color: rgb(163, 21, 21);"&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;"visibility:visible"&lt;/span&gt;&lt;/span&gt;)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;&lt;span style=";font-family:&amp;quot;;font-size:10;"  &gt;    &lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;End&lt;/span&gt;&lt;/span&gt; &lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;Sub&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:10;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;span style="font-size:10;"&gt;Now that will get your DIV contents visible again, but the tabs no longer work (more JavaScript), so I changed the TabContainer to use a HeaderTemplate and added NoScript tags with buttons:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-top: 0in;"&gt;&lt;span style=";font-family:Courier New;font-size:85%;color:blue;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:10;color:blue;"   &gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);font-family:Courier New;font-size:85%;"  &gt;&lt;span style=";font-family:&amp;quot;;font-size:10;"  &gt;HeaderTemplate&lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:Courier New;font-size:85%;color:blue;"   &gt;&lt;span style=";font-family:&amp;quot;;font-size:10;color:blue;"   &gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-top: 0in;"&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;&lt;span style=";font-family:&amp;quot;;font-size:10;"  &gt;    Signature and Bio&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-top: 0in;"&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;&lt;span style=";font-family:&amp;quot;;font-size:10;"  &gt;    &lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;noscript&lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-top: 0in;"&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;&lt;span style=";font-family:&amp;quot;;font-size:10;"  &gt;    &lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;asp&lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;:&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;Button&lt;/span&gt;&lt;/span&gt; &lt;span style="color:red;"&gt;&lt;span style="color:red;"&gt;ID&lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;="btnTab0"&lt;/span&gt;&lt;/span&gt; &lt;span style="color:red;"&gt;&lt;span style="color:red;"&gt;runat&lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;="server"&lt;/span&gt;&lt;/span&gt; &lt;span style="color:red;"&gt;&lt;span style="color:red;"&gt;CommandArgument&lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;="0"&lt;/span&gt;&lt;/span&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-top: 0in;"&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;&lt;span style=";font-family:&amp;quot;;font-size:10;"  &gt;    &lt;span style="color:red;"&gt;&lt;span style="color:red;"&gt;Text&lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;="Signature and Bio Tab"&lt;/span&gt;&lt;/span&gt; &lt;span style="color:red;"&gt;&lt;span style="color:red;"&gt;OnCommand&lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;="Tab_Command"&lt;/span&gt;&lt;/span&gt; &lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;/&amp;gt;&amp;lt;/&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;noscript&lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;br /&gt;&amp;lt;/&lt;/span&gt;&lt;/span&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;&lt;span style="color: rgb(163, 21, 21);"&gt;HeaderTemplate&lt;/span&gt;&lt;/span&gt;&lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;span style="font-size:10;"&gt;Add a simple OnCommand handler and you are all set.  Note, I prefer to set the handler in this way (declaratively) since I tend to copy/paste my html code and I &lt;s&gt;might&lt;/s&gt; always forget to hook up the handler in the CodeBehind:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-top: 0in;"&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;&lt;span style=";font-family:&amp;quot;;font-size:10;"  &gt;    &lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;Protected&lt;/span&gt;&lt;/span&gt; &lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;Sub&lt;/span&gt;&lt;/span&gt; Tab_Command(&lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;ByVal&lt;/span&gt;&lt;/span&gt; sender &lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;As&lt;/span&gt;&lt;/span&gt; &lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;Object&lt;/span&gt;&lt;/span&gt;, &lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;ByVal&lt;/span&gt;&lt;/span&gt; e &lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;As&lt;/span&gt;&lt;/span&gt; System.Web.UI.WebControls.CommandEventArgs)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal" style="margin-top: 0in;"&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;&lt;span style=";font-family:&amp;quot;;font-size:10;"  &gt;        Tabs.ActiveTabIndex = &lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;Integer&lt;/span&gt;&lt;/span&gt;.Parse(e.CommandArgument)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Courier New;font-size:85%;"  &gt;&lt;span style=";font-family:&amp;quot;;font-size:10;"  &gt;    &lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;End&lt;/span&gt;&lt;/span&gt; &lt;span style="color:blue;"&gt;&lt;span style="color:blue;"&gt;Sub&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:10;"&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;span style="font-size:10;"&gt;Without any CSS or HTML trickery this is what you wind up with:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;span style="font-size:10;"&gt;&lt;br /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_1spBxVsA54A/STWYOH_EawI/AAAAAAAAAHw/JSEs84MieJo/s1600-h/Tabs2.png"&gt;&lt;img style="cursor: pointer; width: 200px; height: 70px;" src="http://4.bp.blogspot.com/_1spBxVsA54A/STWYOH_EawI/AAAAAAAAAHw/JSEs84MieJo/s200/Tabs2.png" alt="" id="BLOGGER_PHOTO_ID_5275289906963573506" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;p class="MsoNormal"&gt;&lt;span style=";font-family:Arial;font-size:85%;"  &gt;&lt;span style="font-size:10;"&gt;It’s not the most beautiful looking page, but then again, screen readers are by definition not concerned with “look and feel”.&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;  &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8756753752160166655-3858476469554232469?l=edgewaters.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://edgewaters.blogspot.com/feeds/3858476469554232469/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=8756753752160166655&amp;postID=3858476469554232469' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/3858476469554232469'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8756753752160166655/posts/default/3858476469554232469'/><link rel='alternate' type='text/html' href='http://edgewaters.blogspot.com/2008/12/making-ajax-control-toolkit-508.html' title='Making the AJAX Control Toolkit 508 Compliant - TabContainer'/><author><name>ChrisS</name><uri>http://www.blogger.com/profile/13328188604078246840</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://4.bp.blogspot.com/-A0Bjpfza4vI/TkvjsWHJcNI/AAAAAAAAFPw/MU2IHLyWcuA/s1600/chris-snyder.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_1spBxVsA54A/STWXkFipuLI/AAAAAAAAAHo/8RpQpvpi-Ls/s72-c/Tabs1.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8756753752160166655.post-7954305880125449187</id><published>2008-11-21T14:31:00.001-05:00</published><updated>2009-06-18T14:46:10.375-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.net'/><title type='text'>Using Predicates with VB.Net Array and List Find methods</title><content type='html'>&lt;div class=Section1&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;Some things are just harder in VB.Net than C#.&amp;nbsp; Using the Find and FindAll methods when you want to pass a parameter to the search delegate is definitely one such instance.&amp;nbsp; With C# you can use anonymous methods, but those are not found in VB.Net.&amp;nbsp; Fortunately &lt;a href="http://blog.pnbconsulting.com.au/?p=67"&gt;a couple of guys cooked up&lt;/a&gt; an extended Predicate that allow you to pass in a search object.&amp;nbsp; It all starts with this class and delegate that you define in a common location (warning, trying to read this code may make you dizzy):&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 color=blue face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:blue'&gt;Public&lt;/span&gt;&lt;/font&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Delegate&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Function&lt;/span&gt;&lt;/font&gt; PredicateWrapperDelegate(&lt;font color=blue&gt;&lt;span style='color:blue'&gt;Of&lt;/span&gt;&lt;/font&gt; T, A) _&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; (&lt;font color=blue&gt;&lt;span style='color:blue'&gt;ByVal&lt;/span&gt;&lt;/font&gt; item &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; T, &lt;font color=blue&gt;&lt;span style='color:blue'&gt;ByVal&lt;/span&gt;&lt;/font&gt; argument &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; A) &lt;font color=blue&gt;&lt;span style='color: blue'&gt;As&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Boolean&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 color=blue face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:blue'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 color=blue face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:blue'&gt;Public&lt;/span&gt;&lt;/font&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Class&lt;/span&gt;&lt;/font&gt; PredicateWrapper(&lt;font color=blue&gt;&lt;span style='color:blue'&gt;Of&lt;/span&gt;&lt;/font&gt; T, A)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Private&lt;/span&gt;&lt;/font&gt; _argument &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; A&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Private&lt;/span&gt;&lt;/font&gt; _wrapperDelegate &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; PredicateWrapperDelegate(&lt;font color=blue&gt;&lt;span style='color:blue'&gt;Of&lt;/span&gt;&lt;/font&gt; T, A)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Public&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Sub&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;New&lt;/span&gt;&lt;/font&gt;(&lt;font color=blue&gt;&lt;span style='color:blue'&gt;ByVal&lt;/span&gt;&lt;/font&gt; argument &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; A, _&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;ByVal&lt;/span&gt;&lt;/font&gt; wrapperDelegate &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; PredicateWrapperDelegate(&lt;font color=blue&gt;&lt;span style='color:blue'&gt;Of&lt;/span&gt;&lt;/font&gt; T, A))&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _argument = argument&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _wrapperDelegate = wrapperDelegate&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;End&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Sub&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 color=blue face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:blue'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Private&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Function&lt;/span&gt;&lt;/font&gt; InnerPredicate(&lt;font color=blue&gt;&lt;span style='color:blue'&gt;ByVal&lt;/span&gt;&lt;/font&gt; item &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; T) &lt;font color=blue&gt;&lt;span style='color: blue'&gt;As&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Boolean&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Return&lt;/span&gt;&lt;/font&gt; _wrapperDelegate(item, _argument)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;End&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Function&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 color=blue face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:blue'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Public&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Shared&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Widening&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Operator&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;CType&lt;/span&gt;&lt;/font&gt;( _&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;ByVal&lt;/span&gt;&lt;/font&gt; wrapper &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; PredicateWrapper(&lt;font color=blue&gt;&lt;span style='color:blue'&gt;Of&lt;/span&gt;&lt;/font&gt; T, A)) _&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; Predicate(&lt;font color=blue&gt;&lt;span style='color:blue'&gt;Of&lt;/span&gt;&lt;/font&gt; T)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Return&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;New&lt;/span&gt;&lt;/font&gt; Predicate(&lt;font color=blue&gt;&lt;span style='color:blue'&gt;Of&lt;/span&gt;&lt;/font&gt; T)(&lt;font color=blue&gt;&lt;span style='color:blue'&gt;AddressOf&lt;/span&gt;&lt;/font&gt; wrapper.InnerPredicate)&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;End&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Operator&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 color=blue face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:blue'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 color=blue face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:blue'&gt;End&lt;/span&gt;&lt;/font&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Class&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;Wherever you want to use Array(Of T).FindAll you call it like this and pass a &amp;#8220;finder method&amp;#8221; that you define nearby:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Public&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Shared&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Function&lt;/span&gt;&lt;/font&gt; GetAgencies(&lt;font color=blue&gt;&lt;span style='color:blue'&gt;ByVal&lt;/span&gt;&lt;/font&gt; secretariatCode &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;String&lt;/span&gt;&lt;/font&gt;) &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; Agency()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Dim&lt;/span&gt;&lt;/font&gt; agList &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; Agency() = WSHelper.GetAgencies()&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Dim&lt;/span&gt;&lt;/font&gt; agSearchObj &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;New&lt;/span&gt;&lt;/font&gt; Agency&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; agSearchObj.SecretariatCode = secretariatCode&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Return&lt;/span&gt;&lt;/font&gt; Array.FindAll&lt;b&gt;&lt;span style='font-weight:bold'&gt;(&lt;font color=blue&gt;&lt;span style='color:blue'&gt;Of&lt;/span&gt;&lt;/font&gt; Agency)&lt;/span&gt;&lt;/b&gt;(agList, &lt;font color=blue&gt;&lt;span style='color:blue'&gt;New&lt;/span&gt;&lt;/font&gt; PredicateWrapper(&lt;font color=blue&gt;&lt;span style='color:blue'&gt;Of&lt;/span&gt;&lt;/font&gt; Agency, _&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;Agency)(agSearchObj, &lt;font color=blue&gt;&lt;span style='color:blue'&gt;AddressOf&lt;/span&gt;&lt;/font&gt; AgencyMatch))&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;End&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Function&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 color=blue face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"; color:blue'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Private&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Shared&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Function&lt;/span&gt;&lt;/font&gt; AgencyMatch(item &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; Agency, argument &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; Agency) &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Boolean&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Return&lt;/span&gt;&lt;/font&gt; item.SecretariatCode = argument.SecretariatCode&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;End&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Function&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;Note: specifying the array type (e.g.&lt;/span&gt;&lt;/font&gt;&lt;b&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New";font-weight:bold'&gt; &lt;/span&gt;&lt;/font&gt;&lt;/b&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;Array.FindAll&lt;b&gt;&lt;span style='font-weight:bold'&gt; (&lt;font color=blue&gt;&lt;span style='color:blue'&gt;Of&lt;/span&gt;&lt;/font&gt; Agency) &lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/font&gt;&lt;font size=2&gt;&lt;span style='font-size:10.0pt'&gt;&amp;nbsp;) is &lt;u&gt;critical&lt;/u&gt;, otherwise you get an error that says: &lt;i&gt;&lt;span style='font-style:italic'&gt;Type argument inference failed for type parameter 'T' of 'Public Shared Function FindAll(Of T)(array() As T, match As System.Predicate(Of T)) As T()'. Type argument inferred from the argument passed to parameter 'match' conflicts with the type argument inferred from the argument passed to parameter 'array'.&lt;/span&gt;&lt;/i&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face=Arial&gt;&lt;span style='font-size:10.0pt'&gt;I found it a little easier to use List(Of T).FindAll since it does not require that you pass the array (or specify the type).&amp;nbsp; An example of calling FindAll:&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt; font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; WSHelper.GetAgencyList.FindAll(&lt;font color=blue&gt;&lt;span style='color:blue'&gt;New&lt;/span&gt;&lt;/font&gt; PredicateWrapper(&lt;font color=blue&gt;&lt;span style='color:blue'&gt;Of&lt;/span&gt;&lt;/font&gt; AjaxAgency, _&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;AjaxAgency)(ajaxAgencyToFind, &lt;font color=blue&gt;&lt;span style='color:blue'&gt;AddressOf&lt;/span&gt;&lt;/font&gt; AgencyMatch2))&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Private&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Function&lt;/span&gt;&lt;/font&gt; AgencyMatch2(&lt;font color=blue&gt;&lt;span style='color:blue'&gt;ByVal&lt;/span&gt;&lt;/font&gt; item &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; AjaxAgency, &lt;font color=blue&gt;&lt;span style='color:blue'&gt;ByVal&lt;/span&gt;&lt;/font&gt; argument &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; AjaxAgency) &lt;font color=blue&gt;&lt;span style='color:blue'&gt;As&lt;/span&gt;&lt;/font&gt; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Boolean&lt;o:p&gt;&lt;/o:p&gt;&lt;/span&gt;&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p class=MsoNormal style='margin-top:0in;text-autospace:none'&gt;&lt;font size=2 face="Courier New"&gt;&lt;span style='font-size:10.0pt;font-family:"Courier New"'&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;font color=blue&gt;&lt;span style='color:blue'&gt;Return&lt;/span&gt;&lt;/font&gt; item.s
