<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-3772419039196565227</id><updated>2011-10-12T06:18:27.310-04:00</updated><category term='SharePoint'/><category term='bdc'/><category term='sharepoint bdc'/><category term='Announcements'/><category term='InfoPath'/><category term='SharePoint Designer'/><title type='text'>SharePoint Development Blog</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://wssdev.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3772419039196565227/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://wssdev.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>bjabram</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>14</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-3772419039196565227.post-3040461740562128959</id><published>2008-12-03T16:20:00.002-05:00</published><updated>2008-12-03T16:37:39.741-05:00</updated><title type='text'>BDC Refresh causes null pointer exception</title><content type='html'>The current status:&lt;br /&gt;&lt;br /&gt;Executing a BDC refresh in specific cirsumstances causes a null pointer exception to be thrown by SharePoint.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Scenario #1:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Add a BDC column without related columns to a list&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Add row(s) to the list and assign values to the BDC field&lt;/li&gt;&lt;li&gt;Update the BDC column to use additional related fields&lt;/li&gt;&lt;li&gt;Refresh the BDC column in the list&lt;/li&gt;&lt;/ol&gt;Result:&lt;br /&gt;After clicking the refresh button and 'OK' on the next page, the next page displays a progress bar, then displays the following error: "An error occurred while retrieving data from &lt;i&gt;&lt;lob&gt;&lt;/i&gt;. Administrators, see the server log for more information."&lt;br /&gt;&lt;br /&gt;The log contains the following line:&lt;br /&gt;&lt;span style="font-family:Courier New;"&gt;Exception thrown while synchronizing business data System.NullReferenceException: Object reference not set to an instance of an object.&lt;br /&gt;at Microsoft.SharePoint.Portal.WebControls.BusinessDataSynchronizerJob.UpdateListItem(SPListItem item, BusinessDataField bizDataField, LobSystemInstance sysinst, Entity entity, View view, String[] secondaryBdcFieldNames, String[] secondaryWssFieldNames)&lt;br /&gt;at Microsoft.SharePoint.Portal.WebControls.BusinessDataSynchronizerJob.DoWork()&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Arial;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Scenario #2&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Add a BDC column with related fields to a list&lt;/li&gt;&lt;li&gt;Add row(s) to the list where the related fields have non-empty values&lt;/li&gt;&lt;li&gt;Refresh the BDC column in the list&lt;/li&gt;&lt;/ol&gt;Result: Works fine&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Scenario #3:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Add a BDC column with related fields to a list&lt;/li&gt;&lt;li&gt;Add row(s) to the list where the related fields have empty or null values&lt;/li&gt;&lt;li&gt;Refresh the BDC column in the list&lt;/li&gt;&lt;/ol&gt;Result: Throws null pointer exception as described above.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;I'll contend that this is a bug for the following reason: reflecting on the Microsoft.SharePoint.Portal.WebControls.BusinessDataSynchronizerJob class that is throwing the exception yields a segment of code that checks the current value of the related field to the updated value retrieved from the BDC LineOfBusiness.  If the two values are different, then it sets the item's value for that related field to the updated BDC value.&lt;br /&gt;&lt;br /&gt;.NET Reflector gives the following code snippets that are useful:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;Label_0144:&lt;br /&gt;    str = item[secondaryWssFieldNames[num2]].ToString();&lt;br /&gt;    str2 = Convert.ToString(instance.GetFormatted(field), CultureInfo.InvariantCulture);&lt;br /&gt;    if (!(str != str2))&lt;br /&gt;    {&lt;br /&gt;        goto Label_00F6;&lt;br /&gt;    }&lt;br /&gt;    goto Label_0113;&lt;br /&gt;Label_0113:&lt;br /&gt;    flag = true;&lt;br /&gt;    item[secondaryWssFieldNames[num2]] = str2;&lt;br /&gt;    goto Label_00F6;&lt;br /&gt;&lt;br /&gt;Label_001D:&lt;br /&gt;    if (flag)&lt;br /&gt;    {&lt;br /&gt;        item.Update();&lt;br /&gt;    }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Label_0144 creates str and str2 to compare the original (str) value and the updated (str2) value.  If they are different, then Label_0113 sets the item's value to the updated value and sets Flag to true.  Label001D checks the flag value and, if true, updates the item.  This should only update items that have actually been updated.&lt;br /&gt;&lt;br /&gt;(by the way, this is all SP1 code, post-Infrastructure update)&lt;br /&gt;&lt;br /&gt;It seems a viable candidate for this null pointer exception would be the line &lt;tt&gt;str = item[secondaryWssFieldNames[num2]].ToString();&lt;/tt&gt;.  If the item's value is null, then the ToString() would obviously fail.&lt;br /&gt;&lt;br /&gt;A quick PowerShell script shows that following scenario #1 above yields a null value for the related column.  This is indeed a valid candidate for this issue.&lt;br /&gt;&lt;br /&gt;If this is the case, has this been brought to Microsoft's attention?  Is this addressed in any hotfix or update for SharePoint?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3772419039196565227-3040461740562128959?l=wssdev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wssdev.blogspot.com/feeds/3040461740562128959/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3772419039196565227&amp;postID=3040461740562128959' title='42 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3772419039196565227/posts/default/3040461740562128959'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3772419039196565227/posts/default/3040461740562128959'/><link rel='alternate' type='text/html' href='http://wssdev.blogspot.com/2008/12/bdc-refresh-causes-null-pointer.html' title='BDC Refresh causes null pointer exception'/><author><name>bjabram</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>42</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3772419039196565227.post-4526529991014455049</id><published>2008-12-03T14:44:00.004-05:00</published><updated>2008-12-03T14:51:42.137-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='bdc'/><title type='text'>Disable BDC Refresh icon</title><content type='html'>&lt;p&gt;To disable (properly, to not render) the BDC Refresh "hurricane" icon (as &lt;a href="http://www.google.com/url?sa=t&amp;amp;source=web&amp;amp;ct=res&amp;amp;cd=1&amp;amp;url=http%3A%2F%2Fwww.sharepointblogs.com%2Fjoed%2Farchive%2F2008%2F02%2F28%2Fbe-careful-with-the-bdc-hurricane-button.aspx&amp;amp;ei=tOI2ScDOC6Ce8gTA7t36Bw&amp;amp;usg=AFQjCNGHpeklkXSc-aDgQPOWaw8GXcTQyg&amp;amp;sig2=DJJcu6HgnyL2LEBqI9bqQw"&gt;some have called it&lt;/a&gt;), simply edit the fldtypes_spsbizdata.xml file and find the &lt;tt&gt;&amp;lt;!-- Update link --&amp;gt;&lt;/tt&gt; XML comment.  Below this XML comment, remove/comment the following lines:&lt;br /&gt;&lt;/p&gt;&lt;pre&gt;&amp;lt;HTML&amp;gt;&amp;amp;nbsp;&amp;lt;![CDATA[&amp;lt;a style="padding-left:2px;padding-right:12px" href="]]&amp;gt;&amp;lt;/HTML&amp;gt;&lt;br /&gt;&amp;lt;HttpVDir/&amp;gt;&lt;br /&gt;&amp;lt;HTML&amp;gt;&amp;lt;![CDATA[/_layouts/BusinessDataSynchronizer.aspx?ListId=]]&amp;gt;&amp;lt;/HTML&amp;gt;&lt;br /&gt;&amp;lt;ListProperty Select='Name'/&amp;gt;&lt;br /&gt;&amp;lt;HTML&amp;gt;&amp;lt;![CDATA[&amp;amp;ColumnName=]]&amp;gt;&amp;lt;/HTML&amp;gt;     &lt;br /&gt;&amp;lt;Property Select='Name'/&amp;gt;&lt;br /&gt;&amp;lt;HTML&amp;gt;&amp;lt;![CDATA[" OnClick="GoToLink(this);return false;"&amp;gt;]]&amp;gt;&amp;lt;/HTML&amp;gt;&lt;br /&gt;&amp;lt;HTML&amp;gt;&amp;lt;![CDATA[&amp;lt;img border="0" src="/_layouts/images/bdupdate.gif" alt="$Resources:spscore,BusinessDataField_UpdateImageAlt;"/&amp;gt;&amp;lt;/a&amp;gt;]]&amp;gt;&amp;lt;/HTML&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;Save the file, then perform an IIS reset.  After reset, the BDC Refresh icon will be gone.  Note that this changes all BDC columns in the site.&lt;br /&gt;&lt;br /&gt;While you're editing this file, go ahead and &lt;a href="http://wssdev.blogspot.com/2008/11/bug-in-fldtypesspsbizdataxml.html"&gt;fix the BDC CSS styling bug&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3772419039196565227-4526529991014455049?l=wssdev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wssdev.blogspot.com/feeds/4526529991014455049/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3772419039196565227&amp;postID=4526529991014455049' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3772419039196565227/posts/default/4526529991014455049'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3772419039196565227/posts/default/4526529991014455049'/><link rel='alternate' type='text/html' href='http://wssdev.blogspot.com/2008/12/disable-bdc-refresh-icon.html' title='Disable BDC Refresh icon'/><author><name>bjabram</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3772419039196565227.post-6715553813090380096</id><published>2008-11-12T17:52:00.003-05:00</published><updated>2008-11-12T17:54:38.482-05:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint bdc'/><title type='text'>Bug in fldtypes_spsbizdata.xml</title><content type='html'>The css styling for displaying tables inline for BDC columns is not correct into the fldtypes_spsbizdata.xml file.  To correct, simply replace "display=inline" with "display:inline;" and reset IIS.&lt;br /&gt;&lt;br /&gt;In some environments, this does not cause a problem.  However in some situations (perhaps with custom css and master page styling), if the BDC column is used to group a view, the column header does not render properly.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3772419039196565227-6715553813090380096?l=wssdev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wssdev.blogspot.com/feeds/6715553813090380096/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3772419039196565227&amp;postID=6715553813090380096' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3772419039196565227/posts/default/6715553813090380096'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3772419039196565227/posts/default/6715553813090380096'/><link rel='alternate' type='text/html' href='http://wssdev.blogspot.com/2008/11/bug-in-fldtypesspsbizdataxml.html' title='Bug in fldtypes_spsbizdata.xml'/><author><name>bjabram</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3772419039196565227.post-8988634161317723800</id><published>2007-08-08T12:12:00.001-04:00</published><updated>2007-08-08T12:12:55.938-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Designer'/><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><title type='text'>Group By Date Field off by one day</title><content type='html'>&lt;p&gt;I've recently noticed that, when creating a list view that groups by a date field, the date field can be off by one day.&lt;/p&gt; &lt;p&gt;The issue comes when grouping by a date field and setting the default behavior to Collapsed.&lt;/p&gt; &lt;p&gt;It doesn't matter that the Expires date is just a date and not a Date/Time: the same bug appears with fields using both properties (with any time of the day).&lt;/p&gt; &lt;p&gt;The bug does not appear when converting a view to an XSLT view, although you lose much of the customizations and nifty interaction you get with a SharePoint DataView.&lt;/p&gt; &lt;p&gt;If I can get Windows Live Writer configured to upload images, I'll attach screenshots.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3772419039196565227-8988634161317723800?l=wssdev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wssdev.blogspot.com/feeds/8988634161317723800/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3772419039196565227&amp;postID=8988634161317723800' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3772419039196565227/posts/default/8988634161317723800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3772419039196565227/posts/default/8988634161317723800'/><link rel='alternate' type='text/html' href='http://wssdev.blogspot.com/2007/08/group-by-date-field-off-by-one-day.html' title='Group By Date Field off by one day'/><author><name>bjabram</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3772419039196565227.post-7227066127961889157</id><published>2007-08-06T15:31:00.001-04:00</published><updated>2007-08-06T15:32:01.479-04:00</updated><title type='text'>Differences in handling CR/LF differences between InfoPath and SharePoint</title><content type='html'>&lt;p&gt;Although InfoPath &lt;a href="http://blogs.msdn.com/infopath/archive/2005/03/04/385577.aspx"&gt;claims to handle CR, LF, and CR/LF the same&lt;/a&gt;, it does not follow the conventions of other Microsoft products when it comes to generating new line characters.&amp;nbsp; SharePoint, like most (if not all) Windows applications, uses the CR/LF combination (0x0D, 0x0A) to denote a new line.&amp;nbsp; This is apparent when viewing the raw data contained within a Multiline Text field.&lt;/p&gt; &lt;p&gt;If you are creating an InfoPath form that submits to a SharePoint library, you can set specific fields within the InfoPath form to be promoted to the SharePoint list.&amp;nbsp; You can also promote a field within a repeating group.&amp;nbsp; When you promote this field, you have the option of promoting the first or last item in the list, the number of items in the group, or the entire collection of that field merged into one field.&amp;nbsp; &lt;/p&gt; &lt;p&gt;When choose the fourth option, a Multiline text field is generated by InfoPath in the SharePoint library.&amp;nbsp; However, when submitting, the merged fields are separated by only a Line Feed character (0x0A)!&lt;/p&gt; &lt;p&gt;This issue will come into play when you want to perform operations on the SharePoint list through the SharePoint object model.&amp;nbsp; Dot-matching, for instance, may not work because the .NET Regex processor will use CR/LF as its newline character(s) and won't match the single LF character.&amp;nbsp; SharePoint Designer may also have difficulty if you want to use substring to parse items from the merged list.&lt;/p&gt; &lt;p&gt;The only fix known so far is to simply remember that merged fields that InfoPath uses will have only the LF character, while other SharePoint-created multiline text fields will use CR/LF.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3772419039196565227-7227066127961889157?l=wssdev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wssdev.blogspot.com/feeds/7227066127961889157/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3772419039196565227&amp;postID=7227066127961889157' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3772419039196565227/posts/default/7227066127961889157'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3772419039196565227/posts/default/7227066127961889157'/><link rel='alternate' type='text/html' href='http://wssdev.blogspot.com/2007/08/handling-of-crlf-differences-in.html' title='Differences in handling CR/LF differences between InfoPath and SharePoint'/><author><name>bjabram</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3772419039196565227.post-1308647276202915163</id><published>2007-07-26T10:02:00.001-04:00</published><updated>2007-07-26T10:02:41.381-04:00</updated><title type='text'>Blogging with SharePoint 2007 and Windows Live Writer</title><content type='html'>&lt;p&gt;I'm sure there are a handful of posting out there about blogging on SharePoint 2007 with Windows Live Writer, which is what I'm using now to publish to BlogSpot.&amp;nbsp; Microsoft's made it very easy to publish blog posts to SharePoint, including automatic image storage.&amp;nbsp; I haven't seen any blog posting about it yet, so I'll offer a simple one of my own.&lt;/p&gt; &lt;p&gt;Since the blog's Posts is a list, the images are stored as attachments to that list item.&amp;nbsp; They would be stored in the /Lists/Posts/Attachments/&lt;em&gt;&amp;lt;Post Id&amp;gt;&lt;/em&gt; directory structure for easy reference.&amp;nbsp;&amp;nbsp;The file names are generated as&amp;nbsp;image.png, image_1.png, etc.&lt;/p&gt; &lt;p&gt;You can also publish with Word 2007 (yet to see if Word 2003 can do the trick), but the images are saved into the Photos.&amp;nbsp; The file names are generated with the date and the name of the posting (072607_1337_Testing1.png, 072607_1337_Testing2.png, etc).&amp;nbsp; Not sure if 1337 refers to the time somehow (did this in the morning, but it could be GMT time) or it's Leetspeak...&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3772419039196565227-1308647276202915163?l=wssdev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wssdev.blogspot.com/feeds/1308647276202915163/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3772419039196565227&amp;postID=1308647276202915163' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3772419039196565227/posts/default/1308647276202915163'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3772419039196565227/posts/default/1308647276202915163'/><link rel='alternate' type='text/html' href='http://wssdev.blogspot.com/2007/07/blogging-with-sharepoint-2007-and.html' title='Blogging with SharePoint 2007 and Windows Live Writer'/><author><name>bjabram</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3772419039196565227.post-1336063495912201593</id><published>2007-07-25T14:38:00.001-04:00</published><updated>2007-07-25T14:38:21.199-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Designer'/><title type='text'>Customizing the Filter Query in a List View</title><content type='html'>&lt;p&gt;Filtering a list view offers a efficient way of displaying data within a list or document library.&amp;nbsp; One of its main detractors, however, is that you're limited to what the SharePoint interface allows you to filter by.&amp;nbsp; You can create complex filters using AND and OR conjunctions, but there's one main catch: the conjunctions are evaluated in order and doesn't allow any sort of order to be forced.&lt;/p&gt; &lt;h5&gt;An Example:&lt;/h5&gt; &lt;p&gt;Suppose I had&amp;nbsp;two&amp;nbsp;fields, Fruit and Quantity,&amp;nbsp;in my SharePoint list and I wanted to filter a view so that I would show all combinations where I'd get a stomach ache: that would be, I guess, when Fruit = Apples and Quantity &amp;gt; 2, or when Fruit = Oranges and Quantity &amp;gt; 4.&lt;/p&gt; &lt;p&gt;In pseudo code, it would appears as such:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;(Fruit = Apples &amp;amp;&amp;amp; Quantity &amp;gt; 2) || (Fruit = Oranges &amp;amp;&amp;amp; Quantity &amp;gt; 4)&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;The problem is that the query will not be constructed in that way.&amp;nbsp; Instead, the logic is captured as such:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;(((Fruit = Apples &amp;amp;&amp;amp; Quantity &amp;gt; 4) || Fruit = Oranges) &amp;amp;&amp;amp; Quantity &amp;gt; 8).&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Situations, such as having six apples, should appear in my new list, but don't because the Quantity &amp;gt; 8 overrides that for the apples.&lt;/p&gt; &lt;h5&gt;The Fix&lt;/h5&gt; &lt;p&gt;This is where SharePoint Designer comes to the rescue.&amp;nbsp; You can build the CAML query for the 'Where' clause appropriately to capture the logic that you are looking for.&lt;/p&gt; &lt;p&gt;The original Where clause will look something like this:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;font face="Courier New"&gt;&amp;lt;Where&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;And&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Or&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;And&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Eq&amp;gt;&amp;lt;FieldRef Name="Fruit"/&amp;gt;&amp;lt;Value Type="Text"&amp;gt;Apples&amp;lt;/Value&amp;gt;&amp;lt;/Eq&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Gt&amp;gt;&amp;lt;FieldRef Name="Quantity"/&amp;gt;&amp;lt;Value Type="Number"&amp;gt;4&amp;lt;/Value&amp;gt;&amp;lt;/Gt&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/And&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Eq&amp;gt;&amp;lt;FieldRef Name="Fruit"/&amp;gt;&amp;lt;Value Type="Text"&amp;gt;Oranges&amp;lt;/Value&amp;gt;&amp;lt;/Eq&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;lt;/Or&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Gt&amp;gt;&amp;lt;FieldRef Name="Quantity"/&amp;gt;&amp;lt;Value Type="Number"&amp;gt;8&amp;lt;/Value&amp;gt;&amp;lt;/Gt&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;/And&amp;gt;&lt;br&gt;&amp;lt;/Where&amp;gt;&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;My 'Where' clause will need to be changed to look like this:&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;font face="Courier New"&gt;&amp;lt;Where&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;Or&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;And&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Eq&amp;gt;&amp;lt;FieldRef Name="Fruit"/&amp;gt;&amp;lt;Value Type="Text"&amp;gt;Apples&amp;lt;/Value&amp;gt;&amp;lt;/Eq&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Gt&amp;gt;&amp;lt;FieldRef Name="Quantity"/&amp;gt;&amp;lt;Value Type="Number"&amp;gt;4&amp;lt;/Value&amp;gt;&amp;lt;/Gt&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/And&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;And&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Eq&amp;gt;&amp;lt;FieldRef Name="Fruit"/&amp;gt;&amp;lt;Value Type="Text"&amp;gt;Apples&amp;lt;/Value&amp;gt;&amp;lt;/Eq&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Gt&amp;gt;&amp;lt;FieldRef Name="Quantity"/&amp;gt;&amp;lt;Value Type="Number"&amp;gt;4&amp;lt;/Value&amp;gt;&amp;lt;/Gt&amp;gt;&lt;br&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/And&amp;gt;&lt;br&gt;&amp;nbsp; &amp;lt;/Or&amp;gt;&lt;br&gt;&amp;lt;/Where&amp;gt;&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;&lt;font face="Ver"&gt;Once you build your query offline, you'll need to search for and replace the old query with your new one.&amp;nbsp; Note that the XML is encoded as text, so '&amp;lt;', '&amp;gt;' characters are encoded as &amp;amp;lt; and &amp;amp;gt;, respectively.&amp;nbsp; Use your favorite notepad (Notepad++, with the XML Tools,&amp;nbsp;is my personal favorite because it will do this automatically) to set your query appropriately.&lt;/font&gt;&lt;/p&gt; &lt;h5&gt;Final Thoughts&lt;/h5&gt; &lt;p&gt;Note that, if you need to change something in your view (order of fields, grouping, sorting, etc), then SharePoint will rewrite your query with what it thinks is correct.&amp;nbsp; In this example, it will replace your query with what it was before.&amp;nbsp; You'll just need to make sure that your view is set up correctly before updating the query manually.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3772419039196565227-1336063495912201593?l=wssdev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wssdev.blogspot.com/feeds/1336063495912201593/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3772419039196565227&amp;postID=1336063495912201593' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3772419039196565227/posts/default/1336063495912201593'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3772419039196565227/posts/default/1336063495912201593'/><link rel='alternate' type='text/html' href='http://wssdev.blogspot.com/2007/07/customizing-filter-query-in-list-view.html' title='Customizing the Filter Query in a List View'/><author><name>bjabram</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3772419039196565227.post-7942910816199418180</id><published>2007-07-19T08:53:00.001-04:00</published><updated>2007-07-19T08:53:56.492-04:00</updated><title type='text'>SharePoint Designer bugs</title><content type='html'>&lt;p&gt;While I'm on a blogging kick this morning, has any one else noticed how buggy SharePoint Designer tends to be?&amp;nbsp; Besides the occasional crashing when editing aspx files, the tree view in the Data Source Library always gets corrupted and I can't view any of the data sources.&lt;/p&gt; &lt;p&gt;Just a rant&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3772419039196565227-7942910816199418180?l=wssdev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wssdev.blogspot.com/feeds/7942910816199418180/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3772419039196565227&amp;postID=7942910816199418180' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3772419039196565227/posts/default/7942910816199418180'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3772419039196565227/posts/default/7942910816199418180'/><link rel='alternate' type='text/html' href='http://wssdev.blogspot.com/2007/07/sharepoint-designer-bugs.html' title='SharePoint Designer bugs'/><author><name>bjabram</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3772419039196565227.post-1439223474707128414</id><published>2007-07-19T08:50:00.001-04:00</published><updated>2007-07-19T08:50:50.331-04:00</updated><title type='text'>Take Care when Copying Files</title><content type='html'>&lt;p&gt;Copying files in SharePoint can have some unintended consequences that may not be apparent at first.&amp;nbsp; Creating a copy of a file will create a link between the two files, so that, for instance, changes to one file will be reflected in the other file.&lt;/p&gt; &lt;p&gt;SharePoint and SharePoint Designer both can create these special linked documents, but they do it in different ways:&lt;/p&gt; &lt;ul&gt; &lt;li&gt;With SharePoint, use the Manage Copies feature in the View properties of the item, or else choose Send To &amp;gt;&amp;nbsp;Other Location from the ECB menu.&amp;nbsp; When copying files using SharePoint Manage Copies feature, the copy will have an additional option in the ECB menu: Go to Source Item.&amp;nbsp; This will navigate you back to the URL of the copied file.&lt;/li&gt; &lt;li&gt;With Designer, you can use the Remote Web Site interface.&amp;nbsp; The remote site can be on the same server, but it cannot be the same SharePoint site.&amp;nbsp; When copying files using Designer, the copy will not have the "Go to Source Item" option.&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;The biggest annoyance: When you create a linked copy in these ways, &lt;strong&gt;you will create a new version of the original document&lt;/strong&gt;.&amp;nbsp; This is important if you have event handlers or workflows that kick off as a result of items updating.&lt;/p&gt; &lt;p&gt;If you view the file properties through Windows Explorer, for instance, you'll notice that the date/time stamp of the file doesn't change.&amp;nbsp; This indicates that SharePoint internally is creating a new version of the file, but nothing beyond that.&lt;/p&gt; &lt;p&gt;And, in case you were wondering, this all happens whether you have versioning enabled on your system or not.&lt;/p&gt; &lt;p&gt;If these are not your intentions, then you have a more basic option.&amp;nbsp; To copy files without creating linked copies (copying as we know it), then your best bet is to download a copy and save it to the alternative document library.&lt;/p&gt; &lt;p&gt;You can find more information about this in the Microsoft's SharePoint help site at &lt;a title="http://office.microsoft.com/en-us/help/HA101181721033.aspx" href="http://office.microsoft.com/en-us/help/HA101181721033.aspx"&gt;http://office.microsoft.com/en-us/help/HA101181721033.aspx&lt;/a&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3772419039196565227-1439223474707128414?l=wssdev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wssdev.blogspot.com/feeds/1439223474707128414/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3772419039196565227&amp;postID=1439223474707128414' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3772419039196565227/posts/default/1439223474707128414'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3772419039196565227/posts/default/1439223474707128414'/><link rel='alternate' type='text/html' href='http://wssdev.blogspot.com/2007/07/take-care-when-copying-files.html' title='Take Care when Copying Files'/><author><name>bjabram</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3772419039196565227.post-3007216987160699577</id><published>2007-06-26T15:07:00.000-04:00</published><updated>2007-06-26T15:32:21.006-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint'/><category scheme='http://www.blogger.com/atom/ns#' term='InfoPath'/><title type='text'>InfoPath: Use SharePoint Web Services</title><content type='html'>InfoPath is great at using Web Services as a data source, but it doesn't quite do the trick when it comes to using SharePoint's Web Services. Obviously, InfoPath includes the built-in ability to use SharePoint lists as data sources, but is limited to the default, sorted-by-ID view of the List. If you wanted to sort or filter the items, especially from a browser-enabled form, then you're out of luck unless you use Web Services.&lt;br /&gt;&lt;br /&gt;Why won't InfoPath work with SharePoint Web Services? It comes down to the fact that InfoPath doesn't recognize that some web services, such as Lists.asmx's GetListItems requires strings (which InfoPath handles just fine) and XmlNodes (which InfoPath can't seem to figure out). If you try to use this web service as a data connection, you'll get error messages, such as &lt;span style="font-family:courier new;"&gt;"Root Element is Missing"&lt;/span&gt; or, if you try to add some XML code to one of the fields, you'll get &lt;span style="font-family:courier new;"&gt;"Element &amp;lt;Query&amp;gt; of parameter query is missing or invalid."&lt;/span&gt; &lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5080454437704998722" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp1.blogger.com/_BHn0G_ZPgRc/RoFmZMj2n0I/AAAAAAAAAAk/qseUryUqu8Y/s400/infopathwebservice1.png" border="0" /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;The solution? Create a Proxy Web Service that takes in strings representing the Xml code and create XmlNodes from them.&lt;br /&gt;&lt;br /&gt;Here's the code to create such as proxy:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;[WebMethod]&lt;br /&gt;public XmlNode GetListItems(string listName, string viewID, string query, string viewFields, string rowLimit, string queryOptions, string webID)&lt;br /&gt;{&lt;br /&gt;  // Create an instance of the SharePoint Lists Web Service&lt;br /&gt;  ListsWebService.Lists listService = GetListsServiceClient();&lt;br /&gt;  // Create the XmlNodes from the given innerXml strings&lt;br /&gt;  XmlNode queryElement = CreateNode("Query", query);&lt;br /&gt;  XmlNode viewFieldsElement = CreateNode("ViewFields", viewFields);&lt;br /&gt;  XmlNode queryOptionsElement = CreateNode("QueryOptions", queryOptions);&lt;br /&gt;  // Execute the SharePoint Lists Web Service&lt;br /&gt;  return listService.GetListItems(listName, viewID, queryElement, viewFieldsElement, rowLimit, queryOptionsElement, webID);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;private ListsWebService.Lists GetListsServiceClient()&lt;br /&gt;{&lt;br /&gt;  ListsWebService.Lists listService = new ListsWebService.Lists();&lt;br /&gt;  listService.Credentials = System.Net.CredentialCache.DefaultCredentials;&lt;br /&gt;  listService.Url = SPContext.Current.Web.Url + "/_vti_bin/Lists.asmx";&lt;br /&gt;  return listService;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;private XmlNode CreateNode(string name, string innerXml)&lt;br /&gt;{&lt;br /&gt;  XmlDocument xmlDoc = new XmlDocument();&lt;br /&gt;  XmlNode element = xmlDoc.CreateElement(name);&lt;br /&gt;  element.InnerXml = innerXml;&lt;br /&gt;  return element;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Just create a new web service with this information and follow the instructions on the proper deployment procedures in the &lt;a href="http://msdn2.microsoft.com/en-us/library/ms441339.aspx"&gt;WSS 3.0 SDK&lt;/a&gt; article &lt;a href="http://msdn2.microsoft.com/en-us/library/ms464040.aspx"&gt;Walkthrough: Creating a Custom Web Service&lt;/a&gt;. The facade method above has essentially the same method signature as the Lists.asmx web service, except that instead of XmlNode being the input types, strings are the input types.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3772419039196565227-3007216987160699577?l=wssdev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wssdev.blogspot.com/feeds/3007216987160699577/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3772419039196565227&amp;postID=3007216987160699577' title='13 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3772419039196565227/posts/default/3007216987160699577'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3772419039196565227/posts/default/3007216987160699577'/><link rel='alternate' type='text/html' href='http://wssdev.blogspot.com/2007/06/infopath-use-sharepoint-web-services.html' title='InfoPath: Use SharePoint Web Services'/><author><name>bjabram</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp1.blogger.com/_BHn0G_ZPgRc/RoFmZMj2n0I/AAAAAAAAAAk/qseUryUqu8Y/s72-c/infopathwebservice1.png' height='72' width='72'/><thr:total>13</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3772419039196565227.post-3998288482041428585</id><published>2007-06-21T10:45:00.000-04:00</published><updated>2007-06-21T11:10:53.376-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SharePoint Designer'/><title type='text'>SharePoint Designer: Use Data Sources by List Name</title><content type='html'>&lt;p&gt;By default, SharePoint Designer create a SPDataSource using &amp;lt;asp:parameter&amp;gt; controls. The fallback of these controls is that it references Lists (and Document Libraries) by the ID of the respective list. If you ever delete the list and recreate it with the same name, you'd have to find the new ID and change it in the SPDataSource.&lt;/p&gt;&lt;p&gt;An alternative is to replace the &amp;lt;asp:parameter&amp;gt; with a &amp;lt;webpartpages:dataformparameter&amp;gt; that can use the ListName instead. Note that the Display Name is used -- if you have a list with a static name of "MyList", but changed its appearance to "My List", either in SharePoint or SharePoint Designer, then you'll reference the list as "My List". The same would go for using the Lists.asmx web service (although, oddly enough, column names are referenced by their original, static name).&lt;/p&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;SharePoint:SPDataSource runat="server" DataSourceMode="List" UseInternalName="true" selectcommand="&amp;amp;lt;View&amp;amp;gt;&amp;amp;lt;/View&amp;amp;gt;"&amp;gt;&lt;br /&gt;  &amp;lt;SelectParameters&amp;gt;&lt;br /&gt;    &amp;lt;WebPartPages:DataFormParameter Name="ListName" ParameterKey="ListName" PropertyName="ParameterValues" DefaultValue="ISDA" /&amp;gt;&lt;br /&gt;  &amp;lt;/SelectParameters&amp;gt;&lt;br /&gt;&amp;lt;/SharePoint:SPDataSource&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;p&gt;It also creates SelectParameters, UpdateParameters, InsertParameters, and DeleteParameters by default; if you're only displaying data, then you can safely remove the other three.&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;I'm interested in how the selectcommand works in the SPDataSource. I'd be interested to see if any CAML can be used in it properly to filter the source data.&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3772419039196565227-3998288482041428585?l=wssdev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wssdev.blogspot.com/feeds/3998288482041428585/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3772419039196565227&amp;postID=3998288482041428585' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3772419039196565227/posts/default/3998288482041428585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3772419039196565227/posts/default/3998288482041428585'/><link rel='alternate' type='text/html' href='http://wssdev.blogspot.com/2007/06/sharepoint-designer-use-data-sources-by.html' title='SharePoint Designer: Use Data Sources by List Name'/><author><name>bjabram</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3772419039196565227.post-1525115047317628087</id><published>2007-06-20T14:40:00.001-04:00</published><updated>2007-06-21T11:11:50.504-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='InfoPath'/><title type='text'>InfoPath: Remove Validation Popup Windows</title><content type='html'>&lt;div&gt;&lt;div&gt;One of the most requested features of InfoPath is to remove the annoying popup boxes on required fields. The main reason for the frustration is there's no way to turn off these popup boxes and, often, they are rendered on top of other controls.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;You can customize the validation message to trick InfoPath in displaying nothing. If you try to do this through InfoPath's designer, it will require a message. So, like most InfoPath tricks, we'll have to go to the source.&lt;br /&gt;&lt;/div&gt;&lt;div&gt;For each control that you would want to remove the validation popup message, you'll need to clear the "Cannot be blank" property and add a custom validation rule. Note that I've added $$$$$ as the message (you'll see why below).&lt;/div&gt;&lt;img id="BLOGGER_PHOTO_ID_5078220565444631170" style="DISPLAY: block; MARGIN: 0px auto 10px; CURSOR: hand; TEXT-ALIGN: center" alt="" src="http://bp2.blogger.com/_BHn0G_ZPgRc/Rnl2st5pGoI/AAAAAAAAAAU/pwKL2uN4guU/s400/infopath1.png" border="0" /&gt; &lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Next, save your InfoPath template as Source Files (which I use for all my InfoPath templates). Then open the manifest.xml file in your favorite text editor (&lt;a href="http://notepad-plus.sourceforge.net/"&gt;Notepad++&lt;/a&gt; is my favorite). Find the &lt;?xml:namespace prefix = xsf /&gt;&lt;xsf:customvalidation&gt;node, which contains a collection of &lt;xsf:errorcondition&gt;fields.  Find the errorMessage that corresponds to what you just added.  Alternatively, you can just search for $$$$$ to find it.&lt;/xsf:errorcondition&gt;&lt;/xsf:customvalidation&gt;&lt;/div&gt;&lt;div&gt;&lt;xsf:customvalidation&gt;&lt;xsf:errorcondition&gt;&lt;/xsf:errorcondition&gt;&lt;/xsf:customvalidation&gt; &lt;/div&gt;&lt;div&gt;&lt;xsf:customvalidation&gt;&lt;xsf:errorcondition&gt;The fix: Erase the shortMessage (shortMessage="") and add text ("Cannot be blank" is my recommendation) to the errorMessage as its element.&lt;/xsf:errorcondition&gt;&lt;/xsf:customvalidation&gt;&lt;/div&gt;&lt;div&gt;&lt;xsf:customvalidation&gt;&lt;xsf:errorcondition&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;xsf:errormessage type="modeless" shortmessage=""&gt;Cannot be blank&lt;/xsf:errorMessage&gt;&lt;/span&gt;&lt;/xsf:errorcondition&gt;&lt;/xsf:customvalidation&gt;&lt;/div&gt;&lt;div&gt;&lt;xsf:customvalidation&gt;&lt;xsf:errorcondition&gt;&lt;/xsf:errorcondition&gt;&lt;/xsf:customvalidation&gt; &lt;/div&gt;&lt;div&gt;&lt;xsf:customvalidation&gt;&lt;xsf:errorcondition&gt;&lt;span &gt;Follow these steps for all your controls.  You can change the control's Required properties and validation messages one by one, then edit the maniest at the very end.  Doing a quick search/replace for $$$$$ will speed up the steps.&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/xsf:errorcondition&gt;&lt;/xsf:customvalidation&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3772419039196565227-1525115047317628087?l=wssdev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wssdev.blogspot.com/feeds/1525115047317628087/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3772419039196565227&amp;postID=1525115047317628087' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3772419039196565227/posts/default/1525115047317628087'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3772419039196565227/posts/default/1525115047317628087'/><link rel='alternate' type='text/html' href='http://wssdev.blogspot.com/2007/06/infopath-remove-validation-popup.html' title='InfoPath: Remove Validation Popup Windows'/><author><name>bjabram</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp2.blogger.com/_BHn0G_ZPgRc/Rnl2st5pGoI/AAAAAAAAAAU/pwKL2uN4guU/s72-c/infopath1.png' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3772419039196565227.post-3433746187838881240</id><published>2007-06-20T14:16:00.000-04:00</published><updated>2007-06-20T14:39:59.147-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='InfoPath'/><title type='text'>InfoPath: Conditionally Format a Hyperlink</title><content type='html'>So here's the scenario: the user is presented with an InfoPath form with a dropdown menu. The menu is populated by a SharePoint list. When the user chooses an item, a hyperlink appears allowing the user to navigate directly to the item's display page. The dropdown menu should have the ID stored as the code and anything (Title, most likely) for display.&lt;br /&gt;&lt;br /&gt;Nearly all the controls in InfoPath have the ability to be conditionally formatted. My personal favorite is to hide controls based on events or data in the current page. Unfortunately, Hyperlinks don't have this ability.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;To conditionally format a hyperlink using sections&lt;/strong&gt;:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Create a new section and size it as needed&lt;/li&gt;&lt;li&gt;Create a hyperlink within the section&lt;/li&gt;&lt;li&gt;Set the DataSource of the hyperlink to be the following:&lt;br /&gt;concat("http://&lt;em&gt;servername&lt;/em&gt;/&lt;em&gt;subsites&lt;/em&gt;/Lists/&lt;em&gt;listname&lt;/em&gt;/DispItem.aspx?ID=", &lt;em&gt;element&lt;/em&gt;)&lt;/li&gt;&lt;li&gt;Set the Display of the hyperlink to be something useful ("Open" comes to mind)&lt;/li&gt;&lt;li&gt;Set the conditional formatting to hide the control whenever the dropdown list's data source element is blank&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Because the section is rendered as a block-level DIV element, it creates a new line and pretty much position itself. In some situation you way want to position it yourself without relying on the section to do it for you. One situation would be to position it immediately after the dropdown list on the same line. You could do this with a table, but you're then relying on the table's column sizes to determine where the Open link goes.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;To conditionally format a hyperlink directly without using a section:&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Create a hyperlink wherever you want it&lt;/li&gt;&lt;li&gt;Set the DataSource of the hyperlink to be the following:&lt;br /&gt;concat("http://&lt;em&gt;servername&lt;/em&gt;/&lt;em&gt;subsites&lt;/em&gt;/Lists/&lt;em&gt;listname&lt;/em&gt;/DispItem.aspx?ID=", &lt;em&gt;my:element&lt;/em&gt;)&lt;/li&gt;&lt;li&gt;Set the Display of the hyperlink to be the following:&lt;br /&gt;substring("Open", 0, number(&lt;em&gt;my:element&lt;/em&gt; * 5))&lt;br /&gt;where 5 is one more than the length of the text that you want to display&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The substring function will multiply the value of the element by this length to retrieve the number of characters to parse the substring by. Because the blank value is determined to be zero, substring (text, 0, 0) will yield a blank string and won't be rendered as a link. Otherwise, the ID of the item (it's minimum is one), multipled by this value, will render the link correctly.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3772419039196565227-3433746187838881240?l=wssdev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wssdev.blogspot.com/feeds/3433746187838881240/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3772419039196565227&amp;postID=3433746187838881240' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3772419039196565227/posts/default/3433746187838881240'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3772419039196565227/posts/default/3433746187838881240'/><link rel='alternate' type='text/html' href='http://wssdev.blogspot.com/2007/06/infopath-conditionally-format-hyperlink.html' title='InfoPath: Conditionally Format a Hyperlink'/><author><name>bjabram</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-3772419039196565227.post-2692879603050679413</id><published>2007-06-20T13:34:00.000-04:00</published><updated>2007-06-20T13:35:12.663-04:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Announcements'/><title type='text'>Welcome</title><content type='html'>Welcome to my SharePoint Development. I've been working with both SharePoint, SharePoint Designer, and InfoPath for a while now and have stumbled upon a number of useful tips and tricks along the way. I'm using this to offer help to the SharePoint community, as well as try to keep track of my own thoughts.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/3772419039196565227-2692879603050679413?l=wssdev.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://wssdev.blogspot.com/feeds/2692879603050679413/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=3772419039196565227&amp;postID=2692879603050679413' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/3772419039196565227/posts/default/2692879603050679413'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/3772419039196565227/posts/default/2692879603050679413'/><link rel='alternate' type='text/html' href='http://wssdev.blogspot.com/2007/06/welcome.html' title='Welcome'/><author><name>bjabram</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
