<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Another Hack&#039;s SharePoint Experiences</title>
	<atom:link href="http://vspug.com/avelez/feed/" rel="self" type="application/rss+xml" />
	<link>http://vspug.com/avelez</link>
	<description>Just another VSPUG - Virtual SharePoint User Group weblog</description>
	<lastBuildDate>Tue, 11 Jul 2006 06:06:00 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Tip o&#039; the day: Getting the Content database information of a specific site</title>
		<link>http://vspug.com/avelez/2006/07/11/tip-o-the-day-getting-the-content-database-information-of-a-specific-site/</link>
		<comments>http://vspug.com/avelez/2006/07/11/tip-o-the-day-getting-the-content-database-information-of-a-specific-site/#comments</comments>
		<pubDate>Tue, 11 Jul 2006 06:06:00 +0000</pubDate>
		<dc:creator>andrewjvelez</dc:creator>
		
		<guid isPermaLink="false"></guid>
		<description><![CDATA[Here&#39;s a way to get the server and database name of the content database that a site belongs to using C#:
using Microsoft.SharePoint;
using Microsoft.SharePoint.Administrator;
public class Test
{
private static SPGlobalAdmin oGlobAdmin = new SPGlobalAdmin();

public static SPVirtualServer GetVirtualServerBySite(SPSite oSite)&#160;&#160;{&#160;&#160;&#160;&#160;foreach(SPVirtualServer iServer in oGlobAdmin.VirtualServers)&#160;&#160;&#160;{&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;foreach(SPSite iSite in iServer.Sites)&#160;&#160;&#160;&#160;{&#160;&#160;&#160;&#160;&#160;if(iSite.ID == oSite.ID)&#160;&#160;&#160;&#160;&#160;{&#160;&#160;&#160;&#160;&#160;&#160;return iServer;&#160;&#160;&#160;&#160;&#160;}&#160;&#160;&#160;&#160;}&#160;&#160;&#160;}&#160;&#160;&#160;throw new IndexOutOfRangeException(&#34;Unable to find site in configuration database: &#34; + oSite.Url);&#160;&#160;}
public [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#39;s a way to get the server and database name of the content database that a site belongs to using C#:</p>
<p><font face="Courier New">using Microsoft.SharePoint;</font></p>
<p><font face="Courier New">using Microsoft.SharePoint.Administrator;</font></p>
<p><font face="Courier New">public class Test</font></p>
<p><font face="Courier New">{</font></p>
<p><font face="Courier New">private static SPGlobalAdmin oGlobAdmin = new SPGlobalAdmin();</p>
<p></font>
<p><font face="Courier New">public static SPVirtualServer GetVirtualServerBySite(SPSite oSite)<br />&nbsp;&nbsp;{&nbsp;<br />&nbsp;&nbsp;&nbsp;foreach(SPVirtualServer iServer in oGlobAdmin.VirtualServers)<br />&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;foreach(SPSite iSite in iServer.Sites)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(iSite.ID == oSite.ID)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return iServer;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;throw new IndexOutOfRangeException(&quot;Unable to find site in configuration database: &quot; + oSite.Url);<br />&nbsp;&nbsp;}</font></p>
<p><font face="Courier New">public static void Main(String[] Args)</font></p>
<p><font face="Courier New">{</font></p>
<p><font face="Courier New">SPSite oSite = new SPSite([Your site&#39;s URL here]);</font></p>
<p><font face="Courier New">SPVirtualServer oVS = GetVirtualServerBySite(oSite);</font></p>
<p><font face="Courier New">string SPContentDBServer = oVS.ContentDatabases[0].Server;<br />string SPContentDB = oVS.ContentDatabases[0].Name;</font></p>
<p><font face="Courier New">Console.WriteLine(SPContentDBServer);</font></p>
<p><font face="Courier New">Console.WriteLine(SPContentDB);</font></p>
<p><font face="Courier New">}</font></p>
<p><font face="Courier New">}</font></p>
<p>Hopefully someone finds this the least bit interesting&#8230;Personally I&#39;m trying to recreate the connection string for the SharePoint DB, but shhhhh, don&#39;t tell anyone.&nbsp; Mucking w/ the SharePoint databases is not supported by MS.</p>
<p><img src="/aggbug.aspx?PostID=9083" width="1" height="1" alt="  " /></p>
]]></content:encoded>
			<wfw:commentRss>http://vspug.com/avelez/2006/07/11/tip-o-the-day-getting-the-content-database-information-of-a-specific-site/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Tip o&#039; the day: Getting the Content database information of a specific site</title>
		<link>http://vspug.com/avelez/2006/07/11/tip-o-the-day-getting-the-content-database-information-of-a-specific-site/</link>
		<comments>http://vspug.com/avelez/2006/07/11/tip-o-the-day-getting-the-content-database-information-of-a-specific-site/#comments</comments>
		<pubDate>Tue, 11 Jul 2006 06:06:00 +0000</pubDate>
		<dc:creator>andrewjvelez</dc:creator>
		
		<guid isPermaLink="false"></guid>
		<description><![CDATA[Here&#39;s a way to get the server and database name of the content database that a site belongs to using C#:
using Microsoft.SharePoint;
using Microsoft.SharePoint.Administrator;
public class Test
{
private static SPGlobalAdmin oGlobAdmin = new SPGlobalAdmin();

public static SPVirtualServer GetVirtualServerBySite(SPSite oSite)&#160;&#160;{&#160;&#160;&#160;&#160;foreach(SPVirtualServer iServer in oGlobAdmin.VirtualServers)&#160;&#160;&#160;{&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;foreach(SPSite iSite in iServer.Sites)&#160;&#160;&#160;&#160;{&#160;&#160;&#160;&#160;&#160;if(iSite.ID == oSite.ID)&#160;&#160;&#160;&#160;&#160;{&#160;&#160;&#160;&#160;&#160;&#160;return iServer;&#160;&#160;&#160;&#160;&#160;}&#160;&#160;&#160;&#160;}&#160;&#160;&#160;}&#160;&#160;&#160;throw new IndexOutOfRangeException(&#34;Unable to find site in configuration database: &#34; + oSite.Url);&#160;&#160;}
public [...]]]></description>
			<content:encoded><![CDATA[<p>Here&#39;s a way to get the server and database name of the content database that a site belongs to using C#:</p>
<p><font face="Courier New">using Microsoft.SharePoint;</font></p>
<p><font face="Courier New">using Microsoft.SharePoint.Administrator;</font></p>
<p><font face="Courier New">public class Test</font></p>
<p><font face="Courier New">{</font></p>
<p><font face="Courier New">private static SPGlobalAdmin oGlobAdmin = new SPGlobalAdmin();</p>
<p></font>
<p><font face="Courier New">public static SPVirtualServer GetVirtualServerBySite(SPSite oSite)<br />&nbsp;&nbsp;{&nbsp;<br />&nbsp;&nbsp;&nbsp;foreach(SPVirtualServer iServer in oGlobAdmin.VirtualServers)<br />&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;foreach(SPSite iSite in iServer.Sites)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(iSite.ID == oSite.ID)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return iServer;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;throw new IndexOutOfRangeException(&quot;Unable to find site in configuration database: &quot; + oSite.Url);<br />&nbsp;&nbsp;}</font></p>
<p><font face="Courier New">public static void Main(String[] Args)</font></p>
<p><font face="Courier New">{</font></p>
<p><font face="Courier New">SPSite oSite = new SPSite([Your site&#39;s URL here]);</font></p>
<p><font face="Courier New">SPVirtualServer oVS = GetVirtualServerBySite(oSite);</font></p>
<p><font face="Courier New">string SPContentDBServer = oVS.ContentDatabases[0].Server;<br />string SPContentDB = oVS.ContentDatabases[0].Name;</font></p>
<p><font face="Courier New">Console.WriteLine(SPContentDBServer);</font></p>
<p><font face="Courier New">Console.WriteLine(SPContentDB);</font></p>
<p><font face="Courier New">}</font></p>
<p><font face="Courier New">}</font></p>
<p>Hopefully someone finds this the least bit interesting&#8230;Personally I&#39;m trying to recreate the connection string for the SharePoint DB, but shhhhh, don&#39;t tell anyone.&nbsp; Mucking w/ the SharePoint databases is not supported by MS.</p>
<p><img src="/aggbug.aspx?PostID=9083" width="1" height="1" alt="  " /></p>
]]></content:encoded>
			<wfw:commentRss>http://vspug.com/avelez/2006/07/11/tip-o-the-day-getting-the-content-database-information-of-a-specific-site/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Alerts</title>
		<link>http://vspug.com/avelez/2006/06/23/alerts/</link>
		<comments>http://vspug.com/avelez/2006/06/23/alerts/#comments</comments>
		<pubDate>Fri, 23 Jun 2006 23:15:00 +0000</pubDate>
		<dc:creator>andrewjvelez</dc:creator>
		
		<guid isPermaLink="false"></guid>
		<description><![CDATA[Anyone ever notice a common practice with Microsoft: how they make something that is ALMOST useful, but stop right at the place where they are juuust at the cusp of something being great and just make it OK?&#160; It&#39;s something that we notice here at my work&#8230;
Anyways, for just about the past 2 years I&#39;ve [...]]]></description>
			<content:encoded><![CDATA[<p>Anyone ever notice a common practice with Microsoft: how they make something that is ALMOST useful, but stop right at the place where they are juuust at the cusp of something being great and just make it OK?&nbsp; It&#39;s something that we notice here at my work&#8230;</p>
<p>Anyways, for just about the past 2 years I&#39;ve been trying on-and-off to find a way to customize and automatically trigger alerts.&nbsp; I&#39;ve been told that is a bad idea, but unfortunately we need it.&nbsp; Last month I attended SharePoint Experts SharePoint programming class, and since I&#39;ve been tinkering a bit w/ Web Part coding, etc.&nbsp; (Aside: It was a good class&#8230;you probably got more out of it if a) you are experienced with SharePoint and b) you go having an idea of what you want SharePoint to do, rather than an expectation of learning what SharePoint CAN do.&nbsp; Imagination is helpful when it comes to programming web parts).</p>
<p>Since the class I&#39;ve gotten a requirement to find a way to automatically create an alert for every creator of an item in a specific task list.&nbsp; Evidently the people in my company are too stupid to actually check on the requests they make, and instead pepper others with status update questions.&nbsp; One could make a point that this is really a training issue rather than a coding issue, but if every item does need an alert going to the creator, it would save time to programmatically do that rather than have everyone create an alert every time they make an item.</p>
<p>I&#39;ve been playing with the SPAlert class, and let me tell you, it&#39;s a pain in the butt.&nbsp; First of all, I&#39;d like a function to find all the alerts on a given list or item.&nbsp; Here&#39;s where that first rant plays in: Microsoft evidently thought that the only time someone might want to query the alerts is on a per user basis only.&nbsp; Uh huh&#8230;&nbsp; So I had to build a procedure to get the creator of the list item, which isn&#39;t as easy as you&#39;d think.&nbsp; I would have thought that since every item has a creator, there might be, oh I don&#39;t know, a Creator property on the SPItem class.&nbsp; Nope.&nbsp; You need to do this:</p>
<p><font face="Courier New">SPSite oSite = new SPSite(&quot;Your site URL&quot;);<br />SPList oList = oSite.OpenWeb().Lists[&quot;Your list name&quot;];<br />SPListItem oItem = oList.GetItemById(&quot;Item ID&quot;);<br /></font><font face="Courier New">string userValue = oItem[&quot;Created By&quot;].ToString();<br />int index = userValue.Index Of(&#39;;&#39;);<br />int id = Int32.Parse(userValue.Substring(0, index));<br />SPUser itemCreator = oSite.OpenWeb().SiteUsers.GetByID(id);</p>
<p><font face="Times New Roman">Yeah&#8230;that&#39;s great.&nbsp; This was actually in the SDK, if you looked under SPListItem and scrolled waaaaaaaaaaay to the bottom.&nbsp; So MS knew you might want to do this, but didn&#39;t put the functionality in to do it for you.&nbsp; Oh yeah, and you can&#39;t inherit from SPListItem to put this in yourself, b/c there&#39;s no default constructor.&nbsp; Sweet!</p>
<p>So you get the user, and then you have to loop through all the alerts that the user has.&nbsp; You need to compare if the AlertType, the List, and (if you are doing an Item alert like me) the Item ID are all the same on each alert.&nbsp; If someone has a better way to do this, let me know.&nbsp; Once you determine that the user doesn&#39;t already have an alert set up (b/c the user might also have a list level alert already set up), you can add an alert.&nbsp; I haven&#39;t gotten that far yet.</p>
<p>I&#39;m considering just writing a stored procedure to do that check for me.&nbsp; I&#39;ve looked into the DB a bit, and there are various values depending on the alert type/frequency you are searching.&nbsp; The immediate alerts are in the ImmedSubscriptions Table, and the daily/weekly alerts are in the SchedSubscriptions table.&nbsp; Here&#39;s what the values are:</p>
<p></font></font>
<div id="SharePoint Alert Table_31434" align="center">
<table cellpadding="0" cellspacing="0">
<tr>
<td class="xl6931434">Change    Type</td>
<td class="xl7031434">EventType (DB)</td>
<td class="xl7031434">Frequency</td>
<td class="xl7131434">Notify Freq (Sched)</td>
</tr>
<tr>
<td class="xl7231434">All</td>
<td class="xl7331434" align="right">-1</td>
<td class="xl7431434">Immed</td>
<td class="xl7531434">&nbsp;</td>
</tr>
<tr>
<td class="xl7631434">Add</td>
<td class="xl7731434" align="right">1</td>
<td class="xl7431434">Immed</td>
<td class="xl7531434">&nbsp;</td>
</tr>
<tr>
<td class="xl7831434">Changed</td>
<td class="xl7931434" align="right">2</td>
<td class="xl7431434">Immed</td>
<td class="xl7531434">&nbsp;</td>
</tr>
<tr>
<td class="xl8031434">Deleted</td>
<td class="xl6631434" align="right">4</td>
<td class="xl6731434">Immed</td>
<td class="xl8131434">&nbsp;</td>
</tr>
<tr>
<td class="xl7231434">All</td>
<td class="xl7331434" align="right">-1</td>
<td class="xl8231434">daily</td>
<td class="xl6531434" align="right">1</td>
</tr>
<tr>
<td class="xl8331434">Add</td>
<td class="xl8431434" align="right">1</td>
<td class="xl8231434">daily</td>
<td class="xl6531434" align="right">1</td>
</tr>
<tr>
<td class="xl7831434">Changed</td>
<td class="xl7931434" align="right">2</td>
<td class="xl8231434">daily</td>
<td class="xl6531434" align="right">1</td>
</tr>
<tr>
<td class="xl8031434">Deleted</td>
<td class="xl6631434" align="right">4</td>
<td class="xl6831434">Daily</td>
<td class="xl8531434" align="right">1</td>
</tr>
<tr>
<td class="xl7231434">All</td>
<td class="xl7331434" align="right">-1</td>
<td class="xl8631434">weekly</td>
<td class="xl6531434" align="right">2</td>
</tr>
<tr>
<td class="xl8331434">Add</td>
<td class="xl8431434" align="right">1</td>
<td class="xl8631434">weekly</td>
<td class="xl6531434" align="right">2</td>
</tr>
<tr>
<td class="xl7831434">Changed</td>
<td class="xl7931434" align="right">2</td>
<td class="xl8631434">weekly</td>
<td class="xl6531434" align="right">2</td>
</tr>
<tr>
<td class="xl8031434">Deleted</td>
<td class="xl6631434" align="right">4</td>
<td class="xl8731434">weekly</td>
<td class="xl8531434" align="right">2</td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</table></div>
<p>When I finish my code (including SPs) I&#39;ll post it here if someones interested.&nbsp; What I have yet to overcome is how exactly do I trigger the alert creation.&nbsp; I&#39;m considering writing a web control I can plug into create item page, but I don&#39;t know if I can both call the Submit form routine and the create alert stuff I&#39;m making.&nbsp; I&#39;m also considering creating a service to check on new list items and adding the alerts on the back end.&nbsp; I&#39;m honestly not sure.&nbsp; If someone has ideas on that, I&#39;d love to hear them.</p>
<p>Anyways, it&#39;s good to be back after 2 years.&nbsp; Hopefully I&#39;ll post w/ more frequency.</p>
<p>Tips I learned:<br />if you ever end up with a really long list [mine had 10000+ items]  don&#39;t get an item by doing SPList[ItemID].&nbsp; I ended up getting memory  leaks and things died.&nbsp; Use SPList.GetItemById(ItemID).&nbsp; You&#39;ll be a  happier person for it</p>
<p><img src="/aggbug.aspx?PostID=8588" width="1" height="1" alt="  " /></p>
]]></content:encoded>
			<wfw:commentRss>http://vspug.com/avelez/2006/06/23/alerts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Alerts</title>
		<link>http://vspug.com/avelez/2006/06/23/alerts/</link>
		<comments>http://vspug.com/avelez/2006/06/23/alerts/#comments</comments>
		<pubDate>Fri, 23 Jun 2006 23:15:00 +0000</pubDate>
		<dc:creator>andrewjvelez</dc:creator>
		
		<guid isPermaLink="false"></guid>
		<description><![CDATA[Anyone ever notice a common practice with Microsoft: how they make something that is ALMOST useful, but stop right at the place where they are juuust at the cusp of something being great and just make it OK?&#160; It&#39;s something that we notice here at my work&#8230;
Anyways, for just about the past 2 years I&#39;ve [...]]]></description>
			<content:encoded><![CDATA[<p>Anyone ever notice a common practice with Microsoft: how they make something that is ALMOST useful, but stop right at the place where they are juuust at the cusp of something being great and just make it OK?&nbsp; It&#39;s something that we notice here at my work&#8230;</p>
<p>Anyways, for just about the past 2 years I&#39;ve been trying on-and-off to find a way to customize and automatically trigger alerts.&nbsp; I&#39;ve been told that is a bad idea, but unfortunately we need it.&nbsp; Last month I attended SharePoint Experts SharePoint programming class, and since I&#39;ve been tinkering a bit w/ Web Part coding, etc.&nbsp; (Aside: It was a good class&#8230;you probably got more out of it if a) you are experienced with SharePoint and b) you go having an idea of what you want SharePoint to do, rather than an expectation of learning what SharePoint CAN do.&nbsp; Imagination is helpful when it comes to programming web parts).</p>
<p>Since the class I&#39;ve gotten a requirement to find a way to automatically create an alert for every creator of an item in a specific task list.&nbsp; Evidently the people in my company are too stupid to actually check on the requests they make, and instead pepper others with status update questions.&nbsp; One could make a point that this is really a training issue rather than a coding issue, but if every item does need an alert going to the creator, it would save time to programmatically do that rather than have everyone create an alert every time they make an item.</p>
<p>I&#39;ve been playing with the SPAlert class, and let me tell you, it&#39;s a pain in the butt.&nbsp; First of all, I&#39;d like a function to find all the alerts on a given list or item.&nbsp; Here&#39;s where that first rant plays in: Microsoft evidently thought that the only time someone might want to query the alerts is on a per user basis only.&nbsp; Uh huh&#8230;&nbsp; So I had to build a procedure to get the creator of the list item, which isn&#39;t as easy as you&#39;d think.&nbsp; I would have thought that since every item has a creator, there might be, oh I don&#39;t know, a Creator property on the SPItem class.&nbsp; Nope.&nbsp; You need to do this:</p>
<p><font face="Courier New">SPSite oSite = new SPSite(&quot;Your site URL&quot;);<br />SPList oList = oSite.OpenWeb().Lists[&quot;Your list name&quot;];<br />SPListItem oItem = oList.GetItemById(&quot;Item ID&quot;);<br /></font><font face="Courier New">string userValue = oItem[&quot;Created By&quot;].ToString();<br />int index = userValue.Index Of(&#39;;&#39;);<br />int id = Int32.Parse(userValue.Substring(0, index));<br />SPUser itemCreator = oSite.OpenWeb().SiteUsers.GetByID(id);</p>
<p><font face="Times New Roman">Yeah&#8230;that&#39;s great.&nbsp; This was actually in the SDK, if you looked under SPListItem and scrolled waaaaaaaaaaay to the bottom.&nbsp; So MS knew you might want to do this, but didn&#39;t put the functionality in to do it for you.&nbsp; Oh yeah, and you can&#39;t inherit from SPListItem to put this in yourself, b/c there&#39;s no default constructor.&nbsp; Sweet!</p>
<p>So you get the user, and then you have to loop through all the alerts that the user has.&nbsp; You need to compare if the AlertType, the List, and (if you are doing an Item alert like me) the Item ID are all the same on each alert.&nbsp; If someone has a better way to do this, let me know.&nbsp; Once you determine that the user doesn&#39;t already have an alert set up (b/c the user might also have a list level alert already set up), you can add an alert.&nbsp; I haven&#39;t gotten that far yet.</p>
<p>I&#39;m considering just writing a stored procedure to do that check for me.&nbsp; I&#39;ve looked into the DB a bit, and there are various values depending on the alert type/frequency you are searching.&nbsp; The immediate alerts are in the ImmedSubscriptions Table, and the daily/weekly alerts are in the SchedSubscriptions table.&nbsp; Here&#39;s what the values are:</p>
<p></font></font>
<div id="SharePoint Alert Table_31434" align="center">
<table cellpadding="0" cellspacing="0">
<tr>
<td class="xl6931434">Change    Type</td>
<td class="xl7031434">EventType (DB)</td>
<td class="xl7031434">Frequency</td>
<td class="xl7131434">Notify Freq (Sched)</td>
</tr>
<tr>
<td class="xl7231434">All</td>
<td class="xl7331434" align="right">-1</td>
<td class="xl7431434">Immed</td>
<td class="xl7531434">&nbsp;</td>
</tr>
<tr>
<td class="xl7631434">Add</td>
<td class="xl7731434" align="right">1</td>
<td class="xl7431434">Immed</td>
<td class="xl7531434">&nbsp;</td>
</tr>
<tr>
<td class="xl7831434">Changed</td>
<td class="xl7931434" align="right">2</td>
<td class="xl7431434">Immed</td>
<td class="xl7531434">&nbsp;</td>
</tr>
<tr>
<td class="xl8031434">Deleted</td>
<td class="xl6631434" align="right">4</td>
<td class="xl6731434">Immed</td>
<td class="xl8131434">&nbsp;</td>
</tr>
<tr>
<td class="xl7231434">All</td>
<td class="xl7331434" align="right">-1</td>
<td class="xl8231434">daily</td>
<td class="xl6531434" align="right">1</td>
</tr>
<tr>
<td class="xl8331434">Add</td>
<td class="xl8431434" align="right">1</td>
<td class="xl8231434">daily</td>
<td class="xl6531434" align="right">1</td>
</tr>
<tr>
<td class="xl7831434">Changed</td>
<td class="xl7931434" align="right">2</td>
<td class="xl8231434">daily</td>
<td class="xl6531434" align="right">1</td>
</tr>
<tr>
<td class="xl8031434">Deleted</td>
<td class="xl6631434" align="right">4</td>
<td class="xl6831434">Daily</td>
<td class="xl8531434" align="right">1</td>
</tr>
<tr>
<td class="xl7231434">All</td>
<td class="xl7331434" align="right">-1</td>
<td class="xl8631434">weekly</td>
<td class="xl6531434" align="right">2</td>
</tr>
<tr>
<td class="xl8331434">Add</td>
<td class="xl8431434" align="right">1</td>
<td class="xl8631434">weekly</td>
<td class="xl6531434" align="right">2</td>
</tr>
<tr>
<td class="xl7831434">Changed</td>
<td class="xl7931434" align="right">2</td>
<td class="xl8631434">weekly</td>
<td class="xl6531434" align="right">2</td>
</tr>
<tr>
<td class="xl8031434">Deleted</td>
<td class="xl6631434" align="right">4</td>
<td class="xl8731434">weekly</td>
<td class="xl8531434" align="right">2</td>
</tr>
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</table></div>
<p>When I finish my code (including SPs) I&#39;ll post it here if someones interested.&nbsp; What I have yet to overcome is how exactly do I trigger the alert creation.&nbsp; I&#39;m considering writing a web control I can plug into create item page, but I don&#39;t know if I can both call the Submit form routine and the create alert stuff I&#39;m making.&nbsp; I&#39;m also considering creating a service to check on new list items and adding the alerts on the back end.&nbsp; I&#39;m honestly not sure.&nbsp; If someone has ideas on that, I&#39;d love to hear them.</p>
<p>Anyways, it&#39;s good to be back after 2 years.&nbsp; Hopefully I&#39;ll post w/ more frequency.</p>
<p>Tips I learned:<br />if you ever end up with a really long list [mine had 10000+ items]  don&#39;t get an item by doing SPList[ItemID].&nbsp; I ended up getting memory  leaks and things died.&nbsp; Use SPList.GetItemById(ItemID).&nbsp; You&#39;ll be a  happier person for it</p>
<p><img src="/aggbug.aspx?PostID=8588" width="1" height="1" alt="  " /></p>
]]></content:encoded>
			<wfw:commentRss>http://vspug.com/avelez/2006/06/23/alerts/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SharePoint Database/List Best Practices???</title>
		<link>http://vspug.com/avelez/2004/05/21/sharepoint-database-list-best-practices/</link>
		<comments>http://vspug.com/avelez/2004/05/21/sharepoint-database-list-best-practices/#comments</comments>
		<pubDate>Sat, 22 May 2004 01:44:00 +0000</pubDate>
		<dc:creator>andrewjvelez</dc:creator>
		
		<guid isPermaLink="false"></guid>
		<description><![CDATA[Anyone out there have a reference to what the best practices for programming SharePoint are?&#160; Specifically, how much normalization one should use in their database/lists?&#160; Here&#39;s my scenario:
I&#39;d like to create a Time Off Request and Reporting application.&#160;It would have the following operation:

Employees would go to a form to request a period or day as [...]]]></description>
			<content:encoded><![CDATA[<p>Anyone out there have a reference to what the best practices for programming SharePoint are?&nbsp; Specifically, how much normalization one should use in their database/lists?&nbsp; Here&#39;s my scenario:</p>
<p>I&#39;d like to create a Time Off Request and Reporting application.&nbsp;It would have the following operation:</p>
<ul>
<li>Employees would go to a form to request a period or day as PTO</li>
<li>Managers would be alerted to the request and either approve or deny it (which would then update the employee</li>
<li>When the scheduled day came, the manager would confirm that the employee did or didn&#39;t take the day off</li>
<li>Payroll&nbsp;would be able to run a report of the data to see who took what time off.&nbsp; Managers could run the same report for their departments.&nbsp; Employees could not.</li>
</ul>
<p>With a normal database application, I&#39;d have 4 related tables: Employees, Departments, Administrators (but actually, this could be a boolean field for the employee table), and the&nbsp; PTOData table.&nbsp; However, I&#39;m not sure if you can write all of these within the context of SharePoint lists.&nbsp; Anyone have any ideas?&nbsp; Should I just create separate tables, and only use SharePoint as a wrapper?&nbsp; Let me know what you think!</p>
<p>BTW &#8211; Dustin &#8211; I asked my manager if they&#39;d send me to the dev training.&nbsp; If I can go, this is something I&#39;d like to cover.&nbsp; For those of you who also would like to go, but are afraid of asking your boss for a few grand, I can send you my request document (the sucker was 2 1/2 pages long!) as a template.</p>
<p><img src="/aggbug.aspx?PostID=471" width="1" height="1" alt="  " /></p>
]]></content:encoded>
			<wfw:commentRss>http://vspug.com/avelez/2004/05/21/sharepoint-database-list-best-practices/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SharePoint Database/List Best Practices???</title>
		<link>http://vspug.com/avelez/2004/05/21/sharepoint-database-list-best-practices/</link>
		<comments>http://vspug.com/avelez/2004/05/21/sharepoint-database-list-best-practices/#comments</comments>
		<pubDate>Sat, 22 May 2004 01:44:00 +0000</pubDate>
		<dc:creator>andrewjvelez</dc:creator>
		
		<guid isPermaLink="false"></guid>
		<description><![CDATA[Anyone out there have a reference to what the best practices for programming SharePoint are?&#160; Specifically, how much normalization one should use in their database/lists?&#160; Here&#39;s my scenario:
I&#39;d like to create a Time Off Request and Reporting application.&#160;It would have the following operation:

Employees would go to a form to request a period or day as [...]]]></description>
			<content:encoded><![CDATA[<p>Anyone out there have a reference to what the best practices for programming SharePoint are?&nbsp; Specifically, how much normalization one should use in their database/lists?&nbsp; Here&#39;s my scenario:</p>
<p>I&#39;d like to create a Time Off Request and Reporting application.&nbsp;It would have the following operation:</p>
<ul>
<li>Employees would go to a form to request a period or day as PTO</li>
<li>Managers would be alerted to the request and either approve or deny it (which would then update the employee</li>
<li>When the scheduled day came, the manager would confirm that the employee did or didn&#39;t take the day off</li>
<li>Payroll&nbsp;would be able to run a report of the data to see who took what time off.&nbsp; Managers could run the same report for their departments.&nbsp; Employees could not.</li>
</ul>
<p>With a normal database application, I&#39;d have 4 related tables: Employees, Departments, Administrators (but actually, this could be a boolean field for the employee table), and the&nbsp; PTOData table.&nbsp; However, I&#39;m not sure if you can write all of these within the context of SharePoint lists.&nbsp; Anyone have any ideas?&nbsp; Should I just create separate tables, and only use SharePoint as a wrapper?&nbsp; Let me know what you think!</p>
<p>BTW &#8211; Dustin &#8211; I asked my manager if they&#39;d send me to the dev training.&nbsp; If I can go, this is something I&#39;d like to cover.&nbsp; For those of you who also would like to go, but are afraid of asking your boss for a few grand, I can send you my request document (the sucker was 2 1/2 pages long!) as a template.</p>
<p><img src="/aggbug.aspx?PostID=471" width="1" height="1" alt="  " /></p>
]]></content:encoded>
			<wfw:commentRss>http://vspug.com/avelez/2004/05/21/sharepoint-database-list-best-practices/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SMigrate Bug</title>
		<link>http://vspug.com/avelez/2004/05/13/smigrate-bug/</link>
		<comments>http://vspug.com/avelez/2004/05/13/smigrate-bug/#comments</comments>
		<pubDate>Fri, 14 May 2004 00:27:00 +0000</pubDate>
		<dc:creator>andrewjvelez</dc:creator>
		
		<guid isPermaLink="false"></guid>
		<description><![CDATA[I think I found a bug in using SMigrate to move a site &#8211; it&#39;s only a minor one.&#160; I&#39;m putting it here because I&#39;m not sure where to submit bugs to Microsoft anymore, and I&#39;m not willing to spend an hour to figure it out.
Here&#39;s the scenario: I used SMigrate to copy our production [...]]]></description>
			<content:encoded><![CDATA[<p>I think I found a bug in using SMigrate to move a site &#8211; it&#39;s only a minor one.&nbsp; I&#39;m putting it here because I&#39;m not sure where to submit bugs to Microsoft anymore, and I&#39;m not willing to spend an hour to figure it out.</p>
<p>Here&#39;s the scenario: I used SMigrate to copy our production WSS site collection to some development servers.&nbsp; It worked great, actually: the prod server was mis-configured to use a&nbsp;MSDE database rather than a Web Farm w/ SQL, but when I moved it to a server w/ that configuration, it moved the data into SQL just fine.&nbsp; However, when I went to add a Web Part to the development server, it tried to connect to the old server&#39;s web part library.&nbsp; I know this because it prompted me to log into the old server.</p>
<p>I&#39;m not sure how to fix it quite yet, but I&#39;m going to hack into the database in the next few days to figure out where it&#39;s storing the old server&#39;s name.&nbsp; If I find anything, I&#39;ll update you.</p>
<p><img src="/aggbug.aspx?PostID=433" width="1" height="1" alt="  " /></p>
]]></content:encoded>
			<wfw:commentRss>http://vspug.com/avelez/2004/05/13/smigrate-bug/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SMigrate Bug</title>
		<link>http://vspug.com/avelez/2004/05/13/smigrate-bug/</link>
		<comments>http://vspug.com/avelez/2004/05/13/smigrate-bug/#comments</comments>
		<pubDate>Fri, 14 May 2004 00:27:00 +0000</pubDate>
		<dc:creator>andrewjvelez</dc:creator>
		
		<guid isPermaLink="false"></guid>
		<description><![CDATA[I think I found a bug in using SMigrate to move a site &#8211; it&#39;s only a minor one.&#160; I&#39;m putting it here because I&#39;m not sure where to submit bugs to Microsoft anymore, and I&#39;m not willing to spend an hour to figure it out.
Here&#39;s the scenario: I used SMigrate to copy our production [...]]]></description>
			<content:encoded><![CDATA[<p>I think I found a bug in using SMigrate to move a site &#8211; it&#39;s only a minor one.&nbsp; I&#39;m putting it here because I&#39;m not sure where to submit bugs to Microsoft anymore, and I&#39;m not willing to spend an hour to figure it out.</p>
<p>Here&#39;s the scenario: I used SMigrate to copy our production WSS site collection to some development servers.&nbsp; It worked great, actually: the prod server was mis-configured to use a&nbsp;MSDE database rather than a Web Farm w/ SQL, but when I moved it to a server w/ that configuration, it moved the data into SQL just fine.&nbsp; However, when I went to add a Web Part to the development server, it tried to connect to the old server&#39;s web part library.&nbsp; I know this because it prompted me to log into the old server.</p>
<p>I&#39;m not sure how to fix it quite yet, but I&#39;m going to hack into the database in the next few days to figure out where it&#39;s storing the old server&#39;s name.&nbsp; If I find anything, I&#39;ll update you.</p>
<p><img src="/aggbug.aspx?PostID=433" width="1" height="1" alt="  " /></p>
]]></content:encoded>
			<wfw:commentRss>http://vspug.com/avelez/2004/05/13/smigrate-bug/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Starting to feel constricted&#8230;</title>
		<link>http://vspug.com/avelez/2004/05/12/starting-to-feel-constricted/</link>
		<comments>http://vspug.com/avelez/2004/05/12/starting-to-feel-constricted/#comments</comments>
		<pubDate>Thu, 13 May 2004 00:58:00 +0000</pubDate>
		<dc:creator>andrewjvelez</dc:creator>
		
		<guid isPermaLink="false"></guid>
		<description><![CDATA[I&#39;m starting to feel pretty constricted by SharePoint.&#160; There&#39;s a lot of little things that I&#39;d like to customize that you just can&#39;t with SharePoint right out of the box.&#160; For instance, I&#39;ve gotten requests to make attachments open in a new window when you click on them.&#160; In fact, most of my limitations seem [...]]]></description>
			<content:encoded><![CDATA[<p>I&#39;m starting to feel pretty constricted by SharePoint.&nbsp; There&#39;s a lot of little things that I&#39;d like to customize that you just can&#39;t with SharePoint right out of the box.&nbsp; For instance, I&#39;ve gotten requests to make attachments open in a new window when you click on them.&nbsp; In fact, most of my limitations seem to come from the inherent inflexibility of the out of the box web parts.&nbsp; Yes, you can change some of the attributes.&nbsp; However, in order to customize the display of the data, you need to convert the views from web parts to data views.&nbsp; Of course, in a data view, you can&#39;t edit the data.&nbsp; It&#39;s all very frustrating&#8230;I wish you could edit the default web parts&#8230;If you know a way, please let me know.</p>
<p>I&#39;d like to be able to automatically create alerts for the people who actually submit an item to issue lists, rather than only send out an email only to the person the problem is assigned to.</p>
<p>Also, there aren&#39;t any books on using only SharePoint, at least none I could find.&nbsp; The documentation is pretty sparse.&nbsp; It seems like the primary method for learning SharePoint remains seminars like those put on by SharePoint Experts.&nbsp; They are good classes, don&#39;t get me wrong, but they are few and far between.&nbsp; Not only that, but the price for a book would be around $50 &#8211; $70, while classes are around $2000 w/o room and board.&nbsp; You do the math&#8230;</p>
<p>It looks like in order to get SharePoint to do what&nbsp;we want it to do, we&#39;re going to have to write custom web parts and web pages.&nbsp; That isn&#39;t too big of a problem, as that the SDK does in deed seem to have a lot of information in it.&nbsp; I&#39;m just ignorant of how to code specifically for SharePoint, and I have a pretty high learning curve to overcome to learn it.&nbsp; Dustin, when&#39;s the next coding class?!</p>
<p>Enough ranting for me.&nbsp; If you have any ideas how to correct or work around my problems, let me know, please! <img src='http://vspug.com/avelez/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><img src="/aggbug.aspx?PostID=422" width="1" height="1" alt="  " /></p>
]]></content:encoded>
			<wfw:commentRss>http://vspug.com/avelez/2004/05/12/starting-to-feel-constricted/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Starting to feel constricted&#8230;</title>
		<link>http://vspug.com/avelez/2004/05/12/starting-to-feel-constricted/</link>
		<comments>http://vspug.com/avelez/2004/05/12/starting-to-feel-constricted/#comments</comments>
		<pubDate>Thu, 13 May 2004 00:58:00 +0000</pubDate>
		<dc:creator>andrewjvelez</dc:creator>
		
		<guid isPermaLink="false"></guid>
		<description><![CDATA[I&#39;m starting to feel pretty constricted by SharePoint.&#160; There&#39;s a lot of little things that I&#39;d like to customize that you just can&#39;t with SharePoint right out of the box.&#160; For instance, I&#39;ve gotten requests to make attachments open in a new window when you click on them.&#160; In fact, most of my limitations seem [...]]]></description>
			<content:encoded><![CDATA[<p>I&#39;m starting to feel pretty constricted by SharePoint.&nbsp; There&#39;s a lot of little things that I&#39;d like to customize that you just can&#39;t with SharePoint right out of the box.&nbsp; For instance, I&#39;ve gotten requests to make attachments open in a new window when you click on them.&nbsp; In fact, most of my limitations seem to come from the inherent inflexibility of the out of the box web parts.&nbsp; Yes, you can change some of the attributes.&nbsp; However, in order to customize the display of the data, you need to convert the views from web parts to data views.&nbsp; Of course, in a data view, you can&#39;t edit the data.&nbsp; It&#39;s all very frustrating&#8230;I wish you could edit the default web parts&#8230;If you know a way, please let me know.</p>
<p>I&#39;d like to be able to automatically create alerts for the people who actually submit an item to issue lists, rather than only send out an email only to the person the problem is assigned to.</p>
<p>Also, there aren&#39;t any books on using only SharePoint, at least none I could find.&nbsp; The documentation is pretty sparse.&nbsp; It seems like the primary method for learning SharePoint remains seminars like those put on by SharePoint Experts.&nbsp; They are good classes, don&#39;t get me wrong, but they are few and far between.&nbsp; Not only that, but the price for a book would be around $50 &#8211; $70, while classes are around $2000 w/o room and board.&nbsp; You do the math&#8230;</p>
<p>It looks like in order to get SharePoint to do what&nbsp;we want it to do, we&#39;re going to have to write custom web parts and web pages.&nbsp; That isn&#39;t too big of a problem, as that the SDK does in deed seem to have a lot of information in it.&nbsp; I&#39;m just ignorant of how to code specifically for SharePoint, and I have a pretty high learning curve to overcome to learn it.&nbsp; Dustin, when&#39;s the next coding class?!</p>
<p>Enough ranting for me.&nbsp; If you have any ideas how to correct or work around my problems, let me know, please! <img src='http://vspug.com/avelez/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p><img src="/aggbug.aspx?PostID=422" width="1" height="1" alt="  " /></p>
]]></content:encoded>
			<wfw:commentRss>http://vspug.com/avelez/2004/05/12/starting-to-feel-constricted/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
