<?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-19461197</id><updated>2012-01-29T18:09:13.641+01:00</updated><category term='InfoPath 2003'/><category term='Customizing'/><category term='FormError'/><category term='Visual Studio'/><category term='Visual SourceSafe 2005'/><category term='Export'/><category term='FormErrorCollection'/><category term='eBooks'/><category term='Collegues'/><category term='books'/><category term='Code Analysis'/><category term='Microsoft Sharepoint Portal Server 2007'/><category term='SQL Server 2000'/><category term='Errors'/><category term='Visual Studio 2005'/><category term='Security'/><category term='Oracle'/><category term='Outlook Express'/><category term='Enabling search'/><category term='VSTO'/><category term='Errors.Delete'/><category term='configuration'/><category term='Tablet PC'/><category term='InfoPath 2007'/><category term='Drawing'/><category term='FxCop'/><category term='UserControls'/><category term='technical documentation'/><category term='Errors property'/><category term='Paint'/><category term='Office 2007'/><category term='Blogs'/><category term='Windows Sharepoint Services 3.0'/><category term='Articles'/><category term='VSTA'/><category term='InfoPath Form Services 2007'/><category term='Workflow Foundation'/><category term='Mobile'/><category term='Windows Vista'/><category term='MySQL'/><category term='Task Pane'/><category term='Object Model 2007'/><category term='PDF'/><category term='Certification'/><category term='Web Services'/><category term='File Attachment'/><category term='Windows Mail'/><category term='deployment'/><category term='Controls'/><category term='SQL Server 2005'/><category term='Buttons'/><category term='.NET 3.0'/><category term='XML'/><category term='Word'/><category term='Errors.Add'/><category term='Templates'/><category term='publishing'/><category term='C#'/><category term='Synchronization'/><category term='Microsoft Sharepoint Portal Server 2003'/><category term='Windows Sharepoint Services 2.0'/><category term='HTML'/><category term='Conditional Formatting'/><category term='Free'/><category term='Customizing XSL'/><category term='JavaScript'/><category term='open source projects'/><category term='iFilter'/><category term='Personal Files'/><category term='Managed Code'/><category term='Licence Keys'/><category term='Excel'/><title type='text'>Kristof De Causemaeker - Information Worker</title><subtitle type='html'>The blog about .NET, Sharepoint, Office</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://spsfactory.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://spsfactory.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Kristof De Causemaeker</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/5073/1926/1600/profile_spsfactory.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>51</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-19461197.post-5283221321738630709</id><published>2008-03-16T18:43:00.002+01:00</published><updated>2008-12-09T02:58:39.852+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Certification'/><title type='text'>Technology specialist in Windows &amp; Web applications</title><content type='html'>&lt;a href="http://1.bp.blogspot.com/_oxIos6CmEaU/R91diplrM_I/AAAAAAAAAFE/TigGpdCEsDQ/s1600-h/MCTS(rgb)_513_512.gif"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_oxIos6CmEaU/R91diplrM_I/AAAAAAAAAFE/TigGpdCEsDQ/s320/MCTS(rgb)_513_512.gif" border="0" alt=""id="BLOGGER_PHOTO_ID_5178397996406748146" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Last week I passed &lt;a href="http://www.microsoft.com/learning/mcp/mcts/winapps/"&gt;Exam 070-526 - Microsoft.NET Framework 2.0 - Windows-based applications&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Now I'm a Microsoft Certified Technology Specialist for .NET framework 2.0 &lt;a href="http://www.microsoft.com/learning/mcp/mcts/webapps/"&gt;Web&lt;/a&gt; and &lt;a href="http://www.microsoft.com/learning/mcp/mcts/winapps/"&gt;Windows&lt;/a&gt; applications&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19461197-5283221321738630709?l=spsfactory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spsfactory.blogspot.com/feeds/5283221321738630709/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19461197&amp;postID=5283221321738630709&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/5283221321738630709'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/5283221321738630709'/><link rel='alternate' type='text/html' href='http://spsfactory.blogspot.com/2008/03/technology-specialist-in-windows-web.html' title='Technology specialist in Windows &amp; Web applications'/><author><name>Kristof De Causemaeker</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/5073/1926/1600/profile_spsfactory.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_oxIos6CmEaU/R91diplrM_I/AAAAAAAAAFE/TigGpdCEsDQ/s72-c/MCTS(rgb)_513_512.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19461197.post-551230046975070660</id><published>2008-02-21T20:07:00.002+01:00</published><updated>2008-02-21T20:09:46.752+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows Mail'/><category scheme='http://www.blogger.com/atom/ns#' term='Outlook Express'/><title type='text'>Outlook Express: Exceeding the maximum mailbox size</title><content type='html'>A small tip for Outlook Express users:&lt;br /&gt;&lt;br /&gt;Few days ago I found out that Outlook does not warn us (with a suitable error message) when one of its archive maps (*.DBX file) is too big. In fact Outlook Express has an archive map per folder (inbox, outbox, sent items, ...).&lt;br /&gt;&lt;br /&gt;For example: At the moment that 'Postvak IN.DBX' is too big (&gt; 2Gb), Outlook Express will try to connect to the mail server, but returns a hexadecimal error which tell us that Outlook Express cannot connect to the server. &lt;br /&gt;&lt;br /&gt;So, outlook express users, &lt;b&gt;keep each folder in your OE mailbox smaller than 2 Gigs&lt;/b&gt;. Attention, if your inbox folder is too big, it is still possible to send mails when the 'OUTBOX.DBX' and 'Sent items' file is smaller than 2 Gigs!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;No problems for Windows Vista users&lt;/b&gt;. In Vista you do not have Outlook Express, but Windows Mail. The new mail client stores its mails as files (*.eml) and not as database files. Don't think you can store the whole world in your mailbox, because all those mail files are stored in your windows profile folder!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19461197-551230046975070660?l=spsfactory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spsfactory.blogspot.com/feeds/551230046975070660/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19461197&amp;postID=551230046975070660&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/551230046975070660'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/551230046975070660'/><link rel='alternate' type='text/html' href='http://spsfactory.blogspot.com/2008/02/outlook-express-exceeding-maximum.html' title='Outlook Express: Exceeding the maximum mailbox size'/><author><name>Kristof De Causemaeker</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/5073/1926/1600/profile_spsfactory.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19461197.post-6621844048627636406</id><published>2008-01-01T13:00:00.000+01:00</published><updated>2008-01-01T13:06:50.678+01:00</updated><title type='text'>Happy blogging in 2008!</title><content type='html'>&lt;a href="http://www.trevorromain.com/blog/archives/happy-new-year05.jpg"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 220px;" src="http://www.trevorromain.com/blog/archives/happy-new-year05.jpg" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;Happy blogging in 2008!&lt;br /&gt;&lt;br /&gt;May all your dreams come true!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19461197-6621844048627636406?l=spsfactory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spsfactory.blogspot.com/feeds/6621844048627636406/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19461197&amp;postID=6621844048627636406&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/6621844048627636406'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/6621844048627636406'/><link rel='alternate' type='text/html' href='http://spsfactory.blogspot.com/2008/01/happy-blogging-in-2008.html' title='Happy blogging in 2008!'/><author><name>Kristof De Causemaeker</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/5073/1926/1600/profile_spsfactory.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19461197.post-2790870739863481091</id><published>2007-12-26T19:25:00.000+01:00</published><updated>2007-12-26T19:32:44.337+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Synchronization'/><title type='text'>Microsoft Sync Framework CTP</title><content type='html'>Microsoft has released the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=35E8F16E-AAA4-4919-8B3C-1CE4EA1F6552&amp;displaylang=en"&gt;Microsoft Sync Framework CTP 1&lt;/a&gt; few weeks ago. &lt;br /&gt;With the MS Sync Framework you can easily synchronize any application, any type of data, using any protocol over any network.&lt;br /&gt;&lt;br /&gt;The steps below explains how you to synchronize a folder. In fact, you can use the following example to create a backup of a certain folder:&lt;br /&gt;&lt;br /&gt;//Start method&lt;br /&gt;public void Backup()&lt;br /&gt;{&lt;br /&gt;&lt;strong&gt;/*1. Create or retrieve SyncId file (a Sync Id file contains a GUID to uniquely identify each folder*/&lt;/strong&gt;&lt;br /&gt;SyncId sourceSyncId = GetSyncId(Path.Combine(sourcePath, idFileName));&lt;br /&gt;SyncId destinationSyncId = GetSyncId(Path.Combine(destinationPath,idFileName));&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;/* Adding synchronization options */&lt;/strong&gt;&lt;br /&gt;FileSyncOptions options = FileSyncOptions.ExplicitDetectChanges | FileSyncOptions.RecycleDeletes;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;/* Adding synchronization filters: do not synchronize/backup the SyncId file.*/&lt;/strong&gt;&lt;br /&gt;FileSyncScopeFilter filter = new FileSyncScopeFilter();&lt;br /&gt;filter.FileNameExcludes.Add(idFileName); // Exclude the generated SyncId file&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;/* Detect synchronization changes.*/&lt;/strong&gt;&lt;br /&gt;DetectChanges(sourceSyncId, sourcePath, filter, options);&lt;br /&gt;DetectChanges(destinationSyncId, destinationPath, filter, options);&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;/* Synchronize (backup) source to destinationfolder*/&lt;/strong&gt;&lt;br /&gt;SyncFiles(sourceSyncId, destinationSyncId, sourcePath, destinationPath, filter, options);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;In the Backup() method we used following supporting methods:&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;        &lt;strong&gt;private void DetectChanges(SyncId syncId, string path, FileSyncScopeFilter filter, FileSyncOptions options)&lt;br /&gt;        {&lt;/strong&gt;&lt;br /&gt;            using (FileSyncProvider provider = new FileSyncProvider(syncId, path, filter, options))&lt;br /&gt;            {&lt;br /&gt;                provider.DetectChanges();&lt;br /&gt;            }&lt;br /&gt;        &lt;strong&gt;}&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;        &lt;strong&gt;private void SyncFiles(SyncId sourceSyncId, SyncId destinationSyncId, string sourcePath, string destinationPath, FileSyncScopeFilter filter, FileSyncOptions options)&lt;br /&gt;        {&lt;/strong&gt;&lt;br /&gt;            using (FileSyncProvider sourceProvider = new FileSyncProvider(sourceSyncId, sourcePath, filter, options))&lt;br /&gt;            using (FileSyncProvider destinationProvider = new FileSyncProvider(destinationSyncId, destinationPath, filter, options))&lt;br /&gt;            {&lt;br /&gt;                //Create SyncAgent&lt;br /&gt;                SyncAgent agent = new SyncAgent();&lt;br /&gt;                agent.LocalProvider = sourceProvider;&lt;br /&gt;                agent.RemoteProvider = destinationProvider;&lt;br /&gt;&lt;br /&gt;                //Upload = Synchronize files from LocalProvider to RemoteProvider&lt;br /&gt;                agent.Direction = SyncDirection.Upload;&lt;br /&gt;&lt;br /&gt;                //Synchronize!&lt;br /&gt;                agent.Synchronize();&lt;br /&gt;            }&lt;br /&gt;        &lt;strong&gt;}&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;        &lt;strong&gt;private SyncId GetSyncId(string idFilePath)&lt;br /&gt;        {&lt;/strong&gt;&lt;br /&gt;            SyncId replicaId = null;&lt;br /&gt;&lt;br /&gt;            //Try to read existing ReplicaID&lt;br /&gt;            if (File.Exists(idFilePath))&lt;br /&gt;            {&lt;br /&gt;                using (StreamReader sr = File.OpenText(idFilePath))&lt;br /&gt;                {&lt;br /&gt;                    string strGuid = sr.ReadLine();&lt;br /&gt;                    if (!string.IsNullOrEmpty(strGuid))&lt;br /&gt;                    {&lt;br /&gt;                        replicaId = new SyncId(new Guid(strGuid));&lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;            //If not exist, Create ReplicaID file&lt;br /&gt;            if (replicaId == null)&lt;br /&gt;            {&lt;br /&gt;                using (FileStream idFile = File.Open(idFilePath, FileMode.OpenOrCreate, FileAccess.ReadWrite))&lt;br /&gt;                {&lt;br /&gt;                    using (StreamWriter sw = new StreamWriter(idFile))&lt;br /&gt;                    {&lt;br /&gt;                        replicaId = new SyncId(Guid.NewGuid());&lt;br /&gt;                        sw.WriteLine(replicaId.GetGuidId().ToString("D"));&lt;br /&gt;                    }&lt;br /&gt;                }&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;            return replicaId;&lt;br /&gt;        &lt;strong&gt;}&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Resources&lt;/b&gt;&lt;br /&gt;&lt;li&gt;Click &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=35E8F16E-AAA4-4919-8B3C-1CE4EA1F6552&amp;displaylang=en"&gt;here&lt;/a&gt; to download the MS Sync Framework CTP 1.&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://msdn2.microsoft.com/en-us/sync/default.aspx"&gt;Sync framework Development Center&lt;/a&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;a href="http://blogs.msdn.com/sync/archive/2007/12/05/welcome-to-the-microsoft-sync-framework-blog.aspx"&gt;Sync framework Blog&lt;/a&gt;&lt;/li&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19461197-2790870739863481091?l=spsfactory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spsfactory.blogspot.com/feeds/2790870739863481091/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19461197&amp;postID=2790870739863481091&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/2790870739863481091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/2790870739863481091'/><link rel='alternate' type='text/html' href='http://spsfactory.blogspot.com/2007/12/microsoft-sync-framework-ctp.html' title='Microsoft Sync Framework CTP'/><author><name>Kristof De Causemaeker</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/5073/1926/1600/profile_spsfactory.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19461197.post-7498142701212640727</id><published>2007-12-22T14:38:00.000+01:00</published><updated>2008-12-09T02:58:40.580+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='deployment'/><category scheme='http://www.blogger.com/atom/ns#' term='XML'/><category scheme='http://www.blogger.com/atom/ns#' term='open source projects'/><title type='text'>Integrated WiX support in SharpDevelop</title><content type='html'>&lt;a href="http://wix.sourceforge.net/imgs/logo.gif"&gt;&lt;img style="float:left; margin:0 10px 10px 0;cursor:pointer; cursor:hand;width: 100px;" src="http://wix.sourceforge.net/imgs/logo.gif" border="0" alt="" /&gt;&lt;/a&gt;&lt;br /&gt;In fact, WiX is the Open source toolset which generates Windows Installation packages or MSI files. WiX provides command line tools to build MSI packages. &lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;a href="en.wikipedia.org/wiki/WiX"&gt;Wikipedia&lt;/a&gt; describes the WiX toolset as follows:&lt;br/&gt;&lt;br /&gt;&lt;i&gt;The Windows Installer XML toolset (WiX), pronounced "wicks", is a free, open-source toolset that builds Windows Installer (MSI) packages from an XML document. It supports a command-line environment that developers may integrate into their build processes to build MSI and MSM setup packages. ...&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;The developer has to create an xml file with .Wxs extension. This file contains all files, folders, registry keys, SQL databases, IIS directories, users, shortcuts, … which must be included in the installation. Creating the .Wxs file is not that easy. Currently, there is no user-friendly application to create this file. There is already an Open Source project, called &lt;a href=”http://wixgui.sourceforge.net/“&gt;WixGUI&lt;/a&gt;, but they haven’t released anything yet ...&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;h4&gt;Compilation process&lt;/h4&gt;&lt;br /&gt;To build our MSI file with WiX, we need 2 executables: Candle.exe &amp; Light.exe. &lt;br /&gt;1.&lt;b&gt;Candle&lt;/b&gt; compiles the .Wxs file into a .WixObj file. (intermediary xml file)&lt;br /&gt;2.&lt;b&gt;Light&lt;/b&gt; transforms the .WixObj into the final MSI package&lt;br /&gt;&lt;br /&gt;&lt;u&gt;You can create your own batch file with following commands:&lt;/u&gt;&lt;br /&gt;candle Test.wxs&lt;br /&gt;light.exe -out Test.msi Test.wixobj&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Sharp Developer&lt;/h4&gt; &lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_oxIos6CmEaU/R20UJA-kdAI/AAAAAAAAAEQ/Wt5DBaPVGf4/s1600-h/New+Picture.bmp"&gt;&lt;img style="float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;" src="http://4.bp.blogspot.com/_oxIos6CmEaU/R20UJA-kdAI/AAAAAAAAAEQ/Wt5DBaPVGf4/s200/New+Picture.bmp" border="0" alt=""id="BLOGGER_PHOTO_ID_5146792094268158978" /&gt;&lt;/a&gt;&lt;br /&gt;Did you ever heard about SharpDevelop? &lt;a href="http://sourceforge.net/projects/sharpdevelop/"&gt;SharpDevelop&lt;/a&gt; is the Open Source Integrated Development Environment in contrast to &lt;a href="http://www.visualstudio.com/"&gt;Visual Studio IDE&lt;/a&gt;. SharpDevelop has also integrated WiX support. You can visually create your .Wxs file. You can also design custom installation dialogs and watching the result before executing the installation package. By pressing F5 (alias ‘Build solution’) the Candle and Light executables are automatically executed. So by building your solution, your MSI file will be created automatically!&lt;br /&gt;&lt;br /&gt;SharpDevelop has Setup projects which has built-in WiX support:&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_oxIos6CmEaU/R20VPQ-kdDI/AAAAAAAAAEo/5OynSgV50Vs/s1600-h/IntegratedProjects.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://1.bp.blogspot.com/_oxIos6CmEaU/R20VPQ-kdDI/AAAAAAAAAEo/5OynSgV50Vs/s320/IntegratedProjects.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5146793301153969202" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In the Setup project you have a tree-structure with all files, directories, components, ... which can be added visually.&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_oxIos6CmEaU/R20Vxw-kdEI/AAAAAAAAAEw/TwWm8QiE1Kk/s1600-h/Support2.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://3.bp.blogspot.com/_oxIos6CmEaU/R20Vxw-kdEI/AAAAAAAAAEw/TwWm8QiE1Kk/s320/Support2.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5146793893859456066" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;You can also view the resulting customized installation dialogs, without executing the installation package:&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_oxIos6CmEaU/R20Wfg-kdFI/AAAAAAAAAE4/ZbDMpYrHl5w/s1600-h/Support1.jpg"&gt;&lt;img style="cursor:pointer; cursor:hand;" src="http://2.bp.blogspot.com/_oxIos6CmEaU/R20Wfg-kdFI/AAAAAAAAAE4/ZbDMpYrHl5w/s320/Support1.jpg" border="0" alt=""id="BLOGGER_PHOTO_ID_5146794679838471250" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;Remarks&lt;/h4&gt;&lt;br /&gt;There is also a project, called &lt;a href=” http://wix.sourceforge.net/votive.html”&gt;Votive&lt;/a&gt;, which provides WiX support for Visual Studio .NET/2005/2008. This integration allows you to have intelliSense in the Wxs file, but you cannot create files, directories, etc… visually!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h4&gt;References&lt;/h4&gt;&lt;br /&gt;&lt;a href=”http://community.sharpdevelop.net”&gt;SharpDevelop Community&lt;/a&gt;&lt;br /&gt;&lt;a href=” http://www.tramontana.co.hu/wix”&gt;WiX online tutorials &lt;/a&gt;&lt;br /&gt;&lt;a href=” http://community.sharpdevelop.net/blogs/mattward/archive/2006/09/17/WixIntegration.aspx”&gt;Article on SharpDevelop and integrated WiX support&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19461197-7498142701212640727?l=spsfactory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spsfactory.blogspot.com/feeds/7498142701212640727/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19461197&amp;postID=7498142701212640727&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/7498142701212640727'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/7498142701212640727'/><link rel='alternate' type='text/html' href='http://spsfactory.blogspot.com/2007/12/integrated-wix-support-in-sharpdevelop.html' title='Integrated WiX support in SharpDevelop'/><author><name>Kristof De Causemaeker</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/5073/1926/1600/profile_spsfactory.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_oxIos6CmEaU/R20UJA-kdAI/AAAAAAAAAEQ/Wt5DBaPVGf4/s72-c/New+Picture.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19461197.post-5629630424474943366</id><published>2007-11-27T21:14:00.000+01:00</published><updated>2007-11-29T18:29:17.881+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Blogs'/><title type='text'>Syntax formatters for blogs</title><content type='html'>Do you prefer an online code formatter for blogs? click &lt;a href="http://www.ejeliot.com/tools/code-formatter/?tab=input"&gt;here&lt;/a&gt; to use the Ejeliot Code Formatter&lt;br /&gt;&lt;br /&gt;Alternative: &lt;a href="http://blog.offbeatmammal.com/post/2006/08/Syntax-Highlighting-for-Windows-Live-Writer.aspx"&gt;Syntax Highlighting&lt;/a&gt; for &lt;a href="http://writer.live.com/"&gt;Windows Live Writer&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Check also the 10 tips for Windows Live Writer on &lt;a href="http://devintelligence.com/blogs/netadventures/archive/2007/10/05/10-plugins-for-windows-live-writer.aspx"&gt;this website&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19461197-5629630424474943366?l=spsfactory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spsfactory.blogspot.com/feeds/5629630424474943366/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19461197&amp;postID=5629630424474943366&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/5629630424474943366'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/5629630424474943366'/><link rel='alternate' type='text/html' href='http://spsfactory.blogspot.com/2007/11/syntax-formatters-for-blogs.html' title='Syntax formatters for blogs'/><author><name>Kristof De Causemaeker</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/5073/1926/1600/profile_spsfactory.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19461197.post-4699331230872772145</id><published>2007-11-26T20:48:00.000+01:00</published><updated>2007-11-27T19:29:52.644+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='Tablet PC'/><category scheme='http://www.blogger.com/atom/ns#' term='Paint'/><category scheme='http://www.blogger.com/atom/ns#' term='Drawing'/><title type='text'>Creating drawings on Mobile devices</title><content type='html'>I am currently developing a mobile application for my customer. In that application the customer wants to create and modify pictures/drawings. Those pictures must be stored in a database as binary data.&lt;br /&gt; &lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Possible solutions&lt;/strong&gt;&lt;br /&gt;There are two possible solutions:&lt;br /&gt;&lt;li&gt;Using the Microsoft Ink controls &lt;/li&gt;&lt;br /&gt;&lt;li&gt;Implementing a custom paint&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;&lt;strong&gt;Using the Microsoft Ink conrols&lt;/strong&gt;&lt;br /&gt;The Microsoft Ink controls are not included in the .NET framework. You must download the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=84BBEFA4-7047-41DF-8583-E3BDBF9D805F&amp;displaylang=en"&gt;Microsoft Windows XP Tablet PC Edition Software Development Kit 1.7&lt;/a&gt; to use the Microsoft.Ink namspace. After installation the Microsoft.Ink library will be installed in the GAC.&lt;br /&gt;&lt;br /&gt;The Ink controls are especially developed for Tablet PCs. In fact the Ink controls provides a wrapper class around a COM component. &lt;br /&gt;&lt;br /&gt; &lt;br /&gt;The namespace contains 4 Ink controls:&lt;br /&gt;&lt;li&gt;InkEdit&lt;/li&gt; &lt;br /&gt;&lt;li&gt;InkPicture&lt;/li&gt; &lt;br /&gt;&lt;li&gt;InkCollector&lt;/li&gt; &lt;br /&gt;&lt;li&gt;InkOverlay&lt;/li&gt; &lt;br /&gt;&lt;br /&gt;In our project, we are using the InkCollector to create and modify drawings. It is not necessary to use the Ink controls for text recognition. In fact it is also an out-of-the-box drawing surface to generate images.&lt;br /&gt;&lt;br /&gt; &lt;br /&gt;We can store the drawings created by the Ink controls in:&lt;br /&gt;&lt;li&gt;ISF (Ink Serialized Format)&lt;/li&gt; &lt;br /&gt;&lt;li&gt;Fortified Gif image (regular Gif + metadata in ISF) &lt;/li&gt;&lt;br /&gt;&lt;li&gt;HTML (with Base64-encoded fortified gif)&lt;/li&gt; &lt;br /&gt;&lt;li&gt;Xml (with Base64-encoded ISF)&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;When you need to modify the stored files, you must use a ISF/Xml file or Fortified gif image. &lt;br /&gt;&lt;br /&gt;You can save the Ink as fortified Gif or ISF/Xml file by calling the Save method on the Ink property of the ink control.&lt;br /&gt;&lt;br /&gt;byte[] fortifiedGif = anInkCollector.Ink.Save(PersistenceFormat.Gif)&lt;br /&gt;&lt;br /&gt;When it is not necessary to modify the images in the future, you can access the Renderer property on the Ink control to generate a picture in a .NET ImageFormat (Gif, jpg, Bmp, Png, ...)&lt;br /&gt;&lt;br /&gt;&lt;br/&gt;&lt;br /&gt;Click &lt;a href="http://msdn2.microsoft.com/en-US/library/microsoft.ink.aspx"&gt;here&lt;/a&gt; to learn more about the Microsoft.Ink namespace.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Custom Paint solution&lt;/strong&gt;&lt;br /&gt;In fact, it seems to be quite easy, but writing a good custom paint is not easy at all. I conduct the possibilities and I survived following problems:&lt;br /&gt;&lt;br /&gt;The more lines, points on the form, the more the form is flickering &lt;br /&gt;Drawing too fast, do not result in a solid line, but in a range of dots.&lt;br /&gt; &lt;br /&gt;The first problem can be easily resolved by a search on Google. (Code Project flicker-free drawing project). The second problem is tough!. In fact the MouseMove event does not fire for each movement an event. This result in a dotted line, not in a solid line ! We can use a Line-Drawing Algorithm, for example the 'Bresenham Line-Drawing algorithm.&lt;br /&gt;&lt;br /&gt;You can download the Phoenix Paint project (Open source project under BSD license), author: &lt;a href="http://grapefruitopia.com"&gt;http://grapefruitopia.com&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br /&gt;Both solutions provides a drawing tool. The Ink controls are specially created for Tablet PCs and uses the Ink Serialized Format to store drawings. On the other hand, the custom paint solution is more open. You determine the resolution, size, colors, format and compression.&lt;br /&gt;&lt;br /&gt;The choice is up 2 you !&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19461197-4699331230872772145?l=spsfactory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spsfactory.blogspot.com/feeds/4699331230872772145/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19461197&amp;postID=4699331230872772145&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/4699331230872772145'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/4699331230872772145'/><link rel='alternate' type='text/html' href='http://spsfactory.blogspot.com/2007/11/creating-drawings-on-mobile-devices.html' title='Creating drawings on Mobile devices'/><author><name>Kristof De Causemaeker</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/5073/1926/1600/profile_spsfactory.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19461197.post-5395152482865555812</id><published>2007-09-17T19:34:00.000+02:00</published><updated>2007-09-17T20:00:16.638+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='technical documentation'/><title type='text'>Using SandCastle with XpertBuildDoc</title><content type='html'>This weekend I read a nice about SandCastle &lt;a href="http://blogs.balliauw.be/blogs/maarten/archive/2007/08/28/automatically-generate-sandcastle-documentation-using-cruisecontrol-net-or-vsts-team-build.aspx"&gt;article&lt;/a&gt; of Maarten Balliauw.&lt;br /&gt;&lt;br /&gt;I also want to mention that besides the &lt;a href="http://www.codeplex.com/SHFB"&gt;SHFB&lt;/a&gt; project, we can also use the XpertBuildDoc add-in for Visual Studio 2005. Which is also free and is also integrated into Visual Studio 2005.&lt;br /&gt;&lt;br /&gt;You can download the add-in &lt;a href="http://www.xpertdoc.com/en/Download/XpertBuildDoc/XpertBuildDoc.zip"&gt;here&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;More information&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=E82EA71D-DA89-42EE-A715-696E3A4873B2&amp;displaylang=en"&gt;SandCastle June 2007 CTP&lt;/a&gt;&lt;br /&gt;&lt;a href="http://xpertdoc.com/en/Products/Default.aspx"&gt;XPertDoc products&lt;/a&gt;&lt;br /&gt;&lt;a href="http://forums.processacademy.ca/en/Default.aspx?g=topics&amp;f=27"&gt;XPertBuildDoc forums&lt;/a&gt;&lt;br /&gt;&lt;a href="http://francisdion.blogs.com/"&gt;Francis Dion's blog&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19461197-5395152482865555812?l=spsfactory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spsfactory.blogspot.com/feeds/5395152482865555812/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19461197&amp;postID=5395152482865555812&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/5395152482865555812'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/5395152482865555812'/><link rel='alternate' type='text/html' href='http://spsfactory.blogspot.com/2007/09/using-sandcastle-with-xpertbuilddoc.html' title='Using SandCastle with XpertBuildDoc'/><author><name>Kristof De Causemaeker</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/5073/1926/1600/profile_spsfactory.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19461197.post-1569050206486352829</id><published>2007-08-28T19:20:00.000+02:00</published><updated>2008-12-09T02:58:40.981+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Certification'/><title type='text'>Microsoft Certified Professional Developer: Web developer! (MCPD)</title><content type='html'>&lt;span style="font-family:verdana;font-size:78%;"&gt;Friday I passed the &lt;/span&gt;&lt;a href="http://www.microsoft.com/learning/exams/70-547.mspx"&gt;&lt;span style="font-family:verdana;font-size:78%;"&gt;PRO: Designing and Developing Web-Based Applications by Using the Microsoft .NET Framework&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;font-size:78%;"&gt; exam. (70-547 - Visual Studio 2005 credentials)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://4.bp.blogspot.com/_oxIos6CmEaU/RtRbitKPKlI/AAAAAAAAADo/yqnfxx_jY08/s1600-h/MCPD(rgb)_504.gif"&gt;&lt;span style="font-family:verdana;font-size:78%;"&gt;&lt;img id="BLOGGER_PHOTO_ID_5103804929513826898" style="CURSOR: hand" alt="" src="http://4.bp.blogspot.com/_oxIos6CmEaU/RtRbitKPKlI/AAAAAAAAADo/yqnfxx_jY08/s320/MCPD(rgb)_504.gif" border="0" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:verdana;font-size:78%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:verdana;font-size:78%;"&gt;Now I am a &lt;/span&gt;&lt;a href="http://www.microsoft.com/learning/mcp/mcpd"&gt;&lt;span style="font-family:verdana;font-size:78%;"&gt;Microsoft Certified Professional Web Developer&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;font-size:78%;"&gt;. (MCPD Web developer)&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:verdana;font-size:78%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19461197-1569050206486352829?l=spsfactory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spsfactory.blogspot.com/feeds/1569050206486352829/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19461197&amp;postID=1569050206486352829&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/1569050206486352829'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/1569050206486352829'/><link rel='alternate' type='text/html' href='http://spsfactory.blogspot.com/2007/08/microsoft-certified-professional.html' title='Microsoft Certified Professional Developer: Web developer! (MCPD)'/><author><name>Kristof De Causemaeker</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/5073/1926/1600/profile_spsfactory.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_oxIos6CmEaU/RtRbitKPKlI/AAAAAAAAADo/yqnfxx_jY08/s72-c/MCPD(rgb)_504.gif' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19461197.post-7551795843808432602</id><published>2007-08-07T21:09:00.000+02:00</published><updated>2007-08-07T21:13:38.356+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Office 2007'/><title type='text'></title><content type='html'>&lt;p&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;In this blog post I refers to the Microsoft SDK for Open XML Format to create Word documents with .NET code. Microsoft Office Word, Excel, PowerPoint2007 are using the Open XML format as file format. This format is based on ZIP and XML. The following example will help you to create Word documents programmatically.&lt;/span&gt;&lt;/p&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;&lt;p&gt;&lt;br /&gt;&lt;strong&gt;Guidelines&lt;/strong&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Add '\OpenXMLSDK\1.0.0531\lib\Microsoft.Office.DocumentFormat.OpenXml.dll' as reference to your Visual Studio project.&lt;/li&gt;&lt;li&gt;Add another reference to the WindowsBase dll of the .NET 3.0 framework.&lt;/li&gt;&lt;li&gt;Adding word document through the following code:&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;// How to: Create a new package as a Word document.&lt;/span&gt;&lt;br /&gt;public static void CreateNewWordDocument(string document)&lt;br /&gt;{&lt;br /&gt;using(WordprocessingDocument wordDoc = WordprocessingDocument.Create(document,WordprocessingDocumentType.Document))&lt;br /&gt;{&lt;br /&gt;&lt;span style="color:#009900;"&gt;// Set the content of the document so that Word can open it.&lt;/span&gt;&lt;br /&gt;MainDocumentPart mainPart = wordDoc.AddMainDocumentPart();&lt;br /&gt;SetMainDocumentContent(mainPart);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;// Set content of MainDocumentPart.&lt;/span&gt;&lt;br /&gt;public static void SetMainDocumentContent(MainDocumentPart part)&lt;br /&gt;{&lt;br /&gt;const string docXml = @"&lt;?xml version=""1.0"" encoding=""UTF-8"" standalone=""yes""?&gt; &lt;?xml:namespace prefix = w /&gt;&lt;w:document w=""&gt;&lt;w:body&gt;&lt;w:p&gt;&lt;w:r&gt;&lt;w:t&gt;Hello world!&lt;/w:t&gt;&lt;/w:r&gt;&lt;/w:p&gt;&lt;/w:body&gt;&lt;/w:document&gt;"&lt;br /&gt;&lt;br /&gt;using (Stream stream = part.GetStream())&lt;br /&gt;{&lt;br /&gt;byte[] buf = (new UTF8Encoding()).GetBytes(docXml);&lt;br /&gt;stream.Write(buf, 0, buf.Length);&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;strong&gt;&lt;/strong&gt;&lt;p&gt;&lt;strong&gt;Tips&lt;/strong&gt;&lt;br /&gt;To create Excel sheets, you can use the SpreadsheetDocument and to create Powerpoint presentations you can use the PresentationDocument&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Downloads&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;a href="http://www.microsoft.com/downloads/thankyou.aspx?f..." target="_blank"&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Microsoft SDK for Open XML Formats&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt; (Microsoft)&lt;br /&gt;&lt;/span&gt;&lt;a href="http://www.microsoft.com/downloads/thankyou.aspx?familyId=8d46c01f-e3f6-4069-869d-90b8b096b556&amp;amp;displayLang=en" target="_blank"&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Open XML File Format Code Snippets for Visual Studio 2005&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt; (Microsoft)&lt;br /&gt;&lt;/span&gt;&lt;a href="http://www.codeplex.com/ExcelPackage" target="_blank"&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Office Open XML Format file creation&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt; (CodePlex)&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19461197-7551795843808432602?l=spsfactory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spsfactory.blogspot.com/feeds/7551795843808432602/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19461197&amp;postID=7551795843808432602&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/7551795843808432602'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/7551795843808432602'/><link rel='alternate' type='text/html' href='http://spsfactory.blogspot.com/2007/08/in-this-blog-post-i-refers-to-microsoft.html' title=''/><author><name>Kristof De Causemaeker</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/5073/1926/1600/profile_spsfactory.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19461197.post-881955167003133647</id><published>2007-07-27T07:00:00.000+02:00</published><updated>2007-07-27T09:18:11.999+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio'/><title type='text'>Visual Studio 2008 beta 2 released</title><content type='html'>Visual Studio 2008 beta 2 has been released.&lt;br /&gt;&lt;br /&gt;Click on the link to download:&lt;br /&gt;http://msdn2.microsoft.com/en-us/vstudio/default.aspx&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19461197-881955167003133647?l=spsfactory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spsfactory.blogspot.com/feeds/881955167003133647/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19461197&amp;postID=881955167003133647&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/881955167003133647'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/881955167003133647'/><link rel='alternate' type='text/html' href='http://spsfactory.blogspot.com/2007/07/visual-studio-2008-beta-2-released.html' title='Visual Studio 2008 beta 2 released'/><author><name>Kristof De Causemaeker</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/5073/1926/1600/profile_spsfactory.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19461197.post-5850663276802709932</id><published>2007-07-26T20:17:00.000+02:00</published><updated>2007-07-29T13:35:03.917+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2005'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL Server 2000'/><title type='text'>Using the SQL Server's Timestamp datatype</title><content type='html'>&lt;span style="font-size:85%;"&gt;The Timestamp datatype is supported by &lt;a href="http://www.microsoft.com/sql/prodinfo/previousversions/books.mspx"&gt;SQL Server 2000 &lt;/a&gt;and &lt;a href="http://www.blogger.com/www.microsoft.com/sqlserver"&gt;SQL Server 2005&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;It is a good way to indicate the row version because it represents a unique value.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;A field defined as 'timestamp' is automatically updated by SQL Server when rows are inserted or updated. You cannot read the content of a timestamp field in the Management Studio. It is encapsulated as 'binary'&lt;binary&gt;. ('Timestamp' is stored in 8 bytes as binary(8)).&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Why is the timestamp datatype useful?&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;The timestamp datatype guarantees to be unique across the DB. It is generally used as a DB generated ID in tables.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;u&gt;Other methods?&lt;/u&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;You can also use a DateTime datatype to indicate a row's version. A datetime field is not automatically updated and is not unique across the database.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Click &lt;/span&gt;&lt;a href="http://www.teratrax.com/sql_guide/data_types/sql_server_data_types.html"&gt;&lt;span style="font-size:85%;"&gt;here &lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;to read more about SQL Server 2000/2005 datatypes&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19461197-5850663276802709932?l=spsfactory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spsfactory.blogspot.com/feeds/5850663276802709932/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19461197&amp;postID=5850663276802709932&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/5850663276802709932'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/5850663276802709932'/><link rel='alternate' type='text/html' href='http://spsfactory.blogspot.com/2007/07/using-sql-servers-timestamp-datatype.html' title='Using the SQL Server&apos;s Timestamp datatype'/><author><name>Kristof De Causemaeker</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/5073/1926/1600/profile_spsfactory.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19461197.post-742542146835125443</id><published>2007-07-25T19:13:00.000+02:00</published><updated>2007-07-25T19:13:31.559+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='MySQL'/><category scheme='http://www.blogger.com/atom/ns#' term='Oracle'/><category scheme='http://www.blogger.com/atom/ns#' term='Workflow Foundation'/><title type='text'>Workflow Persistency: adding Oracle and MySQL support</title><content type='html'>&lt;span style="font-family:verdana;font-size:85%;"&gt;Workflow Foundation (WF) provide assistance to use &lt;a href="http://www.microsoft.com/sql/default.mspx"&gt;SQL Server &lt;/a&gt;as datasource for workflow &lt;a href="http://weblogs.asp.net/gsusx/archive/2005/10/05/426699.aspx"&gt;persistency &lt;/a&gt;and &lt;a href="http://msdn2.microsoft.com/en-us/library/ms735887.aspx"&gt;tracking&lt;/a&gt;.Companies which want to work with Oracle, cannot use the same scripts and default logic.&lt;br /&gt;Workflow Foundation uses services to accomplish this task. Normally you want add a &lt;a href="http://msdn2.microsoft.com/en-us/library/system.workflow.runtime.hosting.sqlworkflowpersistenceservice.aspx"&gt;SqlWorkflowPersistenceService &lt;/a&gt;to the Workflow Runtime Manager to enable workflow persistency.&lt;br /&gt;In case of Oracle you can download the &lt;a href="http://micksdevblog.blogspot.com/2006/12/oracle-windows-workflow-persistence.html"&gt;Oracle Persistency Service&lt;/a&gt; for Oracle databases written by &lt;a href="http://micksdevblog.blogspot.com/"&gt;Mick&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;For Oracle &amp; MySQL support, you can download the &lt;a href="http://www.codeplex.com/WFTools"&gt;Workflow Foundation Tools &lt;/a&gt;(release 0.2.2 -alpha at this moment)Release date: 15th July 2007&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;To read more about 'Workflow Persistence' you can read the sample chapter of Bruce Bukovic's book by clicking on &lt;a href="http://workflow.bukovics.com/download/1590597788-4131.pdf"&gt;this link&lt;/a&gt;.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://workflow.bukovics.com/download/1590597788-4131.pdf"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19461197-742542146835125443?l=spsfactory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spsfactory.blogspot.com/feeds/742542146835125443/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19461197&amp;postID=742542146835125443&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/742542146835125443'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/742542146835125443'/><link rel='alternate' type='text/html' href='http://spsfactory.blogspot.com/2007/07/workflow-persistency-adding-oracle-and.html' title='Workflow Persistency: adding Oracle and MySQL support'/><author><name>Kristof De Causemaeker</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/5073/1926/1600/profile_spsfactory.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19461197.post-21702746321989261</id><published>2007-07-24T20:51:00.000+02:00</published><updated>2007-07-24T20:59:53.903+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='books'/><category scheme='http://www.blogger.com/atom/ns#' term='Workflow Foundation'/><title type='text'>Bruce's fantastic: 'PRO WF, Windows Workflow in .NET 3.0'</title><content type='html'>&lt;span style="font-family:verdana;font-size:85%;"&gt;I would like to suggest the wonderful book of &lt;/span&gt;&lt;a href="http://www.bukovics.com/"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Bruce Bukovics&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Last month I read his book "&lt;/span&gt;&lt;a href="http://www.apress.com/book/bookDisplay.html?bID=10213"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Pro WF: Windows Workflow in .NET 3.0.&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;" which I can only suggest to everyone!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;The book explains you every aspect of &lt;/span&gt;&lt;a href="http://wf.netfx3.com/"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Workflow Foundation &lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt; in a very practical way!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;So, just &lt;/span&gt;&lt;a href="http://www.hcw.be/p.aspx?p=G9727"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;buy&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt; and read the book.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;To read his blog, just click &lt;/span&gt;&lt;a href="http://bukovics.wordpress.com/"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;here&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19461197-21702746321989261?l=spsfactory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spsfactory.blogspot.com/feeds/21702746321989261/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19461197&amp;postID=21702746321989261&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/21702746321989261'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/21702746321989261'/><link rel='alternate' type='text/html' href='http://spsfactory.blogspot.com/2007/07/bruces-fantastic-pro-wf-windows.html' title='Bruce&apos;s fantastic: &apos;PRO WF, Windows Workflow in .NET 3.0&apos;'/><author><name>Kristof De Causemaeker</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/5073/1926/1600/profile_spsfactory.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19461197.post-1360974661416920628</id><published>2007-06-19T10:11:00.000+02:00</published><updated>2007-06-19T10:12:25.564+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='.NET 3.0'/><category scheme='http://www.blogger.com/atom/ns#' term='Workflow Foundation'/><title type='text'>EventDeliveryFailedException in State Machine Workflow</title><content type='html'>&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:trebuchet ms;"&gt;I am currently diving into Windows Workflow Foundation. During my first steps (kind of hello world examples), some errors occurs ... Sometimes it's hard to resolve some errors...&lt;br /&gt;Let's have a look at the EventDeliveryFailedException ...&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-family:trebuchet ms;font-size:78%;"&gt;&lt;span style="font-size:100%;"&gt;Has this error ever occured? &lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:trebuchet ms;"&gt;An unhandled exception of type 'System.Workflow.Activities.EventDeliveryFailedException' occurred in System.Workflow.Activities.dll.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:trebuchet ms;"&gt;Additional information: Event "AskWorkflowValues" on interface type "App.GeneralLib.IMyService" for instance id "8385d402-19fb-4549-a765-c7e2b4c0a856" cannot be delivered.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;When adding an eventDrivenActivity to a State Machine's worfklow State Activity, you wouldn't receive this exception when firing an event from the host application to the workflow.&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:trebuchet ms;font-size:78%;"&gt;&lt;span style="font-size:85%;"&gt;This exception only occurs, in my case, when adding an eventDrivenActivity to the State Machine's workflow self... (and not to a state activity).&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-family:trebuchet ms;"&gt;Solution&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;The host application fires an event through a local service method. In that method you must specify the ExternalDataEventArgs parameter. Now to resolve the problem you must set the &lt;strong&gt;WaitForIdle property &lt;/strong&gt;of the ExternalDataEventArgs instance.&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;If this property is true then the workflow should go idle before raising the event by the host application through the local service. At default, this property is false and the event can only be catched by an EventDrivenActivity within a State Activity. So, in other words the workflow has to process it things first before this event can be deliverd. That's why the WaitForIdle must be true.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Trebuchet MS;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family:trebuchet ms;"&gt;Local Service Interface&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;font-size:78%;"&gt;[ExternalDataExchange]&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:78%;"&gt;&lt;u&gt;public interface IMyService&lt;br /&gt;&lt;/u&gt;{&lt;br /&gt;event EventHandler&lt;externaldataeventargs&gt; AskWorkflowValues;&lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family:trebuchet ms;"&gt;Local Service implementation&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;font-size:78%;"&gt;[Serializable]&lt;br /&gt;&lt;u&gt;public class MyService:IMyService&lt;/u&gt;&lt;br /&gt;{&lt;br /&gt;public void OnAskWorkflowValues(ExternalDataEventArgs e)&lt;br /&gt;{&lt;br /&gt;if (AskWorkflowValues != null)&lt;br /&gt;{&lt;br /&gt;AskWorkflowValues(null, e);&lt;br /&gt;}&lt;br /&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family:trebuchet ms;"&gt;Host application&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;span style="font-size:78%;"&gt;...&lt;br /&gt;&lt;span style="color:#009900;"&gt;//calling local service's method to fire an event to the state machine workflow&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;font-size:78%;"&gt;localService.OnAskWorkflowValues(GetEventArgs(instance.InstanceId));&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;font-size:78%;"&gt;...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;font-size:78%;"&gt;ExternalDataEventArgs GetEventArgs(Guid instanceId)&lt;br /&gt;{&lt;br /&gt;ExternalDataEventArgs e = new ExternalDataEventArgs(instanceId);&lt;br /&gt;&lt;span style="color:#cc0000;"&gt;e.WaitForIdle = &lt;strong&gt;true&lt;/strong&gt;;&lt;/span&gt;&lt;br /&gt;return e;&lt;br /&gt;}&lt;/span&gt; &lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19461197-1360974661416920628?l=spsfactory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spsfactory.blogspot.com/feeds/1360974661416920628/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19461197&amp;postID=1360974661416920628&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/1360974661416920628'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/1360974661416920628'/><link rel='alternate' type='text/html' href='http://spsfactory.blogspot.com/2007/06/eventdeliveryfailedexception-in-state.html' title='EventDeliveryFailedException in State Machine Workflow'/><author><name>Kristof De Causemaeker</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/5073/1926/1600/profile_spsfactory.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19461197.post-1304114194137077943</id><published>2007-06-13T19:35:00.000+02:00</published><updated>2007-06-13T19:36:18.773+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio 2005'/><category scheme='http://www.blogger.com/atom/ns#' term='.NET 3.0'/><category scheme='http://www.blogger.com/atom/ns#' term='Workflow Foundation'/><title type='text'>Debugging Workflows in Visual Studio 2005</title><content type='html'>&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;To debug your workflow library, execute following steps:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Compile both projects (GUI/Business Workflow library)&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Go the the Workflow Library project's properties&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Go to the Debug tab&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Set the 'Start External Program' below the 'Start Action' section&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Browse to the compiled GUI project and select the executable (.exe).&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Make sure that your Business Workflow Library is set as startup project&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19461197-1304114194137077943?l=spsfactory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spsfactory.blogspot.com/feeds/1304114194137077943/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19461197&amp;postID=1304114194137077943&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/1304114194137077943'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/1304114194137077943'/><link rel='alternate' type='text/html' href='http://spsfactory.blogspot.com/2007/06/debugging-workflows-in-visual-studio.html' title='Debugging Workflows in Visual Studio 2005'/><author><name>Kristof De Causemaeker</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/5073/1926/1600/profile_spsfactory.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19461197.post-6240393019631542195</id><published>2007-05-07T20:54:00.000+02:00</published><updated>2008-12-09T02:58:41.155+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Certification'/><title type='text'>Exam MCTS 070-528 successfully passed!</title><content type='html'>&lt;img id="BLOGGER_PHOTO_ID_5061895804617561842" style="CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_oxIos6CmEaU/Rj93akxFFvI/AAAAAAAAADg/C_TJOLcXDX0/s320/MCTS(rgb)_513.jpg" border="0" /&gt;&lt;br /&gt;&lt;br /&gt;Friday I passed &lt;a href="http://www.microsoft.com/learning/exams/70-528.mspx"&gt;Exam 070-528 - Microsoft.NET Framework 2.0 - Web-based Client Development&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Now I'm a &lt;a href="http://www.microsoft.com/learning/mcp/mcts/webapps/default.mspx"&gt;Microsoft Certified Technology Specialist &lt;/a&gt;for .NET framework 2.0 Web applications!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19461197-6240393019631542195?l=spsfactory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spsfactory.blogspot.com/feeds/6240393019631542195/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19461197&amp;postID=6240393019631542195&amp;isPopup=true' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/6240393019631542195'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/6240393019631542195'/><link rel='alternate' type='text/html' href='http://spsfactory.blogspot.com/2007/05/exam-mcts-070-528-succesfully-passed.html' title='Exam MCTS 070-528 successfully passed!'/><author><name>Kristof De Causemaeker</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/5073/1926/1600/profile_spsfactory.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_oxIos6CmEaU/Rj93akxFFvI/AAAAAAAAADg/C_TJOLcXDX0/s72-c/MCTS(rgb)_513.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19461197.post-8515346663783864483</id><published>2007-04-17T21:43:00.000+02:00</published><updated>2007-04-17T21:43:00.388+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Export'/><category scheme='http://www.blogger.com/atom/ns#' term='Excel'/><category scheme='http://www.blogger.com/atom/ns#' term='InfoPath 2003'/><category scheme='http://www.blogger.com/atom/ns#' term='Word'/><category scheme='http://www.blogger.com/atom/ns#' term='HTML'/><category scheme='http://www.blogger.com/atom/ns#' term='Task Pane'/><title type='text'>TaskPanes and Javascript in InfoPath 2003</title><content type='html'>&lt;p&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;Using HTML, CSS and JavaScript in Task panes is sometimes very tricky. Some functionalities are not allowed, but InfoPath do not alert errors … frustrating … isn’t it ?&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;HTML/CSS samples&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Show/Hide DIV tags&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Javascript samples&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;onload event of BODY tag&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;javascript included in href attribute of anchor&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;you are not allowed to talk to window.external.Window.XDocument; when using ASP.NET pages in a fully trusted, signed form.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;Printing the Task pane’s content&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Do not add the javascript:window.print() method not to the href attribute of the anchor tag to print … In this way (using href) you are not sure (100%) that the print functionality works! InfoPath 2003 do not generate errors when you try to trigger the print link, but … in Internet Explorer this works perfectly!&lt;br /&gt;&lt;br /&gt;A possible solution is using the onClick event of the anchor tag. In this way you are sure that the window.print() method is called and the Print window will appear.&lt;br /&gt;&lt;br /&gt;There is no other way to print the content of a custom task pane. So use the window.print();&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;Export to Word and Excel&lt;br /&gt;&lt;/strong&gt;&lt;br /&gt;It is quit simple to export your custom task pane content to Word and Excel. Because Word and Excel supports HTML, we can save the content of our custom task pane (html) as Word or Excel document&lt;br /&gt;&lt;br /&gt;Suppose you an ASP.NET web page (.aspx) which button to export content to Word and Excel.&lt;br /&gt;&lt;br /&gt;When the user clicks on the ‘export to Word’ button, we will dynamically add a very small IFrame tag to the page which will call another ASP.NET page. This page is responsible to generate the word or excel document. You can use the QueryString to add a parameter which indicates the type of export (xls/doc).&lt;br /&gt;&lt;br /&gt;Response.AddHeader("content-disposition", "attachment;filename=defaultExportFileName");&lt;br /&gt;Response.ContentType = @"application/msword";&lt;br /&gt;Response.Write(“your html content”);&lt;br /&gt;&lt;br /&gt;The Content Types are defined in the register (HKEY_CLASSES_ROOT). Select the .doc or .xls folder and have a look at the Content Type.&lt;br /&gt;&lt;br /&gt;When clicking on the ‘Export to Word’ button, a download window will pop up to open or save your document. &lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Use HTML pages in fully trusted, signed forms&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;It is impossible to call window.external.Window.XDocument when using an ASP.NET page in a fully trusted, signed form. The external window seems to be unavailable at that moment.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;If we use an static HTML page as Task pane, we can access the external window!&lt;br /&gt;I suggest to communicate from InfoPath 2003 to the task pane. The communication in the other way is quit difficult if you use fully trusted, signed forms.&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Using parameters in HTML Task Pane&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;It is possible to use a QueryString, also with a static HTML page which is included as resource file. Just call aHtmlTaskpaneObj.Navigate("start.html?key=value"); &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;You can parse the QueryString by using JavaScript. [&lt;/span&gt;&lt;a href="http://www.eggheadcafe.com/articles/20020107.asp"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Read article about parsing javascript&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;]&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;strong&gt;Hiding Task panes at startup&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;It is not allowed to hide Task Panes in the Start Up method because not all InfoPath objects are loaded at that time. So it is possible that your Task pane is not hidden, when the form is started. The time the task pane needs to hide depends on the form load.&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19461197-8515346663783864483?l=spsfactory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spsfactory.blogspot.com/feeds/8515346663783864483/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19461197&amp;postID=8515346663783864483&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/8515346663783864483'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/8515346663783864483'/><link rel='alternate' type='text/html' href='http://spsfactory.blogspot.com/2007/04/taskpanes-and-javascript-in-infopath.html' title='TaskPanes and Javascript in InfoPath 2003'/><author><name>Kristof De Causemaeker</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/5073/1926/1600/profile_spsfactory.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19461197.post-8106971738792258530</id><published>2007-03-29T20:07:00.001+02:00</published><updated>2008-12-09T02:58:41.720+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Office 2007'/><title type='text'>Blogger is integrated in Microsoft Office Word 2007</title><content type='html'>&lt;span xmlns=""&gt;&lt;p&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Writing blog posts in Microsoft Office Word 2007 is now much easier.&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:78%;"&gt;Click on the Office button to select 'New' &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:78%;"&gt;Select 'New Blog Post…' &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:78%;"&gt;Configure your blog provider (in my case Blogger)&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://4.bp.blogspot.com/_oxIos6CmEaU/RgwBLbgYbtI/AAAAAAAAAC0/dClRVtpsasQ/s1600-h/New+Picture.png"&gt;&lt;span style="font-family:verdana;font-size:78%;"&gt;&lt;img id="BLOGGER_PHOTO_ID_5047410578249248466" style="WIDTH: 273px; CURSOR: hand; HEIGHT: 161px" height="123" alt="" src="http://4.bp.blogspot.com/_oxIos6CmEaU/RgwBLbgYbtI/AAAAAAAAAC0/dClRVtpsasQ/s320/New+Picture.png" width="227" border="0" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;font-size:78%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://2.bp.blogspot.com/_oxIos6CmEaU/RgwBf7gYbwI/AAAAAAAAADM/OLygOQtXpw8/s1600-h/New+Picture+(1).png"&gt;&lt;span style="font-family:verdana;font-size:78%;"&gt;&lt;img id="BLOGGER_PHOTO_ID_5047410930436566786" style="CURSOR: hand" alt="" src="http://2.bp.blogspot.com/_oxIos6CmEaU/RgwBf7gYbwI/AAAAAAAAADM/OLygOQtXpw8/s320/New+Picture+(1).png" border="0" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;font-size:78%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:78%;"&gt;After registrating the blog provider, you are able to publish posts on your blog !&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://1.bp.blogspot.com/_oxIos6CmEaU/RgwBYrgYbvI/AAAAAAAAADE/XtBzjSwVPpo/s1600-h/New+Picture+(2).png"&gt;&lt;span style="font-family:verdana;font-size:78%;"&gt;&lt;img id="BLOGGER_PHOTO_ID_5047410805882515186" style="CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_oxIos6CmEaU/RgwBYrgYbvI/AAAAAAAAADE/XtBzjSwVPpo/s320/New+Picture+(2).png" border="0" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;font-size:78%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://3.bp.blogspot.com/_oxIos6CmEaU/RgwBmLgYbxI/AAAAAAAAADU/KhNXnOPa9i8/s1600-h/New+Picture+(3).png"&gt;&lt;span style="font-family:verdana;font-size:78%;"&gt;&lt;img id="BLOGGER_PHOTO_ID_5047411037810749202" style="CURSOR: hand" alt="" src="http://3.bp.blogspot.com/_oxIos6CmEaU/RgwBmLgYbxI/AAAAAAAAADU/KhNXnOPa9i8/s320/New+Picture+(3).png" border="0" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19461197-8106971738792258530?l=spsfactory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spsfactory.blogspot.com/feeds/8106971738792258530/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19461197&amp;postID=8106971738792258530&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/8106971738792258530'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/8106971738792258530'/><link rel='alternate' type='text/html' href='http://spsfactory.blogspot.com/2007/03/blogger-is-integrated-in-microsoft.html' title='Blogger is integrated in Microsoft Office Word 2007'/><author><name>Kristof De Causemaeker</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/5073/1926/1600/profile_spsfactory.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_oxIos6CmEaU/RgwBLbgYbtI/AAAAAAAAAC0/dClRVtpsasQ/s72-c/New+Picture.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19461197.post-3431296563418495341</id><published>2007-03-29T19:31:00.000+02:00</published><updated>2007-03-29T19:58:14.024+02:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='InfoPath 2003'/><category scheme='http://www.blogger.com/atom/ns#' term='Task Pane'/><title type='text'>Taskpanes: Moving, resizing and navigation</title><content type='html'>&lt;span style="font-family:verdana;font-size:78%;"&gt;Have you ever had the idea to move your InfoPath 2003 taskpane to the bottom of your screen, to the left or the right?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:78%;"&gt;A taskpane cannot be moved (in default cases), but by using customized Office code we can do it !&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:78%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Move and resize task panes&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family:verdana;font-size:78%;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:78%;"&gt;using Microsoft.Office.Interop.InfoPath.SemiTrust;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:78%;"&gt;using Microsoft.Office.Core;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:78%;"&gt;using System.Reflection;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:78%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="color:#009900;"&gt;//The following function unwraps the CommandBars object so that the CommandBars object&lt;br /&gt;//is easier to use in the code.&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#000099;"&gt;&lt;strong&gt;private CommandBars UnwrapCommandbarsObject(ObjectWrapper commandBarsWrapper)&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;{&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="color:#009900;"&gt;//Get the System.Type object for the CommandBars wrapper object.&lt;br /&gt;&lt;/span&gt;Type t = commandBarsWrapper.GetType().BaseType;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="color:#009900;"&gt;//Use the Type object to retrieve the InnerObject property of the wrapper.&lt;br /&gt;&lt;/span&gt;CommandBars objCommandBars = (CommandBars)t.InvokeMember("InnerObject", BindingFlags.Public BindingFlags.NonPublic BindingFlags.Instance BindingFlags.GetProperty, null, commandBarsWrapper, null);&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="color:#009900;"&gt;//Return the result.&lt;br /&gt;&lt;/span&gt;return objCommandBars;&lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:78%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:78%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:78%;color:#009900;"&gt;//Move/Resize&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;&lt;span style="font-family:verdana;font-size:78%;"&gt;private void ButtonClickAction()&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;&lt;span style="font-family:verdana;font-size:78%;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:78%;"&gt;CommandBars objCommandBars = UnwrapCommandbarsObject( (ObjectWrapper) thisXDocument.View.Window.CommandBars&lt;/span&gt;&lt;span style="font-family:verdana;font-size:78%;"&gt;);&lt;br /&gt;&lt;br /&gt;CommandBar oCommandBar = objCommandBars["Task Pane"];&lt;br /&gt;oCommandBar.Width = 600;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:78%;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:78%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:78%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:78%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;strong&gt;Navigate to website urls&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:78%;"&gt;HTMLTaskPane tp = (HTMLTaskPane)this.thisXDocument.View.Window.TaskPanes[0];&lt;br /&gt;tp.Visible = true;&lt;br /&gt;tp.Navigate("&lt;/span&gt;&lt;a href="http://inf01atriuap07/dev-profiles-webservice/Default.aspx?persId"&gt;&lt;span style="font-family:verdana;font-size:78%;"&gt;myWebSite"&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;font-size:78%;"&gt;);&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:78%;"&gt;&lt;u&gt;In InfoPath 2007 it would be:&lt;/u&gt;&lt;br /&gt;HtmlTaskPane pane = (HtmlTaskPane)this.CurrentView.Window.TaskPanes[0];&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;strong&gt;&lt;span style="font-family:verdana;font-size:78%;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Requirements&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:78%;"&gt;You need full trust!&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:78%;"&gt;Add a reference to COM component -&gt; Microsoft Office 11 Object Library&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-family:verdana;font-size:78%;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Disadvantage&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:78%;"&gt;Changing the behaviour of your TaskPane at runtime, also effects InfoPath at design time !&lt;br /&gt;You ca&lt;span style="font-family:verdana;"&gt;n only undo the TaskPane customization by re-executing the reversed code.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="font-size:78%;"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;strong&gt;Resources&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://support.microsoft.com/kb/867442"&gt;&lt;span style="font-family:verdana;font-size:78%;color:#cc9933;"&gt;Microsoft&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19461197-3431296563418495341?l=spsfactory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spsfactory.blogspot.com/feeds/3431296563418495341/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19461197&amp;postID=3431296563418495341&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/3431296563418495341'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/3431296563418495341'/><link rel='alternate' type='text/html' href='http://spsfactory.blogspot.com/2007/03/taskpanes-moving-resizing-and.html' title='Taskpanes: Moving, resizing and navigation'/><author><name>Kristof De Causemaeker</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/5073/1926/1600/profile_spsfactory.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19461197.post-4162541841994654500</id><published>2007-03-06T19:04:00.000+01:00</published><updated>2007-03-06T19:05:30.492+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio 2005'/><category scheme='http://www.blogger.com/atom/ns#' term='FxCop'/><category scheme='http://www.blogger.com/atom/ns#' term='C#'/><category scheme='http://www.blogger.com/atom/ns#' term='Code Analysis'/><title type='text'>How to Validate Arguments Of Public Methods? (Microsoft Design - CA1062)</title><content type='html'>&lt;span style="font-family:verdana;font-size:85%;"&gt;FxCop can drive you crazy, but ... It improves the quality of your code!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;u&gt;Tip&lt;/u&gt;: enable the Code Analysis in the beginning!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;I am sure that you have ever seen the following FxCop warning:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Microsoft.Design --&gt; CA1062:ValidateArgumentsOfPublicMethods&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;This article gives you a uniform way of validating parameters!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family:verdana;font-size:85%;color:#000099;"&gt;1. Validating parameters in every public method&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;If you have to check every parameter every public method. This means that you add at least 3 lines ...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;strong&gt;Example&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;if( condition ) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;// exception statement;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Disadvantages:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Re-writing code every time you need to check parameters&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;3 lines of code extra in every public method which has parameters.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family:verdana;font-size:85%;color:#000099;"&gt;2. Using the ParameterCheck class for Parameter validations&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;You can reduce the 3 lines of code into 1 line. Just make a separate Visual Studio Project which is responsable to check parameters. It is a static class which has static methods.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;ParameterCheck Method Overview&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;NotNullOrEmpty&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;em&gt;&lt;span style="font-size:78%;"&gt;Checks if a string is empty or null&lt;/span&gt;&lt;/em&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;NotNull&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;em&gt;Checks when an object is null. In case of a DateTime object, it cannot be the MinValue (which will be compared with null)&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;WithinRange&lt;/strong&gt; (for int)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;em&gt;Checks if the Int value (16/32/64 bit) has a value within the range (ranges inclusive)&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;WithinRange &lt;/strong&gt;(for double)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;em&gt;Checks if the decimal value (decimal, single, float, double) has a value within the range (ranges inclusive)&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;strong&gt;WithinRange&lt;/strong&gt; (for DateTime)&lt;br /&gt;&lt;em&gt;&lt;span style="font-size:78%;"&gt;Checks if the DateTime value has a value within the range (ranges inclusive)&lt;/span&gt;&lt;/em&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;strong&gt;BiggerOrEquals&lt;/strong&gt; (for int)&lt;br /&gt;&lt;em&gt;&lt;span style="font-size:78%;"&gt;Checks if a number has a value which is bigger or equals to the minimum value (minimum value included)&lt;/span&gt;&lt;/em&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;SmallerOrEquals &lt;/strong&gt;(for int)&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt;&lt;em&gt;Checks if a number has a value which is smaller or equals to the maximum value (maximum value included)&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Example&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;public static void NotNullOrEmpty(string parameterName, string parameterValue) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;{ &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;if (String.IsNullOrEmpty(parameterValue)) &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;{ &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;throw new ArgumentNullException(parameterName); &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;} &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Advantages&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Just 1 line of code!&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Reusability!&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Same result&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;strong&gt;Disadvantage&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;FxCop/Code Analysis does not recognize your class as being a valid parameter validation. You should add a SuppressMessage (right-click on the warning in the error list and select 'suppress message')&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;You can download the code of this article &lt;a href="http://www.decausemaeker.be/documents/spsfactory/20070305/ParameterCheck.txt"&gt;here&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19461197-4162541841994654500?l=spsfactory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spsfactory.blogspot.com/feeds/4162541841994654500/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19461197&amp;postID=4162541841994654500&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/4162541841994654500'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/4162541841994654500'/><link rel='alternate' type='text/html' href='http://spsfactory.blogspot.com/2007/03/how-to-validate-arguments-of-public.html' title='How to Validate Arguments Of Public Methods? (Microsoft Design - CA1062)'/><author><name>Kristof De Causemaeker</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/5073/1926/1600/profile_spsfactory.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19461197.post-1432940810890360245</id><published>2007-02-22T18:59:00.000+01:00</published><updated>2007-02-22T19:17:05.623+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Templates'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Sharepoint Services 3.0'/><title type='text'>The fabulous 40</title><content type='html'>&lt;a href="http://www.microsoft.com/technet/windowsserver/sharepoint/wssapps/templates/default.mspx"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;40 application templates &lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;for Windows Sharepoint Services 3.0 are available. They are developed with &lt;/span&gt;&lt;a href="http://office.microsoft.com/en-us/sharepointdesigner/FX100487631033.aspx" mce_href="http://office.microsoft.com/en-us/sharepointdesigner/FX100487631033.aspx"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Office SharePoint Designer&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt; 2007 and incorporate many of the new features in &lt;/span&gt;&lt;a href="http://office.microsoft.com/en-us/sharepointtechnology/FX100503841033.aspx" mce_href="http://office.microsoft.com/en-us/sharepointtechnology/FX100503841033.aspx"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;WSS 3.0&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;You can &lt;/span&gt;&lt;a href="http://www.microsoft.com/technet/windowsserver/sharepoint/wssapps/templates/privacy5.mspx"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;download&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt; them as a single package download. (English version)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19461197-1432940810890360245?l=spsfactory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spsfactory.blogspot.com/feeds/1432940810890360245/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19461197&amp;postID=1432940810890360245&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/1432940810890360245'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/1432940810890360245'/><link rel='alternate' type='text/html' href='http://spsfactory.blogspot.com/2007/02/fabulous-40.html' title='The fabulous 40'/><author><name>Kristof De Causemaeker</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/5073/1926/1600/profile_spsfactory.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19461197.post-1985367336503077096</id><published>2007-02-20T19:09:00.000+01:00</published><updated>2007-02-20T19:16:57.415+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Certification'/><title type='text'>Surviving the MCTS 70-536 exam</title><content type='html'>&lt;span style="font-family:verdana;font-size:85%;"&gt;This morning I finally passed &lt;/span&gt;&lt;a href="http://www.microsoft.com/learning/exams/70-536.mspx"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Exam 70–536&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;: Microsoft .NET Framework 2.0 - Application Development Foundation. Which is a good start to become Microsoft Certified Technology Specialist: .NET Framework 2.0 Web Applications.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;To study this exam, I used the &lt;/span&gt;&lt;a href="http://www.microsoft.com/MSPress/books/9469.asp"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;MCTS Self-Paced Training Kit (Exam 70-536): Microsoft .NET Framework 2.0–Application Development Foundation&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;. A very good study guide to pass this exam!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19461197-1985367336503077096?l=spsfactory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spsfactory.blogspot.com/feeds/1985367336503077096/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19461197&amp;postID=1985367336503077096&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/1985367336503077096'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/1985367336503077096'/><link rel='alternate' type='text/html' href='http://spsfactory.blogspot.com/2007/02/surviving-mcts-70-536-exam.html' title='Surviving the MCTS 70-536 exam'/><author><name>Kristof De Causemaeker</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/5073/1926/1600/profile_spsfactory.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19461197.post-7953793308547530488</id><published>2007-02-19T21:05:00.000+01:00</published><updated>2007-02-19T21:13:09.569+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Visual Studio 2005'/><category scheme='http://www.blogger.com/atom/ns#' term='Visual SourceSafe 2005'/><title type='text'>How to manually decoupling your Visual Studio 2005 solution from Visual Source Safe 2005</title><content type='html'>&lt;p&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Follow these steps to decouple your VS .NET 2005 Solution from Visual Source Safe 2005 by yourself:&lt;/span&gt;&lt;/p&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;ol&gt;&lt;li&gt;First of all: take a backup ! ;-)&lt;/li&gt;&lt;li&gt;Go to the properties of the folder where you can find all your project files.&lt;br /&gt;Uncheck the 'Read-only' checkbox.&lt;/li&gt;&lt;li&gt;Open the .csproj file and delete following tags    &lt;br /&gt;&amp;lt;SccProjectName&amp;gt;SAK&amp;lt;/SccProjectName&gt;   &lt;br /&gt;&amp;lt;SccLocalPath&amp;gt;SAK&amp;lt;/SccLocalPath&amp;gt;   &lt;br /&gt;&amp;lt;SccAuxPath&amp;gt;SAK&amp;lt;/SccAuxPath&amp;gt; &lt;br /&gt;&amp;lt;SccProvider&amp;gt;SAK&amp;lt;/SccProvider&amp;gt;&lt;br /&gt;&lt;br /&gt;You can find them below the Project &amp;gt; PropertyGroup tags&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Delete following files: &lt;br /&gt;*.vspscc &lt;br /&gt;*.user &lt;br /&gt;*.scc&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Go to the solution file and delete following lines &lt;br /&gt;&lt;strong&gt;Project&lt;/strong&gt; &lt;br /&gt;SccProjectName = ... &lt;br /&gt;SccAuxPath = ... &lt;br /&gt;SccLocalPath = ... &lt;br /&gt;SccProvider = ...&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;GlobalSection(SourceCodeControl) = preSolution&lt;/strong&gt; &lt;br /&gt;SccNumberOfProjects = ... &lt;br /&gt;SccLocalPath0 = ... &lt;br /&gt;SccProjectUniqueName1 = ... &lt;br /&gt;SccLocalPath1 = ... &lt;br /&gt;SccProjectFilePathRelativizedFromConnection1 = ... &lt;br /&gt;SccProjectUniqueName2 = ...  &lt;br /&gt;... &lt;br /&gt;SccLocalPath9 = . &lt;br /&gt;SccProjectFilePathRelativizedFromConnection9 = ...&lt;br /&gt;&lt;strong&gt;EndGlobalSection&lt;/strong&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Open your solution file again...&lt;br /&gt;If your solution doesn't want to open Visual Studio, then you have to open Visual Studio 2005 manually.Open the solution file through the Open Dialog in VS 2005.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Succes!&lt;/p&gt;&lt;p&gt;&lt;br /&gt; &lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19461197-7953793308547530488?l=spsfactory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spsfactory.blogspot.com/feeds/7953793308547530488/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19461197&amp;postID=7953793308547530488&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/7953793308547530488'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/7953793308547530488'/><link rel='alternate' type='text/html' href='http://spsfactory.blogspot.com/2007/02/how-to-manually-decoupling-your-visual.html' title='How to manually decoupling your Visual Studio 2005 solution from Visual Source Safe 2005'/><author><name>Kristof De Causemaeker</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/5073/1926/1600/profile_spsfactory.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19461197.post-6672251904069540315</id><published>2007-02-15T20:27:00.000+01:00</published><updated>2007-02-22T19:23:00.082+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Security'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Sharepoint Services 2.0'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft Sharepoint Portal Server 2003'/><title type='text'>SharePoint, WebParts, Impersonation and Editing List Items</title><content type='html'>&lt;strong&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;What the hell is Impersonation?&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Impersonation is one of the most useful mechanisms in Windows security. It's also fragile and easy to misuse. Careful use of impersonation can lead to a secure, easy-to-administer application. Misuse can open gaping security holes. In fact Bob can be Sarah and Sarah can be Bob :-)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Impersonation is still useful in some cases. This story is about WSS 2.0/Microsoft Sharepoint Portal Server 2003, but is still interesting for other applications in .NET.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Suppose ..&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;You have to create a webpart which can give users read permissions to certain files or folders.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;You want to store extra information in a custom list with custom properties (from/until/user's full name). &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;The SharePoint List, which is the data store, must be synchronized through the webpart. Attention, the user may not modify the list by himself. So in this case, the list is read-only for a certain group of people and the webpart is our user interface, which can modify the list.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;strong&gt;Solution&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;To be sure that the current user can only view the list, we will deny the edit list items' permission and only give him the read-only permission on the list.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Now we have a problem ... How can we write data programmatically to the custom List if you haven't the 'edit list items' permission? Of course, "Bob will we Sarah" ... impersonation !&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;strong&gt;Impersonation&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;The webpart is running as the current user called Bob. Suppose that 'Sarah' is a 'background user' which has the permission to edit list items. Bob hasn't the permission so ... He transforms into 'Sarah'. Click &lt;a href="http://www.15seconds.com/files/040512.zip"&gt;here&lt;/a&gt; to download the Impersonator class which helps you by transforming Bob into Sarah.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;color:#006600;"&gt;// current user : Bob (read only list permission)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;Impersonator imp = new Impersonator("domain", "Sarah", "password");&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;imp.Impersonate();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:85%;color:#006600;"&gt;// current user : Sarah (edit list permission)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:85%;color:#006600;"&gt;// =&gt; now you can create new list items into the custom list&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;imp.Undo();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:courier new;color:#006600;"&gt;// Do not forget to call Undo(). This will stop the impersonation, which transforms Sarah back into Bob.&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;strong&gt;Editing List Items and Security conflicts&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;Please write the code below after the Impersonate() call and before the Undo() call.&lt;br /&gt;It seems to be very easy. It is logical ... but permissions are tricky ...&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;SPSite site = new SPSite&lt;span style="color:#660000;"&gt;("&lt;/span&gt;&lt;a href="http://server"&gt;&lt;span style="color:#660000;"&gt;http://server&lt;/span&gt;&lt;/a&gt;&lt;span style="color:#660000;"&gt;");&lt;br /&gt;&lt;/span&gt;&lt;span style="color:#990000;"&gt;site.AllowUnsafeUpdates = true; &lt;/span&gt;&lt;span style="color:#006600;"&gt;//resolves this problem: The security validation for this page is invalid&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;SPWeb web = site.Rootweb;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;SPList list = web.Lists["My Custom List"];&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;SPListItem newItem = list.Items.Add();&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;newItem["from"] = DateTime.Now;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;newItem["until"] = DateTime.Now.AddDays(10);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;newItem.Update(); &lt;span style="color:#006600;"&gt;// you only need the permission to edit List Items.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;list.Update(); &lt;span style="color:#006600;"&gt;//when updating the list, you need to have the permission to modify List settings&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;color:#006600;"&gt;//in this case we don't need an list update, because Sarah has no sufficient rights.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;strong&gt;Difference between SPListItem.Update() and SPList.Update()&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;If you are administrator or another person which can modify the List settings, you can call the SPList.Update() without any problems. SPList.Update() do not only update the data in the list, but also fields and settings. That's why you need some more rights.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;If you can only edit List Items, you need to call the SPListItem.Update() method.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;This is very logical, but so frustrating when receiving an &lt;em&gt;E_ACCESSDENIED&lt;/em&gt; exception.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;strong&gt;More Information on SharePoint Security and Impersonation&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;Click &lt;a href="http://www.15seconds.com/issue/040511.htm"&gt;here&lt;/a&gt; to read Jay Nathan's article on 15seconds.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19461197-6672251904069540315?l=spsfactory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spsfactory.blogspot.com/feeds/6672251904069540315/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19461197&amp;postID=6672251904069540315&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/6672251904069540315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/6672251904069540315'/><link rel='alternate' type='text/html' href='http://spsfactory.blogspot.com/2007/02/sharepoint-webparts-impersonation-and.html' title='SharePoint, WebParts, Impersonation and Editing List Items'/><author><name>Kristof De Causemaeker</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/5073/1926/1600/profile_spsfactory.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19461197.post-6768697556509985331</id><published>2007-02-06T20:08:00.000+01:00</published><updated>2008-12-09T02:58:42.010+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Personal Files'/><title type='text'>I've been tagged... siX things you don't know about me</title><content type='html'>&lt;span style="font-family:trebuchet ms;"&gt;&lt;strong&gt;&lt;em&gt;Did you know ... ?!&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;span style="font-family:trebuchet ms;"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;ol&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;... I love &lt;span style="font-size:100%;color:#000066;"&gt;&lt;em&gt;Spain&lt;/em&gt;&lt;/span&gt;. A great country, The sun and an attractive language! If I have some leisure time I would follow spanish lessons (long term course). Kristof goes latino ;-) &lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;... I followed 'spanish lessons for &lt;span style="font-size:100%;color:#000099;"&gt;&lt;em&gt;travelling&lt;/em&gt;&lt;/span&gt;' Last year? &lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;... I love the French &lt;span style="font-size:100%;"&gt;wines&lt;/span&gt;. The wines in the region Languedoc-Roussillon are absolutely fantastic and fruity. Mmm.. Once I visited a castle in Fitou (the best and sweetest white wine I ever met).&lt;br /&gt;&lt;strong&gt;&lt;br /&gt;Tip&lt;/strong&gt;:&lt;br /&gt;Muscat De Rivesaltes &lt;/span&gt;&lt;a href="http://www.twis.info/wineregion.php?ID=241&amp;action=setLanguage&amp;amp;LANGUAGE=nl"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;http://www.twis.info/wineregion.php?ID=241&amp;action=setLanguage&amp;amp;LANGUAGE=nl&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;br /&gt;&lt;/li&gt;&lt;/span&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;I am very fascinated in &lt;span style="font-size:100%;color:#000099;"&gt;&lt;em&gt;trains&lt;/em&gt;&lt;/span&gt; and miniature trains. Once i had the opportunity to have a ride from Ghent to Ostend with a real Belgian engine.&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_oxIos6CmEaU/RcjWKwh_OgI/AAAAAAAAACk/2iMMmKyrbp0/s1600-h/trein+steven+013.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5028504464273652226" style="CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_oxIos6CmEaU/RcjWKwh_OgI/AAAAAAAAACk/2iMMmKyrbp0/s320/trein+steven+013.jpg" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;. Favorite &lt;span style="font-size:100%;color:#000099;"&gt;&lt;em&gt;computer&lt;/em&gt;&lt;/span&gt; games&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;- &lt;/span&gt;&lt;a href="http://www.rollercoastertycoon.com/"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Roller Coaster Tycoon 3&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;br /&gt;- &lt;/span&gt;&lt;a href="http://simcity.ea.com/"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Sim City 4&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;I have a Roland Synthesizer (E-60) at home to make some &lt;span style="font-size:100%;color:#000099;"&gt;&lt;em&gt;music&lt;/em&gt;&lt;/span&gt; (yeah ... a keyboard with PS/2 ... ;-)&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.peterverspuy.nl/xx/images/catalogus/11545.jpg"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;img style="WIDTH: 200px; CURSOR: hand" alt="" src="http://www.peterverspuy.nl/xx/images/catalogus/11545.jpg" border="0" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;font-size:78%;"&gt;&lt;br /&gt;(this is the&lt;/span&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;span style="font-size:78%;"&gt; renewed design of this keyboard.)&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Now it's my turn to tag some people ;-)&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;a href="http://geertverhoeven.blogspot.com"&gt;Geert Verhoeven&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;a href="http://pointerx.net/blogs"&gt;Gabriel Lozano-Moran&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;a href="http://moldenco.blogspot.com/"&gt;Jeroen Ceuppens&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;a href="http://gert.servranckx.be/"&gt;Gert Servranckx&lt;/a&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;a href="http://www.balliauw.be/maarten"&gt;Maarten Balliauw&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19461197-6768697556509985331?l=spsfactory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spsfactory.blogspot.com/feeds/6768697556509985331/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19461197&amp;postID=6768697556509985331&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/6768697556509985331'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/6768697556509985331'/><link rel='alternate' type='text/html' href='http://spsfactory.blogspot.com/2007/02/ive-been-tagged-six-things-you-dont.html' title='I&apos;ve been tagged... siX things you don&apos;t know about me'/><author><name>Kristof De Causemaeker</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/5073/1926/1600/profile_spsfactory.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_oxIos6CmEaU/RcjWKwh_OgI/AAAAAAAAACk/2iMMmKyrbp0/s72-c/trein+steven+013.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19461197.post-8802466398668094758</id><published>2007-01-30T19:47:00.000+01:00</published><updated>2007-01-30T19:50:36.786+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows Sharepoint Services 3.0'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft Sharepoint Portal Server 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='Free'/><category scheme='http://www.blogger.com/atom/ns#' term='eBooks'/><title type='text'>7 Development Projects for Sharepoint 2007 and Sharepoint Services 3.0</title><content type='html'>&lt;span style="font-family:verdana;font-size:85%;"&gt;Thanks to &lt;/span&gt;&lt;a href="http://geertverhoeven.blogspot.com/2007/01/book-7-development-projects-for-ms.html"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Geert &lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;I found this interesting e-book about Sharepoint 2007&lt;br /&gt;&lt;br /&gt;It's a free book about 7 Development Projects for Microsoft Office Sharepoint Server 2007 and Windows Sharepoint Services 3.0&lt;br /&gt;&lt;br /&gt;You can download it &lt;/span&gt;&lt;a href="http://go.microsoft.com/?linkid=6091256"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;here&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19461197-8802466398668094758?l=spsfactory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spsfactory.blogspot.com/feeds/8802466398668094758/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19461197&amp;postID=8802466398668094758&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/8802466398668094758'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/8802466398668094758'/><link rel='alternate' type='text/html' href='http://spsfactory.blogspot.com/2007/01/7-development-projects-for-sharepoint.html' title='7 Development Projects for Sharepoint 2007 and Sharepoint Services 3.0'/><author><name>Kristof De Causemaeker</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/5073/1926/1600/profile_spsfactory.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19461197.post-7541301004031391638</id><published>2007-01-30T19:08:00.000+01:00</published><updated>2007-01-30T19:42:29.543+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Object Model 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='InfoPath 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='Managed Code'/><category scheme='http://www.blogger.com/atom/ns#' term='Web Services'/><title type='text'>Querying Data Connections using the InfoPath 2007 Object model</title><content type='html'>&lt;span style="font-family:verdana;font-size:85%;"&gt;Web services are completely integrated in InfoPath 2003/2007. We can submit and retrieve data whenever we want. If the current InfoPath functionalities does not satisfy your manager's ideas, you can improve your forms with custom code. Today I show you how to integrate web services by using the InfoPath 2007 Object Model&lt;br /&gt;&lt;br /&gt;Actually, the way you used the Object Model in InfoPath 2003 has been changed since InfoPath 2007 has been released. The new Object Model is completely managed and is integrated with the .NET Framework 2.0 classes (System.Xml namespace)&lt;br /&gt;&lt;br /&gt;Suppose we have a ASP .NET Web Service on server which defines the following web method:&lt;strong&gt;&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;strong&gt;[WebMethod]&lt;/strong&gt;&lt;br /&gt;public string SayHello(string name)&lt;br /&gt;{&lt;br /&gt;return "Hello " + name;&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Now, Open your InfoPath Form Template and add a button on the screen&lt;br /&gt;&lt;span style="font-size:78%;"&gt;(Design Tasks &gt; Controls &gt; Button)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Open the Button's properties by double-clicking on the button&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Click on the 'Edit Form Code...' button to start up the Visual Studio Tools for Applications.&lt;br /&gt;&lt;span style="font-size:78%;"&gt;(you can choose the programming language through the Form Options item in the Tools menu)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Add the following lines of code to your button handler:&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#006600;"&gt;//do not forget to import the System.Xml namespace at the top of this class&lt;/span&gt;&lt;br /&gt;using System.Xml;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#006600;"&gt;//Create Xpath Navigator for WebService Data Source&lt;br /&gt;&lt;em&gt;//"SayHello" = the name of the data connection&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;XPathNavigator nav = this.DataSources["SayHello"].CreateNavigator();&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#006600;"&gt;//Xpath expression to retrieve parameter xml node&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#006600;"&gt;&lt;em&gt;// tns:SayHello = method&lt;br /&gt;// tns:name = name of the argument at server side&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;XPathNavigator webServiceNavi = nav.SelectSingleNode("dfs:myFields/dfs:queryFields/tns:SayHello/tns:name", this.NamespaceManager);&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#006600;"&gt;//set parameter(s)&lt;br /&gt;&lt;/span&gt;webServiceNavi.SetValue("Kristof");&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#006600;"&gt;//retrieve data: call the "SayHello" webservice&lt;/span&gt;&lt;br /&gt;DataConnection conn = this.DataConnections["SayHello"];&lt;br /&gt;conn.Execute();&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;The web method returns a string. You can drag and drop the dataFields section of your secondary data source (which corresponds to your web service connection) to the screen.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;strong&gt;Attention&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;Using managed code in Browser Enabled Forms needs an administrator approval&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;In browser enabled forms you will mainly use web services to retrieve data&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;Have a special attention for the security issues&lt;br /&gt;- use Data Connection Files in Data Connection Libraries (UDCX)&lt;br /&gt;- InfoPath Forms Services makes the big picture more difficult, it introduces a extra tier.&lt;br /&gt;&lt;br /&gt;With InfoPath 2003, you never had to worry about security issues.&lt;/span&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt; You ran InfoPath on tier 1, and the Web service on tier 2. Now that you are designing forms that run in a web browser, you'll need to think about tier 3.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;strong&gt;&lt;br /&gt;Tips&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;Did you know that you can use your 'Receiving Data Connections' to send data? The parameters specified at server side can be used to return a filtered set of data or as input for the database ...&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;Did you know that you can use your own .NET classes or Data Sets as parameter or as return value in web methods? Both are serializable to xml.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19461197-7541301004031391638?l=spsfactory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spsfactory.blogspot.com/feeds/7541301004031391638/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19461197&amp;postID=7541301004031391638&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/7541301004031391638'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/7541301004031391638'/><link rel='alternate' type='text/html' href='http://spsfactory.blogspot.com/2007/01/querying-data-connections-using.html' title='Querying Data Connections using the InfoPath 2007 Object model'/><author><name>Kristof De Causemaeker</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/5073/1926/1600/profile_spsfactory.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19461197.post-1656663034230004605</id><published>2007-01-22T22:29:00.000+01:00</published><updated>2008-12-09T02:58:42.376+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VSTO'/><category scheme='http://www.blogger.com/atom/ns#' term='InfoPath 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='Customizing'/><category scheme='http://www.blogger.com/atom/ns#' term='UserControls'/><category scheme='http://www.blogger.com/atom/ns#' term='Task Pane'/><title type='text'>Creating Custom Taskpanes with .NET User Controls in VSTO</title><content type='html'>&lt;strong&gt;Developing InfoPath Add-In&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;With VSTO 2005 (Visual Studio Tools for Office) you can easily create InfoPath add-ins!&lt;br /&gt;Watch ...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;First download VSTO on the Microsoft website (&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=f5539a90-dc41-4792-8ef8-f4de62ff1e81&amp;displaylang=en"&gt;free download&lt;/a&gt;)&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;After installation, start up Visual Studio 2005 and select the InfoPath2007 add-in as template.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;In your project contains 2 methods:&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;private void ThisAddIn_Startup(object sender, System.EventArgs e)&lt;br /&gt;private void ThisAddIn_Shutdown(object sender, System.EventArgs e) &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Since InfoPath 2007 we can use .NET User Controls as Custom Task Pane. In InfoPath 2003 we had to use JavaScript, ASP.NET or HTML files. We can also use help files (CHM files) as custom task pane.&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Add a new Item to your project (User Control)You can add Windows controls to this User Control. &lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;To show the Custom TaskPane we have to add some code to the ThisAddIn_Startup method.In the Startup method you call the CreateCustomPane() method below:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;private TaskPaneUC tpuc;&lt;br /&gt;&lt;br /&gt;private void CreateCustomPane()&lt;br /&gt;{&lt;br /&gt;this.tpuc = new TaskPaneUC();&lt;br /&gt;this.tpuc.submitEvent += new TaskPaneUC.OnSubmit(tpuc_submitEvent);&lt;br /&gt;this.tpuc.switchViewEvent += new TaskPaneUC.OnSwitchView(tpuc_switchViewEvent);&lt;br /&gt;this.tpuc.exitEvent += new TaskPaneUC.OnExit(tpuc_exitEvent);&lt;br /&gt;&lt;br /&gt;this.ctp = this.CustomTaskPanes.Add(tpuc, "Happy 2007");&lt;br /&gt;this.ctp.Visible = true;&lt;br /&gt;}&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;For redirecting button actions to the ThisAddIn.cs we use delegates and events.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Example&lt;br /&gt;&lt;/strong&gt;&lt;u&gt;TaskPaneUC.cs&lt;br /&gt;&lt;/u&gt;&lt;span style="font-family:courier new;"&gt;public delegate void OnSubmit(object sender, SubmitArgs args);&lt;br /&gt;public event OnSubmit submitEvent;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;ThisAddIn.cs&lt;/u&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;private void CreateCustomPane()&lt;br /&gt;{&lt;br /&gt;this.tpuc.submitEvent += new TaskPaneUC.OnSubmit(tpuc_submitEvent);&lt;br /&gt;}&lt;/span&gt;&lt;/li&gt;&lt;p&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Through the User control in this example you can do the following tasks&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Set a field’s value&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Switch View&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Exit application&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;a href="http://1.bp.blogspot.com/_oxIos6CmEaU/RbE9PwWKulI/AAAAAAAAACE/BH4BdIhrSss/s1600-h/addin2.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5021862400380025426" style="CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_oxIos6CmEaU/RbE9PwWKulI/AAAAAAAAACE/BH4BdIhrSss/s320/addin2.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Download this example &lt;span style="color:#cc0000;"&gt;&lt;a href="www.decausemaeker.be/documents/spsfactory/20070119/VSTO_InfoPathAddIn.zip"&gt;here&lt;/a&gt;&lt;/span&gt;.&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size:100%;"&gt;Installing the InfoPath Add-In&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The add-in will be automatically installed when debugging the application.&lt;br /&gt;For deployment you can use the Setup project which will be added automatically to your project.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:100%;"&gt;&lt;strong&gt;&lt;br /&gt;Uninstalling the InfoPath Add-In&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;When you move the InfoPath Add-In project to another location, the Add-in will be automatically deactivated.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:100%;"&gt;&lt;strong&gt;Overview of InfoPath Add-In&lt;/strong&gt;&lt;/span&gt;&lt;/p&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;p&gt;1. Open InfoPath 2007.&lt;br /&gt;2. Go to the Help menu and select 'Privacy Options'&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_oxIos6CmEaU/RbE95wWKumI/AAAAAAAAACM/El7WWQkxwHo/s1600-h/addin1.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5021863121934531170" style="CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_oxIos6CmEaU/RbE95wWKumI/AAAAAAAAACM/El7WWQkxwHo/s320/addin1.jpg" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19461197-1656663034230004605?l=spsfactory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spsfactory.blogspot.com/feeds/1656663034230004605/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19461197&amp;postID=1656663034230004605&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/1656663034230004605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/1656663034230004605'/><link rel='alternate' type='text/html' href='http://spsfactory.blogspot.com/2007/01/creating-custom-taskpanes-with-net-user.html' title='Creating Custom Taskpanes with .NET User Controls in VSTO'/><author><name>Kristof De Causemaeker</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/5073/1926/1600/profile_spsfactory.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_oxIos6CmEaU/RbE9PwWKulI/AAAAAAAAACE/BH4BdIhrSss/s72-c/addin2.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19461197.post-1811076570737225301</id><published>2007-01-19T20:39:00.000+01:00</published><updated>2008-12-09T02:58:43.607+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='InfoPath 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Sharepoint Services 3.0'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft Sharepoint Portal Server 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='InfoPath Form Services 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='publishing'/><title type='text'>Walkthrough: Publishing administrator-approved form templates</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;strong&gt;&lt;span style="font-size:130%;"&gt;A. Steps at client-side (for InfoPath developers)&lt;/span&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt; &lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;Create an InfoPath form and use managed code (C#) as business logic.The business logic needs full trust on the server to run.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;Save your form and publish it to a SharePoint Server with or without InfoPath Forms Services&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;If you opt for ‘&lt;u&gt;Document Library’&lt;/u&gt; a library will be created or updated and the template can only be used in this library. If you opt for ‘&lt;u&gt;Site Content Type’&lt;/u&gt;, you can use your template in multiple document libraries on several sites. A site content type is nothing more than a type of document with some specific properties.&lt;br /&gt;In this situation you cannot opt to create a document library or a content type because you used managed code. You must select ‘&lt;u&gt;Administrator-approved form template (advanced)’&lt;/u&gt;. We need the ‘full trust’ security level to run .NET code.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://1.bp.blogspot.com/_oxIos6CmEaU/RbEfwwWKudI/AAAAAAAAAAk/BuNgMINRyQk/s1600-h/admin1.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5021829981966875090" style="CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_oxIos6CmEaU/RbEfwwWKudI/AAAAAAAAAAk/BuNgMINRyQk/s320/admin1.jpg" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;We can’t publish the form directly on the Sharepoint Server. First of all we must store the InfoPath form to a location which is accessible for the administrator.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_oxIos6CmEaU/RbEf7AWKueI/AAAAAAAAAAs/mKi_zKR2mS4/s1600-h/admin2.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5021830158060534242" style="CURSOR: hand" alt="" src="http://2.bp.blogspot.com/_oxIos6CmEaU/RbEf7AWKueI/AAAAAAAAAAs/mKi_zKR2mS4/s320/admin2.jpg" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:130%;"&gt;&lt;strong&gt;B. Steps at server-side (for administrator)&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;Go to Central Administrator &gt; Application Management. Select ‘&lt;u&gt;Manage Form Templates’&lt;/u&gt; in the ‘InfoPath Forms Services’ section.&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_oxIos6CmEaU/RbEgHgWKufI/AAAAAAAAAA0/nOn8pjBmHyQ/s1600-h/admin4.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5021830372808899058" style="CURSOR: hand" alt="" src="http://4.bp.blogspot.com/_oxIos6CmEaU/RbEgHgWKufI/AAAAAAAAAA0/nOn8pjBmHyQ/s320/admin4.jpg" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;Click on ‘&lt;u&gt;Upload Form template’&lt;/u&gt;. The admin must browse to the location where the InfoPath form was stored by the developer.&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_oxIos6CmEaU/RbEgUgWKugI/AAAAAAAAAA8/Rw8ZXqZgNzY/s1600-h/admin5.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5021830596147198466" style="CURSOR: hand" alt="" src="http://4.bp.blogspot.com/_oxIos6CmEaU/RbEgUgWKugI/AAAAAAAAAA8/Rw8ZXqZgNzY/s320/admin5.jpg" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;Open the context menu of the uploaded file in the Form Templates List. Select &lt;u&gt;‘Activate to a Site collection’. &lt;/u&gt;This will publish the InfoPath Form as a Site Content Type to a site collection.&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_oxIos6CmEaU/RbEghAWKuhI/AAAAAAAAABE/8uL0s6HMiNk/s1600-h/admin6.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5021830810895563282" style="CURSOR: hand" alt="" src="http://2.bp.blogspot.com/_oxIos6CmEaU/RbEghAWKuhI/AAAAAAAAABE/8uL0s6HMiNk/s320/admin6.jpg" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:130%;"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; &lt;/p&gt;&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:130%;"&gt;&lt;strong&gt;C. Steps at server-side (for site owners)&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;Go to the site collection on which you activated the InfoPath form template. Open the list where you want to install the form template.Click on Settings and select ‘Site Settings’. Click on ‘Advanced Settings’ in the ‘General Settings’ section and activate the content type management. (select ‘Yes’)&lt;br /&gt;&lt;a href="http://2.bp.blogspot.com/_oxIos6CmEaU/RbEmsAWKuiI/AAAAAAAAABM/RPnvrjfNEwo/s1600-h/admin7.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5021837596943890978" style="CURSOR: hand" alt="" src="http://2.bp.blogspot.com/_oxIos6CmEaU/RbEmsAWKuiI/AAAAAAAAABM/RPnvrjfNEwo/s320/admin7.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;Now you will be able to manage the Content Types. Click on ‘Add from existing site content types’ to add the activated Form Template as Site Content in this list.&lt;br /&gt;&lt;a href="http://3.bp.blogspot.com/_oxIos6CmEaU/RbEm3QWKujI/AAAAAAAAABU/oYpzz1MUXu4/s1600-h/admin8.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5021837790217419314" style="CURSOR: hand" alt="" src="http://3.bp.blogspot.com/_oxIos6CmEaU/RbEm3QWKujI/AAAAAAAAABU/oYpzz1MUXu4/s320/admin8.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_oxIos6CmEaU/RbEnCgWKukI/AAAAAAAAABc/RrRVW-G3LeA/s1600-h/admin9.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5021837983490947650" style="CURSOR: hand" alt="" src="http://4.bp.blogspot.com/_oxIos6CmEaU/RbEnCgWKukI/AAAAAAAAABc/RrRVW-G3LeA/s320/admin9.jpg" border="0" /&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;br /&gt;&lt;br /&gt;&lt;li&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;Go back to your list and Click on the ‘New’ Button to start a document based the uploaded Form Template.&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19461197-1811076570737225301?l=spsfactory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spsfactory.blogspot.com/feeds/1811076570737225301/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19461197&amp;postID=1811076570737225301&amp;isPopup=true' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/1811076570737225301'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/1811076570737225301'/><link rel='alternate' type='text/html' href='http://spsfactory.blogspot.com/2007/01/walkthrough-publishing-administrator.html' title='Walkthrough: Publishing administrator-approved form templates'/><author><name>Kristof De Causemaeker</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/5073/1926/1600/profile_spsfactory.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_oxIos6CmEaU/RbEfwwWKudI/AAAAAAAAAAk/BuNgMINRyQk/s72-c/admin1.jpg' height='72' width='72'/><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19461197.post-4577570151871409649</id><published>2007-01-10T23:10:00.000+01:00</published><updated>2007-01-10T23:14:46.055+01:00</updated><title type='text'>Embedding audio and video in InfoPath 2007 forms</title><content type='html'>&lt;span style="font-family:verdana;font-size:85%;"&gt;Microsoft InfoPath 2007 offers now &lt;strong&gt;Custom Controls&lt;/strong&gt;:&lt;br /&gt;1. ActiveX controls (uses COM and ActiveX technologies)&lt;br /&gt;2. Template Parts (reusable form pieces)&lt;br /&gt;&lt;br /&gt;--&gt; You can embed audio and video if you use an ActiveX custom control.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Using ActiveX Custom Controls&lt;/strong&gt;&lt;br /&gt;1. Go to menu View&lt;br /&gt;2. Click on Design Tasks&lt;br /&gt;3. Select Controls in the 'Design Tasks' Task pane&lt;br /&gt;4. Click on the 'add or remove custom controls' button to install your custom&lt;br /&gt;control&lt;br /&gt;5. Click on the Add button and select ActiveX Control&lt;br /&gt;6. Select the Windows Media Player control&lt;br /&gt;7. Select the necessary properties for databinding and finish the wizard.&lt;br /&gt;&lt;br /&gt;After you have added the control, you can drag and drop the control on your screen.&lt;br /&gt;Right-Click on the control and select the 'Windows Media Player properties'&lt;br /&gt;Fill in the URL to automatically embed the file to play.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Attention ... &lt;/strong&gt;&lt;br /&gt;ActiveX controls must be installed on each user's computer,&lt;br /&gt;but you can opt to &lt;strong&gt;include a .cab file &lt;/strong&gt;(which contains the custom activeX control)&lt;br /&gt;in your template which automatically installs and registers your control.&lt;br /&gt;(you can specify the .cab file in the 'steps' wizard above.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;---&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;Reference: &lt;a href="http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1039675&amp;SiteID=1"&gt;http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1039675&amp;amp;SiteID=1&lt;/a&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19461197-4577570151871409649?l=spsfactory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spsfactory.blogspot.com/feeds/4577570151871409649/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19461197&amp;postID=4577570151871409649&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/4577570151871409649'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/4577570151871409649'/><link rel='alternate' type='text/html' href='http://spsfactory.blogspot.com/2007/01/embedding-audio-and-video-in-infopath.html' title='Embedding audio and video in InfoPath 2007 forms'/><author><name>Kristof De Causemaeker</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/5073/1926/1600/profile_spsfactory.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19461197.post-5558034587424292012</id><published>2007-01-10T22:26:00.000+01:00</published><updated>2007-01-10T22:50:40.569+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VSTO'/><category scheme='http://www.blogger.com/atom/ns#' term='InfoPath 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='Errors'/><category scheme='http://www.blogger.com/atom/ns#' term='VSTA'/><category scheme='http://www.blogger.com/atom/ns#' term='Office 2007'/><title type='text'>VSTA/VSTO problem when installing Office InfoPath 2007 &amp; .NET 3.0 *solved*</title><content type='html'>&lt;span style="font-family:Verdana;font-size:85%;color:#999999;"&gt;&lt;em&gt;&lt;strong&gt;&lt;u&gt;Error message:&lt;/u&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;color:#999999;"&gt;&lt;em&gt;InfoPath cannot start Microsoft Visual Studio Tools for Applications.To work with Visual Basic or C# code, Microsoft Visual Studio Tools for Applications (VSTA) is required. the Microsoft .NET Framework 2.0 and Microsoft Core XML Services 6.0 must be installed prior to installing VSTA. To install VSTA, open Add or Remove Programs, locate your 2007 Microsoft Office System installation, and then click Change &lt;span style="color:#666666;"&gt;[full problem description on &lt;/span&gt;&lt;a href="http://moldenco.blogspot.com/2007/01/problems-starting-vsta-in-infopath-2007.html"&gt;&lt;span style="color:#666666;"&gt;Jeroen Ceuppens &lt;/span&gt;&lt;/a&gt;&lt;span style="color:#666666;"&gt;' blog]&lt;/span&gt;&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;The problem has a very simple solution, just respect the way you install the Office products.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;strong&gt;SOLUTION: Please respect the following &lt;u&gt;installation order&lt;/u&gt; ...&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;1. Install the Microsoft Office 2007 clients&lt;br /&gt;&lt;em&gt;    without .NET programmability support for .NET Framework version 2.0&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;2. Install the .NET 3.0 framework&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;3. Install the Microsoft Office Sharepoint Portal Server 2007&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;4. Go to 'Add or Remove Programs...' and add the '.NET programmability support for .NET Framework version 2.0' right now. The installation makes sure that it has to use the .NET 2.0 framework which is already installed on the computer.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;strong&gt;The ultimate test...&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;5. Start up Microsoft Office InfoPath 2007. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;6. Save your blank template on your disk&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;7. Go to menu Tools &gt; Programming &gt; Microsoft Visual Studio Tools for Applications&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;strong&gt;Information about VSTA - Visual Studio Tools for Applications&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;You can find the VSTA executable on this location:&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\&lt;span style="color:#990000;"&gt;vsta.exe&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;C:\Program Files\Microsoft Visual Studio 8\Common7\IDE\&lt;span style="color:#990000;"&gt;vsta.exe.config&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Have a look at the vsta.exe.config file. You will see that vsta.exe requires the v.2.0.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&amp;lt;supportedruntime version="v2.0.50727" safemode="true"/&amp;gt;        &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&amp;lt;requiredruntime version="v2.0.50727" safemode="true"/&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;strong&gt;Remark&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;A better solution would be: first install the Office 2007 server products and afterwards you can install all Office 2007 Clients on it. &lt;span style="font-size:78%;"&gt;(I did not test this remark ...)&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19461197-5558034587424292012?l=spsfactory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spsfactory.blogspot.com/feeds/5558034587424292012/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19461197&amp;postID=5558034587424292012&amp;isPopup=true' title='6 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/5558034587424292012'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/5558034587424292012'/><link rel='alternate' type='text/html' href='http://spsfactory.blogspot.com/2007/01/vstavsto-problem-when-installing-office_10.html' title='VSTA/VSTO problem when installing Office InfoPath 2007 &amp; .NET 3.0 *solved*'/><author><name>Kristof De Causemaeker</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/5073/1926/1600/profile_spsfactory.jpg'/></author><thr:total>6</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19461197.post-7697496515422478844</id><published>2007-01-09T22:08:00.000+01:00</published><updated>2007-01-09T22:16:05.589+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Collegues'/><category scheme='http://www.blogger.com/atom/ns#' term='Articles'/><title type='text'>Articles: Using .NET applets in browsers &amp; NHibernate explained</title><content type='html'>&lt;strong&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Check out following articles:&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;a href="http://geertverhoeven.blogspot.com"&gt;Geert Verhoeven&lt;/a&gt; is writing about .NET applets. Simply using .NET controls within your browser. Read the &lt;/span&gt;&lt;a href="http://geertverhoeven.blogspot.com/2006/12/my-first-net-applet.html"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;article &lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;about his first .NET applet.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;a href="http://www.balliauw.be/maarten"&gt;Maarten Balliauw&lt;/a&gt; wrote an &lt;/span&gt;&lt;a href="http://www.balliauw.be/maarten/blog/26,article-in-net-magazine.htm"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;article &lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;about NHibernate, the .NET version of Hibernate.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19461197-7697496515422478844?l=spsfactory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spsfactory.blogspot.com/feeds/7697496515422478844/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19461197&amp;postID=7697496515422478844&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/7697496515422478844'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/7697496515422478844'/><link rel='alternate' type='text/html' href='http://spsfactory.blogspot.com/2007/01/articles-using-net-applets-in-browsers.html' title='Articles: Using .NET applets in browsers &amp; NHibernate explained'/><author><name>Kristof De Causemaeker</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/5073/1926/1600/profile_spsfactory.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19461197.post-7092746216859183759</id><published>2007-01-09T21:57:00.000+01:00</published><updated>2007-01-09T22:16:27.775+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VSTO'/><category scheme='http://www.blogger.com/atom/ns#' term='InfoPath 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='Errors'/><category scheme='http://www.blogger.com/atom/ns#' term='VSTA'/><title type='text'>VSTA/VSTO problem when installing Office InfoPath 2007 &amp; .NET 3.0 ...</title><content type='html'>&lt;a href="http://moldenco.blogspot.com"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Jeroen Ceuppens&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt; (a collegue) and I experienced some troubles when using Office InfoPath 2007 in combination with .NET 3.0.&lt;br /&gt;&lt;br /&gt;When you try to start up VSTA within InfoPath 2007, you will receive a message which says that VSTA is not installed on your computer yet ... The computer is also complaining about MSXML 6.0... So MSXML 6.0 and VSTA must be installed on your computer ?!&lt;br /&gt;&lt;br /&gt;Jeroen described the whole problem on his &lt;/span&gt;&lt;a href="http://moldenco.blogspot.com/2007/01/problems-starting-vsta-in-infopath-2007.html"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;blog&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;. Please check out and provide us some feedback if possible!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19461197-7092746216859183759?l=spsfactory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spsfactory.blogspot.com/feeds/7092746216859183759/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19461197&amp;postID=7092746216859183759&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/7092746216859183759'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/7092746216859183759'/><link rel='alternate' type='text/html' href='http://spsfactory.blogspot.com/2007/01/vstavsto-problem-when-installing-office.html' title='VSTA/VSTO problem when installing Office InfoPath 2007 &amp; .NET 3.0 ...'/><author><name>Kristof De Causemaeker</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/5073/1926/1600/profile_spsfactory.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19461197.post-635898442441192274</id><published>2006-12-29T14:31:00.000+01:00</published><updated>2006-12-29T14:45:19.145+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Licence Keys'/><category scheme='http://www.blogger.com/atom/ns#' term='Free'/><category scheme='http://www.blogger.com/atom/ns#' term='Office 2007'/><title type='text'>Try the 2007 Microsoft Office Systems for 60 days</title><content type='html'>You can download a trial of the 2007 Microsoft Office Systems on &lt;a href="http://www.trymicrosoftoffice.com"&gt;htpp://www.trymicrosoftoffice.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Microsoft Office InfoPath 2007 is not included in any trial package. :-/&lt;br /&gt;&lt;br /&gt;For the Office 2007 in dutch, you can go to &lt;a href="http://benelux.trymicrosoftoffice.com"&gt;http://benelux.trymicrosoftoffice.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19461197-635898442441192274?l=spsfactory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spsfactory.blogspot.com/feeds/635898442441192274/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19461197&amp;postID=635898442441192274&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/635898442441192274'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/635898442441192274'/><link rel='alternate' type='text/html' href='http://spsfactory.blogspot.com/2006/12/try-2007-microsoft-office-systems-for.html' title='Try the 2007 Microsoft Office Systems for 60 days'/><author><name>Kristof De Causemaeker</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/5073/1926/1600/profile_spsfactory.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19461197.post-9038806349508405094</id><published>2006-12-03T10:55:00.000+01:00</published><updated>2008-12-09T02:58:43.868+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='InfoPath 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='File Attachment'/><category scheme='http://www.blogger.com/atom/ns#' term='Conditional Formatting'/><category scheme='http://www.blogger.com/atom/ns#' term='Controls'/><title type='text'>Restricting the number of File Attachments</title><content type='html'>&lt;span style="font-family:verdana;font-size:85%;"&gt;It's quite simple to restrict the number of attachment in a specific InfoPath Form.With some knowledge of XPath expressions you can easily extend the InfoPath default behaviour.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Following these steps:&lt;/u&gt;&lt;br /&gt;1. Create a new InfoPath form&lt;br /&gt;2. Add a repeating section on your form (Design Task Pane &gt; Controls) -&gt; name: group1&lt;/span&gt; &lt;div&gt;&lt;div&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;3. Add an 'File Attachment' control in your repeating section -&gt; name: field1&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;4. Double click on the 'repeating section' label to open its properties&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;5. Go to the Display tab and click on 'Conditional Formatting'&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;6. Click on the 'Add' button&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;7. Select 'The Expression' and enter following expression: 'count(my:field1) &gt;= 10'&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;8. Apply following formatting: 'Don't allow users to insert or delete this control'&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;9. Click on OK (3 times)&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;a href="http://1.bp.blogspot.com/_oxIos6CmEaU/RXKi3NnQPQI/AAAAAAAAAAM/MYSOsL-9SyY/s1600-h/restrictAttach.jpg"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;img id="BLOGGER_PHOTO_ID_5004241205392850178" style="CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_oxIos6CmEaU/RXKi3NnQPQI/AAAAAAAAAAM/MYSOsL-9SyY/s320/restrictAttach.jpg" border="0" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;10. Re-open the properties of the repeating section to open the conditional formatting again.&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Have a look at the formatting you just have added ... &lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Your expression will be converted into another expression:&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;strong&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;'Number of occurences of field1' is 'Greater than or equals to' 10&lt;/span&gt;&lt;/strong&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;a href="http://1.bp.blogspot.com/_oxIos6CmEaU/RXKkWNnQPRI/AAAAAAAAAAU/RPVNORg_-LI/s1600-h/restrictAttach2.jpg"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;img id="BLOGGER_PHOTO_ID_5004242837480422674" style="CURSOR: hand" alt="" src="http://1.bp.blogspot.com/_oxIos6CmEaU/RXKkWNnQPRI/AAAAAAAAAAU/RPVNORg_-LI/s320/restrictAttach2.jpg" border="0" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;11. Test your form now and try to add 11 items ...&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19461197-9038806349508405094?l=spsfactory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spsfactory.blogspot.com/feeds/9038806349508405094/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19461197&amp;postID=9038806349508405094&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/9038806349508405094'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/9038806349508405094'/><link rel='alternate' type='text/html' href='http://spsfactory.blogspot.com/2006/12/restricting-number-of-file-attachments.html' title='Restricting the number of File Attachments'/><author><name>Kristof De Causemaeker</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/5073/1926/1600/profile_spsfactory.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_oxIos6CmEaU/RXKi3NnQPQI/AAAAAAAAAAM/MYSOsL-9SyY/s72-c/restrictAttach.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19461197.post-8546814941434329493</id><published>2006-11-20T20:37:00.000+01:00</published><updated>2006-11-20T21:39:37.736+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PDF'/><category scheme='http://www.blogger.com/atom/ns#' term='iFilter'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Sharepoint Services 3.0'/><category scheme='http://www.blogger.com/atom/ns#' term='Enabling search'/><title type='text'>Enabling PDF search on WSS v3 (beta)</title><content type='html'>&lt;span style="font-family:verdana;font-size:85%;"&gt;Lots of troubles to enable the search functionality in WSS v3.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;I found a fantastic article on &lt;/span&gt;&lt;a href="http://geekswithblogs.net/sspotts/archive/2006/11/03/96045.aspx"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Stan Spotts' blog &lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;about enabling PDF search on WSS 3.0 beta.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;You must still use the &lt;/span&gt;&lt;a href="http://www.adobe.com/support/downloads/detail.jsp?ftpID=2611"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Adobe iFilter for PDF's &lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;like you did in Sharepoint 2003, but you need to check some registry settings to make sure that WSS indexes your PDF documents correctly.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Click &lt;a href="http://geekswithblogs.net/sspotts/archive/2006/11/03/96045.aspx"&gt;here &lt;/a&gt;to visit Stan Spotts' article.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Limitations&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;span style="font-family:webdings;"&gt;a&lt;/span&gt; It only indexes PDF documents after you have configurated this functionality.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;span style="font-family:webdings;"&gt;a&lt;/span&gt; You can only search for full words&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Search doesn't work ?!&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;I had a lot of troubles to configure the search functionality (without the PDF search).&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Keep in mind to configure your Search Server first and then create your Content Database !&lt;br /&gt;It seems that the order is very important in the beta version.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19461197-8546814941434329493?l=spsfactory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spsfactory.blogspot.com/feeds/8546814941434329493/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19461197&amp;postID=8546814941434329493&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/8546814941434329493'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/8546814941434329493'/><link rel='alternate' type='text/html' href='http://spsfactory.blogspot.com/2006/11/enabling-pdf-search-on-wss-30-beta.html' title='Enabling PDF search on WSS v3 (beta)'/><author><name>Kristof De Causemaeker</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/5073/1926/1600/profile_spsfactory.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19461197.post-2142985669018567573</id><published>2006-11-15T18:06:00.000+01:00</published><updated>2006-11-15T20:44:27.621+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='InfoPath 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='deployment'/><category scheme='http://www.blogger.com/atom/ns#' term='configuration'/><category scheme='http://www.blogger.com/atom/ns#' term='Windows Sharepoint Services 3.0'/><category scheme='http://www.blogger.com/atom/ns#' term='Microsoft Sharepoint Portal Server 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='InfoPath Form Services 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='publishing'/><category scheme='http://www.blogger.com/atom/ns#' term='Office 2007'/><title type='text'>Enabling InfoPath Forms Services 2007</title><content type='html'>&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;It is quite simple to enable InfoPath Forms Services 2007 on your Microsoft Office SharePoint Portal 2007. Follow the steps below to use browser-enabled forms:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;I. Central administration&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;1. Go to the Central Administration&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;2. Click on Application Management&lt;br /&gt;3. Click on Configure InfoPath Form Services under the InfoPath Forms Services section.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:78%;color:#000099;"&gt;(&lt;/span&gt;&lt;a href="http://yourserver/_admin/ipfsConfig.aspx"&gt;&lt;span style="font-size:78%;color:#000099;"&gt;http://yourserver/_admin/ipfsConfig.aspx&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-size:78%;color:#000099;"&gt;) &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://photos1.blogger.com/blogger2/5197/2375/1600/IPservices_1.jpg"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;img style="CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger2/5197/2375/320/IPservices_1.jpg" border="0" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;4. Make sure that browser-enabled form templates are allowed&lt;br /&gt;&lt;em&gt;&lt;span style="font-size:78%;"&gt;(Check all checkboxes in User Browser-Enabled Form Templates) &lt;/span&gt;&lt;/em&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://photos1.blogger.com/blogger2/5197/2375/1600/IPServices_2.jpg"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger2/5197/2375/1600/IPServices_2.1.jpg"&gt;&lt;img style="CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger2/5197/2375/320/IPServices_2.1.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;br /&gt;5. You can specify other options if necessary. Click on OK to apply the changes.&lt;br /&gt;6. You can close the Central Administration Website.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;II. List Configuration&lt;br /&gt;&lt;/strong&gt;I created a new Document Library on my site called 'InfoPath Forms'. This document does not open InfoPath forms in your browser directly. You must configure this list in this way:&lt;br /&gt;&lt;br /&gt;1. Open the List which contains browser-enabled InfoPath Forms&lt;br /&gt;2. Click on Settings and select Document Library Settings&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;a href="http://photos1.blogger.com/blogger2/5197/2375/1600/IPServices_3.jpg"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;img style="CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger2/5197/2375/320/IPServices_3.jpg" border="0" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;br /&gt;&lt;br /&gt;3. Select Advanced Settings Under 'General Settings'&lt;br /&gt;4. Configure the Browser-enabled Documents section and select 'Display as a Web page'&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://photos1.blogger.com/blogger2/5197/2375/1600/IPServices_4.0.jpg"&gt;&lt;img style="CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger2/5197/2375/320/IPServices_4.0.jpg" border="0" /&gt;&lt;/a&gt;&lt;a href="http://photos1.blogger.com/blogger2/5197/2375/1600/IPServices_4.jpg"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;br /&gt;&lt;br /&gt;5. Click on OK to confirm the changes&lt;br /&gt;&lt;/span&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;"&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;III. Publishing InfoPath Templates&lt;/strong&gt;&lt;br /&gt;Use the Publish Wizard to deploy the form on your Sharepoint Portal Server.&lt;br /&gt;Define the location, promote the fields and publish!&lt;br /&gt;&lt;span style="font-size:78%;"&gt;(In this example you must update an existing Document Library)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;Use following URL structure to deploy&lt;br /&gt;&lt;/span&gt;&lt;a href="http://yourserver/SiteDirectory/YourSite/YourList/Forms/AllItems.aspx"&gt;&lt;span style="font-size:78%;"&gt;http://yourserver/SiteDirectory/YourSite/YourList/Forms/AllItems.aspx&lt;/span&gt;&lt;/a&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:78%;"&gt; &lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;strong&gt;IV. Testing the deployed form&lt;/strong&gt;&lt;br /&gt;Create a new document in your 'InfoPath Forms' list. The form will be automatically open in your browser.&lt;/span&gt;&lt;/p&gt;&lt;span style="font-family:verdana;"&gt;&lt;a href="http://photos1.blogger.com/blogger2/5197/2375/1600/IPServices_5.jpg"&gt;&lt;img style="CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger2/5197/2375/320/IPServices_5.jpg" border="0" /&gt;&lt;/a&gt; &lt;a href="http://photos1.blogger.com/blogger2/5197/2375/1600/IPServices_6.jpg"&gt;&lt;img style="CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger2/5197/2375/320/IPServices_6.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/span&gt;&lt;strong&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;V. Tips&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;span style="font-family:webdings;font-size:180%;"&gt;a&lt;/span&gt;You can manage the toolbars at the top/bottom in InfoPath 2007.&lt;br /&gt;&lt;span style="font-size:78%;"&gt;(menu Tools &gt; Form Options &gt; Browser &gt; 'Show toolbar at top/bottom of form')&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;strong&gt;VI. Download this example&lt;/strong&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;download the example &lt;a href="http://www.decausemaeker.be/documents/spsfactory/20061115/ContactForm.xsn"&gt;here&lt;/a&gt;&lt;/div&gt;&lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19461197-2142985669018567573?l=spsfactory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spsfactory.blogspot.com/feeds/2142985669018567573/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19461197&amp;postID=2142985669018567573&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/2142985669018567573'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/2142985669018567573'/><link rel='alternate' type='text/html' href='http://spsfactory.blogspot.com/2006/11/enabling-infopath-forms-services-2007.html' title='Enabling InfoPath Forms Services 2007'/><author><name>Kristof De Causemaeker</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/5073/1926/1600/profile_spsfactory.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19461197.post-9069010206005329135</id><published>2006-11-14T20:38:00.000+01:00</published><updated>2006-11-14T21:52:21.925+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Errors property'/><category scheme='http://www.blogger.com/atom/ns#' term='InfoPath 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='FormErrorCollection'/><category scheme='http://www.blogger.com/atom/ns#' term='InfoPath Form Services 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='Errors.Delete'/><category scheme='http://www.blogger.com/atom/ns#' term='FormError'/><category scheme='http://www.blogger.com/atom/ns#' term='Errors.Add'/><title type='text'>FormErrorCollection - Errors Property</title><content type='html'>&lt;a href="http://photos1.blogger.com/blogger2/5197/2375/1600/FormErrorCollection.jpg"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;img style="CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger2/5197/2375/320/FormErrorCollection.jpg" border="0" /&gt;&lt;/span&gt;&lt;/a&gt; &lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Custom validation with managed code will be improved in InfoPath 2007. Several new classes provides the possibility to generate data validation errors in code.&lt;br /&gt;&lt;br /&gt;In InfoPath 2003 it was possible to generate errormessages (in JScript or through the .NET framework), but it wasn't possible to draw a border around the field which indicates the error.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;InfoPath 2007 provides a FormErrorCollection containing FormError objects in the XmlForm as the 'Errors' property.&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;strong&gt;Methods&lt;br /&gt;&lt;/strong&gt;1. &lt;u&gt;Errors.&lt;strong&gt;Add&lt;/strong&gt;(XPathNavigator &lt;em&gt;context&lt;/em&gt;, string &lt;em&gt;name&lt;/em&gt;, string &lt;em&gt;message&lt;/em&gt;&lt;strong&gt;)&lt;/strong&gt;;&lt;/u&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;It act like a Key/Value (name/message) collection and each error points to the node to which the error is associated (context).&lt;br /&gt;&lt;br /&gt;2. &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;u&gt;Errors.&lt;strong&gt;Delete(&lt;/strong&gt;string &lt;em&gt;name&lt;/em&gt;&lt;strong&gt;)&lt;/strong&gt;;&lt;br /&gt;&lt;/u&gt;You can remove the FormError by using the Key in the Errors.Delete method.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;strong&gt;Example&lt;br /&gt;&lt;br /&gt;&lt;/strong&gt;public void InternalStartup()&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="color:#006600;"&gt;// ...&lt;br /&gt;&lt;/span&gt;EventManager.XmlEvents["/my:myFields/my:SampleField"].Validating +=&lt;br /&gt;new XmlValidatingEventHandler(SampleField_Validating);&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="color:#006600;"&gt;// ...&lt;br /&gt;&lt;/span&gt;}&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#006600;"&gt;//Right-click on the control &gt; Programming &gt; Validating Event ...&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;public void SampleField_Validating(object sender, XmlValidatingEventArgs e)&lt;br /&gt;{&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="color:#006600;"&gt;// check if the new value isn't empty&lt;/span&gt;&lt;br /&gt;if (!String.IsNullOrEmpty(e.NewValue))&lt;br /&gt;{&lt;br /&gt;&lt;span style="color:#006600;"&gt;//current fieldvalue cannot be 'example'&lt;/span&gt;&lt;br /&gt;if (e.NewValue.ToLower().Equals("example"))&lt;br /&gt;{&lt;br /&gt;&lt;span style="color:#006600;"&gt;//e.Site points to the node that is being changed, e.Site is always the reference to the field which you are validating at that moment&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#990000;"&gt;&lt;strong&gt;Errors.Add&lt;/strong&gt;(e.Site, "Error_SampleField", "Invalid fieldvalue");&lt;/span&gt;&lt;br /&gt;}&lt;br /&gt;else &lt;span style="color:#006600;"&gt;// all other values are allowed&lt;/span&gt;&lt;br /&gt;{&lt;br /&gt;&lt;span style="color:#990000;"&gt;&lt;strong&gt;Errors.Delete&lt;/strong&gt;("Error_SampleField");&lt;/span&gt;&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger2/5197/2375/1600/FormErrorCollection.jpg"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;img style="CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger2/5197/2375/320/FormErrorCollection.jpg" border="0" /&gt;&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;strong&gt;Conclusion&lt;br /&gt;&lt;/strong&gt;&lt;span style="font-family:webdings;font-size:130%;"&gt;a&lt;/span&gt; The FormErrorCollection is also accessible in Form Services 2007 !&lt;br /&gt;&lt;span style="font-family:webdings;font-size:130%;"&gt;a&lt;/span&gt; It acts like the 'real' Data Validation (at design time)&lt;br /&gt;&lt;span style="font-family:webdings;font-size:130%;"&gt;a&lt;/span&gt; You cannot submit the form without resolving the errors ! &lt;/span&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;&lt;strong&gt;Microsoft InfoPath 2007 Object Model&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=771AEB45-9D27-4D1F-ACD1-9B950637D64E&amp;amp;displaylang=en"&gt;2007 Office System: Developer Posters&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19461197-9069010206005329135?l=spsfactory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spsfactory.blogspot.com/feeds/9069010206005329135/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19461197&amp;postID=9069010206005329135&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/9069010206005329135'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/9069010206005329135'/><link rel='alternate' type='text/html' href='http://spsfactory.blogspot.com/2006/11/formerrorcollection-errors-property.html' title='FormErrorCollection - Errors Property'/><author><name>Kristof De Causemaeker</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/5073/1926/1600/profile_spsfactory.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19461197.post-115825423640731796</id><published>2006-09-14T19:08:00.000+02:00</published><updated>2006-11-15T20:46:08.231+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Windows Vista'/><category scheme='http://www.blogger.com/atom/ns#' term='Licence Keys'/><category scheme='http://www.blogger.com/atom/ns#' term='Free'/><title type='text'>Free licence keys for Windows Vista RC 1</title><content type='html'>&lt;span style="font-family:arial;font-size:85%;"&gt;You can obtain &lt;a href="http://tinyurl.com/h4b34"&gt;free serial numbers &lt;/a&gt;to try Windows Vista Release Candidate 1.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;First you have to log in with your Microsoft Passport on the german live.com website.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;After completing some questions, a licence key will be generated.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;strong&gt;Download links:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://download.windowsvista.com/preview/rc1/en/download.htm"&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Windows Vista (English)&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://download.windowsvista.com/preview/rc1/de/download.htm"&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Windows Vista (Deutsch)&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://download.windowsvista.com/preview/rc1/jp/download.htm"&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Windows Vista (Japanisch)&lt;/span&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;a href="http://tinyurl.com/h4b34"&gt;Obtain a free licence key&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;This Windows download is not the 'Enterprise' edition. Without this free key, you can use Windows Vista RC 1 just for 14 days. After the trial period you can insert a licence code (only for the 'Ultimate' edition)&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19461197-115825423640731796?l=spsfactory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/115825423640731796'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/115825423640731796'/><link rel='alternate' type='text/html' href='http://spsfactory.blogspot.com/2006/09/free-licence-keys-for-windows-vista-rc.html' title='Free licence keys for Windows Vista RC 1'/><author><name>Kristof De Causemaeker</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/5073/1926/1600/profile_spsfactory.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-19461197.post-115718716725983063</id><published>2006-09-02T10:24:00.000+02:00</published><updated>2006-11-15T20:47:06.826+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Free'/><category scheme='http://www.blogger.com/atom/ns#' term='eBooks'/><category scheme='http://www.blogger.com/atom/ns#' term='Office 2007'/><title type='text'>Free e-books about Office 2007, Windows Sharepoint Services 3.0 &amp; Sharepoint 2007</title><content type='html'>&lt;p&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;This week I found free e-books on &lt;/span&gt;&lt;a href="http://blogs.msdn.com/mapo/default.aspx"&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Scattered Notes&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;.&lt;br /&gt;A big thanks to the &lt;/span&gt;&lt;a href="http://pointerx.net/blogs/glozano/default.aspx"&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;.NET aficionado&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;font-size:85%;"&gt; who sent me the link.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;br /&gt;&lt;br /&gt;You can directly download the free e-books in this post:&lt;/span&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://download.microsoft.com/download/3/5/a/35a8cb9f-1349-4645-ac2a-49ba61834826/First-Look-2007-Microsoft-Office-System.pdf"&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;First Look 2007 Microsoft Office Systems&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;A first look to the new look and features of the 2007 Microsoft Office Systems&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Author&lt;/u&gt;: &lt;/span&gt;&lt;a href="http://livingspace.spaces.live.com/"&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Katherine Murray&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;u&gt;Author's blog&lt;/u&gt;: You can read her technology blot at &lt;/span&gt;&lt;a href="http://revisionsplus.com/blogofficexp.html"&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;BlogOffice&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://download.microsoft.com/download/0/2/f/02f0f661-88e1-43c2-b523-88d2e9e6802f/7%20Development%20Projects%20with%20the%202007%20Microsoft%20Office%20System%20and%20Windows%20SharePoint%20Services%202007.pdf"&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;7 development projects for WSS 3.0 and SPS 2007&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;The book is about Microsoft Windows SharePoint Services 3.0, building solutions with Office SharePoint Server 2007, and creating workflows.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Publisher&lt;/u&gt;: Microsoft Press&lt;/span&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Homepage: &lt;a href="http://www.microsoft.com/office/preview/beta/testdrive.mspx"&gt;Microsoft Office Systems 2007&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19461197-115718716725983063?l=spsfactory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/115718716725983063'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/115718716725983063'/><link rel='alternate' type='text/html' href='http://spsfactory.blogspot.com/2006/09/free-e-books-about-office-2007-windows.html' title='Free e-books about Office 2007, Windows Sharepoint Services 3.0 &amp; Sharepoint 2007'/><author><name>Kristof De Causemaeker</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/5073/1926/1600/profile_spsfactory.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-19461197.post-115608739140468404</id><published>2006-08-20T17:12:00.000+02:00</published><updated>2006-11-15T20:48:32.111+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='InfoPath 2007'/><category scheme='http://www.blogger.com/atom/ns#' term='Buttons'/><category scheme='http://www.blogger.com/atom/ns#' term='Customizing XSL'/><title type='text'>Picture Buttons in InfoPath 2007</title><content type='html'>&lt;p&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;In InfoPath 2007 it is impossible to create buttons with images as background. But, you can adapt some InfoPath files by yourself to create those picture buttons. Follow my instructions:&lt;br /&gt;&lt;br /&gt;1. Create a new InfoPath form template&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;br /&gt;2. Add a new &lt;strong&gt;button&lt;/strong&gt;. (&lt;/span&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;The button has ‘button’ as standard label.The border is black and the background is gray.)&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Remar&lt;/u&gt;&lt;/span&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;u&gt;k&lt;/u&gt;&lt;br /&gt;In InfoPath 2003 it was still possible to replace the label value with a space character to have a button without text. In InfoPath 2007 it is impossible to add a space character as label value. We replace the standard value with ‘myvalue’.&lt;/span&gt;&lt;/p&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;p&gt;&lt;br /&gt;3. Go to &lt;em&gt;Tools &gt; Resource&lt;/em&gt; &lt;em&gt;Files &lt;/em&gt;and Add an .gif file as a Resource file. Rename the file to ‘&lt;strong&gt;picture.gif&lt;/strong&gt;’.&lt;br /&gt;&lt;br /&gt;4. Save your form template to ‘&lt;strong&gt;test.xsn&lt;/strong&gt;’&lt;br /&gt;&lt;br /&gt;5. Now, go to the location where you stored the form template and rename ‘test.xsn’ to ‘test.cab’.&lt;br /&gt;&lt;br /&gt;6. Extract all files and open &lt;strong&gt;View1.xsl &lt;/strong&gt;with notepad. This stylesheet file renders the xml data. The content is written in HTML en CSS. The XSL has the same relation like HTML &amp; CSS has. HTML files contain content and CSS files contain style definition which can be applied to the content files (HTML files).&lt;br /&gt;&lt;br /&gt;7. Navigate to the Style endtag.&lt;br /&gt;&lt;br /&gt;8. Add a new CSS definition for the picture button&lt;br /&gt;&lt;br /&gt;.imageButton&lt;br /&gt;{&lt;br /&gt;BACKGROUND-IMAGE: url(picture.gif);&lt;br /&gt;BACKGROUND-REPEAT: no-repeat;&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;9. Navigate to the input tag in the body which defines our button and add the newly created CSS definition the class attribute.&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;&lt;br /&gt;... class="imageButton langFont" ...&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;10. InfoPath 2007 does not support an empty buttonlabel. But you can change the label manually in this file. So replace the ‘myValue’ in the value attribute with empty quotes.&lt;br /&gt;&lt;span style="color:#3333ff;"&gt;... class="imageButton langFont" value="" ...&lt;/span&gt; &lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;br /&gt;11. Save and close View1.xsl.&lt;br /&gt;&lt;br /&gt;12. You can now reopen your form by right-clicking on manifest.xsf and select ‘Design’ in the menu.&lt;/p&gt;&lt;p&gt;13. The picture will be integrated in your view right now.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Greg Collins also wrote an article about Picture Buttons for InfoPath 2003.&lt;br /&gt;My article is a supplement on his &lt;a href="http://www.infopathdev.com/howto/tutorials/default.aspx?i=34568d691f5d4b72890add72c2903e2e"&gt;article&lt;/a&gt;.&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19461197-115608739140468404?l=spsfactory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/115608739140468404'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/115608739140468404'/><link rel='alternate' type='text/html' href='http://spsfactory.blogspot.com/2006/08/picture-buttons-in-infopath-2007.html' title='Picture Buttons in InfoPath 2007'/><author><name>Kristof De Causemaeker</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/5073/1926/1600/profile_spsfactory.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-19461197.post-115548193668722547</id><published>2006-08-13T16:57:00.000+02:00</published><updated>2006-11-14T20:35:36.114+01:00</updated><title type='text'>Switch view when drop down list has changed</title><content type='html'>&lt;span style="font-family:arial;font-size:75%;"&gt;&lt;br /&gt;It’s impossible to use the ViewInfos.SwitchView(string) method while the changed event is running. You can only switch a view by using the button clickhandler. This post will create a workaround to change view without clicking on buttons.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1. Using ViewInfos.SwitchView() method in the Changed event&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;While firing events it is impossible to switch to another view. Only the Click event on the button will permit a ‘SwitchView’ action. In all other cases you will receive a COMException at runtime.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;public void InternalStartup()     &lt;br /&gt;{                  &lt;br /&gt;           EventManager.XmlEvents["/my:myFields/my:list"].Changed +=&lt;br /&gt;           new XmlChangedEventHandler(list_Changed);     &lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void field1_Changed(object sender, XmlEventArgs e)      &lt;br /&gt;{&lt;br /&gt;           ViewInfos.SwitchView("view2");                 &lt;br /&gt;           // The code is successfully compiled, but will not run !&lt;br /&gt;           // It results in a run-time error (COMException)   &lt;br /&gt;}       &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Redirecting to another view is not quite simple. We have to use other tricks&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2. OnContextChange event is asynchronous &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;The OnContextChange event is fired when the form or elements on the forms has been changed. There is just a little problem the event is asynchronous. So, it does not fire on every change in the context node.&lt;br /&gt;&lt;br /&gt;Instead, it fires the event when all other events has been terminated.We will use the OnContextChange event (which is only enabled if you created a form without browser-compatible features) to redirect to another view.Test the Asynchronous OnContextChange event:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;public void InternalStartup()&lt;br /&gt;{&lt;br /&gt;       EventManager.FormEvents.ContextChanged +=&lt;br /&gt;       new ContextChangedEventHandler(FormEvents_ContextChanged);&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;public void FormEvents_ContextChanged(object sender, ContextChangedEventArgs e)&lt;br /&gt;{&lt;br /&gt;       System.Windows.Forms.MessageBox.Show("context changed");&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;While selecting several values in the drop down list, you will see that the OnContextChange event will not fire on every change in the context node.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;More information:&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ipsdk/html/xdevtOnContextChange_HV01104102.asp"&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Microsoft - OnContextChange event&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;3. Change the focus to force the OnContextChange event&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;We cannot trust on the OnContextChange event because it’s asynchronous. So we have to force the OnContextChange event by changing the focus from the drop down list to another field through code.&lt;br /&gt;&lt;br /&gt;To change the focus we will use a textbox which must be visible and not read-only. You cannot set the focus to every control. More information :&lt;br /&gt;&lt;a href="http://blogs.msdn.com/infopath/archive/2004/04/07/109189.aspx"&gt;http://blogs.msdn.com/infopath/archive/2004/04/07/109189.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Following code will be executed while the ‘changed event’ of the drop down list has been fired.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;public void list_Changed(object sender, XmlEventArgs e)&lt;br /&gt;{&lt;br /&gt;      SetFocus("/my:myFields/my:unusedfield");&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;private void SetFocus(string xpath)&lt;br /&gt;{&lt;br /&gt;      XPathNavigator fieldToFocus = MainDataSource.CreateNavigator().&lt;br /&gt;      SelectSingleNode(xpath,NamespaceManager);&lt;br /&gt;      this.CurrentView.SelectText(fieldToFocus);&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Download the new InfoPath 2007 Object Model by this link:&lt;br /&gt;&lt;a href="http://download.microsoft.com/download/0/9/c/09cda3f2-6d3d-4082-aec5-9a62b7679ecf/Office2007InfoPathOMPoster.exe"&gt;http://download.microsoft.com/download/0/9/c/09cda3f2-6d3d-4082-aec5-9a62b7679ecf/Office2007InfoPathOMPoster.exe&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;4. Switch to another view&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Now we can implement the OnContextChange method which allows to use the SwitchView() method.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;public void FormEvents_ContextChanged(object sender, ContextChangedEventArgs e)&lt;br /&gt;{&lt;br /&gt;   ViewInfos.SwitchView("view2");&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;The code is insufficient. The OnContextChange event will fire many times while filling in a form. It is not every time allowed to change the view. We need an extra variable which indicates if the SwitchView() method me be called.&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;    private bool canRedirect = false;&lt;br /&gt;    public void FormEvents_ContextChanged(object sender, ContextChangedEventArgs e)&lt;br /&gt;    {&lt;br /&gt;        if (canRedirect)&lt;br /&gt;        {&lt;br /&gt;            canRedirect = false;&lt;br /&gt;            ViewInfos.SwitchView("view2");&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;5. Complete code&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;public partial class FormCode&lt;br /&gt;{&lt;br /&gt;    public void InternalStartup()&lt;br /&gt;    {&lt;br /&gt;        EventManager.XmlEvents["/my:myFields/my:list"].Changed += &lt;br /&gt;            new XmlChangedEventHandler(list_Changed);&lt;br /&gt;        EventManager.FormEvents.ContextChanged += &lt;br /&gt;            new ContextChangedEventHandler(FormEvents_ContextChanged);&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    private bool canRedirect = false;&lt;br /&gt;    public void list_Changed(object sender, XmlEventArgs e)&lt;br /&gt;    {&lt;br /&gt;        canRedirect = true;&lt;br /&gt;        SetFocus("/my:myFields/my:unusedfield");&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    private void SetFocus(string xpath)&lt;br /&gt;    {&lt;br /&gt;        try&lt;br /&gt;        {&lt;br /&gt;            XPathNavigator fieldToFocus = MainDataSource.CreateNavigator().&lt;br /&gt;                SelectSingleNode(xpath,NamespaceManager);&lt;br /&gt;            this.CurrentView.SelectText(fieldToFocus);&lt;br /&gt;        }&lt;br /&gt;        catch (ArgumentException ex)&lt;br /&gt;        {&lt;br /&gt;            MessageBox.Show("The focus cannot be set to " + xpath);&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    public void FormEvents_ContextChanged(object sender, ContextChangedEventArgs e)&lt;br /&gt;    {&lt;br /&gt;        if (canRedirect)&lt;br /&gt;        {&lt;br /&gt;            canRedirect = false;&lt;br /&gt;            ViewInfos.SwitchView("view2");&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;6. Tips&lt;/strong&gt;&lt;br /&gt;You can hide the ‘canRedirect’ member by writing a wrapper class around this member&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19461197-115548193668722547?l=spsfactory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/115548193668722547'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/115548193668722547'/><link rel='alternate' type='text/html' href='http://spsfactory.blogspot.com/2006/08/switch-view-when-drop-down-list-has_13.html' title='Switch view when drop down list has changed'/><author><name>Kristof De Causemaeker</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/5073/1926/1600/profile_spsfactory.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-19461197.post-115506199748325955</id><published>2006-08-08T20:26:00.000+02:00</published><updated>2006-11-14T20:35:35.934+01:00</updated><title type='text'>Hiding check boxes and DateTime controls</title><content type='html'>&lt;span style="font-family:verdana;font-size:85%;"&gt;InfoPath still does not allowing hided checkboxes and DateTime controls. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;In certain situations it’s recommended to hide those controls for the users. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;The conditional formatting options are restricted and we can only disable them.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;strong&gt;Use following trick to hide controls:&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;1. Create an empty &lt;u&gt;group&lt;/u&gt; (for example: &lt;em&gt;CheckTest&lt;/em&gt;) in the main datasource.&lt;br /&gt;&lt;em&gt;This group will act like a wrapper section for the Checkbox (which can not be invisible)&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre style="FONT-SIZE: 70%; FONT-FAMILY: verdana"&gt;&lt;br /&gt;       my:myFields&lt;br /&gt;           -&gt; CheckTest&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;2. Add a &lt;u&gt;Boolean field into 'CheckTest'&lt;/u&gt;&lt;br /&gt;&lt;em&gt;If you don't want to hide FieldA, you can add this field directly below my:myFields.&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;pre style="FONT-SIZE: 70%; FONT-FAMILY: verdana"&gt;&lt;br /&gt;       my:myFields&lt;br /&gt;           -&gt; CheckTest&lt;br /&gt;                  -&gt; FieldA&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;3. Use ‘CheckTest’ &lt;u&gt;as Section&lt;/u&gt; on the screen.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:Verdana;font-size:85%;"&gt;4. Use conditional formatting to hide this section when the user may not see the check boxes.&lt;br /&gt;&lt;em&gt;Perhaps you need another field to base your conditional formatting on.&lt;br /&gt;For example: if FieldB is empty then 'Hide'.&lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Tip: You can base your conditional rule on another field which is calculated by customized code or directly based on existing fields or expressions in your form.&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;For a detailed example please read &lt;a href="http://www.infopathdev.com/howto/tutorials/default.aspx?i=95f238a046174e749ae2338545e75867"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Greg Collins' article on InfoPathdev.com&lt;/span&gt;&lt;/a&gt; &lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19461197-115506199748325955?l=spsfactory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/115506199748325955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/115506199748325955'/><link rel='alternate' type='text/html' href='http://spsfactory.blogspot.com/2006/08/hiding-check-boxes-and-datetime.html' title='Hiding check boxes and DateTime controls'/><author><name>Kristof De Causemaeker</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/5073/1926/1600/profile_spsfactory.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-19461197.post-115195644185206523</id><published>2006-07-03T20:58:00.000+02:00</published><updated>2006-11-14T20:35:35.845+01:00</updated><title type='text'>InfoPath 2007: Form Template Parts</title><content type='html'>&lt;span style="font-family:arial;font-size:85%;"&gt;In InfoPath 2007 it will be possible to reuse forms by creating Form Template Parts.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;You can compare those Form Template Parts with regular forms, which you can reuse into other forms.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family:arial;color:#660000;"&gt;Form Templates Parts Step by Step&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;For example: You have several forms which contains customerdata. It would be a lot of work to copy &amp; paste all fields, conditional formatting and rules. If you have 10 customer datafields (name, address, postal code, ...) which will be reused on 5 forms, you have to manually adapt your main data source in each form in InfoPath 2003.&lt;br /&gt;&lt;br /&gt;Now, in InfoPath 2007 we can create a separate form which contains our customer datafields and we save the template as an .XTP file.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-family:arial;font-size:85%;color:#336666;"&gt;1. How to create a Form Template Part ?&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Open Office InfoPath 2007. Open the File menu and select 'Design a form'.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Select 'Design a new Template Part'. (we will base our example on a 'blank' form template)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Now, It seems that InfoPath has created an empty form for you, but it isn't. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;This will be our Form template Part, which will be reused on other forms.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;color:#336666;"&gt;&lt;strong&gt;2. Managing data structure of a Form Template Part&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;You can add new datafields to your template by drag &amp;amp; drop some controls on your form.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;You can also manually insert, update or remove datafields when you select 'Data Source' &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;in the Design Tasks taskpane. The root of you template will also be named 'myFields'.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;I suggest you change the myFields root element into a more specific name like 'customer'.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;The form which will reuse this template will copy this root element and his child elements into its form.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;So it is usefull to change the root element in a understandable name for reuse.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;color:#336666;"&gt;&lt;strong&gt;3. Designing your template&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;You can design your form in the same way you design a regular form in InfoPath 2007.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;You can add conditional formatting to manage the color or the visibility (hide/show/disabled) of your components.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;You can also add some rules or data validation handlers to process your data.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;color:#336666;"&gt;&lt;strong&gt;4. Save your template&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;The template you have made, will be saved as an XTP file on your harddisk.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;You can save your template in the same way you did by forms.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;color:#336666;"&gt;&lt;strong&gt;5. Reuse the template&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Now you have to create a new form which will be based on our template.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Open the File menu and select 'Desig a form...'.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;This time you will 'Design a new Form Template' based on a 'blank' form.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Before you can use your template, we have to import the Form Template Part as a custom control.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Open the 'Controls' panel in 'Design Tasks'. In InfoPath 2007 you will find a new item in this controls list which is called 'Custom'. You can import your template by clicking on 'Add or Remove Custom Controls...'&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Point to the right template location on your harddisk and add the template as a custom control.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Drag &amp;amp; drop your created custom control on the screen.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;The root and its child elements will be copied from the template into the main datasource of your form.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;It is also possible to drag and drop more than one occurence of your template in the form. &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;InfoPath will automatically add '_x' to the imported datastructure to identify every field as a unique item.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;(replace the x by a number starting from 1, 2, 3, ...)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Save and publish your form. The Form Template has been successfully integrated in your form.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;strong&gt;6. Download the Customer example&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;You can download an example including an .xsn form which is based on a .xtp template.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;The Word 2007 document will show you some screenshots.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;(Data logic will not be added to the form, because it isn't relevant in this exercise)&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;strong&gt;Form&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;a href="http://www.decausemaeker.be/documents/spsfactory/20060703/invoice.xsn"&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Invoice form&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Template&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://www.decausemaeker.be/documents/spsfactory/20060703/customerdata.xtp"&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;Customer Template&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Screenshots (Word 2007)&lt;br /&gt;&lt;/strong&gt;&lt;/span&gt;&lt;a href="http://www.decausemaeker.be/documents/spsfactory/20060703/formTemplatePart.docx"&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;screenshots&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Example Invoice (without data logic)&lt;/strong&gt;&lt;br /&gt;&lt;/span&gt;&lt;a href="http://www.decausemaeker.be/documents/spsfactory/20060703/invoice.xml"&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;invoice example&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:arial;font-size:85%;"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19461197-115195644185206523?l=spsfactory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/115195644185206523'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/115195644185206523'/><link rel='alternate' type='text/html' href='http://spsfactory.blogspot.com/2006/07/infopath-2007-form-template-parts.html' title='InfoPath 2007: Form Template Parts'/><author><name>Kristof De Causemaeker</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/5073/1926/1600/profile_spsfactory.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-19461197.post-114873819887478709</id><published>2006-05-27T15:46:00.000+02:00</published><updated>2006-11-14T20:35:35.749+01:00</updated><title type='text'>InfoPath 2003: Tips</title><content type='html'>&lt;p&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;u&gt;1. Create a &lt;strong&gt;“please wait”&lt;/strong&gt; and a “start up” screen when you receive or submit data to a data source.&lt;/u&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;(Use a combination of the OnContextChange and OnSwitchView InfoPath methods to create such please wait views.)&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;u&gt;2. Use the &lt;strong&gt;Wingdings font &lt;/strong&gt;to show &lt;strong&gt;images on buttons&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;&lt;p&gt;&lt;u&gt;3. Provide a &lt;strong&gt;static class &lt;/strong&gt;in JavaScript or C# which contains methods &lt;strong&gt;to obtain data fields &lt;/strong&gt;of your form. It will save you a lot of code to get and set data in your form!&lt;/u&gt; &lt;/p&gt;&lt;p&gt;&lt;u&gt;Example&lt;/u&gt;:&lt;br /&gt;&lt;strong&gt;my:myFields&lt;/strong&gt;&lt;br /&gt;---- my:Customer&lt;br /&gt;--------- my:CustomerName&lt;br /&gt;---- my:Product&lt;br /&gt;--------- my:ProductName&lt;br /&gt;&lt;br /&gt;&gt; Use: Path.GetInstance(thisXDocument).GetCustomerItem(“my:CustomerName”)&lt;br /&gt;&gt; Class: Path&lt;br /&gt;&gt; Static Method: GetInstance(XDocument thisXDocument) &lt;span style="font-size:78%;"&gt;[singleton pattern]&lt;/span&gt;&lt;br /&gt;&gt; Methods GetCustomerItem() &lt;span style="font-size:78%;"&gt;(to retrieve object(s) of IXMLDOMNode = return type) &lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;4. Avoid cycles, think about the need of rules, &lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Please think about ...&lt;/p&gt;&lt;ul&gt;&lt;li&gt;how many rules I will need, &lt;/li&gt;&lt;li&gt;which fields must have rules. &lt;/li&gt;&lt;li&gt;...&lt;br /&gt;&lt;br /&gt;(Without this analysis, you will create cycles in complex forms)&lt;br /&gt;(Too much rules are not maintainable)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;u&gt;5. Let's hope that InfoPath 2007 will provide more functionality: &lt;/u&gt;&lt;br /&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Clickable images&lt;/li&gt;&lt;li&gt;Support for repeating sections within other repeating sections (no recursion)&lt;/li&gt;&lt;li&gt;a list with all rules and conditional formatting per control and field&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19461197-114873819887478709?l=spsfactory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/114873819887478709'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/114873819887478709'/><link rel='alternate' type='text/html' href='http://spsfactory.blogspot.com/2006/05/infopath-2003-tips.html' title='InfoPath 2003: Tips'/><author><name>Kristof De Causemaeker</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/5073/1926/1600/profile_spsfactory.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-19461197.post-114873734568599258</id><published>2006-05-27T15:38:00.000+02:00</published><updated>2006-11-14T20:35:35.668+01:00</updated><title type='text'>InfoPath 2003: do's and don'ts</title><content type='html'>&lt;p&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;I am currently a Office - InfoPath 2003 consultant. I really learn a lot about InfoPath and its boundaries. In my opinion it's interesting to summarize some practical do's and the don't for InfoPath 2003 before you promote InfoPath as Office's wonder. Those do's and don't can be a start for a new post. ;-)&lt;br /&gt;&lt;br /&gt;Here they are:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:130%;color:#cc0000;"&gt;&lt;strong&gt;Don’ts&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;- &lt;strong&gt;Do not make applications&lt;/strong&gt; in InfoPath 2003 with logging, historical data&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;- InfoPath 2003 &lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;strong&gt;does not support workflows&lt;br /&gt;&lt;/strong&gt;- Do not create a form with one or more views for several roles when each role or view has its &lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;own rules. Rules are bound to data fields. So, if you use a rule on view 1, the rule will also be executed &lt;/span&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;in other views. On the other hand conditional display formatting will be executed per control which represents a field on one view. So, a conditional formatting on view 1 will not influence other views.&lt;br /&gt;&lt;br /&gt;- Do not use InfoPath as GUI + business + database&lt;br /&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;- InfoPath &lt;strong&gt;does not support multi – languages&lt;/strong&gt; (if the company forbid to use several views per language)&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;color:#009900;"&gt;Do’s&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;- Create forms in InfoPath 2003 &lt;strong&gt;without workflows&lt;/strong&gt;. Do not call your form an application !!!&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;&lt;u&gt;&lt;br /&gt;Examples:&lt;/u&gt; &lt;em&gt;a form to request your holiday, a form which represents a bill and calculate totals&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;- InfoPath is perfect to replace the GUI part of your application, but it’s very difficult to replace all layers in your application.&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:verdana;"&gt;&lt;em&gt;&lt;br /&gt;Use InfoPath to show and format data from databases, web services, SharePoint, …&lt;br /&gt;InfoPath can be a perfect &lt;strong&gt;smart client&lt;/strong&gt; which can show, send, format, calculate data … but nothing more …&lt;br /&gt;&lt;/em&gt;&lt;br /&gt;- If you use different rules on the same fields for different form users (roles). I suggest to &lt;strong&gt;divide the form&lt;/strong&gt; in more than one form which will separate the rules for all different users. So, there will be no rule-conflicts.&lt;br /&gt;&lt;br /&gt;- I prefer &lt;strong&gt;Visual C# to write custom code&lt;/strong&gt;. You can use the IntelliSense of Visual Studio which can reduce frustrating moments in JavaScript.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19461197-114873734568599258?l=spsfactory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/114873734568599258'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/114873734568599258'/><link rel='alternate' type='text/html' href='http://spsfactory.blogspot.com/2006/05/infopath-2003-dos-and-donts.html' title='InfoPath 2003: do&apos;s and don&apos;ts'/><author><name>Kristof De Causemaeker</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/5073/1926/1600/profile_spsfactory.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-19461197.post-113674800738828526</id><published>2006-01-08T20:14:00.000+01:00</published><updated>2006-11-14T20:35:35.600+01:00</updated><title type='text'>How to enable SSL for IIS</title><content type='html'>&lt;strong&gt;Enabling SSL in 4 steps&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;1. First of all you have to install the &lt;strong&gt;IIS Resource Kit &lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;Download location:&lt;br /&gt;&lt;/span&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=56FC92EE-A71A-4C73-B628-ADE629C89499&amp;displaylang=en"&gt;&lt;span style="font-size:85%;"&gt;http://www.microsoft.com/downloads/details.aspx?familyid=56FC92EE-A71A-4C73-B628-ADE629C89499&amp;amp;displaylang=en&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;2. After the installation you must retrieve your virtual server ID. (if you want to specify virtual server which different from ‘Default Web Site’ which has ID = 1)&lt;br /&gt;(virtual server example &gt; &lt;em&gt;c:\inetpub\spsroot&lt;/em&gt;)&lt;br /&gt;&lt;br /&gt;You will use &lt;strong&gt;MetaBase explorer&lt;/strong&gt; to retrieve the ID. You can find this program under the newly created directory 'ISS resources' in your start menu.&lt;br /&gt;&lt;br /&gt;In MetaBase explorer, you will open the &lt;em&gt;server &gt; LM &gt; W3SVC node&lt;/em&gt;&lt;br /&gt;Under W3SVC you can find several ID's with their corresponding data.&lt;br /&gt;In this case: ID = 407700768 (&lt;em&gt;c:\inetpub\spsroot&lt;/em&gt;)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/5073/1926/1600/ssl1.jpg"&gt;&lt;img style="CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger/5073/1926/400/ssl1.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3. Now we will enable SSL with &lt;strong&gt;SelfSSL&lt;/strong&gt; (another program in the IIS Resource Kit)&lt;br /&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/5073/1926/1600/ssl2.jpg"&gt;&lt;img style="CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger/5073/1926/400/ssl2.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;This program uses several parameters to configure SSL on your virtual server.&lt;br /&gt;Type the following command:&lt;br /&gt;&lt;u&gt;selfssl.exe /N:CN=&lt;em&gt;&lt;computername&gt;&lt;/em&gt;  /K:1024  /V:7  /S:487700768  /P:443&lt;/u&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;(you can find the meaning of the parameters in the documentation)&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;4. Surf to the secured website: &lt;a href="https://servername"&gt;https://servername&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Attention please: do not use the port of your virtual server to access the secured portal.&lt;br /&gt;for example: &lt;a href="http://servername:101"&gt;http://servername:101&lt;/a&gt; becomes &lt;a href="https://servername"&gt;https://servername&lt;/a&gt;.&lt;br /&gt;SSL uses port 443 as default.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19461197-113674800738828526?l=spsfactory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/113674800738828526'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/113674800738828526'/><link rel='alternate' type='text/html' href='http://spsfactory.blogspot.com/2006/01/how-to-enable-ssl-for-iis.html' title='How to enable SSL for IIS'/><author><name>Kristof De Causemaeker</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/5073/1926/1600/profile_spsfactory.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-19461197.post-113674726824498349</id><published>2006-01-08T19:52:00.000+01:00</published><updated>2006-11-14T20:35:35.535+01:00</updated><title type='text'>How to delete your WSS sites completely ?</title><content type='html'>&lt;a href="http://photos1.blogger.com/blogger/5073/1926/1600/del3.0.jpg"&gt;&lt;/a&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/5073/1926/1600/del3.jpg"&gt;&lt;/a&gt;&lt;br /&gt;It seems to be easy, but to delete WSS sites you have to do &lt;u&gt;3 things&lt;/u&gt;:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1. Remove the physical path&lt;/strong&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;Go to your WSS site &gt; Site Settings &gt; Go To Site Administration &gt; Management and Statistics &gt; Delete Site&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/5073/1926/1600/del1.0.jpg"&gt;&lt;img style="WIDTH: 416px; CURSOR: hand; HEIGHT: 132px" height="219" alt="" src="http://photos1.blogger.com/blogger/5073/1926/400/del1.jpg" width="494" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2. Remove the link to the WSS site &lt;/strong&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;Go to SiteDirectory (&lt;/span&gt;&lt;a href="http://server/SiteDirectory/Lists/Sites/Summary.aspx"&gt;&lt;span style="color:#000099;"&gt;http://server/SiteDirectory/Lists/Sites/Summary.aspx&lt;/span&gt;&lt;/a&gt;&lt;span style="color:#000099;"&gt;) &gt; Manage Sites&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/5073/1926/1600/del2.png"&gt;&lt;img style="CURSOR: hand" alt="" src="http://photos1.blogger.com/blogger/5073/1926/400/del2.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;3. Exclude the site of the search results&lt;/strong&gt;&lt;br /&gt;&lt;span style="color:#000099;"&gt;Portal &gt; Site Settings &gt; Configure search and indexing &gt; View sites pending approval for indexing&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://photos1.blogger.com/blogger/5073/1926/1600/del3.1.jpg"&gt;&lt;img style="WIDTH: 451px; CURSOR: hand; HEIGHT: 181px" height="181" alt="" src="http://photos1.blogger.com/blogger/5073/1926/400/del3.0.jpg" width="423" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Your WSS site has been deleted successfully!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19461197-113674726824498349?l=spsfactory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spsfactory.blogspot.com/feeds/113674726824498349/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19461197&amp;postID=113674726824498349&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/113674726824498349'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/113674726824498349'/><link rel='alternate' type='text/html' href='http://spsfactory.blogspot.com/2006/01/how-to-delete-your-wss-sites.html' title='How to delete your WSS sites completely ?'/><author><name>Kristof De Causemaeker</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/5073/1926/1600/profile_spsfactory.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19461197.post-113381285360118275</id><published>2005-12-05T20:39:00.000+01:00</published><updated>2006-11-14T20:35:35.397+01:00</updated><title type='text'>How to configure your MyInbox webpart automatically ?</title><content type='html'>&lt;span style="font-family:verdana;font-size:85%;"&gt;It seems to be so difficult to configure your SharePoint Outlook webparts automatically, but it isn't !&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Last week, I tried everything, but I failed to configure those Outlook webparts.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;It seems to be nobody wants to configure a MyInbox automatically for every user on the MySite. I didn't found any website or blog with information, I just found some questions on forums without an answer.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;So, Can I conclude that every user must know the servername and his mailboxname ?&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;No, it's irrealistic in my opinion !&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;span style="font-size:85%;"&gt;This morning, I had 'one of my famous intelligent moments' &lt;strong&gt;*d'oh*&lt;/strong&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;So, here's the one and only, the solution !&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;u&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Follow the &lt;strong&gt;autoConfig&lt;/strong&gt; &lt;strong&gt;lab&lt;/strong&gt; below to succeed the configuration for every user at runtime&lt;/span&gt;&lt;/u&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;1. Create a new Webpart Library project&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;2. Override the CreateChildControls&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;color:#009900;"&gt;// import section&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;using Microsoft.SharePoint.Portal.WebControls;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;color:#009900;"&gt;// attributes&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;private OWAInboxPart wpInbox;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;protected override void CreateChildControls()&lt;br /&gt;&lt;/strong&gt;{&lt;br /&gt;&lt;span style="color:#009900;"&gt;// inbox webpart&lt;/span&gt;&lt;br /&gt;wpInbox = new OWAInboxPart();&lt;br /&gt;Controls.Add(configureInbox(wpInbox));&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;3. Create a new method to configure your Inbox webpart. This method will determine the mailboxname and the servername at runtime for a particular user.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;strong&gt;private OWAInboxPart configureInbox(OWAInboxPart wpInbox)&lt;/strong&gt;&lt;br /&gt;{&lt;br /&gt;&lt;span style="color:#009900;"&gt;//Connect to the portal and get the portal context&lt;/span&gt;.&lt;br /&gt;TopologyManager topology = new TopologyManager();&lt;br /&gt;PortalSite portal = topology.PortalSites[new Uri(&lt;/span&gt;&lt;/span&gt;&lt;a href="http://servername"&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;http://&lt;em&gt;servername&lt;/em&gt;&lt;/span&gt;&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;)];&lt;br /&gt;PortalContext context = PortalApplication.GetContext(portal);&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#009900;"&gt;//initialize user profile config manager object&lt;/span&gt;&lt;br /&gt;UserProfileManager profileManager = new UserProfileManager(context);&lt;br /&gt;UserProfile prof = profileManager.GetUserProfile(true);&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;color:#009900;"&gt;// use the profile object to retrieve the properties you need in your company to &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;color:#009900;"&gt;// retrieve the &lt;/span&gt;&lt;span style="font-family:courier new;font-size:85%;color:#009900;"&gt;mailboxname&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="color:#009900;"&gt;&lt;em&gt;// example: string workmail = prof[PropertyConstants.WorkEmail].ToString();&lt;/em&gt;&lt;br /&gt;&lt;/span&gt;wpInbox.MailboxName = "kristofdc";&lt;/span&gt;&lt;/span&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;wpInbox.OWAServerAddressRoot = "&lt;a href="http://servername/exchange"&gt;http://&lt;em&gt;servername&lt;/em&gt;/exchange&lt;/a&gt;";&lt;br /&gt;&lt;br /&gt;return wpInbox; &lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;span style="font-size:85%;"&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Courier New;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:verdana;"&gt;4. Override the RenderWebPart method&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family:courier new;"&gt;&lt;strong&gt;protected override void RenderWebPart(HtmlTextWriter output)&lt;/strong&gt;&lt;br /&gt;{&lt;br /&gt;try&lt;br /&gt;{&lt;br /&gt;wpInbox.RenderControl(output);&lt;br /&gt;}&lt;br /&gt;catch(Exception ex)&lt;br /&gt;{&lt;br /&gt;output.Write(ex.ToString());&lt;br /&gt;}&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:courier new;font-size:85%;"&gt;}&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;5. And finally you will add a CAB-setup for your custom webpart.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;6. Just compile, deploy and use !&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;"&gt;&lt;strong&gt;&lt;em&gt;Remarks:&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:130%;"&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;&lt;strong&gt;&lt;em&gt;This MyInbox example works also with the MyCalendar &amp;amp; MyTasks.&lt;/em&gt;&lt;/strong&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Success garanteed !&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;Happy Programming !&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:verdana;font-size:85%;"&gt;The Sharepoint Factory Geek&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19461197-113381285360118275?l=spsfactory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spsfactory.blogspot.com/feeds/113381285360118275/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19461197&amp;postID=113381285360118275&amp;isPopup=true' title='9 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/113381285360118275'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/113381285360118275'/><link rel='alternate' type='text/html' href='http://spsfactory.blogspot.com/2005/12/how-to-configure-your-myinbox-webpart.html' title='How to configure your MyInbox webpart automatically ?'/><author><name>Kristof De Causemaeker</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/5073/1926/1600/profile_spsfactory.jpg'/></author><thr:total>9</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19461197.post-113338152844480545</id><published>2005-11-30T21:07:00.000+01:00</published><updated>2006-11-14T20:35:35.314+01:00</updated><title type='text'>Welcome in the SharePoint Factory</title><content type='html'>&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Dear bloggers,&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Welcome @ my blog Site.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Since I've made the first steps into 'Microsoft's Sharepoint Factory', I realized why I need a blog: it's an efficient way to share information with other people.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;It's always nice to meet other Sharepoint lovers in this factory.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;So just contact me if you need some support.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:trebuchet ms;font-size:85%;"&gt;Have a nice Sharepoint day!&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family:Trebuchet MS;font-size:85%;"&gt;Kristof&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19461197-113338152844480545?l=spsfactory.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spsfactory.blogspot.com/feeds/113338152844480545/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=19461197&amp;postID=113338152844480545&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/113338152844480545'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19461197/posts/default/113338152844480545'/><link rel='alternate' type='text/html' href='http://spsfactory.blogspot.com/2005/11/welcome-in-sharepoint-factory.html' title='Welcome in the SharePoint Factory'/><author><name>Kristof De Causemaeker</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://photos1.blogger.com/blogger/5073/1926/1600/profile_spsfactory.jpg'/></author><thr:total>3</thr:total></entry></feed>
