<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>InfoPath</title>
        <link>http://waynester.net/blog/category/22.aspx</link>
        <description>Microsoft InfoPath</description>
        <language>en-US</language>
        <copyright>Wayne Larimore</copyright>
        <generator>Subtext Version 2.1.2.2</generator>
        <creativeCommons:license>wlar1m0re</creativeCommons:license>
        <item>
            <title>SharePoint 2010 Post Conference Takeaways</title>
            <link>http://waynester.net/blog/archive/2009/10/30/SharePoint-2010-Post-Conference-Takeaways.aspx</link>
            <description>&lt;p&gt;&lt;font face="Verdana" size="2"&gt;I have had some time to ponder the ton-of-stuff at the 2009 SharePoint Conference.  Overall, I really like what Microsoft has done with this version.  They seem to have addressed the majority of pain points.  Here are some of the highlights of what comes to mind...&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana" size="2"&gt;&lt;strong&gt;Service Applications &lt;/strong&gt;- Previously, we were forced to use the SSP service for all services (Search, BDC, Profile, Excel).  Now, the Service Application approach is providing a Service Model.  &lt;a title="Andrew Connell" href="http://feeds.feedburner.com/AndrewConnell" target="_blank"&gt;AC&lt;/a&gt; gave a level 400 session on this and built a cleverly simple load-balanced calculator that was indeed an independent service.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana" size="2"&gt;&lt;strong&gt;The Ribbon&lt;/strong&gt; - consistency is always a good thing.  The Ribbon provides a consistent place where the end-user knows where his / her actions can be acted upon.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana" size="2"&gt;&lt;strong&gt;Sandboxing / Visual Studio 2010 templates&lt;/strong&gt; - Developing for SharePoint has always been a confusing effort.  Once the developer became familiar with creating the solution structure and with the repetition of doing it lots of times, it was second nature.  Deployment? eck!  Now, with VS 2010, the necessary structure and files are generated via SharePoint project templates and even builds the wsp file for deployment.  &lt;em&gt;Sandboxing&lt;/em&gt; provides a way to deploy your solution with a subset object model and deployed to a special gallery, a more secure environment and allows admins to upload instead of IT/Ops.  Visual Web Part templates now have a built-in Designer also.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana" size="2"&gt;&lt;strong&gt;Lists - &lt;/strong&gt;&lt;/font&gt;&lt;font face="Verdana" size="2"&gt;Lists and libraries are pretty much the bread and butter to SharePoint.  I use Custom Lists a lot in my day-to-day activities.  New in SP 2010, they have introduced a way to &lt;em&gt;prevent&lt;/em&gt; &lt;strong&gt;Duplicate Values, &lt;/strong&gt;provided &lt;strong&gt;Column Validation &lt;/strong&gt;(via Excel formulas)&lt;strong&gt; &lt;/strong&gt;and &lt;strong&gt;More Robust Metadata&lt;/strong&gt; defining.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana" size="2"&gt;&lt;strong&gt;LINQ Support&lt;/strong&gt; - The need to write / build CAML seems to be nearly eliminated with the introduction of Microsoft.SharePoint.LINQ ; at least that is what we were told.  It will now translate LINQ into CAML for us!&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana" size="2"&gt;&lt;strong&gt;SharePoint Designer / InfoPath / No Code approach&lt;/strong&gt; - I sat in on a session demonstrating a no code approach to an end-to-end business case.  I was pretty impressed by it, but still leary of it in real life business situations.  However, I am real eager to start working with SPD and InfoPath to see if no code solutions are really possible in SharePoint 2010.  They have addressed some short falls that were in InfoPath 2007.  Here are some of the new features I remember: Web Part creation, SP list/library form creation, ability now to do filtering in browser forms, and the rules manager.  Lastly, workflow management has been improved significantly in both SharePoint Designer and InfoPath 2010.&lt;/font&gt;&lt;/p&gt;&lt;img src="http://waynester.net/blog/aggbug/5759.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Wayne Larimore</dc:creator>
            <guid>http://waynester.net/blog/archive/2009/10/30/SharePoint-2010-Post-Conference-Takeaways.aspx</guid>
            <pubDate>Fri, 30 Oct 2009 14:16:28 GMT</pubDate>
            <wfw:comment>http://waynester.net/blog/comments/5759.aspx</wfw:comment>
            <comments>http://waynester.net/blog/archive/2009/10/30/SharePoint-2010-Post-Conference-Takeaways.aspx#feedback</comments>
            <wfw:commentRss>http://waynester.net/blog/comments/commentRss/5759.aspx</wfw:commentRss>
            <trackback:ping>http://waynester.net/blog/services/trackbacks/5759.aspx</trackback:ping>
        </item>
        <item>
            <title>My Own SharePoint Resource Page</title>
            <link>http://waynester.net/blog/archive/2008/08/04/My-Own-SharePoint-Resource-Page.aspx</link>
            <description>&lt;p&gt;&lt;font face="Verdana" size="2"&gt;I have started a &lt;/font&gt;&lt;a target="_self" href="http://waynester.net/blog/archive/2008/08/04/SharePointResources.aspx"&gt;&lt;font face="Verdana" size="2"&gt;SharePoint resource page&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana" size="2"&gt;.  I have been recommending (and still do) some of the great ones out there.  However, I have found that some of my experiences and needs differ in a lot of ways.  As with others, my &lt;/font&gt;&lt;a target="_self" href="http://waynester.net/blog/archive/2008/08/04/SharePointResources.aspx"&gt;&lt;font face="Verdana" size="2"&gt;resource page&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana" size="2"&gt; has started out as something I use to personally reference in my day-to-day work routine.  If it helps others that would be great too.  Here's the beginnings of my &lt;/font&gt;&lt;a target="_self" href="http://waynester.net/blog/archive/2008/08/04/SharePointResources.aspx"&gt;&lt;font face="Verdana" size="2"&gt;MOSS SharePoint InfoPath Workflow .NET Resource Page&lt;/font&gt;&lt;/a&gt;&lt;font face="Verdana" size="2"&gt;.  It will be growing significantly over the coming days.&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana" size="2"&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;a target="_self" href="http://waynester.net/blog/archive/2008/08/04/SharePointResources.aspx"&gt;&lt;font face="Verdana" size="2"&gt;Waynester's SharePoint Resource page&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://waynester.net/blog/aggbug/5735.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Wayne Larimore</dc:creator>
            <guid>http://waynester.net/blog/archive/2008/08/04/My-Own-SharePoint-Resource-Page.aspx</guid>
            <pubDate>Mon, 04 Aug 2008 15:45:26 GMT</pubDate>
            <wfw:comment>http://waynester.net/blog/comments/5735.aspx</wfw:comment>
            <comments>http://waynester.net/blog/archive/2008/08/04/My-Own-SharePoint-Resource-Page.aspx#feedback</comments>
            <wfw:commentRss>http://waynester.net/blog/comments/commentRss/5735.aspx</wfw:commentRss>
            <trackback:ping>http://waynester.net/blog/services/trackbacks/5735.aspx</trackback:ping>
        </item>
        <item>
            <title>InfoPath 2007 features that are unavailable in InfoPath Forms Services</title>
            <link>http://waynester.net/blog/archive/2008/07/09/InfoPath-2007-features-that-are-unavailable-in-InfoPath-Forms-Services.aspx</link>
            <description>&lt;p&gt;[via office.microsoft.com]&lt;/p&gt;
&lt;p&gt;&lt;em&gt;If you have access to a server that is running InfoPath Forms Services, you can design a single form template that can be used by two kinds of users — those who have Microsoft Office InfoPath 2007 installed on their computers and those who do not have Microsoft Office InfoPath 2007 installed on their computers. In the latter case, users fill out forms in a supported Web browser, not in InfoPath. If users have InfoPath installed on their computers, they can open the form in InfoPath and use the full range of form features. Users who fill out the form in a browser have access to a more limited set of features, but these users benefit from being able to use the form even though they do not have InfoPath installed on their computers.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana" size="2"&gt;Read more at &lt;a href="http://office.microsoft.com/en-us/infopath/HA102105871033.aspx"&gt;http://office.microsoft.com/en-us/infopath/HA102105871033.aspx&lt;/a&gt;&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana" size="2"&gt;&lt;/font&gt;&lt;/p&gt;&lt;img src="http://waynester.net/blog/aggbug/5731.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Wayne Larimore</dc:creator>
            <guid>http://waynester.net/blog/archive/2008/07/09/InfoPath-2007-features-that-are-unavailable-in-InfoPath-Forms-Services.aspx</guid>
            <pubDate>Wed, 09 Jul 2008 19:26:02 GMT</pubDate>
            <wfw:comment>http://waynester.net/blog/comments/5731.aspx</wfw:comment>
            <comments>http://waynester.net/blog/archive/2008/07/09/InfoPath-2007-features-that-are-unavailable-in-InfoPath-Forms-Services.aspx#feedback</comments>
            <wfw:commentRss>http://waynester.net/blog/comments/commentRss/5731.aspx</wfw:commentRss>
            <trackback:ping>http://waynester.net/blog/services/trackbacks/5731.aspx</trackback:ping>
        </item>
        <item>
            <title>InfoPath Forms Services Resource Reference</title>
            <link>http://waynester.net/blog/archive/2008/06/07/InfoPath-Forms-Services-Resource-Reference.aspx</link>
            <description>&lt;p&gt;&lt;font face="Verdana" size="2"&gt;Need a good InfoPath Resource Reference?&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Verdana" size="2"&gt;Here's the InfoPath Forms Services Resource Center ...&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/office/cc337903.aspx"&gt;&lt;font face="Verdana" size="2"&gt;http://msdn.microsoft.com/en-us/office/cc337903.aspx&lt;/font&gt;&lt;/a&gt;&lt;/p&gt;&lt;img src="http://waynester.net/blog/aggbug/5727.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Wayne Larimore</dc:creator>
            <guid>http://waynester.net/blog/archive/2008/06/07/InfoPath-Forms-Services-Resource-Reference.aspx</guid>
            <pubDate>Sat, 07 Jun 2008 22:31:01 GMT</pubDate>
            <wfw:comment>http://waynester.net/blog/comments/5727.aspx</wfw:comment>
            <comments>http://waynester.net/blog/archive/2008/06/07/InfoPath-Forms-Services-Resource-Reference.aspx#feedback</comments>
            <wfw:commentRss>http://waynester.net/blog/comments/commentRss/5727.aspx</wfw:commentRss>
            <trackback:ping>http://waynester.net/blog/services/trackbacks/5727.aspx</trackback:ping>
        </item>
        <item>
            <title>Sharepoint Developer Training for Newbies</title>
            <link>http://waynester.net/blog/archive/2008/05/18/Sharepoint-Developer-Training-for-Newbies.aspx</link>
            <description>&lt;p&gt;[via &lt;a title="Andrew Connell" href="http://feeds.feedburner.com/AndrewConnell" target="_blank"&gt;AC&lt;/a&gt;]&lt;/p&gt;
&lt;p&gt;If you can, and it's free, hook into these upcoming SharePoint developer training series:&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;&lt;font face="Arial"&gt;&lt;a href="http://blogs.msdn.com/pandrew/archive/2008/05/12/sharepoint-developer-msdn-web-cast-series.aspx"&gt;SharePoint Developer MSDN Web Cast Series&lt;/a&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;&lt;img src="http://waynester.net/blog/aggbug/5723.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Wayne Larimore</dc:creator>
            <guid>http://waynester.net/blog/archive/2008/05/18/Sharepoint-Developer-Training-for-Newbies.aspx</guid>
            <pubDate>Mon, 19 May 2008 04:07:21 GMT</pubDate>
            <wfw:comment>http://waynester.net/blog/comments/5723.aspx</wfw:comment>
            <comments>http://waynester.net/blog/archive/2008/05/18/Sharepoint-Developer-Training-for-Newbies.aspx#feedback</comments>
            <wfw:commentRss>http://waynester.net/blog/comments/commentRss/5723.aspx</wfw:commentRss>
            <trackback:ping>http://waynester.net/blog/services/trackbacks/5723.aspx</trackback:ping>
        </item>
        <item>
            <title>InfoPath SharePoint Integration: VSTO Code Behind</title>
            <link>http://waynester.net/blog/archive/2008/04/02/InfoPath-SharePoint-Integration-VSTO-Code-Behind.aspx</link>
            <description>&lt;p&gt;&lt;font face="Verdana" size="2"&gt;This is in the code behind of the InfoPath 2003 Visual Studio 2005 Template. When calling the web service (covered in a &lt;a href="http://waynester.net/blog/archive/2008/04/02/InfoPath-SharePoint-Integration-List-Services.aspx"&gt;previous posting&lt;/a&gt;) it looks like the following:&lt;/font&gt;&lt;/p&gt;
&lt;pre&gt;&lt;p&gt;&lt;font face="Arial"&gt;Private Sub RefreshCategories()&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;'Set the Credentials of the web services proxy&lt;br /&gt;            My.WebServices.Service.Url = getCurrentServiceEnvironment()&lt;br /&gt;            My.WebServices.Service.Credentials = getUserCredentials()&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;            Dim myTempwsNode As Xml.XmlNode = My.WebServices.Service.GetCategories()&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;            Try&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;                RemoveAllFromDropDownList(thisXDocument.DOM.selectSingleNode("//my:groupCategory/my:categorycollection"))&lt;br /&gt;                PopulateDropDownList3(myTempwsNode, _&lt;br /&gt;                "//my:groupCategory/my:categorycollection", _&lt;br /&gt;                "//my:categorydescription", _&lt;br /&gt;                "//my:categoryid", _&lt;br /&gt;                "//my:categorystatus", _&lt;br /&gt;                "Category", _&lt;br /&gt;                "CatID", _&lt;br /&gt;                "Active")&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;            Catch ex As Exception&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;                thisXDocument.UI.Alert(CommErrorMessage)&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;            End Try&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;        End Sub&lt;/font&gt;&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt; Private Sub RemoveAllFromDropDownList(ByVal node As IXMLDOMNode)&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;            Try&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;                Dim ParentNode As IXMLDOMNode = node.parentNode&lt;br /&gt;                'exit routine if only one (empty) child exists&lt;br /&gt;                If ParentNode.childNodes.length &amp;lt; 4 Then Exit Sub&lt;br /&gt;                Dim ItemNode As IXMLDOMNode = ParentNode.firstChild&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;                Dim currentItemNode As IXMLDOMNode = ItemNode&lt;br /&gt;                Dim nextItemNode As IXMLDOMNode = ItemNode&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;                Do&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;                    If IsNothing(currentItemNode) Then Exit Do&lt;br /&gt;                    nextItemNode = currentItemNode.nextSibling&lt;br /&gt;                    If Not currentItemNode.xml.Trim.Equals(String.Empty) AndAlso _&lt;br /&gt;                        Not currentItemNode.firstChild.nextSibling.text.Equals(String.Empty) Then&lt;br /&gt;                        ParentNode.removeChild(currentItemNode)&lt;br /&gt;                    End If&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;                    currentItemNode = nextItemNode&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;                Loop&lt;br /&gt;            Catch ex As Exception&lt;br /&gt;                'thisXDocument.UI.Alert("removeall errmsg:" &amp;amp; ex.Message)&lt;br /&gt;            End Try&lt;br /&gt;        End Sub&lt;/font&gt;&lt;/p&gt;&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;Private Sub PopulateDropDownList3(ByVal wsXmlNode As Xml.XmlNode, ByVal XmlDSCollection As String, _&lt;br /&gt; ByVal mainDSName As String, ByVal mainDSValue As String, _&lt;br /&gt; ByVal secondaryDSValue As String, ByVal wsFieldName As String, _&lt;br /&gt; ByVal wsFieldValue As String, ByVal wsFieldValue2 As String)&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;            Dim xmldata As IXMLDOMNode = Me.ConvertNodeToMsXML(wsXmlNode)&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;            For Each xmlitem As IXMLDOMNode In xmldata.childNodes&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;                Dim row As IXMLDOMNode = thisXDocument.DOM.selectSingleNode(XmlDSCollection)&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;                If Not row Is Nothing Then&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;                    row = row.cloneNode(True)&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;                    Try&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;                        row.selectSingleNode(mainDSName).text = xmlitem.selectSingleNode(wsFieldName).text&lt;br /&gt;                        row.selectSingleNode(mainDSValue).text = xmlitem.selectSingleNode(wsFieldValue).text&lt;br /&gt;                        row.selectSingleNode(secondaryDSValue).text = xmlitem.selectSingleNode(wsFieldValue2).text&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;                    Catch ex As Exception&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;                    End Try&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;                    '*** Special Business Rules&lt;br /&gt;                    Dim blnContinueWithAppend As Boolean = CheckBusinessRulesDDL(mainDSName, xmlitem)&lt;br /&gt;                    If blnContinueWithAppend Then&lt;br /&gt;                        Dim parent As IXMLDOMNode = thisXDocument.DOM.selectSingleNode(XmlDSCollection).parentNode&lt;br /&gt;                        parent.appendChild(row)&lt;br /&gt;                    End If&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;                End If&lt;br /&gt;            Next&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;        End Sub&lt;/font&gt;&lt;/p&gt;
&lt;/pre&gt;
&lt;p&gt;&lt;font face="Verdana" size="2"&gt;In order to increase performance, I placed a button on the InfoPath form to allow the user to Refresh the data from SharePoint upon their discretion. This could take anywhere from 5 seconds to 20 seconds, depending on the size of the list.  As you can see, it populates a local datasource within the InfoPath Form.  This results in the InfoPath control(s) to be re-populated.&lt;/font&gt;&lt;/p&gt;&lt;img src="http://waynester.net/blog/aggbug/5712.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Wayne Larimore</dc:creator>
            <guid>http://waynester.net/blog/archive/2008/04/02/InfoPath-SharePoint-Integration-VSTO-Code-Behind.aspx</guid>
            <pubDate>Wed, 02 Apr 2008 21:22:38 GMT</pubDate>
            <wfw:comment>http://waynester.net/blog/comments/5712.aspx</wfw:comment>
            <comments>http://waynester.net/blog/archive/2008/04/02/InfoPath-SharePoint-Integration-VSTO-Code-Behind.aspx#feedback</comments>
            <wfw:commentRss>http://waynester.net/blog/comments/commentRss/5712.aspx</wfw:commentRss>
            <trackback:ping>http://waynester.net/blog/services/trackbacks/5712.aspx</trackback:ping>
        </item>
        <item>
            <title>InfoPath SharePoint Integration: Add List Item</title>
            <link>http://waynester.net/blog/archive/2008/04/02/InfoPath-SharePoint-Integration-Add-List-Item.aspx</link>
            <description>&lt;p&gt;&lt;font face="Verdana" size="2"&gt;Let's say you would like to add an item to a SharePoint List.  This is where CAML (Collaborative Application Markup Language) comes in.  It may seem whacky at first glance, but once you get the hang of it you'll feel comfortable.  Use the following code as a template and apply your personal needs:&lt;/font&gt;&lt;/p&gt;
&lt;pre&gt;&lt;p&gt;&lt;font face="Arial"&gt;&amp;lt;WebMethod()&amp;gt; _&lt;br /&gt;Public Function SubmitSharepointListItem(ByVal ListLocation As String, ByVal SharepointListID As String, _&lt;br /&gt;ByVal id As Integer, ByVal title As String, ByVal owner As String, _&lt;br /&gt;ByVal category As String, ByVal topic As String, _&lt;br /&gt;ByVal projecttype As String, ByVal areaofresponsibility As String, _&lt;br /&gt;    ByVal purpose As String, ByVal takenote As String, ByVal documentstate As String, ByVal reasonforarchival As String, _&lt;br /&gt;    ByVal reasonfordeletion As String, ByVal documenttext As XmlNode) As String&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;        If ListLocation Is Nothing Or ListLocation.Length = 0 Then&lt;br /&gt;            ListLocation = ConfigurationManager.AppSettings("SharepointListLocation")&lt;br /&gt;        End If&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;        If SharepointListID Is Nothing Or SharepointListID.Length = 0 Then&lt;br /&gt;            SharepointListID = ConfigurationManager.AppSettings("SharepointListGUID")&lt;br /&gt;        End If&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;        Dim myDoc As New MyDocument&lt;br /&gt;        myDoc.ID = id&lt;br /&gt;        myDoc.Title = title&lt;br /&gt;        myDoc.Owner = owner&lt;br /&gt;        myDoc.Category = category&lt;br /&gt;        myDoc.Topic = topic&lt;br /&gt;        myDoc.ProjectType = projecttype&lt;br /&gt;        myDoc.AreaOfResponsibility = areaofresponsibility&lt;br /&gt;        myDoc.Purpose = purpose&lt;br /&gt;        myDoc.TakeNote = takenote&lt;br /&gt;        myDoc.DocumentState = documentstate&lt;br /&gt;        myDoc.ReasonForArchival = reasonforarchival&lt;br /&gt;        myDoc.ReasonForDeletion = reasonfordeletion&lt;br /&gt;        myDoc.DocumentText = documenttext&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;        Dim returnString As String&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;        Try&lt;br /&gt;            'determine batch type based on id value&lt;br /&gt;            Dim CamlMethodString As String&lt;br /&gt;            If id &amp;gt; 0 Then&lt;br /&gt;                'Customize the building of the Caml Batch String here&lt;br /&gt;                CamlMethodString = myDoc.BuildSharePointBatch(MyDocument.SPDocType.UpdateDoc)&lt;br /&gt;            Else&lt;br /&gt;                CamlMethodString = myDoc.BuildSharePointBatch(MyDocument.SPDocType.NewDoc)&lt;br /&gt;            End If&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;            Dim xmldoc As New System.Xml.XmlDocument&lt;br /&gt;            Dim elBatch As System.Xml.XmlElement = xmldoc.CreateElement("Batch")&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;            With elBatch&lt;br /&gt;                .SetAttribute("OnError", "Continue")&lt;br /&gt;                '.SetAttribute("ListVersion", ListVersion)&lt;br /&gt;                '.SetAttribute("ViewName", ViewID)&lt;br /&gt;                .InnerXml = CamlMethodString&lt;br /&gt;            End With&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;            Dim url As Uri = New Uri(New Uri(ListLocation), "_vti_bin/Lists.asmx")&lt;br /&gt;            Dim list As New com.fnfis.cssddev.Lists()&lt;br /&gt;            list.Url = url.ToString()&lt;br /&gt;            list.Credentials = getUserCredentials()&lt;br /&gt;            Dim ndReturn As System.Xml.XmlNode = list.UpdateListItems(SharepointListID, elBatch)&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;            If id &amp;gt; 0 Then&lt;br /&gt;                'Existing entry - look for any errors returned from SharePoint&lt;br /&gt;                If ndReturn.InnerXml.IndexOf("&amp;lt;ErrorText&amp;gt;") &amp;gt; 0 AndAlso _&lt;br /&gt;                Not ndReturn.SelectSingleNode("/").FirstChild.InnerText.Equals("0x00000000") Then&lt;br /&gt;                    returnString = String.Concat("&amp;lt;br/&amp;gt;Error:" &amp;amp; ndReturn.InnerXml)&lt;br /&gt;                Else&lt;br /&gt;                    'Return back the existing id&lt;br /&gt;                    Return id.ToString()&lt;br /&gt;                End If&lt;br /&gt;            Else&lt;br /&gt;                'return back the newly established unique identifier from SharePoint&lt;br /&gt;                returnString = ndReturn.FirstChild.LastChild.Attributes("ows_ID").Value&lt;br /&gt;            End If&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;        Catch ex As System.Web.Services.Protocols.SoapException&lt;br /&gt;            Dim xd As XmlDataDocument = New XmlDataDocument&lt;br /&gt;            xd.LoadXml("&amp;lt;?xml version='1.0' ?&amp;gt;" &amp;amp; _&lt;br /&gt;                "&amp;lt;listitems xmlns:s=""uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882""&lt;br /&gt;xmlns:dt=""uuid:C2F41010-65B3-11d1-A29F-00AA00C14882""&lt;br /&gt;xmlns:rs=""urn:schemas-microsoft-com:rowset""&lt;br /&gt;xmlns:z=""#RowsetSchema""&lt;br /&gt;xmlns=""http://schemas.microsoft.com/sharepoint/soap/""&amp;gt; " &amp;amp; _&lt;br /&gt;                "&amp;lt;ErrorMessage&amp;gt;Message:" &amp;amp; ex.Message &amp;amp; " Detail:" &amp;amp; ex.Detail.InnerText &amp;amp; " StackTrace:" &amp;amp; ex.StackTrace &amp;amp; "&amp;lt;/ErrorMessage&amp;gt;" &amp;amp; _&lt;br /&gt;                "&amp;lt;rs:data ItemCount=""0""&amp;gt; &amp;lt;/rs:data&amp;gt;&amp;lt;/listitems&amp;gt;")&lt;br /&gt;            returnString = xd.InnerText&lt;br /&gt;        End Try&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;        Return returnString&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;    End Function&lt;/font&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;The following method is found inside a seperate class called myDocument.&lt;br /&gt;The class also includes all necessary attributes.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;font face="Arial"&gt;    Public Function BuildSharePointBatch(ByVal spDocType As SPDocType) As String&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;        Dim sbCamlMethod As New System.Text.StringBuilder&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;        'method ID only needed if sending more than one command&lt;br /&gt;        Dim DocTypeString As String = "None"&lt;br /&gt;        Select Case spDocType&lt;br /&gt;            Case MyDocument.SPDocType.NewDoc&lt;br /&gt;                DocTypeString = "New"&lt;br /&gt;            Case MyDocument.SPDocType.UpdateDoc&lt;br /&gt;                DocTypeString = "Update"&lt;br /&gt;            Case MyDocument.SPDocType.DeleteDoc&lt;br /&gt;                DocTypeString = "Delete"&lt;br /&gt;        End Select&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;        sbCamlMethod.AppendFormat("&amp;lt;Method ID=""1"" Cmd=""{0}""&amp;gt;", DocTypeString)&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;        'Cmd=new indicates adding an item&lt;br /&gt;        'Cmd=update indicates updating an item&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;        'ID field required when updating or deleting a document&lt;br /&gt;        If spDocType = MyDocument.SPDocType.UpdateDoc Or _&lt;br /&gt;        spDocType = MyDocument.SPDocType.DeleteDoc Then&lt;br /&gt;            sbCamlMethod.AppendFormat("&amp;lt;Field Name=""ID""&amp;gt;{0}&amp;lt;/Field&amp;gt;", Me.ID)&lt;br /&gt;        End If&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;        'These Field Names are VITAL to get correct&lt;br /&gt;        'They MUST MATCH the exact GUID representation within Sharepoint&lt;br /&gt;        'You can find it by going into the Modify Settings and Columns section of&lt;br /&gt;        ' the Custom List&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;        If Me.Title.Length &amp;gt; 0 Then&lt;br /&gt;            sbCamlMethod.Append("&amp;lt;Field Name=""Title""&amp;gt;&amp;lt;![CDATA[")&lt;br /&gt;            sbCamlMethod.Append(Me.Title)&lt;br /&gt;            sbCamlMethod.Append("]]&amp;gt;&amp;lt;/Field&amp;gt;")&lt;br /&gt;        End If&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;        If Me.Owner.Length &amp;gt; 0 Then&lt;br /&gt;            sbCamlMethod.Append("&amp;lt;Field Name=""Owner""&amp;gt;&amp;lt;![CDATA[")&lt;br /&gt;            sbCamlMethod.Append(Me.Owner)&lt;br /&gt;            sbCamlMethod.Append("]]&amp;gt;&amp;lt;/Field&amp;gt;")&lt;br /&gt;        End If&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;        If Me.Category.Length &amp;gt; 0 Then&lt;br /&gt;            sbCamlMethod.Append("&amp;lt;Field Name=""Category""&amp;gt;&amp;lt;![CDATA[")&lt;br /&gt;            sbCamlMethod.Append(Me.Category)&lt;br /&gt;            sbCamlMethod.Append("]]&amp;gt;&amp;lt;/Field&amp;gt;")&lt;br /&gt;        End If&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;        If Me.Topic.Length &amp;gt; 0 Then&lt;br /&gt;            sbCamlMethod.Append("&amp;lt;Field Name=""Topic""&amp;gt;&amp;lt;![CDATA[")&lt;br /&gt;            sbCamlMethod.Append(Me.Topic)&lt;br /&gt;            sbCamlMethod.Append("]]&amp;gt;&amp;lt;/Field&amp;gt;")&lt;br /&gt;        End If&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;        If Me.ProjectType.Length &amp;gt; 0 Then&lt;br /&gt;            '_x0020_ represents a space (Unicode)&lt;br /&gt;            sbCamlMethod.Append("&amp;lt;Field Name=""Project_x0020_Type""&amp;gt;&amp;lt;![CDATA[")&lt;br /&gt;            sbCamlMethod.Append(Me.ProjectType)&lt;br /&gt;            sbCamlMethod.Append("]]&amp;gt;&amp;lt;/Field&amp;gt;")&lt;br /&gt;        End If&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;        If Me.AreaOfResponsibility.Length &amp;gt; 0 Then&lt;br /&gt;            '_x0020_ represents a space (Unicode)&lt;br /&gt;            sbCamlMethod.Append("&amp;lt;Field Name=""Area_x0020_of_x0020_Responsibili""&amp;gt;&amp;lt;![CDATA[")&lt;br /&gt;            sbCamlMethod.Append(Me.AreaOfResponsibility)&lt;br /&gt;            sbCamlMethod.Append("]]&amp;gt;&amp;lt;/Field&amp;gt;")&lt;br /&gt;        End If&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;        If Not IsNothing(Me.Purpose) Then&lt;br /&gt;            sbCamlMethod.Append("&amp;lt;Field Name=""Purpose""&amp;gt;&amp;lt;![CDATA[")&lt;br /&gt;            sbCamlMethod.Append(Me.Purpose)&lt;br /&gt;            sbCamlMethod.Append("]]&amp;gt;&amp;lt;/Field&amp;gt;")&lt;br /&gt;        End If&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;        If Not IsNothing(Me.TakeNote) Then&lt;br /&gt;            '_x0020_ represents a space (Unicode)&lt;br /&gt;            sbCamlMethod.Append("&amp;lt;Field Name=""Take_x0020_Note""&amp;gt;&amp;lt;![CDATA[")&lt;br /&gt;            sbCamlMethod.Append(Me.TakeNote)&lt;br /&gt;            sbCamlMethod.Append("]]&amp;gt;&amp;lt;/Field&amp;gt;")&lt;br /&gt;        End If&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;        If Me.DocumentState.Length &amp;gt; 0 Then&lt;br /&gt;            '_x0020_ represents a space (Unicode)&lt;br /&gt;            sbCamlMethod.Append("&amp;lt;Field Name=""Document_x0020_State""&amp;gt;&amp;lt;![CDATA[")&lt;br /&gt;            sbCamlMethod.Append(Me.DocumentState)&lt;br /&gt;            sbCamlMethod.Append("]]&amp;gt;&amp;lt;/Field&amp;gt;")&lt;br /&gt;        End If&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;        If Me.ReasonForArchival.Length &amp;gt; 0 Then&lt;br /&gt;            '_x0020_ represents a space (Unicode)&lt;br /&gt;            sbCamlMethod.Append("&amp;lt;Field Name=""Reason_x0020_for_x0020_Archival""&amp;gt;&amp;lt;![CDATA[")&lt;br /&gt;            sbCamlMethod.Append(Me.ReasonForArchival)&lt;br /&gt;            sbCamlMethod.Append("]]&amp;gt;&amp;lt;/Field&amp;gt;")&lt;br /&gt;        End If&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;        If Me.ReasonForDeletion.Length &amp;gt; 0 Then&lt;br /&gt;            '_x0020_ represents a space (Unicode)&lt;br /&gt;            sbCamlMethod.Append("&amp;lt;Field Name=""Reason_x0020_for_x0020_Deletion""&amp;gt;&amp;lt;![CDATA[")&lt;br /&gt;            sbCamlMethod.Append(Me.ReasonForDeletion)&lt;br /&gt;            sbCamlMethod.Append("]]&amp;gt;&amp;lt;/Field&amp;gt;")&lt;br /&gt;        End If&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;        If Not IsNothing(Me.DocumentText) Then&lt;br /&gt;            '_x0020_ represents a space (Unicode)&lt;br /&gt;            sbCamlMethod.Append("&amp;lt;Field Name=""Document_x0020_Text_x0020_Block""&amp;gt;&amp;lt;![CDATA[")&lt;br /&gt;            sbCamlMethod.Append(Me.DocumentText.InnerXml)&lt;br /&gt;            sbCamlMethod.Append("]]&amp;gt;&amp;lt;/Field&amp;gt;")&lt;br /&gt;        End If&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;        'for date related fields here is an example&lt;br /&gt;        'dates are in UTC format. Where time is not used, set to midnight&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;        'sbCamlMethod.Append("&amp;lt;Field Name='Date'&amp;gt;&amp;lt;![CDATA[")&lt;br /&gt;        'sbCamlMethod.Append(Format(Me.DocDate, "yyyy-MM-dd") &amp;amp; "T00:00:00Z")&lt;br /&gt;        'sbCamlMethod.Append("]]&amp;gt;&amp;lt;/Field&amp;gt;")&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;        sbCamlMethod.Append("&amp;lt;/Method&amp;gt;")&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;        Return sbCamlMethod.ToString&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;    End Function&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;
&lt;/p&gt;
&lt;/pre&gt;&lt;img src="http://waynester.net/blog/aggbug/5711.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Wayne Larimore</dc:creator>
            <guid>http://waynester.net/blog/archive/2008/04/02/InfoPath-SharePoint-Integration-Add-List-Item.aspx</guid>
            <pubDate>Wed, 02 Apr 2008 20:44:24 GMT</pubDate>
            <wfw:comment>http://waynester.net/blog/comments/5711.aspx</wfw:comment>
            <comments>http://waynester.net/blog/archive/2008/04/02/InfoPath-SharePoint-Integration-Add-List-Item.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://waynester.net/blog/comments/commentRss/5711.aspx</wfw:commentRss>
            <trackback:ping>http://waynester.net/blog/services/trackbacks/5711.aspx</trackback:ping>
        </item>
        <item>
            <title>InfoPath SharePoint Integration: List Services</title>
            <link>http://waynester.net/blog/archive/2008/04/02/InfoPath-SharePoint-Integration-List-Services.aspx</link>
            <description>&lt;p&gt;&lt;font face="Verdana" size="2"&gt;In order to pull specific column data from a SharePoint List you must structure the XML query properly.  In this example, I am querying for the Category column.  I have defined the SharePoint List Location and List GUID inside the Web.config file.  Here is how the web method is laid out:&lt;/font&gt;&lt;/p&gt;
&lt;pre&gt;&lt;p&gt;&lt;font face="Arial"&gt;&amp;lt;WebMethod()&amp;gt; _&lt;br /&gt;Public Function GetListItemCategories(ByVal ListLocation As String, ByVal ListName As String) As XmlDataDocument&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;        If ListLocation Is Nothing Or ListLocation.Length = 0 Then&lt;br /&gt;            ListLocation = ConfigurationManager.AppSettings("SharepointListLocation")&lt;br /&gt;        End If&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;        If ListName Is Nothing Or ListName.Length = 0 Then&lt;br /&gt;            ListName = ConfigurationManager.AppSettings("SharepointListGUID")&lt;br /&gt;        End If&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;        Dim url As Uri = New Uri(New Uri(ListLocation), "_vti_bin/Lists.asmx")&lt;br /&gt;        Dim list As New com.fnfis.cssddev.Lists()&lt;br /&gt;        list.Url = url.ToString()&lt;br /&gt;        list.Credentials = getUserCredentials()&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;        Dim Doc As New XmlDocument()&lt;br /&gt;        Dim Query As XmlNode = Doc.CreateNode(XmlNodeType.Element, "Query", "")&lt;br /&gt;        Dim ViewFields As XmlNode = Doc.CreateNode(XmlNodeType.Element, "ViewFields", "")&lt;br /&gt;        ViewFields.InnerXml = "&amp;lt;FieldRef Name='Category' /&amp;gt;"&lt;br /&gt;        Dim QueryOptions As XmlNode = Doc.CreateNode(XmlNodeType.Element, "QueryOptions", "")&lt;br /&gt;        Dim node As XmlNode = Nothing&lt;br /&gt;        Try&lt;br /&gt;            node = list.GetListItems(ListName, Nothing, Query, ViewFields, Nothing, QueryOptions)&lt;br /&gt;        Catch ex As Exception&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;        End Try&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;        Dim xd As XmlDataDocument = New XmlDataDocument&lt;br /&gt;        If node Is Nothing Then&lt;br /&gt;            xd.LoadXml("&amp;lt;?xml version='1.0' ?&amp;gt;" &amp;amp; _&lt;br /&gt;            "&amp;lt;listitems&lt;br /&gt;xmlns:s=""uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882""&lt;br /&gt;xmlns:dt=""uuid:C2F41010-65B3-11d1-A29F-00AA00C14882""&lt;br /&gt;xmlns:rs=""urn:schemas-microsoft-com:rowset"" &lt;br /&gt;xmlns:z=""#RowsetSchema"" &lt;br /&gt;xmlns=""http://schemas.microsoft.com/sharepoint/soap/""&amp;gt; &amp;lt;rs:data ItemCount=""0""&amp;gt; &amp;lt;/rs:data&amp;gt;&amp;lt;/listitems&amp;gt;")&lt;br /&gt;        Else&lt;br /&gt;            xd.LoadXml("&amp;lt;?xml version='1.0' ?&amp;gt;" &amp;amp; node.OuterXml)&lt;br /&gt;        End If&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;        Return xd&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;        '--- example of how to access xml node values&lt;br /&gt;        'For Each n As XmlNode In node.FirstChild.ChildNodes&lt;br /&gt;        '    Dim node1 As TreeNode = New TreeNode(n.Attributes("Title").Value)&lt;br /&gt;        '    Dim node2 As TreeNode = New TreeNode(n.Attributes("Body").Value)&lt;br /&gt;        'Next&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;    End Function&lt;/font&gt;&lt;/p&gt;&lt;/pre&gt;&lt;img src="http://waynester.net/blog/aggbug/5710.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Wayne Larimore</dc:creator>
            <guid>http://waynester.net/blog/archive/2008/04/02/InfoPath-SharePoint-Integration-List-Services.aspx</guid>
            <pubDate>Wed, 02 Apr 2008 20:22:38 GMT</pubDate>
            <wfw:comment>http://waynester.net/blog/comments/5710.aspx</wfw:comment>
            <comments>http://waynester.net/blog/archive/2008/04/02/InfoPath-SharePoint-Integration-List-Services.aspx#feedback</comments>
            <wfw:commentRss>http://waynester.net/blog/comments/commentRss/5710.aspx</wfw:commentRss>
            <trackback:ping>http://waynester.net/blog/services/trackbacks/5710.aspx</trackback:ping>
        </item>
        <item>
            <title>InfoPath SharePoint Integration: Web Services</title>
            <link>http://waynester.net/blog/archive/2008/04/02/InfoPath-SharePoint-Integration-Web-Services.aspx</link>
            <description>&lt;p&gt;&lt;font face="Verdana" size="2"&gt;When pulling data into InfoPath 2003 you must build it to be in a compatible format.  Here's an example of a web service method providing said format from a MS SQL Server Source.&lt;/font&gt;&lt;/p&gt;
&lt;pre&gt; &lt;p&gt;&lt;font face="Arial"&gt;&amp;lt;WebMethod()&amp;gt; _&lt;br /&gt;Public Function GetCategories() As XmlDataDocument&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;        Dim conn As New SqlConnection(GetConnectString)&lt;br /&gt;        Dim ds As New DataSet&lt;br /&gt;        Dim cmd As New SqlCommand()&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;        cmd.Connection = conn&lt;br /&gt;        cmd.CommandType = CommandType.StoredProcedure&lt;br /&gt;        cmd.CommandText = "sl_Category"&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;        Dim adapter As New SqlDataAdapter(cmd)&lt;br /&gt;        Dim result As Boolean = False&lt;br /&gt;        Dim previousConnectionState1 As ConnectionState = conn.State&lt;br /&gt;        Dim errMessage As String = Nothing&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;        Try&lt;br /&gt;            If conn.State = ConnectionState.Closed Then&lt;br /&gt;                conn.Open()&lt;br /&gt;            End If&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;            adapter.Fill(ds)&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;            result = True&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;        Catch ex As SqlException&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;            result = False&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;            errMessage = ex.Message&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;        Finally&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;            If previousConnectionState1 = ConnectionState.Closed Then&lt;br /&gt;                conn.Close()&lt;br /&gt;            End If&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;        End Try&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;        If result Then&lt;br /&gt;            Dim XmlDataDoc As XmlDataDocument = New XmlDataDocument(ds)&lt;br /&gt;            Return XmlDataDoc&lt;br /&gt;        Else&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;            Dim XmlDataDoc As New XmlDataDocument()&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;            XmlDataDoc.LoadXml("&amp;lt;?xml version='1.0' ?&amp;gt;" &amp;amp; _&lt;br /&gt;"&amp;lt;GetCategories&lt;br /&gt;xmlns:s=""uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882""&lt;br /&gt;xmlns:dt=""uuid:C2F41010-65B3-11d1-A29F-00AA00C14882""&lt;br /&gt;xmlns:rs=""urn:schemas-microsoft-com:rowset""&lt;br /&gt;xmlns:z=""#RowsetSchema""&lt;br /&gt; xmlns=""http://schemas.microsoft.com/sharepoint/soap/""&amp;gt; &amp;lt;rs:data ItemCount=""0"" errmsg=""" &amp;amp; errMessage &amp;amp; """&amp;gt; &amp;lt;/rs:data&amp;gt;&amp;lt;/GetCategories&amp;gt;")&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;            Return XmlDataDoc&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;        End If&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face="Arial"&gt;    End Function&lt;/font&gt;&lt;/p&gt;&lt;/pre&gt;&lt;img src="http://waynester.net/blog/aggbug/5709.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Wayne Larimore</dc:creator>
            <guid>http://waynester.net/blog/archive/2008/04/02/InfoPath-SharePoint-Integration-Web-Services.aspx</guid>
            <pubDate>Wed, 02 Apr 2008 20:01:02 GMT</pubDate>
            <wfw:comment>http://waynester.net/blog/comments/5709.aspx</wfw:comment>
            <comments>http://waynester.net/blog/archive/2008/04/02/InfoPath-SharePoint-Integration-Web-Services.aspx#feedback</comments>
            <wfw:commentRss>http://waynester.net/blog/comments/commentRss/5709.aspx</wfw:commentRss>
            <trackback:ping>http://waynester.net/blog/services/trackbacks/5709.aspx</trackback:ping>
        </item>
        <item>
            <title>InfoPath 2003 SharePoint Integration</title>
            <link>http://waynester.net/blog/archive/2008/03/24/InfoPath-2003-SharePoint-Integration--Part-1.aspx</link>
            <description>&lt;p&gt;I was rummaging through some old InfoPath SharePoint 2003 integration code and thought I'd share.  I have moved onto MOSS 2007.  Revisiting this brings back bad memories.  My HOPE is that it will HELP those with the misfortune of working in those miserable conditions :o)&lt;/p&gt;
&lt;p&gt;There will be seperate blog postings covering different aspects of what I learned.&lt;/p&gt;
&lt;p&gt;The breakdown of code snippets are:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;Building Web Services
    &lt;ul&gt;
        &lt;li&gt;&lt;a href="http://waynester.net/blog/archive/2008/04/02/InfoPath-SharePoint-Integration-Web-Services.aspx"&gt;SQL Server&lt;/a&gt; &lt;/li&gt;
        &lt;li&gt;&lt;a href="http://waynester.net/blog/archive/2008/04/02/InfoPath-SharePoint-Integration-List-Services.aspx"&gt;SharePoint Lists&lt;/a&gt;
        &lt;ul&gt;
            &lt;li&gt;&lt;a href="http://waynester.net/blog/archive/2008/04/02/InfoPath-SharePoint-Integration-Add-List-Item.aspx"&gt;Add List Item&lt;/a&gt; &lt;/li&gt;
        &lt;/ul&gt;
        &lt;/li&gt;
    &lt;/ul&gt;
    &lt;/li&gt;
    &lt;li&gt;&lt;a href="http://waynester.net/blog/archive/2008/04/02/InfoPath-SharePoint-Integration-VSTO-Code-Behind.aspx"&gt;Developing InfoPath within Visual Studio 2005 and VSTO&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Click on the topics above to follow each in detail.&lt;/p&gt;
&lt;p&gt; &lt;/p&gt;&lt;img src="http://waynester.net/blog/aggbug/5708.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Wayne Larimore</dc:creator>
            <guid>http://waynester.net/blog/archive/2008/03/24/InfoPath-2003-SharePoint-Integration--Part-1.aspx</guid>
            <pubDate>Mon, 24 Mar 2008 19:55:37 GMT</pubDate>
            <wfw:comment>http://waynester.net/blog/comments/5708.aspx</wfw:comment>
            <comments>http://waynester.net/blog/archive/2008/03/24/InfoPath-2003-SharePoint-Integration--Part-1.aspx#feedback</comments>
            <wfw:commentRss>http://waynester.net/blog/comments/commentRss/5708.aspx</wfw:commentRss>
            <trackback:ping>http://waynester.net/blog/services/trackbacks/5708.aspx</trackback:ping>
        </item>
    </channel>
</rss>