<?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-8021052411787210926</id><updated>2011-11-27T16:28:11.288-08:00</updated><category term='baby spain barcelona'/><category term='microsoft sharepoint error'/><category term='sharepoint virtual pc'/><title type='text'>Lars' Stuff</title><subtitle type='html'>.NET and Sharepoint tidbits by Lars Lynch</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://larslynch.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://larslynch.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Lars</name><uri>http://www.blogger.com/profile/12915174517828532359</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_zghBEFLGW1Q/S2sskb489BI/AAAAAAAAAaw/-ipGjg48ePw/S220/cv_photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>32</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-8021052411787210926.post-8997618405956988179</id><published>2011-11-07T00:34:00.000-08:00</published><updated>2011-11-07T00:34:56.709-08:00</updated><title type='text'>DirectX Problems with Skype -- Solved (use 32bit colors)</title><content type='html'>The short version:&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Skype video needs 32bit color quality to do DirectX hardware accelerated video.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The long version:&lt;br /&gt;&lt;br /&gt;A few weeks ago I wiped clean an old laptop we use for Skype and reinstalled WindowsXP.&amp;nbsp; But after the reinstall, Skype video calls were low quality and the framerate was much lower than I remember before I reinstalled the OS.&lt;br /&gt;&lt;br /&gt;So I followed Skype's instructions to get hardware-accelerated video:&lt;br /&gt;&lt;br /&gt;1.&amp;nbsp; Updated graphics driver.&lt;br /&gt;2.&amp;nbsp; Installed DirectX 9.0c&lt;br /&gt;3.&amp;nbsp; Ran the DirectX diagnostics and tests, but still no change on the Skype video quality.&lt;br /&gt;&lt;br /&gt;I could tell Skype was still not using DirectX hardware acceleration because the CPU load simply viewing my own webcam in the Video Options menu was over 40%.&lt;br /&gt;&lt;br /&gt;Exploring my video card settings, I saw that for some reason the color quality was set at 16bit, when normally it should be at 32bit.&amp;nbsp; Changing that solved the problem.&amp;nbsp; Go figure.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8021052411787210926-8997618405956988179?l=larslynch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://larslynch.blogspot.com/feeds/8997618405956988179/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://larslynch.blogspot.com/2011/11/directx-problems-with-skype-solved-use.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/8997618405956988179'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/8997618405956988179'/><link rel='alternate' type='text/html' href='http://larslynch.blogspot.com/2011/11/directx-problems-with-skype-solved-use.html' title='DirectX Problems with Skype -- Solved (use 32bit colors)'/><author><name>Lars</name><uri>http://www.blogger.com/profile/12915174517828532359</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_zghBEFLGW1Q/S2sskb489BI/AAAAAAAAAaw/-ipGjg48ePw/S220/cv_photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8021052411787210926.post-89402788165746574</id><published>2011-10-11T06:01:00.000-07:00</published><updated>2011-10-11T06:01:34.986-07:00</updated><title type='text'>Strange behavior from an old Acer Aspire 3000 laptop</title><content type='html'>We have an old Acer Aspire 3003 laptop that has been relegated to Skype duty. But recently the integrated mouse and keyboard would hardly respond at the login screen, as if something was consuming all the CPU. Starting Windows XP in safe mode fixed the problem so I proceded to wipe the hard drive and give it a fresh reinstall.&lt;br /&gt;&lt;br /&gt;But the same problem arose during installation and again once Windows was installed.&amp;nbsp; After some more Googling, I came across several threads which suggested removing the battery (which hardly holds a charge anymore) and running the laptop only on AC power.&amp;nbsp; Lo and behold, that fixed the problem instantly.&lt;br /&gt;&lt;br /&gt;Some theories I've heard is that battery circuitry overheats the south bridge chip on the motherboard for some reason, but I've not investigated further.&lt;br /&gt;&lt;br /&gt;Weird.&lt;br /&gt;&lt;br /&gt;Note: After further research, people suggest that simply disabling the "Microsoft ACPI compliant battery" in the Device Manager will be enough. If I get time, I might try it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8021052411787210926-89402788165746574?l=larslynch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://larslynch.blogspot.com/feeds/89402788165746574/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://larslynch.blogspot.com/2011/10/strange-behavior-from-old-acer-aspire.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/89402788165746574'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/89402788165746574'/><link rel='alternate' type='text/html' href='http://larslynch.blogspot.com/2011/10/strange-behavior-from-old-acer-aspire.html' title='Strange behavior from an old Acer Aspire 3000 laptop'/><author><name>Lars</name><uri>http://www.blogger.com/profile/12915174517828532359</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_zghBEFLGW1Q/S2sskb489BI/AAAAAAAAAaw/-ipGjg48ePw/S220/cv_photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8021052411787210926.post-5978984000383073336</id><published>2011-10-05T06:03:00.000-07:00</published><updated>2011-10-06T01:54:40.105-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='baby spain barcelona'/><title type='text'>Baby paperwork in Spain</title><content type='html'>This post has nothing to do with Sharepoint or .NET, but read on if you're a foreigner having a newborn in Spain. As you already know, any government dealings in Spain involve a lot of paperwork and office visits. None more than the birth of a child (especially to foreigners).&lt;br /&gt;&lt;br /&gt;  The details below were valid for our daughter born in Barcelona in October of 2010. The documents listed are by no means complete and the requirements change all the time. Check the official websites and call the offices before you visit. Even then you'll still probably be missing some documents.&lt;br /&gt;&lt;br /&gt;  I'm American and did all of her paperwork based on her American nationality. We didn't choose to use her Belgian passport as Belgian law only allows the father's surname for a child and that could create problems in the future as Spanish law requires both parents' surnames.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Day 1:&lt;/span&gt; Your baby is born and your life changes forever.&lt;br /&gt;&lt;div style="margin-left: 10px"&gt;&lt;table&gt;&lt;tr&gt;&lt;td style="vertical-align:top"&gt;&lt;span style="font-weight: bold;"&gt;Goal:&lt;/span&gt;&lt;/td&gt;&lt;td style="vertical-align:top"&gt; A birth record from the doctor stating how the birth went and some other medical details. And your beautiful new child.&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Day 2:&lt;/span&gt; The Registro Civil&lt;br /&gt;&lt;div style="margin-left: 10px"&gt;&lt;table&gt;&lt;tr&gt;&lt;td style="vertical-align:top"&gt;&lt;span style="font-weight: bold;"&gt;Goal:&lt;/span&gt;&lt;/td&gt;&lt;td style="vertical-align:top"&gt; A libro de familia if you don't already have one, a Spanish birth certificate for your child and optionally an international version of the Spanish birth certificate if you request it.&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="vertical-align:top"&gt;&lt;span style="font-weight: bold;"&gt;Bring:&lt;/span&gt;&lt;/td&gt;&lt;td style="vertical-align:top"&gt; Both parents and child. Passports, the birth record, empadronamiento and photocopies of all documents including every single page of the passport.&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Day 3:&lt;/span&gt; Your embassy or consulate&lt;br /&gt;&lt;div style="margin-left: 10px"&gt;&lt;table&gt;&lt;tr&gt;&lt;td style="vertical-align:top"&gt;&lt;span style="font-weight: bold;"&gt;Goal:&lt;/span&gt;&lt;/td&gt;&lt;td style="vertical-align:top"&gt; a passport for the baby and optionally a birth certificate from your country&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="vertical-align:top"&gt;&lt;span style="font-weight: bold;"&gt;Bring:&lt;/span&gt;&lt;/td&gt;&lt;td style="vertical-align:top"&gt; The parent with the nationality in question and the child. Your passport, the child's birth certificate, photos of the baby, money and photocopies of everything.&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td style="vertical-align:top"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Note:&lt;/span&gt;&lt;/td&gt;&lt;td style="vertical-align:top"&gt; I've heard that several countries (Italy among others) simply imprint the child's name in a parent's passport, which seems the fastest way to get the child an official nationality.&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Day 4:&lt;/span&gt; The Oficina de Atencion al Ciudadano or Ayuntamiento&lt;br /&gt;&lt;div style="margin-left: 10px"&gt;&lt;table&gt;&lt;tr&gt;&lt;td style="vertical-align:top"&gt;&lt;span style="font-weight: bold;"&gt;Goal:&lt;/span&gt;&lt;/td&gt;&lt;td style="vertical-align:top"&gt; A certificate of empadronamiento for your child, stating their official address.&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="vertical-align:top"&gt;&lt;span style="font-weight: bold;"&gt;Bring:&lt;/span&gt;&lt;/td&gt;&lt;td style="vertical-align:top"&gt; A parent and the child. Passports and DNI, libro de familia, empadronamiento and photocopies of all.&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Day 5:&lt;/span&gt; The Oficina de Extranjeros or Policia Nacional (if you don't have an Oficina de Extranjeros in your town)&lt;br /&gt;&lt;div style="margin-left: 10px"&gt;&lt;table&gt;&lt;tr&gt;&lt;td style="vertical-align:top"&gt;&lt;span style="font-weight: bold;"&gt;Goal:&lt;/span&gt;&lt;/td&gt;&lt;td style="vertical-align:top"&gt; A NIE for your child, necessary for almost all transactions in Spain.  For many transactions, the initial paperwork with the number on it is enough so you don't have to wait for the ID card.&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="vertical-align:top"&gt;&lt;span style="font-weight: bold;"&gt;Bring:&lt;/span&gt;&lt;/td&gt;&lt;td style="vertical-align:top"&gt; The child's passport, libro de famila, photos, the EX forms from the Ministry of Interior website, lots of other paperwork, all photocopied.&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Day 6:&lt;/span&gt; The Oficina de Seguridad Social (make an appointment if you can)&lt;br /&gt;&lt;div style="margin-left: 10px"&gt;&lt;table&gt;&lt;tr&gt;&lt;td style="vertical-align:top"&gt;&lt;span style="font-weight: bold;"&gt;Goal:&lt;/span&gt;&lt;/td&gt;&lt;td style="vertical-align:top"&gt; Paperwork to bring back to your employer and possibly a Social Security number for the child if she already has a NIE&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="vertical-align:top"&gt;&lt;span style="font-weight: bold;"&gt;Bring:&lt;/span&gt;&lt;/td&gt;&lt;td style="vertical-align:top"&gt; The libro de familia, the birth record, the paperwork from the employers of both parents for the parental leave of absence&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Day 7:&lt;/span&gt; Your local health clinic (CAP in Catalunya)&lt;br /&gt;&lt;div style="margin-left: 10px"&gt;&lt;table&gt;&lt;tr&gt;&lt;td style="vertical-align:top"&gt;&lt;span style="font-weight: bold;"&gt;Goal:&lt;/span&gt;&lt;/td&gt;&lt;td style="vertical-align:top"&gt; Your baby's health card and her first appointment with the pediatrician&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td style="vertical-align:top"&gt;&lt;span style="font-weight: bold;"&gt;Bring:&lt;/span&gt;&lt;/td&gt;&lt;td style="vertical-align:top"&gt; Libro de familia, passports, baby's NIE, birth record, empadronamiento, child's Social Security certificate and your health cards&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td style="vertical-align:top"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Note:&lt;/span&gt;&lt;/td&gt;&lt;td style="vertical-align:top"&gt; If getting your child's Social Security certificate is taking a long time, the local clinic might make an appointment with the pediatrician anyway if you show you've filled out the preliminary documents and explain your story&lt;br /&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Day 8:&lt;/span&gt; Rest and enjoy your baby&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h1&gt;Optional but interesting paperwork&lt;/h1&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Spanish nationality for your child&lt;/span&gt;&lt;br /&gt;&lt;div style="margin-left: 10px"&gt;&lt;table&gt;&lt;tr&gt;&lt;td style="vertical-align:top"&gt;&lt;span style="font-weight: bold;"&gt;Contact:&lt;/span&gt;&lt;/td&gt;&lt;td style="vertical-align:top"&gt; The Registro Civil.&lt;/td&gt;&lt;/tr&gt;&lt;br /&gt;&lt;tr&gt;&lt;td style="vertical-align:top"&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Note:&lt;/span&gt;&lt;/td&gt;&lt;td style="vertical-align:top"&gt; Your child can apply for citizenship after residing for one year in Spain, but you can make the appointment beforehand.  The administrative backlog varies greatly by city and in Barcelona, the current wait to simply present the paperwork is two years.  So make your appointment as soon as possible.&lt;br /&gt;  &lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;National or regional child assistance money (though government cuts make this improbable)&lt;/span&gt;&lt;br /&gt;&lt;div style="margin-left: 10px"&gt;&lt;table&gt;&lt;tr&gt;&lt;td style="vertical-align:top"&gt;&lt;span style="font-weight: bold;"&gt;Contact:&lt;/span&gt;&lt;/td&gt;&lt;td style="vertical-align:top"&gt; In Barcelona, the department of social services&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8021052411787210926-5978984000383073336?l=larslynch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://larslynch.blogspot.com/feeds/5978984000383073336/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://larslynch.blogspot.com/2011/10/baby-paperwork-in-spain.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/5978984000383073336'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/5978984000383073336'/><link rel='alternate' type='text/html' href='http://larslynch.blogspot.com/2011/10/baby-paperwork-in-spain.html' title='Baby paperwork in Spain'/><author><name>Lars</name><uri>http://www.blogger.com/profile/12915174517828532359</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_zghBEFLGW1Q/S2sskb489BI/AAAAAAAAAaw/-ipGjg48ePw/S220/cv_photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8021052411787210926.post-852620095551824419</id><published>2011-03-08T09:25:00.000-08:00</published><updated>2011-03-08T09:32:48.106-08:00</updated><title type='text'>Update panel not working in Sharepoint</title><content type='html'>After several hours of investigating why my simple HelloWorld UpdatePanel didn't work in Sharepoint, despite having installed the Sharepoint Guidance package and enabling the SafeScriptManager and changing the web.config for AJAX controls, I came across the following blog post:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://msmvps.com/blogs/shareblog/archive/2009/04/29/update-panel-not-working-like-you-expect.aspx"&gt;http://msmvps.com/blogs/shareblog/archive/2009/04/29/update-panel-not-working-like-you-expect.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Turns out that there is an error in the BlueBand master page (the one I was using) that broke the postback mechanism for UpdatePanels.  Changing master pages fixed the problem.&lt;br /&gt;&lt;br /&gt;Specifically:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;lt;body class="body" onload="BLOCKED SCRIPT_spBodyOnLoadWrapper();"&amp;gt;&lt;br /&gt; &amp;lt;webpartpages:spwebpartmanager runat="server"&amp;gt;&lt;br /&gt; &amp;lt;form runat="server" onsubmit="return _spFormOnSubmitWrapper();"&amp;gt;&lt;br /&gt;&lt;br /&gt;Should be:&lt;br /&gt;&lt;br /&gt;&amp;lt;body class="body" onload="BLOCKED SCRIPT_spBodyOnLoadWrapper();"&amp;gt;&lt;br /&gt; &amp;lt;form runat="server" onsubmit="return _spFormOnSubmitWrapper();"&amp;gt;&lt;br /&gt;&amp;lt;webpartpages:spwebpartmanager runat="server"&amp;gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8021052411787210926-852620095551824419?l=larslynch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://larslynch.blogspot.com/feeds/852620095551824419/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://larslynch.blogspot.com/2011/03/update-panel-not-working-in-sharepoint.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/852620095551824419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/852620095551824419'/><link rel='alternate' type='text/html' href='http://larslynch.blogspot.com/2011/03/update-panel-not-working-in-sharepoint.html' title='Update panel not working in Sharepoint'/><author><name>Lars</name><uri>http://www.blogger.com/profile/12915174517828532359</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_zghBEFLGW1Q/S2sskb489BI/AAAAAAAAAaw/-ipGjg48ePw/S220/cv_photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8021052411787210926.post-3042223785669066785</id><published>2011-01-24T05:45:00.000-08:00</published><updated>2011-01-24T05:54:56.896-08:00</updated><title type='text'>SQL Server doesn't free all space with deletes on image columns</title><content type='html'>All this began with a Sharepoint_Config database that grew to 16GB when the norm is 200MB.  Turns out a developer was publishing Infopath forms with managed code that included 10MB DLL with each version.  And each version was stored in the Sharepoint_Config database, specifically the Binaries table.&lt;br /&gt;&lt;br /&gt;After cleaning out the tables involved (Objects and Binaries) using the dropObject stored procedure, the table still used 16GB.  I tried all the cleanup commands I knew (DBCC CLEANTABLE, DBCC SHRINKFILE, DBCC UPDATEUSAGE), but none worked.&lt;br /&gt;&lt;br /&gt;Finally I came across this post that solved my problem: &lt;a href="http://www.sqlservercentral.com/Forums/Topic1011086-146-1.aspx"&gt;http://www.sqlservercentral.com/Forums/Topic1011086-146-1.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In short,&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Add a new data file to your database.&lt;/li&gt;&lt;li&gt;Empty the first data file using DBCC SHRINKFILE (database_file1,EMPTYFILE) .This step took several hours on my 16GB database and eventually ended with an error that I ignored.&lt;/li&gt;&lt;li&gt;Shrink the first data file down to a normal size.&lt;/li&gt;&lt;li&gt;Empty the second data file.&lt;/li&gt;&lt;li&gt;Delete the second data file.&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/8021052411787210926-3042223785669066785?l=larslynch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://larslynch.blogspot.com/feeds/3042223785669066785/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://larslynch.blogspot.com/2011/01/sql-server-doesnt-free-all-space-with.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/3042223785669066785'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/3042223785669066785'/><link rel='alternate' type='text/html' href='http://larslynch.blogspot.com/2011/01/sql-server-doesnt-free-all-space-with.html' title='SQL Server doesn&apos;t free all space with deletes on image columns'/><author><name>Lars</name><uri>http://www.blogger.com/profile/12915174517828532359</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_zghBEFLGW1Q/S2sskb489BI/AAAAAAAAAaw/-ipGjg48ePw/S220/cv_photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8021052411787210926.post-1514437352875346896</id><published>2010-11-05T01:54:00.001-07:00</published><updated>2010-11-05T02:11:06.104-07:00</updated><title type='text'>Disable Active Directory group membership indexing in MOSS search</title><content type='html'>We have a corporate user profile search page in Sharepoint that allows free-word searching over various user attributes such as Title, Department, Extension, etc.&lt;br /&gt;&lt;br /&gt;But incorrect extra profiles were showing up in searches by Department and Title.  I traced the problem to the "Memberships" Crawled Property and the "People:Quicklinks" Managed Property.  These properties index a user's Active Directory group membership and caused the extras profiles to appear.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8021052411787210926-1514437352875346896?l=larslynch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://larslynch.blogspot.com/feeds/1514437352875346896/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://larslynch.blogspot.com/2010/11/disable-active-directory-group.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/1514437352875346896'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/1514437352875346896'/><link rel='alternate' type='text/html' href='http://larslynch.blogspot.com/2010/11/disable-active-directory-group.html' title='Disable Active Directory group membership indexing in MOSS search'/><author><name>Lars</name><uri>http://www.blogger.com/profile/12915174517828532359</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_zghBEFLGW1Q/S2sskb489BI/AAAAAAAAAaw/-ipGjg48ePw/S220/cv_photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8021052411787210926.post-378148587743648011</id><published>2010-09-02T06:03:00.000-07:00</published><updated>2010-09-02T06:11:50.071-07:00</updated><title type='text'>GridView problems with Editing and Updating</title><content type='html'>Symptoms:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;RowUpdated handler does not fire&lt;/li&gt;&lt;li&gt;UpdateMethod in DataSource does not fire&lt;/li&gt;&lt;li&gt;GridViewUpdateEventArgs empty in the RowUpdating handler&lt;/li&gt;&lt;/ul&gt;All of these are caused by a problem in the binding of the DataSource object to the GridView.&lt;br /&gt;&lt;br /&gt;Solution:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Check that your DataSourceControl has been added to the page controls. (ej. Panel1.Controls.Add(objectdatasource);&lt;/li&gt;&lt;li&gt;Bind your Datasource to the GridView with: Gridview.DataSourceId = datasource.Id;&lt;/li&gt;&lt;li&gt;Do &lt;span style="font-weight: bold;"&gt;NOT &lt;/span&gt;bind your DataSource to the GridView using: Gridview.Datasource = datasource;&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/8021052411787210926-378148587743648011?l=larslynch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://larslynch.blogspot.com/feeds/378148587743648011/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://larslynch.blogspot.com/2010/09/gridview-problems-with-editing-and.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/378148587743648011'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/378148587743648011'/><link rel='alternate' type='text/html' href='http://larslynch.blogspot.com/2010/09/gridview-problems-with-editing-and.html' title='GridView problems with Editing and Updating'/><author><name>Lars</name><uri>http://www.blogger.com/profile/12915174517828532359</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_zghBEFLGW1Q/S2sskb489BI/AAAAAAAAAaw/-ipGjg48ePw/S220/cv_photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8021052411787210926.post-2834908479862326703</id><published>2010-07-29T02:47:00.000-07:00</published><updated>2010-07-29T02:58:56.814-07:00</updated><title type='text'>No two choices should have the same ID   at Microsoft.SharePoint.ApplicationPages.ChoiceComparerWithDefaultGroup.Compare</title><content type='html'>You probably get this error when you try to add an existing site column to a site content type.&lt;br /&gt;&lt;br /&gt;The reason is that two site columns have the same internal name.&lt;br /&gt;&lt;br /&gt;1. Check if the same error occurs at the root site when adding an existing site column to a site content type.&lt;br /&gt;&lt;br /&gt;2. Once you've determined at which level the site column conflict is occurring,  crack open your handy-dandy Sharepoint Manager 2007 (&lt;a href="http://spm.codeplex.com"&gt;http://spm.codeplex.com&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;3.   Navigate to the fields (site columns) defined for that site and you'll probably see an additional field that doesn't show via the normal site columns page (_layouts/mngfield.aspx).  This field is your problem field because its internal name matches the internal name of an inherited field.&lt;br /&gt;&lt;br /&gt;4.  Check that this field is not used in any site content types or lists.  You may have to remove it from them first.&lt;br /&gt;&lt;br /&gt;5.  Delete the field with Sharepoint Manager 2007.&lt;br /&gt;&lt;br /&gt;Cheers!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8021052411787210926-2834908479862326703?l=larslynch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://larslynch.blogspot.com/feeds/2834908479862326703/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://larslynch.blogspot.com/2010/07/no-two-choices-should-have-same-id-at.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/2834908479862326703'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/2834908479862326703'/><link rel='alternate' type='text/html' href='http://larslynch.blogspot.com/2010/07/no-two-choices-should-have-same-id-at.html' title='No two choices should have the same ID   at Microsoft.SharePoint.ApplicationPages.ChoiceComparerWithDefaultGroup.Compare'/><author><name>Lars</name><uri>http://www.blogger.com/profile/12915174517828532359</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_zghBEFLGW1Q/S2sskb489BI/AAAAAAAAAaw/-ipGjg48ePw/S220/cv_photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8021052411787210926.post-6134366681500025081</id><published>2010-07-07T09:27:00.000-07:00</published><updated>2010-07-07T09:32:09.448-07:00</updated><title type='text'>Custom list forms and data views</title><content type='html'>If you create a custom form for displaying or editing a list item,  you won't be able to view the author or editor fields except in the Sharepoint:CreatedModifiedInfo control.&lt;br /&gt;&lt;br /&gt;This is because the SPDataSource created uses the ListItem mode which hides certain fields.  If you change the mode to List, you'll get all the fields. &lt;br /&gt;&lt;br /&gt;Keep in mind you'll have to add a parameter ItemId to your selectcommand for the SPDatasource and correct the view CAML accordingly.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8021052411787210926-6134366681500025081?l=larslynch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://larslynch.blogspot.com/feeds/6134366681500025081/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://larslynch.blogspot.com/2010/07/custom-list-forms-and-data-views.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/6134366681500025081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/6134366681500025081'/><link rel='alternate' type='text/html' href='http://larslynch.blogspot.com/2010/07/custom-list-forms-and-data-views.html' title='Custom list forms and data views'/><author><name>Lars</name><uri>http://www.blogger.com/profile/12915174517828532359</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_zghBEFLGW1Q/S2sskb489BI/AAAAAAAAAaw/-ipGjg48ePw/S220/cv_photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8021052411787210926.post-426326658616941519</id><published>2010-07-07T00:53:00.000-07:00</published><updated>2010-07-07T00:57:47.604-07:00</updated><title type='text'>Sharepoint filter logic order</title><content type='html'>As you've discovered, the filter logic for Sharepoint 2007 list views has no grouping operator unless you convert the list view into a Data View Web Part.&lt;br /&gt;&lt;br /&gt;That said, you can possibly use the evaluation order of the filter rules to achieve your grouping.&lt;br /&gt;&lt;br /&gt;The order is:  (((filter1 and/or filter2) and/or filter3) and/or filter4)  and so on.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8021052411787210926-426326658616941519?l=larslynch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://larslynch.blogspot.com/feeds/426326658616941519/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://larslynch.blogspot.com/2010/07/sharepoint-filter-logic-order.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/426326658616941519'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/426326658616941519'/><link rel='alternate' type='text/html' href='http://larslynch.blogspot.com/2010/07/sharepoint-filter-logic-order.html' title='Sharepoint filter logic order'/><author><name>Lars</name><uri>http://www.blogger.com/profile/12915174517828532359</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_zghBEFLGW1Q/S2sskb489BI/AAAAAAAAAaw/-ipGjg48ePw/S220/cv_photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8021052411787210926.post-7649892359994113440</id><published>2010-05-14T03:48:00.000-07:00</published><updated>2010-05-14T03:50:26.603-07:00</updated><title type='text'>Attachments in sharepoint custom list forms</title><content type='html'>Attachments usually work fine for a custom New Item form created from Sharepoint Designer,  but if you create a custom Edit Item form, you'll get the javascript error "This form was customized not working with attachment." when you click the attachments button.&lt;br /&gt;&lt;br /&gt;Here's the Microsoft fix: &lt;a href="http://support.microsoft.com/kb/953271"&gt;http://support.microsoft.com/kb/953271&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Basically the attachment button launches a javascript function UploadAttachment() that hides a span with id "part" which is usually the body of the form and shows just the attachment div.  If you look at your custom New form you can see how it works.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8021052411787210926-7649892359994113440?l=larslynch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://larslynch.blogspot.com/feeds/7649892359994113440/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://larslynch.blogspot.com/2010/05/attachments-in-sharepoint-custom-list.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/7649892359994113440'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/7649892359994113440'/><link rel='alternate' type='text/html' href='http://larslynch.blogspot.com/2010/05/attachments-in-sharepoint-custom-list.html' title='Attachments in sharepoint custom list forms'/><author><name>Lars</name><uri>http://www.blogger.com/profile/12915174517828532359</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_zghBEFLGW1Q/S2sskb489BI/AAAAAAAAAaw/-ipGjg48ePw/S220/cv_photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8021052411787210926.post-2150003087876351451</id><published>2010-04-16T04:55:00.000-07:00</published><updated>2010-04-16T05:03:58.379-07:00</updated><title type='text'>How to get SPSite and SPWeb references</title><content type='html'>MSDN has a good article on how to quickly get references to an SPSite and SPWeb.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/ms468609.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms468609.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;To summarize,  use the SPContext class.  &lt;span style="color: rgb(255, 0, 0);"&gt;And don't use dispose()  or using blocks with the SPSite or SPWeb obtained via the SPContext class because you will break other code further on in the page!!!&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8021052411787210926-2150003087876351451?l=larslynch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://larslynch.blogspot.com/feeds/2150003087876351451/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://larslynch.blogspot.com/2010/04/how-to-get-spsite-and-spweb-references.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/2150003087876351451'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/2150003087876351451'/><link rel='alternate' type='text/html' href='http://larslynch.blogspot.com/2010/04/how-to-get-spsite-and-spweb-references.html' title='How to get SPSite and SPWeb references'/><author><name>Lars</name><uri>http://www.blogger.com/profile/12915174517828532359</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_zghBEFLGW1Q/S2sskb489BI/AAAAAAAAAaw/-ipGjg48ePw/S220/cv_photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8021052411787210926.post-1418719812520477595</id><published>2010-02-25T07:38:00.000-08:00</published><updated>2010-08-12T06:09:36.727-07:00</updated><title type='text'>Quick Excel table join</title><content type='html'>Situation: two excel worksheets with a common id column to join on.&lt;br /&gt;&lt;br /&gt;Use LOOKUP and VLOOKUP to do this in a simpler manner. BUSCAR y BUSCARV en castellano.&lt;br /&gt;&lt;br /&gt;&lt;span style="text-decoration: line-through;"&gt;1.  Copy your id column to a new worksheet&lt;br /&gt;2.  For each column of interest paste the formula =INDEX(SourceSheet!$A$1:$T$500;MATCH($A$3;SourceSheet!$S$1:$S$500;0);SourceColumnOfInterestNumber)&lt;br /&gt;&lt;br /&gt;Function parameters:&lt;br /&gt;INDEX(dataRange;rowNumber; columnNumber)&lt;br /&gt;MATCH(targetValue;dataRange;matchType(0 for exact match))&lt;br /&gt;&lt;br /&gt;In Spanish language version Excel:&lt;br /&gt;INDICE = INDEX&lt;br /&gt;COINCIDIR = MATCH&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/8021052411787210926-1418719812520477595?l=larslynch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://larslynch.blogspot.com/feeds/1418719812520477595/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://larslynch.blogspot.com/2010/02/quick-excel-table-join.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/1418719812520477595'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/1418719812520477595'/><link rel='alternate' type='text/html' href='http://larslynch.blogspot.com/2010/02/quick-excel-table-join.html' title='Quick Excel table join'/><author><name>Lars</name><uri>http://www.blogger.com/profile/12915174517828532359</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_zghBEFLGW1Q/S2sskb489BI/AAAAAAAAAaw/-ipGjg48ePw/S220/cv_photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8021052411787210926.post-3147055930437128582</id><published>2010-02-22T04:49:00.001-08:00</published><updated>2010-02-22T04:52:14.167-08:00</updated><title type='text'>Sharepoint: Access denied while uploading multiple files</title><content type='html'>Problem:  you receive an error message saying "Access denied" while uploading multiple files or images to a sharepoint library, even though you have all the necessary permissions.&lt;br /&gt;&lt;br /&gt;Solution:  your filename contains characters that aren't allowed by Sharepoint.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Microsoft lays it out for you here: &lt;a href="http://support.microsoft.com/default.aspx?scid=kb;en-us;905231"&gt;http://support.microsoft.com/default.aspx?scid=kb;en-us;905231&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8021052411787210926-3147055930437128582?l=larslynch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://larslynch.blogspot.com/feeds/3147055930437128582/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://larslynch.blogspot.com/2010/02/sharepoint-access-denied-while.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/3147055930437128582'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/3147055930437128582'/><link rel='alternate' type='text/html' href='http://larslynch.blogspot.com/2010/02/sharepoint-access-denied-while.html' title='Sharepoint: Access denied while uploading multiple files'/><author><name>Lars</name><uri>http://www.blogger.com/profile/12915174517828532359</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_zghBEFLGW1Q/S2sskb489BI/AAAAAAAAAaw/-ipGjg48ePw/S220/cv_photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8021052411787210926.post-7232377657491074301</id><published>2010-02-10T07:20:00.000-08:00</published><updated>2010-02-10T07:25:12.857-08:00</updated><title type='text'>Blank items in DropDownList controls</title><content type='html'>After playing with JQuery to dynamically insert a blank option in my DropDownList but not finding a way to maintain the logic through a postback, I came across this wonderful post from Tomas Ekeli:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://personalinertia.blogspot.com/2007/08/dropdownlist-with-blank-item-on-top.html"&gt;http://personalinertia.blogspot.com/2007/08/dropdownlist-with-blank-item-on-top.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Works perfectly!  Thrown in a RequiredFieldValidator with an InitialValue property and you're set.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8021052411787210926-7232377657491074301?l=larslynch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://larslynch.blogspot.com/feeds/7232377657491074301/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://larslynch.blogspot.com/2010/02/blank-items-in-dropdownlist-controls.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/7232377657491074301'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/7232377657491074301'/><link rel='alternate' type='text/html' href='http://larslynch.blogspot.com/2010/02/blank-items-in-dropdownlist-controls.html' title='Blank items in DropDownList controls'/><author><name>Lars</name><uri>http://www.blogger.com/profile/12915174517828532359</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_zghBEFLGW1Q/S2sskb489BI/AAAAAAAAAaw/-ipGjg48ePw/S220/cv_photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8021052411787210926.post-556408696958651714</id><published>2010-02-03T01:15:00.000-08:00</published><updated>2010-02-04T12:40:41.941-08:00</updated><title type='text'>How to export a key with Microsoft Enterprise Library</title><content type='html'>If you ever need to move an encryption key for Enterprise Library from one server to another, here's how to do it.  No, you can't just copy the key file.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;ON THE ORIGINAL SERVER&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;1.  Open the Enterprise Library Configuration tool from the Start menu &gt; Microsoft Patterns and Practices &gt; Enterprise Library 4.0&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_zghBEFLGW1Q/S2lNBma1PFI/AAAAAAAAAZA/ZmbEgKzmnhU/s1600-h/exportkey_1.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 253px;" src="http://3.bp.blogspot.com/_zghBEFLGW1Q/S2lNBma1PFI/AAAAAAAAAZA/ZmbEgKzmnhU/s400/exportkey_1.jpg" alt="" id="BLOGGER_PHOTO_ID_5433959115287510098" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;2.  Open your application configuration from File &gt; Open Application and find your exe.config file that contains your Enterprise Library configuration.&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_zghBEFLGW1Q/S2lNB77H3yI/AAAAAAAAAZI/Dw4rnNFnBcM/s1600-h/exportkey_2.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 253px;" src="http://2.bp.blogspot.com/_zghBEFLGW1Q/S2lNB77H3yI/AAAAAAAAAZI/Dw4rnNFnBcM/s400/exportkey_2.jpg" alt="" id="BLOGGER_PHOTO_ID_5433959121060093730" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;3.  Select your Symmetric Provider entry and choose Export Key from the Action menu.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_zghBEFLGW1Q/S2lNCAvt7oI/AAAAAAAAAZQ/m0u6PU6qBIA/s1600-h/exportkey_3.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 253px;" src="http://1.bp.blogspot.com/_zghBEFLGW1Q/S2lNCAvt7oI/AAAAAAAAAZQ/m0u6PU6qBIA/s400/exportkey_3.png" alt="" id="BLOGGER_PHOTO_ID_5433959122354433666" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;4.  Choose a location to save your exported key file and a password to protect it.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_zghBEFLGW1Q/S2lNCfofgXI/AAAAAAAAAZY/usfVSUh0_Og/s1600-h/exportkey_4.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 253px;" src="http://4.bp.blogspot.com/_zghBEFLGW1Q/S2lNCfofgXI/AAAAAAAAAZY/usfVSUh0_Og/s400/exportkey_4.png" alt="" id="BLOGGER_PHOTO_ID_5433959130645627250" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;ON THE NEW SERVER&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;5.  Copy the exe.config file and the export key file to your new server.&lt;br /&gt;6. Run the Enterprise Configuration tool and open the exe.config file&lt;br /&gt;7. Create a new Symmetric Algorithm Provider in the Symmetric Provider section&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_zghBEFLGW1Q/S2lNCh10u0I/AAAAAAAAAZg/_pDGnKe1_u0/s1600-h/exportkey_5.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 253px;" src="http://2.bp.blogspot.com/_zghBEFLGW1Q/S2lNCh10u0I/AAAAAAAAAZg/_pDGnKe1_u0/s400/exportkey_5.png" alt="" id="BLOGGER_PHOTO_ID_5433959131238415170" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;8.  Choose the same encryption algorithm used on the original server&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_zghBEFLGW1Q/S2lNUitjpxI/AAAAAAAAAZo/bpxTkfpTJSI/s1600-h/exportkey_6.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 255px;" src="http://1.bp.blogspot.com/_zghBEFLGW1Q/S2lNUitjpxI/AAAAAAAAAZo/bpxTkfpTJSI/s400/exportkey_6.png" alt="" id="BLOGGER_PHOTO_ID_5433959440709822226" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;9. Choose the option to "Import a password protected key file"&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_zghBEFLGW1Q/S2lNU2uucUI/AAAAAAAAAZw/YcUlRIWZlmU/s1600-h/exportkey_7.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 252px;" src="http://1.bp.blogspot.com/_zghBEFLGW1Q/S2lNU2uucUI/AAAAAAAAAZw/YcUlRIWZlmU/s400/exportkey_7.png" alt="" id="BLOGGER_PHOTO_ID_5433959446083432770" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;10. Locate your exported key file and enter the password you protected it with&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://4.bp.blogspot.com/_zghBEFLGW1Q/S2lNVM-wQ0I/AAAAAAAAAZ4/5SNH911bghI/s1600-h/exportkey_8.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 253px;" src="http://4.bp.blogspot.com/_zghBEFLGW1Q/S2lNVM-wQ0I/AAAAAAAAAZ4/5SNH911bghI/s400/exportkey_8.png" alt="" id="BLOGGER_PHOTO_ID_5433959452056240962" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;11. Choose a location to save your new permanent encryption key&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_zghBEFLGW1Q/S2lNVrN_3BI/AAAAAAAAAaA/wHf8UzUmOKI/s1600-h/exportkey_9.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 252px;" src="http://1.bp.blogspot.com/_zghBEFLGW1Q/S2lNVrN_3BI/AAAAAAAAAaA/wHf8UzUmOKI/s400/exportkey_9.png" alt="" id="BLOGGER_PHOTO_ID_5433959460173241362" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;12. Choose machine mode if you want all accounts to be able to use this key.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_zghBEFLGW1Q/S2lNV1ubibI/AAAAAAAAAaI/S04KDQi0W3Q/s1600-h/exportkey_10.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 252px;" src="http://2.bp.blogspot.com/_zghBEFLGW1Q/S2lNV1ubibI/AAAAAAAAAaI/S04KDQi0W3Q/s400/exportkey_10.png" alt="" id="BLOGGER_PHOTO_ID_5433959462993627570" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;13.  Rename or delete the old Symmetric Provider&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_zghBEFLGW1Q/S2lNfUXhM_I/AAAAAAAAAaQ/Kv9-QvA_guw/s1600-h/exportkey_11.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 252px;" src="http://2.bp.blogspot.com/_zghBEFLGW1Q/S2lNfUXhM_I/AAAAAAAAAaQ/Kv9-QvA_guw/s400/exportkey_11.png" alt="" id="BLOGGER_PHOTO_ID_5433959625837851634" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;14.  Rename the new Symmetric Provider with the name of the old Symmetric Provider&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://2.bp.blogspot.com/_zghBEFLGW1Q/S2lNfppAR8I/AAAAAAAAAaY/5o5SofxBXmw/s1600-h/exportkey_12.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 252px;" src="http://2.bp.blogspot.com/_zghBEFLGW1Q/S2lNfppAR8I/AAAAAAAAAaY/5o5SofxBXmw/s400/exportkey_12.png" alt="" id="BLOGGER_PHOTO_ID_5433959631548336066" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;15.  Save your new Enterprise Library configuration.&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_zghBEFLGW1Q/S2lNf_aIJrI/AAAAAAAAAag/5vStUjSQ4U4/s1600-h/exportkey_13.png"&gt;&lt;img style="cursor: pointer; width: 400px; height: 254px;" src="http://3.bp.blogspot.com/_zghBEFLGW1Q/S2lNf_aIJrI/AAAAAAAAAag/5vStUjSQ4U4/s400/exportkey_13.png" alt="" id="BLOGGER_PHOTO_ID_5433959637391517362" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8021052411787210926-556408696958651714?l=larslynch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://larslynch.blogspot.com/feeds/556408696958651714/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://larslynch.blogspot.com/2010/02/how-to-export-key-with-microsoft.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/556408696958651714'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/556408696958651714'/><link rel='alternate' type='text/html' href='http://larslynch.blogspot.com/2010/02/how-to-export-key-with-microsoft.html' title='How to export a key with Microsoft Enterprise Library'/><author><name>Lars</name><uri>http://www.blogger.com/profile/12915174517828532359</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_zghBEFLGW1Q/S2sskb489BI/AAAAAAAAAaw/-ipGjg48ePw/S220/cv_photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_zghBEFLGW1Q/S2lNBma1PFI/AAAAAAAAAZA/ZmbEgKzmnhU/s72-c/exportkey_1.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8021052411787210926.post-6893180551499357955</id><published>2010-01-29T03:02:00.000-08:00</published><updated>2010-01-29T04:55:20.734-08:00</updated><title type='text'>Workflow problem with OnWorkflowItemUpdated</title><content type='html'>If you have an OnWorkflowItemUpdated activity, it can cause conflicts with other tasks and activities in your Sharepoint workflow.&lt;br /&gt;&lt;br /&gt;Solution here: &lt;a href="http://blogs.msdn.com/yvan_duhamel/archive/2009/11/25/workflow-locks-because-of-onworkflowitemchanged-event-handler.aspx"&gt;http://blogs.msdn.com/yvan_duhamel/archive/2009/11/25/workflow-locks-because-of-onworkflowitemchanged-event-handler.aspx&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;To workaround:&lt;br /&gt;&lt;ol&gt;&lt;li&gt; Create a new SequenceActivity&lt;/li&gt;&lt;li&gt; Create an InitializeWorkflow activity inside the SequenceActivity with a new correlation token scoped to the SequencyActivity&lt;/li&gt;&lt;li&gt;Move the OnWorkflowItemUpdated activity after the InitializeWorkflow activity and set its correlation token to the same as the InitializeWorkflow activity.&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/8021052411787210926-6893180551499357955?l=larslynch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://larslynch.blogspot.com/feeds/6893180551499357955/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://larslynch.blogspot.com/2010/01/workflow-problem-with.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/6893180551499357955'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/6893180551499357955'/><link rel='alternate' type='text/html' href='http://larslynch.blogspot.com/2010/01/workflow-problem-with.html' title='Workflow problem with OnWorkflowItemUpdated'/><author><name>Lars</name><uri>http://www.blogger.com/profile/12915174517828532359</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_zghBEFLGW1Q/S2sskb489BI/AAAAAAAAAaw/-ipGjg48ePw/S220/cv_photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8021052411787210926.post-3429599614046844159</id><published>2010-01-25T06:52:00.000-08:00</published><updated>2010-01-25T07:23:24.125-08:00</updated><title type='text'>Default values for association Infopath forms in Sharepoint workflows</title><content type='html'>At first, I thought you could set default values for an association form directly from the Infopath tool, simply assigning default values to the fields.  That works, but the association form state gets lost after the user submits the form.&lt;br /&gt;&lt;br /&gt;The correct way is creating an AssociationData element in the workflow.xml file of the workflow and the format is identical to the string passed into your workflow in the workflowProperties.AssociationData variable (minus some backslashes and carriage returns that might be present in the string).&lt;br /&gt;&lt;br /&gt;In the example, my root data group in Infopath is called WorkflowParameters and inside I have two text fields, HorasRetraso and EmailBody (ignore the bilingual craziness).  And we create a similar structure in the workflow.xml file.&lt;br /&gt;&lt;br /&gt;Here's an example:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Infopath data design&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_zghBEFLGW1Q/S121XANh9kI/AAAAAAAAAY4/IFw5p2nJa8k/s1600-h/infopath_workflow.PNG"&gt;&lt;img style="cursor: pointer; width: 379px; height: 194px;" src="http://1.bp.blogspot.com/_zghBEFLGW1Q/S121XANh9kI/AAAAAAAAAY4/IFw5p2nJa8k/s400/infopath_workflow.PNG" alt="" id="BLOGGER_PHOTO_ID_5430696132477056578" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;workflow.xml&lt;/span&gt; file&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot; ?&amp;gt;&lt;br /&gt;&amp;lt;Elements xmlns=&amp;quot;http://schemas.microsoft.com/sharepoint/&amp;quot;&amp;gt;&lt;br /&gt; &amp;lt;Workflow&lt;br /&gt;   Name=&amp;quot;Workflows.ViajesCuestionario&amp;quot;&lt;br /&gt;   Description=&amp;quot;My SharePoint Workflow&amp;quot;&lt;br /&gt;   Id=&amp;quot;6dcb00c0-29af-448b-a5cd-333781c6071c&amp;quot;&lt;br /&gt;   CodeBesideClass=&amp;quot;Workflows.ViajesCuestionario.Workflow1&amp;quot;&lt;br /&gt;   CodeBesideAssembly=&amp;quot;Workflows.ViajesCuestionario, Version=1.0.0.0, Culture=neutral, PublicKeyToken=17d9b5dddc2775a2&amp;quot;&lt;br /&gt;   AssociationUrl=&amp;quot;_layouts/CstWrkflIP.aspx&amp;quot;&amp;gt;&lt;br /&gt;  &lt;br /&gt;   &amp;lt;Categories/&amp;gt;&lt;br /&gt;   &amp;lt;AssociationData&amp;gt;&lt;br /&gt;    &amp;lt;my:WorkflowParameters xml:lang=&amp;quot;es-ES&amp;quot; xmlns:xsi=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot; xmlns:xhtml=&amp;quot;http://www.w3.org/1999/xhtml&amp;quot; xmlns:my=&amp;quot;http://schemas.microsoft.com/office/infopath/2003/myXSD/2009-09-30T09:09:24&amp;quot; xmlns:xd=&amp;quot;http://schemas.microsoft.com/office/infopath/2003&amp;quot;&amp;gt;&lt;br /&gt;      &amp;lt;my:HorasRetraso&amp;gt;48&amp;lt;/my:HorasRetraso&amp;gt;&lt;br /&gt;      &amp;lt;my:EmailBody&amp;gt;&amp;amp;lt;html&amp;amp;gt;&amp;amp;lt;body&amp;amp;gt;A link in the email body &amp;amp;lt;a href=&amp;amp;quot;http://www.google.com&amp;amp;quot;&amp;amp;gt;Link Text&amp;amp;lt;/a&amp;amp;gt;&amp;amp;lt;/body&amp;amp;gt;&amp;amp;lt;/html&amp;amp;gt;&amp;lt;/my:EmailBody&amp;gt;&lt;br /&gt;    &amp;lt;/my:WorkflowParameters&amp;gt;&lt;br /&gt;   &amp;lt;/AssociationData&amp;gt;&lt;br /&gt;   &amp;lt;MetaData&amp;gt;&lt;br /&gt;    &amp;lt;Association_FormURN&amp;gt;urn:schemas-microsoft-com:office:infopath:WorkflowViajesCuestionarioAssociation:-myXSD-2009-09-30T09-09-24&amp;lt;/Association_FormURN&amp;gt;&lt;br /&gt;    &amp;lt;StatusPageUrl&amp;gt;_layouts/WrkStat.aspx&amp;lt;/StatusPageUrl&amp;gt;&lt;br /&gt;   &amp;lt;/MetaData&amp;gt;&lt;br /&gt; &amp;lt;/Workflow&amp;gt;&lt;br /&gt;&amp;lt;/Elements&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8021052411787210926-3429599614046844159?l=larslynch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://larslynch.blogspot.com/feeds/3429599614046844159/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://larslynch.blogspot.com/2010/01/default-values-for-association-infopath.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/3429599614046844159'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/3429599614046844159'/><link rel='alternate' type='text/html' href='http://larslynch.blogspot.com/2010/01/default-values-for-association-infopath.html' title='Default values for association Infopath forms in Sharepoint workflows'/><author><name>Lars</name><uri>http://www.blogger.com/profile/12915174517828532359</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_zghBEFLGW1Q/S2sskb489BI/AAAAAAAAAaw/-ipGjg48ePw/S220/cv_photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_zghBEFLGW1Q/S121XANh9kI/AAAAAAAAAY4/IFw5p2nJa8k/s72-c/infopath_workflow.PNG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8021052411787210926.post-1732443364255535608</id><published>2010-01-25T06:19:00.000-08:00</published><updated>2010-01-25T06:31:19.562-08:00</updated><title type='text'>Problems with infopath forms and workflows</title><content type='html'>Many times you'll get errors (&lt;span style="font-weight: bold;"&gt;This form cannot be opened. It is not workflow enabled&lt;/span&gt;.  Or:&lt;span style="font-weight: bold;"&gt; The form was closed&lt;/span&gt;.) while using Infopath forms for association, initiation or modification in a Visual Studio workflow.&lt;br /&gt;&lt;br /&gt;Here's a troubleshooting checklist:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;The form is web-enabled.&lt;/li&gt;&lt;li&gt;The security level is "domain".&lt;/li&gt;&lt;li&gt;You have published the form to your Visual Studio project folder, not simply copied or saved as.  And you have left blank the file path for alternate access to the form in the Publishing wizard.&lt;/li&gt;&lt;li&gt;The form URN is in the correct tag in the workflow.xml file.&lt;/li&gt;&lt;li&gt;The workflow attribute "AssociationUrl" is set to "_layouts/CstWrkflIP.aspx" in the workflow.xml file.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;The form has an ElementFile entry in the feature.xml file.&lt;/li&gt;&lt;li&gt;If you're using a WSP to deploy your workflow, be sure the form is included in the manifest.xml file.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;If you're still having trouble, use these tools to find your problem:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Check out Central Administration &gt; Application Management &gt; Manage Form Templates to see the status of the form.&lt;/li&gt;&lt;li&gt;Run the command "stsadm -o verifyformtemplate -filename formname.xsn" to check for generic form problems.&lt;/li&gt;&lt;li&gt;Review the Sharepoint logs in the 12 hive.&lt;br /&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/8021052411787210926-1732443364255535608?l=larslynch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://larslynch.blogspot.com/feeds/1732443364255535608/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://larslynch.blogspot.com/2010/01/problems-with-infopath-forms-and.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/1732443364255535608'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/1732443364255535608'/><link rel='alternate' type='text/html' href='http://larslynch.blogspot.com/2010/01/problems-with-infopath-forms-and.html' title='Problems with infopath forms and workflows'/><author><name>Lars</name><uri>http://www.blogger.com/profile/12915174517828532359</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_zghBEFLGW1Q/S2sskb489BI/AAAAAAAAAaw/-ipGjg48ePw/S220/cv_photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8021052411787210926.post-4777702010412345</id><published>2010-01-20T09:47:00.000-08:00</published><updated>2010-01-20T10:03:16.569-08:00</updated><title type='text'>No-code cascading lists in Sharepoint</title><content type='html'>Here's how to do cascading lists in Sharepoint without resorting to custom webparts:&lt;br /&gt;&lt;br /&gt;References: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.spdatasource.aspx"&gt;SPDataSource&lt;/a&gt; &lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/microsoft.sharepoint.webcontrols.spdatasource.selectparameters.aspx"&gt;SelectParameters&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.controlparameter.aspx"&gt;ControlParameter&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;Steps:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Create the master list.&lt;/li&gt;&lt;li&gt;Create the slave list using a lookup column to link elements to the master list&lt;/li&gt;&lt;li&gt;In your page, create an SPDataSource to the master list&lt;/li&gt;&lt;li&gt;Create a DropdownList linked to the first SPDataSource&lt;/li&gt;&lt;li&gt;Create a second SPDataSource with a ControlParameter linked to the first dropdownlist and the required changes to the view query to accept this parameter.&lt;/li&gt;&lt;li&gt;Create a dropdownlist connected to the second SPDataSource.&lt;/li&gt;&lt;/ol&gt;Example:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;SharePoint:SPDataSource runat=&amp;quot;server&amp;quot; DataSourceMode=&amp;quot;List&amp;quot; &lt;br /&gt;     UseInternalName=&amp;quot;true&amp;quot; &lt;br /&gt;     selectcommand=&amp;quot;&amp;lt;View&amp;gt;&amp;lt;/View&amp;gt;&amp;quot; id=&amp;quot;categoriaspdatasource&amp;quot;&amp;gt;&lt;br /&gt; &amp;lt;SelectParameters&amp;gt;&lt;br /&gt;  &amp;lt;asp:Parameter Name=&amp;quot;ListID&amp;quot; DefaultValue=&amp;quot;3C001A55-F90B-4829-80BA-5374B939524E&amp;quot;/&amp;gt;&lt;br /&gt; &amp;lt;/SelectParameters&amp;gt;&lt;br /&gt;&amp;lt;/SharePoint:SPDataSource&amp;gt;&lt;br /&gt;&amp;lt;asp:DropDownList runat=&amp;quot;server&amp;quot; id=&amp;quot;CategoriaDropDownList&amp;quot; &lt;br /&gt; DataSourceID=&amp;quot;categoriaspdatasource&amp;quot;&lt;br /&gt; DataTextField=&amp;quot;Label_ES&amp;quot;&lt;br /&gt; DataValueField=&amp;quot;Title&amp;quot; autopostback=&amp;quot;true&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;/asp:DropDownList&amp;gt;&lt;br /&gt; &lt;br /&gt;&amp;lt;SharePoint:SPDataSource  runat=&amp;quot;server&amp;quot; DataSourceMode=&amp;quot;List&amp;quot; &lt;br /&gt;   UseInternalName=&amp;quot;true&amp;quot; &lt;br /&gt;   selectcommand=&amp;quot;&amp;lt;View&amp;gt;&amp;lt;Query&amp;gt;&amp;lt;Where&amp;gt;&amp;lt;Eq&amp;gt;&amp;lt;FieldRef Name='Categoria'/&amp;gt;&amp;lt;Value Type='Text'&amp;gt;{Categoria}&amp;lt;/Value&amp;gt;&amp;lt;/Eq&amp;gt;&amp;lt;/Where&amp;gt;&amp;lt;/Query&amp;gt;&amp;lt;/View&amp;gt;&amp;quot; &lt;br /&gt;   id=&amp;quot;subcategoriaspdatasource&amp;quot;&amp;gt;&lt;br /&gt;   &amp;lt;SelectParameters&amp;gt;&lt;br /&gt;    &amp;lt;asp:Parameter Name=&amp;quot;ListID&amp;quot; DefaultValue=&amp;quot;FBB80C2B-EC23-426C-ACBE-9A595E20EE0C&amp;quot;/&amp;gt;&lt;br /&gt;   &amp;lt;asp:ControlParameter Name=&amp;quot;Categoria&amp;quot; ControlID=&amp;quot;CategoriaDropDownList&amp;quot; PropertyName=&amp;quot;SelectedValue&amp;quot;  /&amp;gt;&lt;br /&gt;   &amp;lt;/SelectParameters&amp;gt;&lt;br /&gt;&amp;lt;/SharePoint:SPDataSource&amp;gt;&lt;br /&gt;&amp;lt;asp:DropDownList runat=&amp;quot;server&amp;quot; id=&amp;quot;SubcategoriaDropDownList&amp;quot; &lt;br /&gt; DataSourceID=&amp;quot;subcategoriaspdatasource&amp;quot;&lt;br /&gt; DataTextField=&amp;quot;Label_ES&amp;quot;&lt;br /&gt; DataValueField=&amp;quot;Title&amp;quot; EnableViewState=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;/asp:DropDownList&amp;gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8021052411787210926-4777702010412345?l=larslynch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://larslynch.blogspot.com/feeds/4777702010412345/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://larslynch.blogspot.com/2010/01/no-code-cascading-lists-in-sharepoint.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/4777702010412345'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/4777702010412345'/><link rel='alternate' type='text/html' href='http://larslynch.blogspot.com/2010/01/no-code-cascading-lists-in-sharepoint.html' title='No-code cascading lists in Sharepoint'/><author><name>Lars</name><uri>http://www.blogger.com/profile/12915174517828532359</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_zghBEFLGW1Q/S2sskb489BI/AAAAAAAAAaw/-ipGjg48ePw/S220/cv_photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8021052411787210926.post-7589903151006128087</id><published>2010-01-13T08:08:00.000-08:00</published><updated>2010-01-13T08:40:35.738-08:00</updated><title type='text'>Output Excel xml file from web page</title><content type='html'>The original post for this technique is here:&lt;a href="http://articles.techrepublic.com.com/5100-10878_11-6163451.html"&gt;http://articles.techrepublic.com.com/5100-10878_11-6163451.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Here are two ways to output to Excel from a webpage:&lt;br /&gt; 1. Output a DataGrid or HTML table, which Excel can reinterpret.&lt;br /&gt; 2. Output Excel XML format&lt;br /&gt;&lt;br /&gt;In both cases, the MIME type must be set to "application/vnd.ms-excel".&lt;br /&gt;&lt;br /&gt;For outputting the XML format, you can simply piece together three strings:&lt;br /&gt;1. Header string containing document and worksheet properties&lt;br /&gt;2. Body string containing data rows and columns&lt;br /&gt;3. Footer string containing closing tags&lt;br /&gt;&lt;br /&gt;More sophisticated is using an XSLT to transform your custom XML into an Excel XML.&lt;br /&gt;&lt;br /&gt;A code sample for the XSLT tranform method:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;protected void Button1_Click(object sender, EventArgs e)&lt;br /&gt;        {&lt;br /&gt;            // read data and build custom xml&lt;br /&gt;            String customXML = @&amp;quot;&amp;lt;?xml version='1.0' ?&amp;gt;&lt;br /&gt;                                    &amp;lt;root&amp;gt; &lt;br /&gt;                                      &amp;lt;row&amp;gt;&lt;br /&gt;                                        &amp;lt;column&amp;gt;Column 1 Row 1&amp;lt;/column&amp;gt;&lt;br /&gt;                                        &amp;lt;column&amp;gt;Column 2 Row 1&amp;lt;/column&amp;gt;&lt;br /&gt;                                        &amp;lt;column&amp;gt;Column 3 Row 1&amp;lt;/column&amp;gt;&lt;br /&gt;                                      &amp;lt;/row&amp;gt;&lt;br /&gt;                                      &amp;lt;row&amp;gt;&lt;br /&gt;                                        &amp;lt;column&amp;gt;Column 1 Row 2&amp;lt;/column&amp;gt;&lt;br /&gt;                                        &amp;lt;column&amp;gt;Column 2 Row 2&amp;lt;/column&amp;gt;&lt;br /&gt;                                        &amp;lt;column&amp;gt;Column 3 Row 2&amp;lt;/column&amp;gt;&lt;br /&gt;                                      &amp;lt;/row&amp;gt;&lt;br /&gt;                                      &amp;lt;row&amp;gt;&lt;br /&gt;                                        &amp;lt;column&amp;gt;Column 1 Row 3&amp;lt;/column&amp;gt;&lt;br /&gt;                                        &amp;lt;column&amp;gt;Column 2 Row 3&amp;lt;/column&amp;gt;&lt;br /&gt;                                        &amp;lt;column&amp;gt;Column 3 Row 3&amp;lt;/column&amp;gt;&lt;br /&gt;                                      &amp;lt;/row&amp;gt;&lt;br /&gt;                                      &amp;lt;row&amp;gt;&lt;br /&gt;                                        &amp;lt;column&amp;gt;Column 1 Row 4&amp;lt;/column&amp;gt;&lt;br /&gt;                                        &amp;lt;column&amp;gt;Column 2 Row 4&amp;lt;/column&amp;gt;&lt;br /&gt;                                        &amp;lt;column&amp;gt;Column 3 Row 4&amp;lt;/column&amp;gt;&lt;br /&gt;                                      &amp;lt;/row&amp;gt;&lt;br /&gt;                                    &amp;lt;/root&amp;gt;&amp;quot;;  // This should be built dynamically&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;            Response.ContentType = &amp;quot;application/vnd.ms-excel&amp;quot;;&lt;br /&gt;            Response.AddHeader(&amp;quot;Content-Disposition&amp;quot;, &amp;quot;Attachment;Filename=web.xml&amp;quot;);           &lt;br /&gt;            Response.Charset = &amp;quot;&amp;quot;;&lt;br /&gt;            this.EnableViewState = false;&lt;br /&gt;&lt;br /&gt;            // Create input xmlreader from string&lt;br /&gt;            XmlTextReader xmlRead = new XmlTextReader(new System.IO.StringReader(customXML));&lt;br /&gt;            &lt;br /&gt;            // Create stringbuilder output&lt;br /&gt;            System.Text.StringBuilder builder = new System.Text.StringBuilder();&lt;br /&gt;&lt;br /&gt;            // create xslt object&lt;br /&gt;            XslCompiledTransform xslDoc = new XslCompiledTransform();&lt;br /&gt;            &lt;br /&gt;            // load xslt from string&lt;br /&gt;            xslDoc.Load(new System.Xml.XmlTextReader(new System.IO.StringReader(Resources.Resource1.XSLString)));&lt;br /&gt;&lt;br /&gt;            // run xslt transform on xml&lt;br /&gt;            xslDoc.Transform(xmlRead, XmlTextWriter.Create(builder));&lt;br /&gt;            &lt;br /&gt;            // output transformed xml to Response&lt;br /&gt;            Response.Write(builder.ToString());&lt;br /&gt;            Response.End();&lt;br /&gt;        }&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;The XSLT transform (could be saved as a resource string):&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;&amp;lt;?xml version=&amp;quot;1.0&amp;quot; ?&amp;gt;&lt;br /&gt;&amp;lt;xsl:stylesheet version=&amp;quot;1.0&amp;quot; xmlns:xsl=&amp;quot;http://www.w3.org/1999/XSL/Transform&amp;quot; xmlns=&amp;quot;urn:schemas-microsoft-com:office:spreadsheet&amp;quot; xmlns:o=&amp;quot;urn:schemas-microsoft-com:office:office&amp;quot; xmlns:x=&amp;quot;urn:schemas-microsoft-com:office:excel&amp;quot; xmlns:ss=&amp;quot;urn:schemas-microsoft-com:office:spreadsheet&amp;quot; xmlns:html=&amp;quot;http://www.w3.org/TR/REC-html40&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;!-- : /: Edmond Woychowsky: July 25, 2005: The purpose of this template is to create an Excel/XML spreadsheet from a&lt;br /&gt;simple xml document.&lt;br /&gt;--&amp;gt;&lt;br /&gt;&amp;lt;xsl:template match=&amp;quot;/&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;xsl:processing-instruction name=&amp;quot;mso-application&amp;quot;&amp;gt;progid='Excel.Sheet'&amp;lt;/xsl:processing-instruction&amp;gt;&lt;br /&gt;&amp;lt;Workbook&amp;gt;&lt;br /&gt;&amp;lt;xsl:call-template name=&amp;quot;DocumentProperties&amp;quot;/&amp;gt;&lt;br /&gt;&amp;lt;xsl:call-template name=&amp;quot;OfficeDocumentSettings&amp;quot;/&amp;gt;&lt;br /&gt;&amp;lt;xsl:call-template name=&amp;quot;ExcelWorkbook&amp;quot;/&amp;gt;&lt;br /&gt;&amp;lt;xsl:call-template name=&amp;quot;Styles&amp;quot;/&amp;gt;&lt;br /&gt;&amp;lt;xsl:apply-templates select=&amp;quot;/*&amp;quot; mode=&amp;quot;worksheet&amp;quot;/&amp;gt;&lt;br /&gt;&amp;lt;/Workbook&amp;gt;&lt;br /&gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;&amp;lt;!-- : * worksheet: This template builds the spreadsheets individual worksheets, commonly know as&lt;br /&gt;tabs.&lt;br /&gt;--&amp;gt;&lt;br /&gt;&amp;lt;xsl:template match=&amp;quot;*&amp;quot; mode=&amp;quot;worksheet&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;xsl:variable name=&amp;quot;position&amp;quot; select=&amp;quot;position()&amp;quot;/&amp;gt;&lt;br /&gt;&amp;lt;Worksheet ss:Name=&amp;quot;{concat('Sheet', $position)}&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;Table ss:ExpandedColumnCount=&amp;quot;{count(./*[1]/*)}&amp;quot; ss:ExpandedRowCount=&amp;quot;{count(./*) + 2}&amp;quot; x:FullColumns=&amp;quot;1&amp;quot; x:FullRows=&amp;quot;1&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;xsl:apply-templates select=&amp;quot;*&amp;quot; mode=&amp;quot;row&amp;quot;/&amp;gt;&lt;br /&gt;&amp;lt;/Table&amp;gt;&lt;br /&gt;&amp;lt;xsl:call-template name=&amp;quot;WorksheetOptions&amp;quot;/&amp;gt;&lt;br /&gt;&amp;lt;/Worksheet&amp;gt;&lt;br /&gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;&amp;lt;!-- : * row: This template builds the worksheet's rows.&lt;br /&gt;--&amp;gt;&lt;br /&gt;&amp;lt;xsl:template match=&amp;quot;*&amp;quot; mode=&amp;quot;row&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;Row&amp;gt;&lt;br /&gt;&amp;lt;xsl:apply-templates select=&amp;quot;*&amp;quot; mode=&amp;quot;cell&amp;quot;/&amp;gt;&lt;br /&gt;&amp;lt;/Row&amp;gt;&lt;br /&gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;&amp;lt;!-- : * cells: This template builds the row's cells.&lt;br /&gt;--&amp;gt;&lt;br /&gt;&amp;lt;xsl:template match=&amp;quot;*&amp;quot; mode=&amp;quot;cell&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;xsl:variable name=&amp;quot;type&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;xsl:choose&amp;gt;&lt;br /&gt;&amp;lt;xsl:when test=&amp;quot;number(.) = .&amp;quot;&amp;gt;Number&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;&amp;lt;xsl:otherwise&amp;gt;String&amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;&amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;&amp;lt;Cell&amp;gt;&lt;br /&gt;&amp;lt;Data ss:Type=&amp;quot;{$type}&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;xsl:value-of select=&amp;quot;.&amp;quot;/&amp;gt;&lt;br /&gt;&amp;lt;/Data&amp;gt;&lt;br /&gt;&amp;lt;/Cell&amp;gt;&lt;br /&gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;&amp;lt;!-- : * column: This template describes a worksheet's individual columns.&lt;br /&gt;--&amp;gt;&lt;br /&gt;&amp;lt;xsl:template match=&amp;quot;*&amp;quot; mode=&amp;quot;column&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;xsl:variable name=&amp;quot;name&amp;quot; select=&amp;quot;name(.)&amp;quot;/&amp;gt;&lt;br /&gt;&amp;lt;xsl:variable name=&amp;quot;length&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;xsl:call-template name=&amp;quot;length&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;xsl:with-param name=&amp;quot;nodeset&amp;quot; select=&amp;quot;//parent::*/parent::*/*/*[name(.) = $name]&amp;quot;/&amp;gt;&lt;br /&gt;&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;&amp;lt;xsl:variable name=&amp;quot;width&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;xsl:choose&amp;gt;&lt;br /&gt;&amp;lt;xsl:when test=&amp;quot;($length * 5.75) &amp;amp;lt; 56.25&amp;quot;&amp;gt;56.25&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;&amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;&amp;lt;xsl:value-of select=&amp;quot;$length * 5.75&amp;quot;/&amp;gt;&lt;br /&gt;&amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;&amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;&amp;lt;xsl:variable name=&amp;quot;style&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;xsl:choose&amp;gt;&lt;br /&gt;&amp;lt;xsl:when test=&amp;quot;parent::*/parent::*/*/*[name(.) = $name] = number(parent::*/parent::*/*[1]/*[name(.) = $name])&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;xsl:choose&amp;gt;&lt;br /&gt;&amp;lt;xsl:when test=&amp;quot;string-length(parent::*/parent::*/*/*[name(.) = $name][contains(.,'.')]) = 0&amp;quot;&amp;gt;s23&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;&amp;lt;xsl:otherwise&amp;gt;s24&amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;&amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;&amp;lt;xsl:otherwise&amp;gt;s22&amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;&amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;&amp;lt;Column ss:StyleID=&amp;quot;{$style}&amp;quot; ss:AutoFitWidth=&amp;quot;0&amp;quot; ss:Width=&amp;quot;{$width}&amp;quot;/&amp;gt;&lt;br /&gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;&amp;lt;!-- : DocumentProperties: This template describes the document to Excel.&lt;br /&gt;--&amp;gt;&lt;br /&gt;&amp;lt;xsl:template name=&amp;quot;DocumentProperties&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;DocumentProperties xmlns=&amp;quot;urn:schemas-microsoft-com:office:office&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;Author&amp;gt;ewoychowsky&amp;lt;/Author&amp;gt;&lt;br /&gt;&amp;lt;Company&amp;gt;EAW&amp;lt;/Company&amp;gt;&lt;br /&gt;&amp;lt;Version&amp;gt;10.4219&amp;lt;/Version&amp;gt;&lt;br /&gt;&amp;lt;/DocumentProperties&amp;gt;&lt;br /&gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;&amp;lt;!-- : OfficeDocumentSettings: This template describes the Office document to Excel.&lt;br /&gt;--&amp;gt;&lt;br /&gt;&amp;lt;xsl:template name=&amp;quot;OfficeDocumentSettings&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;OfficeDocumentSettings xmlns=&amp;quot;urn:schemas-microsoft-com:office:office&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;DownloadComponents/&amp;gt;&lt;br /&gt;&amp;lt;LocationOfComponents HRef=&amp;quot;file:///\\phlfsnt01\DOWNLOAD\OfficeXPSrc\&amp;quot;/&amp;gt;&lt;br /&gt;&amp;lt;/OfficeDocumentSettings&amp;gt;&lt;br /&gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;&amp;lt;!-- : ExcelWorkbook: This template describes the characteristics of the wookbook to Excel.&lt;br /&gt;--&amp;gt;&lt;br /&gt;&amp;lt;xsl:template name=&amp;quot;ExcelWorkbook&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;ExcelWorkbook xmlns=&amp;quot;urn:schemas-microsoft-com:office:excel&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;WindowHeight&amp;gt;9210&amp;lt;/WindowHeight&amp;gt;&lt;br /&gt;&amp;lt;WindowWidth&amp;gt;15195&amp;lt;/WindowWidth&amp;gt;&lt;br /&gt;&amp;lt;WindowTopX&amp;gt;0&amp;lt;/WindowTopX&amp;gt;&lt;br /&gt;&amp;lt;WindowTopY&amp;gt;60&amp;lt;/WindowTopY&amp;gt;&lt;br /&gt;&amp;lt;ProtectStructure&amp;gt;False&amp;lt;/ProtectStructure&amp;gt;&lt;br /&gt;&amp;lt;ProtectWindows&amp;gt;False&amp;lt;/ProtectWindows&amp;gt;&lt;br /&gt;&amp;lt;/ExcelWorkbook&amp;gt;&lt;br /&gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;&amp;lt;!-- : Styles: This template describes the display styles to Excel.&lt;br /&gt;--&amp;gt;&lt;br /&gt;&amp;lt;xsl:template name=&amp;quot;Styles&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;Styles&amp;gt;&lt;br /&gt;&amp;lt;Style ss:ID=&amp;quot;Default&amp;quot; ss:Name=&amp;quot;Normal&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;Alignment ss:Vertical=&amp;quot;Bottom&amp;quot;/&amp;gt;&lt;br /&gt;&amp;lt;Borders/&amp;gt;&lt;br /&gt;&amp;lt;Font/&amp;gt;&lt;br /&gt;&amp;lt;Interior/&amp;gt;&lt;br /&gt;&amp;lt;NumberFormat/&amp;gt;&lt;br /&gt;&amp;lt;Protection/&amp;gt;&lt;br /&gt;&amp;lt;/Style&amp;gt;&lt;br /&gt;&amp;lt;/Styles&amp;gt;&lt;br /&gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;&amp;lt;!-- : WorksheetOptions: This template describes the worksheet options to Excel.&lt;br /&gt;--&amp;gt;&lt;br /&gt;&amp;lt;xsl:template name=&amp;quot;WorksheetOptions&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;WorksheetOptions xmlns=&amp;quot;urn:schemas-microsoft-com:office:excel&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;Print&amp;gt;&lt;br /&gt;&amp;lt;ValidPrinterInfo/&amp;gt;&lt;br /&gt;&amp;lt;HorizontalResolution&amp;gt;1200&amp;lt;/HorizontalResolution&amp;gt;&lt;br /&gt;&amp;lt;VerticalResolution&amp;gt;1200&amp;lt;/VerticalResolution&amp;gt;&lt;br /&gt;&amp;lt;/Print&amp;gt;&lt;br /&gt;&amp;lt;ProtectObjects&amp;gt;False&amp;lt;/ProtectObjects&amp;gt;&lt;br /&gt;&amp;lt;ProtectScenarios&amp;gt;False&amp;lt;/ProtectScenarios&amp;gt;&lt;br /&gt;&amp;lt;/WorksheetOptions&amp;gt;&lt;br /&gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;&amp;lt;!-- : length: Determine either the length of the node name or the longest node(s), which ever is longer.&lt;br /&gt;--&amp;gt;&lt;br /&gt;&amp;lt;xsl:template name=&amp;quot;length&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;xsl:param name=&amp;quot;nodeset&amp;quot;/&amp;gt;&lt;br /&gt;&amp;lt;xsl:variable name=&amp;quot;longest&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;xsl:call-template name=&amp;quot;longest&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;xsl:with-param name=&amp;quot;nodeset&amp;quot; select=&amp;quot;$nodeset&amp;quot;/&amp;gt;&lt;br /&gt;&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;&amp;lt;/xsl:variable&amp;gt;&lt;br /&gt;&amp;lt;xsl:choose&amp;gt;&lt;br /&gt;&amp;lt;xsl:when test=&amp;quot;string-length(name($nodeset[1])) &amp;amp;gt; string-length($longest)&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;xsl:value-of select=&amp;quot;string-length(name($nodeset[1]))&amp;quot;/&amp;gt;&lt;br /&gt;&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;&amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;&amp;lt;xsl:value-of select=&amp;quot;string-length($longest)&amp;quot;/&amp;gt;&lt;br /&gt;&amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;&amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;&amp;lt;!-- : longest: This recursive template transverses a nodeset to find the nodes with the longest&lt;br /&gt;string-length. Please note that the result of this template may itself be a nodeset.&lt;br /&gt;--&amp;gt;&lt;br /&gt;&amp;lt;xsl:template name=&amp;quot;longest&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;xsl:param name=&amp;quot;nodeset&amp;quot;/&amp;gt;&lt;br /&gt;&amp;lt;xsl:param name=&amp;quot;length&amp;quot; select=&amp;quot;0&amp;quot;/&amp;gt;&lt;br /&gt;&amp;lt;xsl:choose&amp;gt;&lt;br /&gt;&amp;lt;xsl:when test=&amp;quot;count($nodeset[string-length(.) &amp;amp;gt; $length]) &amp;amp;gt; 0&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;xsl:call-template name=&amp;quot;longest&amp;quot;&amp;gt;&lt;br /&gt;&amp;lt;xsl:with-param name=&amp;quot;nodeset&amp;quot; select=&amp;quot;$nodeset[string-length(.) &amp;amp;gt; $length]&amp;quot;/&amp;gt;&lt;br /&gt;&amp;lt;xsl:with-param name=&amp;quot;length&amp;quot; select=&amp;quot;string-length($nodeset[string-length(.) &amp;amp;gt; $length][1])&amp;quot;/&amp;gt;&lt;br /&gt;&amp;lt;/xsl:call-template&amp;gt;&lt;br /&gt;&amp;lt;/xsl:when&amp;gt;&lt;br /&gt;&amp;lt;xsl:otherwise&amp;gt;&lt;br /&gt;&amp;lt;xsl:value-of select=&amp;quot;$nodeset&amp;quot;/&amp;gt;&lt;br /&gt;&amp;lt;/xsl:otherwise&amp;gt;&lt;br /&gt;&amp;lt;/xsl:choose&amp;gt;&lt;br /&gt;&amp;lt;/xsl:template&amp;gt;&lt;br /&gt;&amp;lt;/xsl:stylesheet&amp;gt;&lt;br /&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8021052411787210926-7589903151006128087?l=larslynch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://larslynch.blogspot.com/feeds/7589903151006128087/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://larslynch.blogspot.com/2010/01/output-excel-xml-file-from-web-page.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/7589903151006128087'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/7589903151006128087'/><link rel='alternate' type='text/html' href='http://larslynch.blogspot.com/2010/01/output-excel-xml-file-from-web-page.html' title='Output Excel xml file from web page'/><author><name>Lars</name><uri>http://www.blogger.com/profile/12915174517828532359</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_zghBEFLGW1Q/S2sskb489BI/AAAAAAAAAaw/-ipGjg48ePw/S220/cv_photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8021052411787210926.post-2066174788808668389</id><published>2009-12-30T08:17:00.001-08:00</published><updated>2009-12-30T08:31:27.140-08:00</updated><title type='text'>Basic steps for a Sharepoint workflow</title><content type='html'>I always have problems configuring the basic setup for a Sharepoint workflow, especially creating tasks.&lt;br /&gt;&lt;br /&gt;Things to remember:&lt;br /&gt;1. Each task must have its own correlation token.&lt;br /&gt;2. In the event for onWorkflowActivated you should set the workflowID = workflowProperties.workflowID.&lt;br /&gt;3. In the event for createTask, you must set the taskId = Guid.NewGuid()&lt;br /&gt;4.  Create a fault handler to log exceptions to the HistoryList and add Microsoft.Office.Server.Diagnostics.PortalLog.LogString("error details")&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8021052411787210926-2066174788808668389?l=larslynch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://larslynch.blogspot.com/feeds/2066174788808668389/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://larslynch.blogspot.com/2009/12/basic-steps-for-sharepoint-workflow.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/2066174788808668389'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/2066174788808668389'/><link rel='alternate' type='text/html' href='http://larslynch.blogspot.com/2009/12/basic-steps-for-sharepoint-workflow.html' title='Basic steps for a Sharepoint workflow'/><author><name>Lars</name><uri>http://www.blogger.com/profile/12915174517828532359</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_zghBEFLGW1Q/S2sskb489BI/AAAAAAAAAaw/-ipGjg48ePw/S220/cv_photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8021052411787210926.post-8159691714912450245</id><published>2009-12-10T08:04:00.000-08:00</published><updated>2009-12-10T08:09:43.550-08:00</updated><title type='text'>How to cut and paste Active Directory group members</title><content type='html'>The Active Directory Users and Groups MMC plugin (dsa.msc) is quick for finding groups and members, but hard to copy and paste from. Or at least I haven't figured out how yet.&lt;br /&gt;&lt;br /&gt;So we go to the command line:&lt;br /&gt;&lt;pre&gt;dsquery group -name ServiceDesk|dsget group -members &gt; ServiceDeskMembers.txt&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;This command will output all the members of the group ServiceDesk to the text file ServiceDeskMembers.txt&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8021052411787210926-8159691714912450245?l=larslynch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://larslynch.blogspot.com/feeds/8159691714912450245/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://larslynch.blogspot.com/2009/12/how-to-cut-and-paste-active-directory.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/8159691714912450245'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/8159691714912450245'/><link rel='alternate' type='text/html' href='http://larslynch.blogspot.com/2009/12/how-to-cut-and-paste-active-directory.html' title='How to cut and paste Active Directory group members'/><author><name>Lars</name><uri>http://www.blogger.com/profile/12915174517828532359</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_zghBEFLGW1Q/S2sskb489BI/AAAAAAAAAaw/-ipGjg48ePw/S220/cv_photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8021052411787210926.post-1850616306971960929</id><published>2009-12-04T03:00:00.000-08:00</published><updated>2009-12-04T03:08:15.484-08:00</updated><title type='text'>How to find SQL queries with high CPU usage</title><content type='html'>Using this query in SQL Server 2005, you can see the top 5 queries ranked by CPU usage (&lt;a href="http://msdn.microsoft.com/en-us/library/ms189741(SQL.90).aspx"&gt;http://msdn.microsoft.com/en-us/library/ms189741(SQL.90).aspx&lt;/a&gt;):&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;select DB_NAME(QP.dbid) as "Context_Database",top_5.*&lt;br /&gt;&lt;br /&gt;from (SELECT TOP 5 query_stats.plan_handle AS "Query_Hash",&lt;br /&gt;&lt;br /&gt;    &lt;br /&gt;&lt;br /&gt;      SUM(query_stats.total_worker_time)/SUM(query_stats.execution_count)AS "Avg CPU Time",&lt;br /&gt;MIN(query_stats.statement_text)AS "Statement Text"&lt;br /&gt;&lt;br /&gt;    &lt;br /&gt;FROM(&lt;br /&gt;&lt;br /&gt;    &lt;br /&gt;&lt;br /&gt;      SELECT QS.*,&lt;br /&gt;&lt;br /&gt;      SUBSTRING(ST.text, (QS.statement_start_offset/2)+ 1,&lt;br /&gt;&lt;br /&gt;    &lt;br /&gt;&lt;br /&gt;      ((CASE statement_end_offset&lt;br /&gt;&lt;br /&gt;    &lt;br /&gt;&lt;br /&gt;      WHEN-1 THEN DATALENGTH(st.text) &lt;br /&gt;&lt;br /&gt;    &lt;br /&gt;&lt;br /&gt;      ELSE QS.statement_end_offset &lt;br /&gt;&lt;br /&gt;    &lt;br /&gt;&lt;br /&gt;      END - QS.statement_start_offset)/2) + 1)AS statement_text&lt;br /&gt;&lt;br /&gt;    &lt;br /&gt;&lt;br /&gt;      FROM sys.dm_exec_query_stats AS QS&lt;br /&gt;&lt;br /&gt;    &lt;br /&gt;&lt;br /&gt;      cross apply sys.dm_exec_sql_text(QS.sql_handle)as ST&lt;br /&gt;&lt;br /&gt;      ) as query_stats&lt;br /&gt;     &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;    &lt;br /&gt;GROUP BY query_stats.plan_handle&lt;br /&gt;&lt;br /&gt;    &lt;br /&gt;ORDER BY 2 DESC) as top_5&lt;br /&gt;cross apply sys.dm_exec_query_plan(top_5.Query_Hash) as QP&lt;br /&gt;;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8021052411787210926-1850616306971960929?l=larslynch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://larslynch.blogspot.com/feeds/1850616306971960929/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://larslynch.blogspot.com/2009/12/how-to-find-sql-queries-with-high-cpu.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/1850616306971960929'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/1850616306971960929'/><link rel='alternate' type='text/html' href='http://larslynch.blogspot.com/2009/12/how-to-find-sql-queries-with-high-cpu.html' title='How to find SQL queries with high CPU usage'/><author><name>Lars</name><uri>http://www.blogger.com/profile/12915174517828532359</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_zghBEFLGW1Q/S2sskb489BI/AAAAAAAAAaw/-ipGjg48ePw/S220/cv_photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8021052411787210926.post-5662880148462589156</id><published>2009-11-30T08:25:00.000-08:00</published><updated>2009-11-30T08:32:11.717-08:00</updated><title type='text'>How to use SPSWC controls in Sharepoint DataFormWebpart</title><content type='html'>If you try to add a control such as &lt;SPSWC:PropertyProfileValue&gt; to a Sharepoint Data View Webpart inside the XSLT, Sharepoint Designer will crash and your page won't render correctly.&lt;br /&gt;&lt;br /&gt;You need to add two things to fully register the SPSWC namespace for use in XSLT.&lt;br /&gt;&lt;br /&gt;1. Add at the top of your page:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt; &lt;%@ Register Tagprefix="SPSWC" Namespace="Microsoft.SharePoint.Portal.WebControls" Assembly="Microsoft.SharePoint.Portal, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %&gt; &lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;2. In the &amp;lt;xsl:stylesheet&amp;gt; tag at the beginning of your Data View Webpart, add an entry for: &lt;br /&gt;&lt;pre&gt;xmlns:SPSWC="Microsoft.SharePoint.Portal.WebControls"&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;That should do it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8021052411787210926-5662880148462589156?l=larslynch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://larslynch.blogspot.com/feeds/5662880148462589156/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://larslynch.blogspot.com/2009/11/how-to-use-spswc-controls-in-sharepoint.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/5662880148462589156'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/5662880148462589156'/><link rel='alternate' type='text/html' href='http://larslynch.blogspot.com/2009/11/how-to-use-spswc-controls-in-sharepoint.html' title='How to use SPSWC controls in Sharepoint DataFormWebpart'/><author><name>Lars</name><uri>http://www.blogger.com/profile/12915174517828532359</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_zghBEFLGW1Q/S2sskb489BI/AAAAAAAAAaw/-ipGjg48ePw/S220/cv_photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8021052411787210926.post-7787479560604615655</id><published>2009-11-20T03:21:00.000-08:00</published><updated>2009-11-20T03:54:40.680-08:00</updated><title type='text'>Sharepoint and Reporting Services:  User cannot be found</title><content type='html'>As you can deduce from the error, the problem is that the author of a Sharepoint web site cannot be found.&lt;br /&gt;&lt;br /&gt;When Reporting Services tries to render a page, it seems to read the Author field of every web site of all site collections in all web applications.  If the author cannot be resolved in just one web site(the user had been deleted), this fails.&lt;br /&gt;&lt;br /&gt;You can see the same error with Sharepoint Manager 2007 tool (&lt;a href="http://spm.codeplex.com/"&gt;http://spm.codeplex.com/&lt;/a&gt;) by browsing to a web site and viewing the Author field.&lt;br /&gt;&lt;br /&gt;I copied code from this blog post (&lt;a href="http://blog.krichie.com/2008/09/12/resetting-the-author-on-a-sharepoint-site-or-wherefore-art-thou-author-redux/"&gt;http://blog.krichie.com/2008/09/12/resetting-the-author-on-a-sharepoint-site-or-wherefore-art-thou-author-redux/&lt;/a&gt;) to reset the Author field for sites that have this error in a site collection.&lt;br /&gt;&lt;br /&gt;Here's the modified code:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;// BEGIN SPResetAuthor&lt;br /&gt;&lt;br /&gt;using System;&lt;br /&gt;using System.Text;&lt;br /&gt;using Microsoft.SharePoint;&lt;br /&gt;using Microsoft.SharePoint.Administration;&lt;br /&gt;&lt;br /&gt;namespace SPResetAuthor&lt;br /&gt;{&lt;br /&gt;  class Program&lt;br /&gt;  {&lt;br /&gt;    static void Main(string[] args)&lt;br /&gt;    {&lt;br /&gt;      if (args.Length &lt; 2)&lt;br /&gt;      {&lt;br /&gt;        string sFormat = "{0,5}{1,-20}{2}\n";&lt;br /&gt;        StringBuilder sb = new StringBuilder();&lt;br /&gt;        sb.Append("\nSYNTAX: SPResetAuthor.exe  webURL DOMAIN\\USER \r\n");&lt;br /&gt;        sb.Append("\nwhere:\n\n");&lt;br /&gt;        sb.AppendFormat(sFormat, " ", "", "The Web URL where"&lt;br /&gt;            + " the author needs to be reset");&lt;br /&gt;        sb.AppendFormat(sFormat, " ", "", "The Login Account"&lt;br /&gt;            + " for the new author, i.e. DOMAIN\\USER");&lt;br /&gt;        Console.WriteLine(sb.ToString());&lt;br /&gt;        return;&lt;br /&gt;      }&lt;br /&gt;&lt;br /&gt;      // Open the site collection&lt;br /&gt;      Console.WriteLine("Opening site collection for: {0}",args[0]);&lt;br /&gt;      SPSite site = new SPSite(args[0]);&lt;br /&gt;      String userName = args[1];&lt;br /&gt;&lt;br /&gt;      fixEmptyAuthors(site.AllWebs, userName);&lt;br /&gt;&lt;br /&gt;    }&lt;br /&gt;&lt;br /&gt;    private static void  fixEmptyAuthors(SPWebCollection webs,String userName) {&lt;br /&gt;        foreach (SPWeb web in webs)&lt;br /&gt;        {&lt;br /&gt;            bool authorEmpty = true;&lt;br /&gt;            &lt;br /&gt;            try&lt;br /&gt;            {&lt;br /&gt;                web.EnsureUser(web.Author.LoginName);&lt;br /&gt;                authorEmpty = false;&lt;br /&gt;            }&lt;br /&gt;            catch (Exception e)&lt;br /&gt;            {&lt;br /&gt;                authorEmpty = true;&lt;br /&gt;            }&lt;br /&gt;&lt;br /&gt;           Console.WriteLine("Site (web) title: " + web.Title);&lt;br /&gt;&lt;br /&gt;           if (authorEmpty)&lt;br /&gt;           {&lt;br /&gt;               Console.WriteLine("Resetting Author to: {0}", userName);&lt;br /&gt;               SPUser user = web.EnsureUser(userName);&lt;br /&gt;                web.Author = user;&lt;br /&gt;                web.Update();&lt;br /&gt;           }&lt;br /&gt;           &lt;br /&gt;             fixEmptyAuthors(web.Webs,userName);&lt;br /&gt;&lt;br /&gt;        }&lt;br /&gt;    }&lt;br /&gt;  }&lt;br /&gt;}&lt;br /&gt;&lt;br /&gt;// END SPResetAuthor&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Create a Console application with this code (don't forget the reference to Microsoft.Sharepoint.dll) and run the app with: spresetauthor.exe http://server:port domain\user&lt;br /&gt;&lt;br /&gt;You'll need to run the application for all site collections you have (My Sites, SSP, etc) and I recommend the "sharepoint\system" as the new author.&lt;br /&gt;&lt;br /&gt;Good luck!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8021052411787210926-7787479560604615655?l=larslynch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://larslynch.blogspot.com/feeds/7787479560604615655/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://larslynch.blogspot.com/2009/11/sharepoint-and-reporting-services-user.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/7787479560604615655'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/7787479560604615655'/><link rel='alternate' type='text/html' href='http://larslynch.blogspot.com/2009/11/sharepoint-and-reporting-services-user.html' title='Sharepoint and Reporting Services:  User cannot be found'/><author><name>Lars</name><uri>http://www.blogger.com/profile/12915174517828532359</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_zghBEFLGW1Q/S2sskb489BI/AAAAAAAAAaw/-ipGjg48ePw/S220/cv_photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8021052411787210926.post-5602567342249689744</id><published>2009-10-27T10:05:00.000-07:00</published><updated>2009-10-27T10:08:34.204-07:00</updated><title type='text'>Sharepoint navigation audience problem</title><content type='html'>I fought for a few hours today trying to add a Sharepoint group to an audience on a global navigation link. &lt;br /&gt;&lt;br /&gt;My coworker had come across the same issue and it seems that if a group used as an audience doesn't have any permissions on the site collection, the audience won't work for this group, even if every member has site rights through other groups.&lt;br /&gt;&lt;br /&gt;The lesson:  All groups should have at least Read permissions on the root site collection.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8021052411787210926-5602567342249689744?l=larslynch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://larslynch.blogspot.com/feeds/5602567342249689744/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://larslynch.blogspot.com/2009/10/sharepoint-navigation-audience-problem.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/5602567342249689744'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/5602567342249689744'/><link rel='alternate' type='text/html' href='http://larslynch.blogspot.com/2009/10/sharepoint-navigation-audience-problem.html' title='Sharepoint navigation audience problem'/><author><name>Lars</name><uri>http://www.blogger.com/profile/12915174517828532359</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_zghBEFLGW1Q/S2sskb489BI/AAAAAAAAAaw/-ipGjg48ePw/S220/cv_photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8021052411787210926.post-3474975052832792909</id><published>2009-08-13T00:54:00.000-07:00</published><updated>2009-08-13T01:15:09.072-07:00</updated><title type='text'>Restaurar Sharepoint</title><content type='html'>Here are several ways to backup and restore (or move) a Sharepoint installation, from the least to most difficult:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;  stsadm -o export   will export a site or subsite  (-includeusersecurity will preserve all security roles and permissions).&lt;/li&gt;&lt;li&gt; stsadm -o backup  will backup an entire site collection&lt;/li&gt;&lt;li&gt;stsadm -o backup -backupmethod complete  will backup an entire farm&lt;/li&gt;&lt;/ol&gt;Notes:&lt;br /&gt;   When importing a site, the user must be a site collection administrator.&lt;br /&gt;   When restoring (and especially moving) an entire farm with new users or to a new domain, Sharepoint will usually not assign correctly the permissions in SQL Server databases to the new service accounts.  The user must revise all the Security User assignments in every database related to Sharepoint and add any service accounts that should be db_owner.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8021052411787210926-3474975052832792909?l=larslynch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://larslynch.blogspot.com/feeds/3474975052832792909/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://larslynch.blogspot.com/2009/08/restaurar-sharepoint.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/3474975052832792909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/3474975052832792909'/><link rel='alternate' type='text/html' href='http://larslynch.blogspot.com/2009/08/restaurar-sharepoint.html' title='Restaurar Sharepoint'/><author><name>Lars</name><uri>http://www.blogger.com/profile/12915174517828532359</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_zghBEFLGW1Q/S2sskb489BI/AAAAAAAAAaw/-ipGjg48ePw/S220/cv_photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8021052411787210926.post-7292263937033028593</id><published>2009-07-16T01:30:00.000-07:00</published><updated>2009-07-16T01:43:45.076-07:00</updated><title type='text'>Inheriting permissions in Sharepoint</title><content type='html'>After having spent several hours reapplying permissions and roles, I have learned the following about Sharepoint permissions in WSS 3.0:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Inheriting permissions and inheriting roles are not the same.&lt;/li&gt;&lt;li&gt;The Sharepoint GUI by default only breaks the permissions inheritance when you select "Edit Permissions" for an object or list.&lt;/li&gt;&lt;li&gt;Removing permissions from a parent site or object with "Remove user permissions" will delete that user's permissions from all child objects, &lt;span style="font-weight: bold;"&gt;even those that have broken the permission inheritance.&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;Seems quite unintuitive to me.  So be careful removing user permissions from sites or really any object with children.&lt;br /&gt;&lt;br /&gt;Here's more detail on the subject:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://kjellsj.blogspot.com/2008/10/sharepoint-acls-roledefinitions.html"&gt;http://kjellsj.blogspot.com/2008/10/sharepoint-acls-roledefinitions.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8021052411787210926-7292263937033028593?l=larslynch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://larslynch.blogspot.com/feeds/7292263937033028593/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://larslynch.blogspot.com/2009/07/inheriting-permissions-in-sharepoint.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/7292263937033028593'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/7292263937033028593'/><link rel='alternate' type='text/html' href='http://larslynch.blogspot.com/2009/07/inheriting-permissions-in-sharepoint.html' title='Inheriting permissions in Sharepoint'/><author><name>Lars</name><uri>http://www.blogger.com/profile/12915174517828532359</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_zghBEFLGW1Q/S2sskb489BI/AAAAAAAAAaw/-ipGjg48ePw/S220/cv_photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8021052411787210926.post-5985117775773060470</id><published>2009-04-20T06:30:00.000-07:00</published><updated>2009-04-20T06:41:21.304-07:00</updated><title type='text'>Error 403 Forbidden and Event ID 1314</title><content type='html'>We had a Smartpart in Sharepoint that contains a usercontrol which uses the AjaxControlToolkit.dll located in the bin folder.  After an IISRESET, normal users couldn't access any page which used this DLL unless an administrator connected to the page first.  The Windows Event Viewer would record "An unhandled access exception has occurred" with Event ID 1314 for every failed page view.&lt;br /&gt;&lt;br /&gt;I got the solution from this post: &lt;a href="http://objectmix.com/sharepoint/298556-users-receive-intermittent-forbidden-errors-event-id-1314-a-3.html"&gt;http://objectmix.com/sharepoint/298556-users-receive-intermittent-forbidden-errors-event-id-1314-a-3.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Using "Process Monitor" from Microsoft which logs all file and registry accesses I could see an "Access Denied" event for AjaxControlToolkit.dll. &lt;br /&gt;&lt;br /&gt;The two solutions which occured to me were:&lt;br /&gt;1. Give "Authenticated Users" read and execute permissions on the AjaxControlToolkit.dll.&lt;br /&gt;2. Move the AjaxControlToolkit.dll to the GAC.&lt;br /&gt;&lt;br /&gt;Hope this helps someone.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8021052411787210926-5985117775773060470?l=larslynch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://larslynch.blogspot.com/feeds/5985117775773060470/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://larslynch.blogspot.com/2009/04/error-403-forbidden-and-event-id-1314.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/5985117775773060470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/5985117775773060470'/><link rel='alternate' type='text/html' href='http://larslynch.blogspot.com/2009/04/error-403-forbidden-and-event-id-1314.html' title='Error 403 Forbidden and Event ID 1314'/><author><name>Lars</name><uri>http://www.blogger.com/profile/12915174517828532359</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_zghBEFLGW1Q/S2sskb489BI/AAAAAAAAAaw/-ipGjg48ePw/S220/cv_photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8021052411787210926.post-5235331865809698167</id><published>2009-04-15T06:40:00.000-07:00</published><updated>2009-04-15T06:50:01.899-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='microsoft sharepoint error'/><title type='text'>Problem with workflow association</title><content type='html'>&lt;span id="ctl00_PlaceHolderMain_LabelMessage"&gt;I was getting the following error when trying to associate a custom workflow to a list:&lt;br /&gt;&lt;br /&gt;Unable to validate data.   at System.Web.Configuration.MachineKeySection.GetDecodedData(Byte[] buf, Byte[]  modifier, Int32 start, Int32 length, Int32&amp;amp; dataLength)&lt;br /&gt;  at  System.Web.UI.ObjectStateFormatter.Deserialize(String inputString)&lt;br /&gt;&lt;br /&gt;After many hours of searching and reading, I came across this post: &lt;a href="http://stevepietrek.com/2008/02/18/oops-mistake-in-custom-applicationmaster/"&gt;http://stevepietrek.com/2008/02/18/oops-mistake-in-custom-applicationmaster/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;So it turns out any changes to the application.master can break certain _layout pages like the association pages for workflows.  Microsoft recommends not touching the application.master for good reason, but our client requires complete visual consistency so we have to give it to them.  Now I have a simple.master that I apply to problematic _layout pages that can't handle the changes to application.master.&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/8021052411787210926-5235331865809698167?l=larslynch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://larslynch.blogspot.com/feeds/5235331865809698167/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://larslynch.blogspot.com/2009/04/problem-with-workflow-association.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/5235331865809698167'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/5235331865809698167'/><link rel='alternate' type='text/html' href='http://larslynch.blogspot.com/2009/04/problem-with-workflow-association.html' title='Problem with workflow association'/><author><name>Lars</name><uri>http://www.blogger.com/profile/12915174517828532359</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_zghBEFLGW1Q/S2sskb489BI/AAAAAAAAAaw/-ipGjg48ePw/S220/cv_photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-8021052411787210926.post-8199213036483436441</id><published>2009-01-16T00:42:00.000-08:00</published><updated>2009-01-16T01:12:02.620-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='sharepoint virtual pc'/><title type='text'>Como crear una maquina virtual para Sharepoint</title><content type='html'>La mejor manera de desarrollar para Sharepoint es dentro de una maquina virtual donde puedes jugar y explorar sin causar daño.&lt;br /&gt;&lt;br /&gt;Pasos:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Asegurate de tener al menos 60 gigabytes libres en tu disco duro.&lt;/li&gt;&lt;li&gt;Crea una nueva maquina virtual en Virtual PC 2007.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Crea un disco duro virtual de al menos 30 gigabytes.  Una instalación básica de Windows Server 2003, Visual Studio 2008, SQLServer 2005 y MOSS 2007 ocupa 20 gigabytes.  También haría falta dejar espacio para la importación de una copia de seguridad de tu sitio de producción y luego contar lo que ocupará esto en disco.&lt;/li&gt;&lt;li&gt;Instalar Windows Server 2003, Visual Studio 2008 (sin SQLServer Express) y finalmente SQLServer 2005.&lt;/li&gt;&lt;li&gt;Instala cualquier otro programa de interés como Sharepoint Designer, Infopath y otros.&lt;/li&gt;&lt;li&gt;Instalar los service packs y actualizaciones para todo.&lt;/li&gt;&lt;li&gt;Instalar MOSS en modo Full, pero sin lanzar el asistente de configuración al final.&lt;/li&gt;&lt;li&gt;Instala los service pack, infrastructure updates y hotfix packs para MOSS (siempre sin lanzar el asistente de configuración al final).&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Copia la copia de seguridad a una carpeta local y comparta la carpeta en red. (Esto es para luego poder restaurarlo desde el panel de Administración Central de Sharepoint)&lt;br /&gt;&lt;/li&gt;&lt;li&gt; Crea los usuarios locales que utilizará para MOSS como MOSS-DB o MOSS-FARM y agregarlos al grupo de Administradores.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;En SQLServer Management Studio, dentro de Security -&gt; Logins, añadir MOSS-DB como administrador con todos los permisos de creación.&lt;/li&gt;&lt;li&gt;Añadir  "c:\program files\microsoft shared\common files\web extensions\12\bin" al PATH para todos los usuarios en la pestaña avanzada de configuración de Windows.&lt;/li&gt;&lt;li&gt;Crea una acceso rapido en el escritorio de todos los usuarios al "c:\program files\microsoft shared\common files\web extensions\12" en "C:\Documents y Settings\All Users\Escritorio".&lt;/li&gt;&lt;li&gt;Descarga las herramientas de Sysprep que permite sellar la maquina y crear copias limpias sin conflictos en la red.&lt;/li&gt;&lt;li&gt;Editar el commandline.sys para los comandos a ejecutar tras la instalación. Principalmente configurar el MOSS.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Cuando tienes todo listo, apaga la maquina.&lt;/li&gt;&lt;li&gt;Crea una copia entera de este disco duro (Solo se puede sellar un disco 4 veces y asi evitamos afectar la imagen maestra).&lt;/li&gt;&lt;li&gt;Cambia el disco duro de la maquina virtual para apuntar a la copia recien hecho.&lt;/li&gt;&lt;li&gt;Arranca con la copia y lanza la herramienta de Sysprep para limpiar y sellar el disco. Se apagará automaticamente.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Distribuye las copias del disco sellado y cuando el usuario lo arranca, se instalará automaticamente.&lt;/li&gt;&lt;/ol&gt;Me queda mucho por refinar de esta entrada, pero bueno.&lt;br /&gt;&lt;br /&gt;Suerte con este mundo de Sharepoint.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/8021052411787210926-8199213036483436441?l=larslynch.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://larslynch.blogspot.com/feeds/8199213036483436441/comments/default' title='Enviar comentarios'/><link rel='replies' type='text/html' href='http://larslynch.blogspot.com/2009/01/como-crear-una-maquina-virtual-para.html#comment-form' title='0 comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/8199213036483436441'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/8021052411787210926/posts/default/8199213036483436441'/><link rel='alternate' type='text/html' href='http://larslynch.blogspot.com/2009/01/como-crear-una-maquina-virtual-para.html' title='Como crear una maquina virtual para Sharepoint'/><author><name>Lars</name><uri>http://www.blogger.com/profile/12915174517828532359</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='23' height='32' src='http://3.bp.blogspot.com/_zghBEFLGW1Q/S2sskb489BI/AAAAAAAAAaw/-ipGjg48ePw/S220/cv_photo.jpg'/></author><thr:total>0</thr:total></entry></feed>
