<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Pashman's InfoPath Goldmine</title><link>http://blogs.msdn.com/timpash/default.aspx</link><description>This is where Tim Pash posts all of the juicy nuggets of stuff on how to get the job done using InfoPath.   </description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Another super-helpful place to get help on InfoPath</title><link>http://blogs.msdn.com/timpash/archive/2007/08/03/another-super-helpful-place-to-get-help-on-infopath.aspx</link><pubDate>Fri, 03 Aug 2007 19:25:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4208831</guid><dc:creator>timpash</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/timpash/comments/4208831.aspx</comments><wfw:commentRss>http://blogs.msdn.com/timpash/commentrss.aspx?PostID=4208831</wfw:commentRss><description>&lt;P&gt;Check out this location.&amp;nbsp;&amp;nbsp; Seems to be pretty active &lt;A href="http://www.microsoft.com/office/community/en-us/default.mspx?lang=en&amp;amp;cr=US&amp;amp;dg=microsoft.public.infopath"&gt;http://www.microsoft.com/office/community/en-us/default.mspx?lang=en&amp;amp;cr=US&amp;amp;dg=microsoft.public.infopath&lt;/A&gt;.&amp;nbsp;&amp;nbsp;&amp;nbsp; Some people who I'm in contact with are very diligent about responding to questions posted here, and it looks like a great resource to get your sticky InfoPath questions answered.&lt;/P&gt;
&lt;P&gt;Thanks,&lt;/P&gt;
&lt;P&gt;Tim&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=4208831" width="1" height="1"&gt;</description></item><item><title>Tips and Tricks for Tuning Forms Services Performance</title><link>http://blogs.msdn.com/timpash/archive/2007/08/02/tips-and-tricks-for-tuning-forms-services-performance.aspx</link><pubDate>Thu, 02 Aug 2007 21:50:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:4192511</guid><dc:creator>timpash</dc:creator><slash:comments>9</slash:comments><comments>http://blogs.msdn.com/timpash/comments/4192511.aspx</comments><wfw:commentRss>http://blogs.msdn.com/timpash/commentrss.aspx?PostID=4192511</wfw:commentRss><description>&lt;P&gt;Folks,&lt;/P&gt;
&lt;P&gt;I'm hearing a lot of issues about people having trouble getting InfoPath 2007 forms published to Forms Services on MOSS 2007 to run well.&amp;nbsp;&amp;nbsp; People complain that the rendering and roundtripping operations just take too darn long.&amp;nbsp;&amp;nbsp; There is some guidance available on how to build performant forms for the Rich Client (&lt;A href="http://msdn2.microsoft.com/en-us/library/bb380251.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/bb380251.aspx"&gt;http://msdn2.microsoft.com/en-us/library/bb380251.aspx&lt;/A&gt;), and some of the concepts there would most certainly apply to forms published via Forms Services.&amp;nbsp;&amp;nbsp; However, here are few more tips and tricks garnered from the experts that should help you improve the performance of Forms Services in your environment.&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Upgrade to IE7 on the desktop.&amp;nbsp;&amp;nbsp; There are performance benefits to moving up to IE7.&amp;nbsp; In some cases the difference is 5x to 10x.&lt;/LI&gt;
&lt;LI&gt;Make sure the IE cache is big enough so our necessary 250K of content and scripts - needed for the browser to render Forms Services forms - doesn't get pushed out the cache after an initial download.&amp;nbsp;&amp;nbsp; Customers with extraordinarily low thresholds (like ~1MB) will have issues.&amp;nbsp;&amp;nbsp; Disk is cheap, increase that value to something reasonable like 10% of disk.&lt;/LI&gt;
&lt;LI&gt;A good perf trick is to populate dropdowns via an XML file&amp;nbsp;(especially if they are somewhat static) that is made a part of the form XSN.&amp;nbsp;&amp;nbsp; We can cache that on the server and get good load performance optimization.&amp;nbsp; You can always republish the solution when the data changes.&lt;/LI&gt;
&lt;LI&gt;If you have to download data via a data connection for a dropdown list or calculation, try to&amp;nbsp;dynamically build a filtered&amp;nbsp;query (via code)&amp;nbsp;so that you are as efficient as possible with what you are retrieving.&lt;/LI&gt;
&lt;LI&gt;Try to minimize On_Load activities like queries unless absolutely necessary.&lt;/LI&gt;
&lt;LI&gt;Conditional visibility logic has some known performance problems.&amp;nbsp; A&amp;nbsp;hotfix is available http://support.microsoft.com/kb/937206, which is manifested in a&amp;nbsp;modifed 250K initial download when accessing Forms Services the first time.&amp;nbsp; The performance&amp;nbsp;issue is related to the IE Script Engine and occurs at the browser level, not server-side.&lt;/LI&gt;
&lt;LI&gt;Instead of using conditional visibility logic, try implementing multiple views on a form.&amp;nbsp;&amp;nbsp; Splitting complex views into more than 1 view provides noticeable performance improvements.&lt;/LI&gt;
&lt;LI&gt;Rich Text controls are noticeably slower in IE vs. Firefox, because Rich Text editing in Forms Services is an IE-only feature.&amp;nbsp; Limiting the number of Rich Text controls shown in the same view can really help form performance.&lt;/LI&gt;
&lt;LI&gt;Try to prevent unnecessary roundtripping between the form browser&amp;nbsp;and the server.&amp;nbsp; There are several round trip switches available on controls.&amp;nbsp;&amp;nbsp; See the Browser Forms Tab on a given control to expose finer-grained&amp;nbsp;options over the behavior.&amp;nbsp;&amp;nbsp;Note what the warning messages you receive say about the form's potential round trip behavior when admin deploying the form.&amp;nbsp; It will tell you when multiple server roundtrips will be likely to occur when using your form.&lt;/LI&gt;
&lt;LI&gt;If you have to do roundtrips to the server, try to have them triggered by buttons, so that the users know they initiated the wait themselves.&amp;nbsp; This UI trick can tend to reduce user dissatisfaction with the form performance.&lt;/LI&gt;
&lt;LI&gt;Try not to treat an InfoPath form as a full, rich VB application.&amp;nbsp;&amp;nbsp; It's not designed to be performant in that use case.&lt;/LI&gt;
&lt;LI&gt;The more declarative logic (heavy use of rules, etc.)&amp;nbsp;and managed code you have in the form, the slower it will be.&amp;nbsp;&amp;nbsp; Try and&amp;nbsp;follow the KISS method if at all possible (Keep it Simple, Stupid).&amp;nbsp;&lt;/LI&gt;
&lt;LI&gt;Consider breaking out the server role of Forms Services to another machine on the MOSS farm.&amp;nbsp; Services&amp;nbsp;such as indexing and query serving, or high file I/O operations can really impact the ability of Forms Services to&amp;nbsp;get a time slice and perform properly.&amp;nbsp;&amp;nbsp; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Hope this was helpful!&lt;/P&gt;
&lt;P&gt;Tim&lt;/P&gt;
&lt;P class=MsoListParagraph style="MARGIN: 0in 0in 0pt 0.5in; TEXT-INDENT: -0.25in; mso-list: l0 level1 lfo1" mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;FONT face=Calibri color=#1f497d size=3&gt;&lt;/FONT&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=4192511" width="1" height="1"&gt;</description></item><item><title>Copying Data from a Secondary Datasource to a Child Table in a Main Datasource</title><link>http://blogs.msdn.com/timpash/archive/2007/02/23/copying-data-from-a-secondary-datasource-to-a-child-table-in-a-main-datasource.aspx</link><pubDate>Fri, 23 Feb 2007 18:41:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1747924</guid><dc:creator>timpash</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/timpash/comments/1747924.aspx</comments><wfw:commentRss>http://blogs.msdn.com/timpash/commentrss.aspx?PostID=1747924</wfw:commentRss><description>&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;This code sample documents a block of VB.Net code I had to write recently for retrieving a block of data from a secondary datasource, and then copying that data into a child table of a&amp;nbsp;dataset in the main datasource.&amp;nbsp;&amp;nbsp;&amp;nbsp; I've copied it over as is for my benefit as much as yours - I lost this code recently in a machine rebuild so want to have a copy somewhere!&amp;nbsp;&amp;nbsp; I believe the syntax shown here will be helpful to many of you.&amp;nbsp;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff size=2&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff size=2&gt;Public&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Sub&lt;/FONT&gt;&lt;FONT size=2&gt; GetEscalations_Clicked(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;ByVal&lt;/FONT&gt;&lt;FONT size=2&gt; sender &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Object&lt;/FONT&gt;&lt;FONT size=2&gt;, &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;ByVal&lt;/FONT&gt;&lt;FONT size=2&gt; e &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; ClickedEventArgs)&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;' Write your code here.&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;' Define constants&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Const&lt;/FONT&gt;&lt;FONT size=2&gt; secondaryDataSourceName &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;String&lt;/FONT&gt;&lt;FONT size=2&gt; = &lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"GetUserEscalations"&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Const&lt;/FONT&gt;&lt;FONT size=2&gt; secondaryListXPath &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;String&lt;/FONT&gt;&lt;FONT size=2&gt; = &lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"/dfs:myFields/dfs:dataFields/ns3:GetUserEscalationsResponse/ns3:GetUserEscalationsResult/NewDataSet/Table"&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Const&lt;/FONT&gt;&lt;FONT size=2&gt; secondaryRelativeEscalationIDXPath &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;String&lt;/FONT&gt;&lt;FONT size=2&gt; = &lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"EscalationID"&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Const&lt;/FONT&gt;&lt;FONT size=2&gt; secondaryRelativeDataXPath &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;String&lt;/FONT&gt;&lt;FONT size=2&gt; = &lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"CompanyName"&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Const&lt;/FONT&gt;&lt;FONT size=2&gt; mainObservationEvidenceName &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;String&lt;/FONT&gt;&lt;FONT size=2&gt; = &lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"KeyObservationEvidence"&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;'Define strings for mapping values to main datasource evidence table.&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Const&lt;/FONT&gt;&lt;FONT size=2&gt; mainEvidenceKOID &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;String&lt;/FONT&gt;&lt;FONT size=2&gt; = &lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"KOID"&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Const&lt;/FONT&gt;&lt;FONT size=2&gt; mainEvidenceKOEvidenceID &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;String&lt;/FONT&gt;&lt;FONT size=2&gt; = &lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"KOEvidenceID"&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Const&lt;/FONT&gt;&lt;FONT size=2&gt; mainEvidenceKEID &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;String&lt;/FONT&gt;&lt;FONT size=2&gt; = &lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"KEID"&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Const&lt;/FONT&gt;&lt;FONT size=2&gt; mainEvidenceKEDetail &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;String&lt;/FONT&gt;&lt;FONT size=2&gt; = &lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"KEDetail"&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Const&lt;/FONT&gt;&lt;FONT size=2&gt; mainEvidenceKECreatedBy &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;String&lt;/FONT&gt;&lt;FONT size=2&gt; = &lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"KECreatedBy"&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Const&lt;/FONT&gt;&lt;FONT size=2&gt; mainEvidenceKECreatedDate &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;String&lt;/FONT&gt;&lt;FONT size=2&gt; = &lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"KECreatedDate"&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Const&lt;/FONT&gt;&lt;FONT size=2&gt; mainEvidenceKELastUpdatedBy &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;String&lt;/FONT&gt;&lt;FONT size=2&gt; = &lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"KELastUpdatedBy"&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Const&lt;/FONT&gt;&lt;FONT size=2&gt; mainEvidenceKELastUpdatedDate &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;String&lt;/FONT&gt;&lt;FONT size=2&gt; = &lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"KELastUpdatedDate"&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Const&lt;/FONT&gt;&lt;FONT size=2&gt; mainEvidenceKETypeID &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;String&lt;/FONT&gt;&lt;FONT size=2&gt; = &lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"KETypeID"&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Const&lt;/FONT&gt;&lt;FONT size=2&gt; mainEvidenceKETypeName &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;String&lt;/FONT&gt;&lt;FONT size=2&gt; = &lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"KETypeName"&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Const&lt;/FONT&gt;&lt;FONT size=2&gt; mainEvidenceKEDeleted &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;String&lt;/FONT&gt;&lt;FONT size=2&gt; = &lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"KEDeleted"&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;'Get navigator to the root of the main datasource. There will only ever be one record in the&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;'main datasource.&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Dim&lt;/FONT&gt;&lt;FONT size=2&gt; mainDOMNavigator &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; XPathNavigator = MainDataSource.CreateNavigator()&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;'Explicitly create a pointer to the root element of the KO. This is the pointer that will drive the appending of the child Key Evidences.&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Dim&lt;/FONT&gt;&lt;FONT size=2&gt; mainDOMObservationNavigator &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; XPathNavigator&lt;/P&gt;
&lt;P&gt;mainDOMObservationNavigator = mainDOMNavigator.SelectSingleNode(&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"/dfs:myFields/dfs:dataFields/tns:GetKOsDataSetByQuickSearchResponse/tns:GetKOsDataSetByQuickSearchResult/NewDataSet/KeyObservation"&lt;/FONT&gt;&lt;FONT size=2&gt;, NamespaceManager)&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;'Get navigator to the root of the secondary datasource.&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Dim&lt;/FONT&gt;&lt;FONT size=2&gt; secondaryDataSource &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; DataSource = DataSources.Item(secondaryDataSourceName)&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Dim&lt;/FONT&gt;&lt;FONT size=2&gt; secondaryDOMNavigator &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; XPathNavigator = secondaryDataSource.CreateNavigator()&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;'Setting up some other XPathNavigator Pointers&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Dim&lt;/FONT&gt;&lt;FONT size=2&gt; secondaryEscalationIDNavigator &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; XPathNavigator&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Dim&lt;/FONT&gt;&lt;FONT size=2&gt; secondaryEscalationEvidenceNavigator &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; XPathNavigator&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Dim&lt;/FONT&gt;&lt;FONT size=2&gt; secondaryListItem &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; XPathNavigator&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Dim&lt;/FONT&gt;&lt;FONT size=2&gt; escalationIDMapping &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;String&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Dim&lt;/FONT&gt;&lt;FONT size=2&gt; escalationEvidence &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;String&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;'Get all the list items from the secondary datasource.&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Dim&lt;/FONT&gt;&lt;FONT size=2&gt; secondaryListItems &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; XPathNodeIterator = secondaryDOMNavigator.Select(secondaryListXPath, NamespaceManager)&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Do&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;While&lt;/FONT&gt;&lt;FONT size=2&gt; secondaryListItems.MoveNext()&lt;/P&gt;
&lt;P&gt;secondaryListItem = secondaryListItems.Current&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;'Get observation Id for the list item.&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;secondaryEscalationIDNavigator = secondaryListItem.SelectSingleNode(secondaryRelativeEscalationIDXPath, NamespaceManager)&lt;/P&gt;
&lt;P&gt;escalationIDMapping = secondaryEscalationIDNavigator.Value&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;'Get the evidence to be copied into the main DOM.&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;secondaryEscalationEvidenceNavigator = secondaryListItem.SelectSingleNode(secondaryRelativeDataXPath, NamespaceManager)&lt;/P&gt;
&lt;P&gt;escalationEvidence = secondaryEscalationEvidenceNavigator.Value&lt;/P&gt;
&lt;P mce_keep="true"&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;If&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Nothing&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;IsNot&lt;/FONT&gt;&lt;FONT size=2&gt; mainDOMObservationNavigator &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Then&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;'Append the evidence child&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Using&lt;/FONT&gt;&lt;FONT size=2&gt; evidenceChild &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; XmlWriter = mainDOMObservationNavigator.AppendChild()&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Dim&lt;/FONT&gt;&lt;FONT size=2&gt; prefix &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;String&lt;/FONT&gt;&lt;FONT size=2&gt; = mainDOMObservationNavigator.Prefix&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Dim&lt;/FONT&gt;&lt;FONT size=2&gt; namespaceUri &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;String&lt;/FONT&gt;&lt;FONT size=2&gt; = mainDOMObservationNavigator.NamespaceURI&lt;/P&gt;
&lt;P&gt;evidenceChild.WriteStartElement(prefix, mainObservationEvidenceName, namespaceUri)&lt;/P&gt;
&lt;P&gt;evidenceChild.WriteStartElement(prefix, mainEvidenceKOID, namespaceUri)&lt;/P&gt;
&lt;P&gt;evidenceChild.WriteValue(&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"-1"&lt;/FONT&gt;&lt;FONT size=2&gt;)&lt;/P&gt;
&lt;P&gt;evidenceChild.WriteEndElement()&lt;/P&gt;
&lt;P&gt;evidenceChild.WriteStartElement(prefix, mainEvidenceKOEvidenceID, namespaceUri)&lt;/P&gt;
&lt;P&gt;evidenceChild.WriteValue(&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"-1"&lt;/FONT&gt;&lt;FONT size=2&gt;)&lt;/P&gt;
&lt;P&gt;evidenceChild.WriteEndElement()&lt;/P&gt;
&lt;P&gt;evidenceChild.WriteStartElement(prefix, mainEvidenceKEID, namespaceUri)&lt;/P&gt;
&lt;P&gt;evidenceChild.WriteValue(escalationIDMapping)&lt;/P&gt;
&lt;P&gt;evidenceChild.WriteEndElement()&lt;/P&gt;
&lt;P&gt;evidenceChild.WriteStartElement(prefix, mainEvidenceKEDetail, namespaceUri)&lt;/P&gt;
&lt;P&gt;evidenceChild.WriteValue(escalationEvidence)&lt;/P&gt;
&lt;P&gt;evidenceChild.WriteEndElement()&lt;/P&gt;
&lt;P&gt;evidenceChild.WriteStartElement(prefix, mainEvidenceKECreatedBy, namespaceUri)&lt;/P&gt;
&lt;P&gt;evidenceChild.WriteValue(currentUser())&lt;/P&gt;
&lt;P&gt;evidenceChild.WriteEndElement()&lt;/P&gt;
&lt;P&gt;evidenceChild.WriteStartElement(prefix, mainEvidenceKECreatedDate, namespaceUri)&lt;/P&gt;
&lt;P&gt;evidenceChild.WriteValue(currentDateTime())&lt;/P&gt;
&lt;P&gt;evidenceChild.WriteEndElement()&lt;/P&gt;
&lt;P&gt;evidenceChild.WriteStartElement(prefix, mainEvidenceKELastUpdatedBy, namespaceUri)&lt;/P&gt;
&lt;P&gt;evidenceChild.WriteValue(currentUser())&lt;/P&gt;
&lt;P&gt;evidenceChild.WriteEndElement()&lt;/P&gt;
&lt;P&gt;evidenceChild.WriteStartElement(prefix, mainEvidenceKELastUpdatedDate, namespaceUri)&lt;/P&gt;
&lt;P&gt;evidenceChild.WriteValue(currentDateTime())&lt;/P&gt;
&lt;P&gt;evidenceChild.WriteEndElement()&lt;/P&gt;
&lt;P&gt;evidenceChild.WriteStartElement(prefix, mainEvidenceKETypeID, namespaceUri)&lt;/P&gt;
&lt;P&gt;evidenceChild.WriteValue(&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"1"&lt;/FONT&gt;&lt;FONT size=2&gt;)&lt;/P&gt;
&lt;P&gt;evidenceChild.WriteEndElement()&lt;/P&gt;
&lt;P&gt;evidenceChild.WriteStartElement(prefix, mainEvidenceKETypeName, namespaceUri)&lt;/P&gt;
&lt;P&gt;evidenceChild.WriteValue(&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"Escalation SR#"&lt;/FONT&gt;&lt;FONT size=2&gt;)&lt;/P&gt;
&lt;P&gt;evidenceChild.WriteEndElement()&lt;/P&gt;
&lt;P&gt;evidenceChild.WriteStartElement(prefix, mainEvidenceKEDeleted, namespaceUri)&lt;/P&gt;
&lt;P&gt;evidenceChild.WriteValue(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;False&lt;/FONT&gt;&lt;FONT size=2&gt;)&lt;/P&gt;
&lt;P&gt;evidenceChild.WriteEndElement()&lt;/P&gt;
&lt;P&gt;evidenceChild.WriteEndElement()&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;End&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Using&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;End&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;If&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Loop&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;End&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Sub&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Private&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Function&lt;/FONT&gt;&lt;FONT size=2&gt; currentDateTime() &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;String&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Dim&lt;/FONT&gt;&lt;FONT size=2&gt; mainDomNavigator &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; XPathNavigator = MainDataSource.CreateNavigator()&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Dim&lt;/FONT&gt;&lt;FONT size=2&gt; todayNavigator &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; XPathNavigator = mainDomNavigator.SelectSingleNode(&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"/dfs:myFields/my:TodaysDate"&lt;/FONT&gt;&lt;FONT size=2&gt;, NamespaceManager)&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Return&lt;/FONT&gt;&lt;FONT size=2&gt; todayNavigator.Value&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;End&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Function&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Private&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Function&lt;/FONT&gt;&lt;FONT size=2&gt; currentUser() &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;String&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Dim&lt;/FONT&gt;&lt;FONT size=2&gt; mainDomNavigator &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; XPathNavigator = MainDataSource.CreateNavigator()&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Dim&lt;/FONT&gt;&lt;FONT size=2&gt; userNavigator &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; XPathNavigator = mainDomNavigator.SelectSingleNode(&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"/dfs:myFields/my:CurrentUser"&lt;/FONT&gt;&lt;FONT size=2&gt;, NamespaceManager)&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Return&lt;/FONT&gt;&lt;FONT size=2&gt; userNavigator.Value&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;End&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Function&lt;/P&gt;&lt;/FONT&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1747924" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/timpash/archive/tags/Code+Samples/default.aspx">Code Samples</category></item><item><title>XPathNavigator Control in VB.NET</title><link>http://blogs.msdn.com/timpash/archive/2007/02/15/xpathnavigator-control-in-vb-net.aspx</link><pubDate>Fri, 16 Feb 2007 04:14:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1686381</guid><dc:creator>timpash</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/timpash/comments/1686381.aspx</comments><wfw:commentRss>http://blogs.msdn.com/timpash/commentrss.aspx?PostID=1686381</wfw:commentRss><description>&lt;P&gt;VB.NET and probably the other managed code languages uses a new syntax for specifying nodes and traversing XML in a form.&amp;nbsp;&amp;nbsp; I don't claim to have a firm grasp on this, I only know what works.&amp;nbsp;&amp;nbsp; Let's say you've got a&amp;nbsp;field&amp;nbsp;in your form whose value you set via rules or defaults, like a datetime field.&amp;nbsp;&amp;nbsp; Below is how you would specify a function to get into your main datasource, get to the value, set it to a variable and then do something with it.&amp;nbsp; This may be basic info for some of you, but it's a different syntax to me and is worth noting here.&lt;/P&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Private&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Function&lt;/FONT&gt;&lt;FONT size=2&gt; currentDateTime() &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;String&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Dim&lt;/FONT&gt;&lt;FONT size=2&gt; mainDomNavigator &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; XPathNavigator = MainDataSource.CreateNavigator()&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Dim&lt;/FONT&gt;&lt;FONT size=2&gt; todayNavigator &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; XPathNavigator = mainDomNavigator.SelectSingleNode(&lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"/dfs:myFields/my:TodaysDate"&lt;/FONT&gt;&lt;FONT size=2&gt;, NamespaceManager)&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Return&lt;/FONT&gt;&lt;FONT size=2&gt; todayNavigator.Value&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;End&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Function&lt;/P&gt;&lt;/FONT&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1686381" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/timpash/archive/tags/Code+Samples/default.aspx">Code Samples</category></item><item><title>Custom Task Panes in InfoPath 2007 Using VB.NET</title><link>http://blogs.msdn.com/timpash/archive/2007/02/15/custom-task-panes-in-infopath-2007-using-vb-net.aspx</link><pubDate>Fri, 16 Feb 2007 04:02:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1686363</guid><dc:creator>timpash</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/timpash/comments/1686363.aspx</comments><wfw:commentRss>http://blogs.msdn.com/timpash/commentrss.aspx?PostID=1686363</wfw:commentRss><description>&lt;P&gt;Folks,&lt;/P&gt;
&lt;P&gt;Just starting to get involved in dealing with VB.NET and VSTA in InfoPath 2007.&amp;nbsp;&amp;nbsp; A lot of what I've taken for granted in InfoPath 2003 and JScript no longer applies.&amp;nbsp;&amp;nbsp; Take Custom Task Panes for example.&amp;nbsp;&amp;nbsp; A neat idea, and super-useful.&amp;nbsp;&amp;nbsp; Doesn't work the same way&amp;nbsp;in InfoPath 2007.&amp;nbsp;&amp;nbsp; Well some of it does.&amp;nbsp;&amp;nbsp; For example, the format of the typical html file that you would use as a resource file for the task pane is formatted the same.&amp;nbsp;&amp;nbsp; For those of you that haven't built one before, you'll copy and paste this into "mission-critcal notepad" and edit from there.&amp;nbsp;&amp;nbsp;Here is a sample:&lt;/P&gt;
&lt;P&gt;&amp;lt;html&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;lt;body&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;lt;font face="arial" color="black"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div id="fieldname1" style="display:none"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;p&amp;gt;&amp;lt;font color="blue"&amp;gt;&amp;lt;b&amp;gt;KO Title&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/p&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;br /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Your text will appear here in the task pane.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;br&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;div id="fieldname2" style="display:none"&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;p&amp;gt;&amp;lt;font color="blue"&amp;gt;&amp;lt;b&amp;gt;KO Type&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;/p&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;br /&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;Your different text will appear here in the task pane.&lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/div&amp;gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;lt;/font&amp;gt;&lt;BR&gt;&amp;nbsp;&amp;lt;/body&amp;gt;&lt;BR&gt;&amp;lt;/html&amp;gt;&lt;BR&gt;&lt;/P&gt;
&lt;P&gt;The idea is that you have a div statement that separates what content to show when.&amp;nbsp;&amp;nbsp; In InfoPath 2007, you'll go to the programming choices off the menu and choose Context Changed Event.&amp;nbsp; This will put an event handler in place and stub out the code you need.&amp;nbsp;&amp;nbsp;&amp;nbsp; Here is the code that works for me:&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff size=2&gt;Private&lt;/FONT&gt;&lt;FONT size=2&gt; helpString &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;String&lt;/FONT&gt;&amp;nbsp;&lt;FONT size=2&gt;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Public&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Sub&lt;/FONT&gt;&lt;FONT size=2&gt; FormEvents_ContextChanged(&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;ByVal&lt;/FONT&gt;&lt;FONT size=2&gt; sender &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Object&lt;/FONT&gt;&lt;FONT size=2&gt;, &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;ByVal&lt;/FONT&gt;&lt;FONT size=2&gt; e &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; ContextChangedEventArgs)&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Try&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff size=2&gt;If&lt;/FONT&gt;&lt;FONT size=2&gt; (e.ChangeType = &lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"ContextNode"&lt;/FONT&gt;&lt;FONT size=2&gt;) &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Then&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;' The XML selection or context has changed.&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;'Retrieve task pane object&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Dim&lt;/FONT&gt;&lt;FONT size=2&gt; customTaskPane &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; HtmlTaskPane = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Me&lt;/FONT&gt;&lt;FONT size=2&gt;.CurrentView.Window.TaskPanes.Item(0)&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;'Get the collection of html elements in the task pane.&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Dim&lt;/FONT&gt;&lt;FONT size=2&gt; htmlDocument &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; mshtml.HTMLDocument = customTaskPane.HtmlDocument&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Dim&lt;/FONT&gt;&lt;FONT size=2&gt; htmlDocumentAll &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; IHTMLElementCollection = htmlDocument.all&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;'Clear previous help topic from task pane&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;If&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Not&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;String&lt;/FONT&gt;&lt;FONT size=2&gt;.IsNullOrEmpty(helpString) &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Then&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;'Get the first div that matches the helpString.&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Dim&lt;/FONT&gt;&lt;FONT size=2&gt; htmlOldDivElem &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; mshtml.HTMLDivElement = htmlDocumentAll.item(helpString, 0)&lt;/P&gt;
&lt;P&gt;htmlOldDivElem.style.display = &lt;/FONT&gt;&lt;FONT color=#800000 size=2&gt;"none"&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;End&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;If&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;'Keep record of string to be displayed, so it can later be cleared&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;helpString = e.Context.Name&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;'Get the first div that matches the helpString.&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Dim&lt;/FONT&gt;&lt;FONT size=2&gt; htmlDivElem &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; mshtml.HTMLDivElement = htmlDocumentAll.item(helpString, 0)&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;If&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Nothing&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Is&lt;/FONT&gt;&lt;FONT size=2&gt; htmlDivElem &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Then&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;'No known context node.&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;helpString = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Nothing&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Else&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;'Display DIV statement having same ID as the context node name&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;htmlDivElem.style.display = &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;String&lt;/FONT&gt;&lt;FONT size=2&gt;.Empty&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Return&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;End&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;If&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;End&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;If&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Catch&lt;/FONT&gt;&lt;FONT size=2&gt; exn &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;As&lt;/FONT&gt;&lt;FONT size=2&gt; Exception&lt;/P&gt;
&lt;P&gt;MessageBox.Show(exn.ToString())&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;End&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Try&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;End&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;Sub&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;I assume that you know how to tell the form to use a Custom Task Pane and to upload the html file you built previously as a resource file and associate it with the Custom Task Pane.&amp;nbsp; The only thing that sucks about this is that the form requires full trust with a level 2 code signing cert.&amp;nbsp;&amp;nbsp; I've self-signed my form for now, but am hoping to get a resolution to that. At least InfoPath 2007 doesn't completely shut you down when it sees an untrusted cert like InfoPath 2003 did.&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1686363" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/timpash/archive/tags/Code+Samples/default.aspx">Code Samples</category></item><item><title>New Control for Picking People out of the GAL</title><link>http://blogs.msdn.com/timpash/archive/2006/10/05/New-Control-for-Picking-People-out-of-the-GAL.aspx</link><pubDate>Fri, 06 Oct 2006 00:53:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:794735</guid><dc:creator>timpash</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/timpash/comments/794735.aspx</comments><wfw:commentRss>http://blogs.msdn.com/timpash/commentrss.aspx?PostID=794735</wfw:commentRss><description>&lt;DIV class=title&gt;From &lt;A href="http://msdn2.microsoft.com/en-us/library/ms496491.aspx"&gt;http://msdn2.microsoft.com/en-us/library/ms496491.aspx&lt;/A&gt;.&amp;nbsp;&amp;nbsp; This basically&amp;nbsp;provides a control for GAL selection that supercedes my custom code that appears&amp;nbsp;earlier in this blog.&amp;nbsp;&amp;nbsp; From&amp;nbsp;what I'm reading, this&amp;nbsp;is strictly a Forms Services thing from MOSS 2007.&amp;nbsp; Haven't had a&amp;nbsp;chance to play with it but looks to be a godsend.&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class=title&gt;&amp;nbsp;&lt;/DIV&gt;
&lt;DIV class=title&gt;The Contact Selector Control&amp;nbsp; &lt;/DIV&gt;&lt;!--Content type: DocStudio. Transform: devdiv2mtps.xslt.--&gt;
&lt;DIV id=mainSection&gt;
&lt;DIV id=mainBody&gt;&lt;SPAN style="COLOR: red"&gt;[This topic is pre-release documentation and is subject to change in future releases. Blank topics are included as placeholders.] &lt;/SPAN&gt;
&lt;P&gt;Microsoft Office SharePoint Server 2007 includes the Contact Selector control, an ActiveX control that can be used on your Microsoft Office InfoPath 2007 workflow forms. The Contact Selector control enables users to specify contacts, either users or groups, and have that contact information validated. The Contact Selector control is also included in Office Professional 2007.&lt;/P&gt;
&lt;P&gt;When a user enters a contact, the Contact Selector control attempts to validate the contact against the server. The set of users that the Contact Selector control can resolve is the same as the set that the server can resolve. This includes:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;
&lt;P&gt;Local Microsoft Windows SharePoint Services 3.0 users&lt;/P&gt;
&lt;LI&gt;
&lt;P&gt;Microsoft Windows SharePoint Services 3.0 groups and users&lt;/P&gt;
&lt;LI&gt;
&lt;P&gt;Groups in the Microsoft Windows SharePoint Services 3.0 directory, which can include Active Directory or other LDAP servers&lt;/P&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;You can use the Contact Selector control on your Microsoft Office InfoPath 2007 workflow forms to enable users to specify contacts for workflow processes, such as assigning tasks or sending e-mail notifications.&lt;/P&gt;
&lt;H1 class=heading&gt;Using the Contact Selector Control&lt;/H1&gt;
&lt;DIV class=seeAlsoNoToggleSection id=sectionSection0&gt;
&lt;P&gt;Including a Contact Selector control in your workflow form requires several basic steps:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;
&lt;P&gt;Add the Contact Selector control to the Designer Control pane in Microsoft Office InfoPath 2007, so it is available for use on your workflow forms.&lt;/P&gt;
&lt;P&gt;For more information, see &lt;A onclick="javascript:TrackThisClick('ctl00_LibFrame_ctl01','ctl00_LibFrame_ctl02',this);" href="http://msdn2.microsoft.com/en-us/library/ms577996.aspx"&gt;How To: Add the Contact Selector to InfoPath 2007&lt;/A&gt;.&lt;/P&gt;
&lt;LI&gt;
&lt;P&gt;Insert the Contact Selector control onto your workflow form, and configure the control schema. You must also add the workflow context schema to the form as a secondary data source.&lt;/P&gt;
&lt;P&gt;For more information, see &lt;A onclick="javascript:TrackThisClick('ctl00_LibFrame_ctl01','ctl00_LibFrame_ctl03',this);" href="http://msdn2.microsoft.com/en-us/library/ms558892.aspx"&gt;How To: Configure a Contact Selector Control on Your InfoPath Workflow Form&lt;/A&gt;.&lt;/P&gt;
&lt;LI&gt;
&lt;P&gt;Add code to your workflow that accesses the form data sent to the workflow instance by Microsoft Windows SharePoint Services 3.0.&lt;/P&gt;
&lt;P&gt;For more information on accessing contact data from workflow initiation or modification forms, see &lt;A onclick="javascript:TrackThisClick('ctl00_LibFrame_ctl01','ctl00_LibFrame_ctl04',this);" href="http://msdn2.microsoft.com/en-us/library/ms517395.aspx"&gt;How to: Access Contact Data in Workflow Initiation and Modification Forms&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;For more information on accessing contact data from workflow task forms, see &lt;A onclick="javascript:TrackThisClick('ctl00_LibFrame_ctl01','ctl00_LibFrame_ctl05',this);" href="http://msdn2.microsoft.com/en-us/library/ms544554.aspx"&gt;How to: Access Contact Data in Workflow Edit Task Forms&lt;/A&gt;.&lt;/P&gt;&lt;/LI&gt;&lt;/OL&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=794735" width="1" height="1"&gt;</description></item><item><title>Retrieving URL Path With No Code</title><link>http://blogs.msdn.com/timpash/archive/2006/09/19/763061.aspx</link><pubDate>Wed, 20 Sep 2006 06:44:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:763061</guid><dc:creator>timpash</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/timpash/comments/763061.aspx</comments><wfw:commentRss>http://blogs.msdn.com/timpash/commentrss.aspx?PostID=763061</wfw:commentRss><description>&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT face=Calibri&gt;Recent request from a customer:&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT face=Calibri&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;FONT size=3&gt;What we need to be able to do is to somehow programmatically access, in infopath, the sharepoint form library folder name from which the form was opened.&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Arial','sans-serif'"&gt;&lt;FONT face=Verdana color=#000080&gt;Cool way to get this done (from Scott Heim's inexhaustible code sample archive):&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;FONT face=Calibri&gt;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT face=Calibri&gt;substring-before(substring-after(/processing-instruction(), 'href="'), '"')&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;o:p&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;FONT face=Calibri&gt;Used as the default value in a text box returns this:&lt;o:p&gt;&lt;/o:p&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="COLOR: #1f497d"&gt;&lt;o:p&gt;&lt;FONT face=Calibri&gt;&amp;nbsp;&lt;/FONT&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN class=xdtextboxctrl3ms-xedit-plaintext&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&lt;A href="http://servername/URITest/Forms/template.xsn"&gt;&lt;FONT color=#0000ff&gt;http://servername/URITest/Forms/template.xsn&lt;/FONT&gt;&lt;/A&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN class=xdtextboxctrl3ms-xedit-plaintext&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Verdana','sans-serif'"&gt;&lt;o:p&gt;&amp;nbsp;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN class=xdtextboxctrl3ms-xedit-plaintext&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: black; FONT-FAMILY: 'Verdana','sans-serif'"&gt;In this case, as you can see from the returned URL, the form was opened from my document library “URITest”&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=763061" width="1" height="1"&gt;</description></item><item><title>InfoPath 2007 No Code UserName Retrieval</title><link>http://blogs.msdn.com/timpash/archive/2006/08/22/712663.aspx</link><pubDate>Tue, 22 Aug 2006 17:33:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:712663</guid><dc:creator>timpash</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/timpash/comments/712663.aspx</comments><wfw:commentRss>http://blogs.msdn.com/timpash/commentrss.aspx?PostID=712663</wfw:commentRss><description>&lt;P&gt;Just posted on using C# and the new object model in InfoPath 2007 to retrieve the current user.&amp;nbsp;&amp;nbsp; I have 3 other posts that deal with this issue as well.&amp;nbsp; Believe it or not, the product team has actually addressed this in with a no code solution in InfoPath 2007.&amp;nbsp; Follow these steps to see for yourself.&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Create a new form by Designing a New Form Template 
&lt;LI&gt;Choose blank form 
&lt;LI&gt;Add a text box to the form (Field1) 
&lt;LI&gt;Go to Tools | Form Options 
&lt;LI&gt;Go to the Open Behavior section and click on Rules 
&lt;LI&gt;Add Action to Set a Field's Value 
&lt;LI&gt;Choose the field you added above as the field to populate 
&lt;LI&gt;For the value, click on the Fx button and choose Insert Function
&lt;LI&gt;View All in the Categories drop down
&lt;LI&gt;At the bottom you'll see userName, pick it
&lt;LI&gt;The formula that gets dropped in is userName()
&lt;LI&gt;Preview the form, you'll see your UserName in field1&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;That, my friends, is progress!&lt;/P&gt;
&lt;P&gt;Tim&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=712663" width="1" height="1"&gt;</description></item><item><title>Getting Current User in InfoPath 2007 via C#</title><link>http://blogs.msdn.com/timpash/archive/2006/08/22/InfoPath-2007-CSharp-Code-For-Retrieval-of-Username.aspx</link><pubDate>Tue, 22 Aug 2006 17:21:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:712648</guid><dc:creator>timpash</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/timpash/comments/712648.aspx</comments><wfw:commentRss>http://blogs.msdn.com/timpash/commentrss.aspx?PostID=712648</wfw:commentRss><description>&lt;P&gt;Folks,&lt;/P&gt;
&lt;P&gt;Got a little code sample from a fellow watcher of Pashman's Goldmine (thanks Huseyin) on how to retreive the username of the current user via C# code.&amp;nbsp; Since all code samples are useful, I've posted it below:&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue"&gt;public&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt; &lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt; FormEvents_Loading(&lt;SPAN style="COLOR: blue"&gt;object&lt;/SPAN&gt; sender, &lt;SPAN style="COLOR: teal"&gt;LoadingEventArgs&lt;/SPAN&gt; e) &lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;{&lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue"&gt;string&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt; xpath = &lt;SPAN style="COLOR: maroon"&gt;"/my:oneriForm/my:nameTxt"&lt;/SPAN&gt;; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue"&gt;string&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt; userName1; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: teal"&gt;XPathNavigator&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt; field1 = MainDataSource.CreateNavigator().SelectSingleNode(xpath, NamespaceManager); &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green"&gt;//string oldValue = field1.Value; // Read&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue"&gt;string&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt; strUserName = System.&lt;SPAN style="COLOR: teal"&gt;Environment&lt;/SPAN&gt;.UserName; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 0pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green"&gt;//userName1 = System.Environment.&lt;/SPAN&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt; &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="FONT-SIZE: 10pt"&gt;field1.SetValue(strUserName); &lt;o:p&gt;&lt;/o:p&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P class=MsoNormal style="MARGIN: 0in 0in 12pt"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green"&gt;// Write&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;In this case the user wanted the full user name too, and I advised him to try and replace the System.Environment.UserName with System.Environment.FriendlyName.&amp;nbsp;&amp;nbsp; I'll let you know if that worked.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=712648" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/timpash/archive/tags/Code+Samples/default.aspx">Code Samples</category></item><item><title>Programmatically Launching Another Form from Within a Form</title><link>http://blogs.msdn.com/timpash/archive/2006/07/27/680717.aspx</link><pubDate>Fri, 28 Jul 2006 00:46:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:680717</guid><dc:creator>timpash</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/timpash/comments/680717.aspx</comments><wfw:commentRss>http://blogs.msdn.com/timpash/commentrss.aspx?PostID=680717</wfw:commentRss><description>&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Consolas&gt;Application.XDocuments.NewFromSolution(urlToXsnFile) or Application.XDocuments.Open(urlToXmlFile)&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Consolas&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Consolas&gt;Your form will need to require full trust in order to use either of these OM methods.&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Consolas&gt;&lt;/FONT&gt;&amp;nbsp;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Consolas&gt;Keep it simple, right?&lt;/FONT&gt;&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Consolas&gt;Tim&lt;/FONT&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=680717" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/timpash/archive/tags/Code+Samples/default.aspx">Code Samples</category></item><item><title>Return Solution Version in an Expression Box</title><link>http://blogs.msdn.com/timpash/archive/2006/06/16/return-solution-version-in-an-expression-box.aspx</link><pubDate>Fri, 16 Jun 2006 19:23:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:634244</guid><dc:creator>timpash</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/timpash/comments/634244.aspx</comments><wfw:commentRss>http://blogs.msdn.com/timpash/commentrss.aspx?PostID=634244</wfw:commentRss><description>&lt;P&gt;Folks,&lt;/P&gt;
&lt;P&gt;Don't claim to understand this 100%, but I do know it works.&amp;nbsp;&amp;nbsp; Put this formula inside a formula dialog box for an expression box on your form, and when you invoke it it'll show you the current solution version - without having to write code!&lt;/P&gt;
&lt;P class=MsoPlainText style="MARGIN: 0in 0in 0pt"&gt;&lt;FONT face=Consolas size=3&gt;substring-before(substring-after(/processing-instruction(), 'solutionVersion="'), '"')&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Thanks,&lt;/P&gt;
&lt;P&gt;Tim&lt;/P&gt;
&lt;P&gt;&amp;nbsp;Edited on 10/7 per input from Karsten, thanks!&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=634244" width="1" height="1"&gt;</description></item><item><title>Manipulating Secondary Datasources using C#</title><link>http://blogs.msdn.com/timpash/archive/2006/06/12/CSharp-And-Secondary-Datasources.aspx</link><pubDate>Mon, 12 Jun 2006 15:43:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:628095</guid><dc:creator>timpash</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/timpash/comments/628095.aspx</comments><wfw:commentRss>http://blogs.msdn.com/timpash/commentrss.aspx?PostID=628095</wfw:commentRss><description>&lt;FONT size=2&gt;
&lt;P&gt;Hey folks,&lt;/P&gt;
&lt;P&gt;Like many of you, I'm being dragged into the land of managed code in order to achieve things that I've had oodles of JScript code samples to do for a long time.&amp;nbsp;&amp;nbsp; The InfoPath Toolkit for VS.NET allows you to write code in either VB or C#; since C# looked more like JScript, and I had both JScript and C# code samples for the easy part of what I wanted to do, I decided to go with C#.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;So the task at hand that I needed to do was to pick up the username attribute from the local environment and populate that into a field on the form, and then use that field as a lookup value into a secondary datasource and populate a "friendly" username and office location number and friendly name for the office location as well.&amp;nbsp;&amp;nbsp; Oh by the way I needed to do it all in the OnLoad event of the form.&amp;nbsp; This sounds easy - and in fact the username part was super-easy.&amp;nbsp;&amp;nbsp; Getting the right syntax though to address the secondary datasource and pluck values out was a major pain in the butt.&amp;nbsp;&amp;nbsp; To make matters worse, my form was tied to a database, so the namespaces are all "dfs" and "d" instead of "my".&amp;nbsp; It gets confusing since all datasources that are SQL-based follow the same basic nomenclature, and you have to figure out how to navigate between them.&amp;nbsp;&amp;nbsp; The only thing that might be hard to follow below is the fact that I don't store the friendly office location name in the destination table that the form is tied to, so in my schema I just created a node outside of the dataFields to hold the friendly office location name for purposes of display.&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;[InfoPathEventHandler(EventType=InfoPathEventType.OnLoad)]&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;public&lt;/FONT&gt;&lt;FONT size=2&gt; &lt;/FONT&gt;&lt;FONT color=#0000ff size=2&gt;void&lt;/FONT&gt;&lt;FONT size=2&gt; OnLoad(DocReturnEvent e)&lt;/P&gt;
&lt;P&gt;{&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;// This code populates the local username. This was the easy part.&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;IXMLDOMNode nodeEmployee=thisXDocument.DOM.selectSingleNode("dfs:myFields/dfs:dataFields/d:DestinationTable/@username");&lt;/P&gt;
&lt;P&gt;nodeEmployee.text=System.Environment.UserName;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;//Call the LookupTable datasource and populate other fields.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#008000 size=2&gt;//This variable declaration looked very foreign to me.&amp;nbsp; Chalk that up to being new to C#&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;DOMDocument50 objPeopleStuff = (DOMDocument50)thisXDocument.GetDOM("LookupTable");&lt;/P&gt;
&lt;P&gt;objPeopleStuff.setProperty("SelectionNamespaces","xmlns:dfs='http://schemas.microsoft.com/office/infopath/2003/dataFormSolution'"+" xmlns:d='http://schemas.microsoft.com/office/infopath/2003/ado/dataFields'");&lt;/P&gt;
&lt;P&gt;ADOAdapterObject myAdapter = (ADOAdapterObject)thisXDocument.DataAdapters["LookupTable"];&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#008000&gt;//This method below seemed to be clunky to me at first, but turns out to be helpful later, as you'll want &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#008000&gt;//to set the query string back to nominal later on.&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff size=2&gt;string&lt;/FONT&gt;&lt;FONT size=2&gt; origCommand = "";&lt;/P&gt;
&lt;P&gt;origCommand=myAdapter.Command; &lt;/P&gt;
&lt;P&gt;myAdapter.Command=origCommand + " WHERE username = '"+ nodeEmployee.text +"'";&lt;/P&gt;
&lt;P&gt;myAdapter.Query();&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;//Sets friendly name value&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;IXMLDOMNode nodeFriendlyName=thisXDocument.DOM.selectSingleNode("dfs:myFields/dfs:dataFields/d:DestinationTable/@friendlyname");&lt;/P&gt;
&lt;P&gt;IXMLDOMNode nodeReturnedName=objPeopleStuff.selectSingleNode("dfs:myFields/dfs:dataFields/d:LookupTable/@FriendlyName");&lt;/P&gt;
&lt;P&gt;nodeFriendlyName.text=nodeReturnedName.text;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;//Sets office code unfriendly value&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;IXMLDOMNode nodeUnFriendlyOfficeName=thisXDocument.DOM.selectSingleNode("dfs:myFields/dfs:dataFields/d:DestinationTable/@officecode");&lt;/P&gt;
&lt;P&gt;IXMLDOMNode nodeReturnedCodedOffice=objPeopleStuff.selectSingleNode("dfs:myFields/dfs:dataFields/d:LookupTable/@OfficeCode");&lt;/P&gt;
&lt;P&gt;nodeUnFriendlyOfficeName.text=nodeReturnedCodedOffice.text;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;//Sets office code friendly value. Small nuance here is that I was lazy&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;//and don't write OfficeName to actual destination table. Follow syntax of other nodes in &lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;//actual solution.&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;IXMLDOMNode nodeFriendlyOfficeName=thisXDocument.DOM.selectSingleNode("dfs:myFields/my:OfficeName");&lt;/P&gt;
&lt;P&gt;IXMLDOMNode nodeReturnedOffice=objPeopleStuff.selectSingleNode("dfs:myFields/dfs:dataFields/d:LookupTable/@OfficeName");&lt;/P&gt;
&lt;P&gt;nodeFriendlyOfficeName.text=nodeReturnedOffice.text;&lt;/P&gt;
&lt;P&gt;&lt;/FONT&gt;&lt;FONT color=#008000 size=2&gt;//resets the lookup dataconnection to remove WHERE clause&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size=2&gt;
&lt;P&gt;myAdapter.Command=origCommand;&lt;/P&gt;
&lt;P&gt;myAdapter.Query();&lt;/P&gt;
&lt;P&gt;}&lt;/P&gt;
&lt;P&gt;Unfortunately, this code does need the form to have full trust and be signed with a Level 2 code signing certificate to run.&amp;nbsp;&amp;nbsp; That's a bummer, but I see no way around it for now.&lt;/P&gt;
&lt;P&gt;Thanks,&lt;/P&gt;
&lt;P&gt;Tim&lt;/P&gt;&lt;/FONT&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=628095" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/timpash/archive/tags/Code+Samples/default.aspx">Code Samples</category></item><item><title>Increasing the TimeOut Value on Database Submit</title><link>http://blogs.msdn.com/timpash/archive/2006/05/31/Increase-Submit-Timeout-Value.aspx</link><pubDate>Wed, 31 May 2006 15:57:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:611603</guid><dc:creator>timpash</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/timpash/comments/611603.aspx</comments><wfw:commentRss>http://blogs.msdn.com/timpash/commentrss.aspx?PostID=611603</wfw:commentRss><description>&lt;P&gt;Folks,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Had an issue recently where a user of one of my solutions had pretty terrible bandwidth to the SQL server where they needed to submit data.&amp;nbsp;&amp;nbsp; The default timeout value on submits is 30 seconds.&amp;nbsp;&amp;nbsp; As it turn out, the default for queries too is 30 seconds.&amp;nbsp;&amp;nbsp; You can reset that value fairly easily in code.&amp;nbsp;&amp;nbsp;&amp;nbsp; Here is an example of code that you put behind the submit button to increase the timeout value, do the submit and throw up a thank you message:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;XDocument.QueryAdapter.Timeout=120; &lt;/P&gt;
&lt;P&gt;XDocument.Submit(); &lt;/P&gt;
&lt;P&gt;XDocument.UI.Alert("Thanks for using the AD Data Collection Form");&lt;/P&gt;
&lt;P&gt;I'm pretty sure that if you tweak the value for the timeout, it applies to every query and the submit behavior in your form.&lt;/P&gt;
&lt;P&gt;Thanks,&lt;/P&gt;
&lt;P&gt;Tim&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=611603" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/timpash/archive/tags/Code+Samples/default.aspx">Code Samples</category></item><item><title>Functionality Lost in InfoPath 2007 "Web-Enabled" Forms</title><link>http://blogs.msdn.com/timpash/archive/2006/05/22/functionality-lost-in-infopath-2007-web-enabled-forms.aspx</link><pubDate>Mon, 22 May 2006 16:17:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:603758</guid><dc:creator>timpash</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/timpash/comments/603758.aspx</comments><wfw:commentRss>http://blogs.msdn.com/timpash/commentrss.aspx?PostID=603758</wfw:commentRss><description>&lt;P&gt;Quick update to this post (6/7/2007).&amp;nbsp;&amp;nbsp; Saw this article &lt;A href="http://msdn2.microsoft.com/en-us/library/aa945450(VS.80).aspx"&gt;http://msdn2.microsoft.com/en-us/library/aa945450(VS.80).aspx&lt;/A&gt;&amp;nbsp;which is pretty comprehensive on this topic.&amp;nbsp;&amp;nbsp; Worth a read.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Folks,&lt;/P&gt;
&lt;P&gt;Getting tired of waiting for a list to be published, so will start to build my own from scratch as I go along.&amp;nbsp;&amp;nbsp; Many of you know that InfoPath 2007 will have the ability to build forms that are "web-enabled".&amp;nbsp; What that means is that Microsoft Office SharePoint Server (MOSS) 2007, if you've bought Enterprise CALs, will allow you to build an InfoPath form that will render either in the rich client application or can be served up as an ASP.NET page.&amp;nbsp;&amp;nbsp; This has been done with cross-platform, zero-footprint considerations in mind.&amp;nbsp;&amp;nbsp; It's a nice and much-asked-for capability.&amp;nbsp; However, there are a bunch of things that won't work when you go to web environment.&amp;nbsp;&amp;nbsp; Here is a small list that I've started to compile.&amp;nbsp; It will grow and I will repost as I discover more things.&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;No native write to SQL databases.&amp;nbsp;&amp;nbsp; The ease of use of establing an ADO connection to SQL or Access, and being able to query and write back to a database is lost.&amp;nbsp;&amp;nbsp; Instead you will probably need to talk to the DB via a web service. 
&lt;LI&gt;No roundtripping for cascading picklists.&amp;nbsp;&amp;nbsp; Something I do all the time is have one picklist be a filter for another picklist.&amp;nbsp; Common example,&amp;nbsp;pick a state, which then filters the city field dropdown.&amp;nbsp;&amp;nbsp; Can't do that in a web form. 
&lt;LI&gt;Summary list of controls that aren't supported in web forms:&lt;/LI&gt;
&lt;UL&gt;
&lt;LI&gt;ComboBox 
&lt;LI&gt;Multiple-Selection List Box 
&lt;LI&gt;Master/Detail 
&lt;LI&gt;Bulleted, Numbered and Plain List 
&lt;LI&gt;Picture 
&lt;LI&gt;Ink Picture 
&lt;LI&gt;Vertical Label 
&lt;LI&gt;Scrolling and Horizontal Region 
&lt;LI&gt;Horizontal Repeating Table 
&lt;LI&gt;Choice Group 
&lt;LI&gt;Repeating Choice Group 
&lt;LI&gt;Choice Section 
&lt;LI&gt;Repeating Recursive Section 
&lt;LI&gt;ActiveX Controls&lt;/LI&gt;&lt;/UL&gt;&lt;/OL&gt;
&lt;P&gt;More to follow.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=603758" width="1" height="1"&gt;</description></item><item><title>Awesome Webcast on Digital Signatures in InfoPath</title><link>http://blogs.msdn.com/timpash/archive/2006/04/14/George.aspx</link><pubDate>Fri, 14 Apr 2006 14:47:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:576351</guid><dc:creator>timpash</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/timpash/comments/576351.aspx</comments><wfw:commentRss>http://blogs.msdn.com/timpash/commentrss.aspx?PostID=576351</wfw:commentRss><description>&lt;P&gt;Folks,&lt;/P&gt;
&lt;P&gt;I had to skill up recently on the use of digital signatures in InfoPath, and this webcast I found is pretty amazing.&amp;nbsp;&amp;nbsp; I had no idea how rich the support in InfoPath for digital signatures was, and this webcast goes into *deep* detail.&amp;nbsp;&amp;nbsp; I found myself dozing off after about 45 minutes, but that was because I had what I needed by then.&amp;nbsp;&amp;nbsp; Still, it's a great resource.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://msevents.microsoft.com/cui/WebCastEventDetails.aspx?EventID=1032259545&amp;amp;EventCategory=5&amp;amp;culture=en-us&amp;amp;CountryCode=US"&gt;http://msevents.microsoft.com/cui/WebCastEventDetails.aspx?EventID=1032259545&amp;amp;EventCategory=5&amp;amp;culture=en-us&amp;amp;CountryCode=US&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;The presenter is Mihaela Cristina Cris and she is a big brain at Microsoft on InfoPath.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=576351" width="1" height="1"&gt;</description></item></channel></rss>