<?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>DataBatrix &#187; MS SQL</title>
	<atom:link href="http://www.databatrix.com/tag/ms-sql/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.databatrix.com</link>
	<description>The workings of Eric Bridges</description>
	<lastBuildDate>Thu, 01 Dec 2011 23:47:01 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.3</generator>
		<item>
		<title>Automatic Email Alerts From Any SQL Query</title>
		<link>http://www.databatrix.com/2009/09/automatic-email-alerts-from-any-sql-query/</link>
		<comments>http://www.databatrix.com/2009/09/automatic-email-alerts-from-any-sql-query/#comments</comments>
		<pubDate>Wed, 02 Sep 2009 13:24:40 +0000</pubDate>
		<dc:creator>Eric</dc:creator>
				<category><![CDATA[.NET 2.0]]></category>
		<category><![CDATA[Desktop Applications]]></category>
		<category><![CDATA[MS SQL]]></category>

		<guid isPermaLink="false">http://www.databatrix.com/?p=188</guid>
		<description><![CDATA[Problem Reminder emails were needed to be sent out to remind sales staff to follow up on projects. Solution I developed a simple command line executable that takes 1 parameter which is an XML file.  The contents of the XML file would look something like: &#60;?xml version="1.0" encoding="utf-8" ?&#62; &#60;Settings&#62; &#60;ErrorEmail&#62; &#60;Email&#62;email@gmail.com&#60;/Email&#62; &#60;/ErrorEmail&#62; &#60;SummaryEmail&#62; &#60;Email&#62;email@gmail.com&#60;/Email&#62; [...]]]></description>
			<content:encoded><![CDATA[<h3>Problem</h3>
<p>Reminder emails were needed to be sent out to remind sales staff to follow up on projects.</p>
<h3>Solution</h3>
<p>I developed a simple command line executable that takes 1 parameter which is an XML file.  The contents of the XML file would look something like:</p>
<pre class="brush: xml">&lt;?xml version="1.0" encoding="utf-8" ?&gt;
&lt;Settings&gt;
	&lt;ErrorEmail&gt;
		&lt;Email&gt;email@gmail.com&lt;/Email&gt;
	&lt;/ErrorEmail&gt;
	&lt;SummaryEmail&gt;
		&lt;Email&gt;email@gmail.com&lt;/Email&gt;
	&lt;/SummaryEmail&gt;
	&lt;Query&gt;
		SELECT * FROM Projects
		WHERE Cancelled = 0 And Completed = 0 AND BookDate IS NULL
		AND FollowUpBy &lt;= getdate()
	&lt;/Query&gt;
	&lt;SQLConnectionString&gt;Server=SQLServer;Database=MainDatabase;Persist Security Info=True;Integrated Security=true&lt;/SQLConnectionString&gt;
	&lt;TemplateEmailFileName&gt;EmailTemplate.txt&lt;/TemplateEmailFileName&gt;
	&lt;EmailSubject&gt;Alert Email For Project#&lt;:ProjectID:&gt;&lt;/EmailSubject&gt;
	&lt;EmailDomain&gt;mycompany.com&lt;/EmailDomain&gt;
	&lt;ToAddressDatabaseField&gt;Salesperson&lt;/ToAddressDatabaseField&gt;
	&lt;ToAddressFieldIsEmail&gt;0&lt;/ToAddressFieldIsEmail&gt;
	&lt;SMTPSettings&gt;
		&lt;SMTPServer&gt;smtp.gmail.com&lt;/SMTPServer&gt;
		&lt;EnableSSL&gt;1&lt;/EnableSSL&gt;
		&lt;RequiresAuthentication&gt;1&lt;/RequiresAuthentication&gt;
		&lt;Username&gt;email@gmail.com&lt;/Username&gt;
		&lt;Password&gt;*******&lt;/Password&gt;
		&lt;Port&gt;587&lt;/Port&gt;
		&lt;FromAddress&gt;email@gmail.com&lt;/FromAddress&gt;
	&lt;/SMTPSettings&gt;
	&lt;LogFileDirectory&gt;Daily&lt;/LogFileDirectory&gt;
&lt;/Settings&gt;</pre>
<p>The command line executable would then run the query (&lt;Query&gt;) against the supplied database in the XML file.  For each row returned, the program will send out an email to the user.  Which user?  What email?  The recipients email address would need to be one of the fields returned from the query and noted in the XML file in the element &lt;ToAddressDatabaseField&gt;.  The template for the email body is supplied by the &lt;TemplateEmailFileName&gt; element.   To make the email custom, it is possible to insert fields returned from the database into the email template.  For example, lets say the query returned a field called &#8220;FirstName&#8221;.  In the email template text file, you could have:</p>
<pre>Hello &lt;:FirstName:&gt;,</pre>
<p>When the program ran, it would swap &#8220;&lt;:FirstName:&gt;&#8221; with the contents from the database.  This is similar to a mail merge for emails.  Since all of the values are configurable in the XML file, the usage possibilities are unlimited!  Let say you needed to run this once a week, no problem.  Set up a Windows Scheduled Task to run the executable at the specified interval.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.databatrix.com/2009/09/automatic-email-alerts-from-any-sql-query/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>E-manage Mobile Portal</title>
		<link>http://www.databatrix.com/2009/08/e-manage-mobile-portal/</link>
		<comments>http://www.databatrix.com/2009/08/e-manage-mobile-portal/#comments</comments>
		<pubDate>Tue, 18 Aug 2009 15:17:46 +0000</pubDate>
		<dc:creator>Eric</dc:creator>
				<category><![CDATA[.NET 3.5]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[MS SQL]]></category>
		<category><![CDATA[Web Applications]]></category>
		<category><![CDATA[Web Services]]></category>

		<guid isPermaLink="false">http://www.databatrix.com/2009/08/e-manage-mobile-portal/</guid>
		<description><![CDATA[Background: E-manage is a business management application.  It is capable of managing customer databases (CRM) as well as projects, invoices, purchase orders, and inventory to name a few.  The e-manage client application runs on a users desktop and uses Microsoft .NET as foundation along with a Microsoft SQL Server as the back-end. Problem: Getting information [...]]]></description>
			<content:encoded><![CDATA[<h3>Background:</h3>
<p>E-manage is a business management application.  It is capable of managing customer databases (CRM) as well as projects, invoices, purchase orders, and inventory to name a few.  The e-manage client application runs on a users desktop and uses Microsoft .NET as foundation along with a Microsoft SQL Server as the back-end.</p>
<h3>Problem:</h3>
<p>Getting information was easy when you were in the office at a computer.  However, you were out of luck when you were out of the office.  Something was needed to allow users access to crucial business data while mobile.</p>
<h3>Solution:</h3>
<p>I was asked to created a mobile web portal that could be used with any smart phone that had a basic Internet connection.  This would allow users to access company data while out of the office.</p>
<h3>Result:</h3>
<table border="0">
<tbody>
<tr>
<td>
<p><div id="attachment_181" class="wp-caption alignnone" style="width: 160px"><a href="http://www.databatrix.com/wp-content/uploads/2009/08/em_main.JPG"><img class="size-thumbnail wp-image-181" title="Mobile_Main_Screen" src="http://www.databatrix.com/wp-content/uploads/2009/08/em_main-150x150.jpg" alt="Mobile portal landing screen with alerts and recent items." width="150" height="150" /></a><p class="wp-caption-text">Mobile portal landing screen with alerts and recent items.</p></div></td>
<td>
<p><div id="attachment_180" class="wp-caption alignnone" style="width: 160px"><a href="http://www.databatrix.com/wp-content/uploads/2009/08/em_company.JPG"><img class="size-thumbnail wp-image-180" title="Mobile_Company_View" src="http://www.databatrix.com/wp-content/uploads/2009/08/em_company-150x150.jpg" alt="Mobile portal company view" width="150" height="150" /></a><p class="wp-caption-text">Mobile portal company view</p></div></td>
</tr>
<tr>
<td>
<p><div id="attachment_183" class="wp-caption alignnone" style="width: 160px"><a href="http://www.databatrix.com/wp-content/uploads/2009/08/em_ServiceTicket.JPG"><img class="size-thumbnail wp-image-183" title="Mobile Service Ticket" src="http://www.databatrix.com/wp-content/uploads/2009/08/em_ServiceTicket-150x150.jpg" alt="View/Edit/Create Service Tickets" width="150" height="150" /></a><p class="wp-caption-text">View/Edit/Create Service Tickets</p></div></td>
<td>
<p><div id="attachment_182" class="wp-caption alignnone" style="width: 160px"><a href="http://www.databatrix.com/wp-content/uploads/2009/08/em_projects.JPG"><img class="size-thumbnail wp-image-182" title="Mobile Projects View" src="http://www.databatrix.com/wp-content/uploads/2009/08/em_projects-150x150.jpg" alt="View/Edit Projects" width="150" height="150" /></a><p class="wp-caption-text">View/Edit Projects</p></div></td>
</tr>
</tbody>
</table>
<p><a href="http://www.databatrix.com/wp-content/uploads/2009/08/eManage_Mobile_Portal_Create_Service_Ticket.wmv">e-manage Mobile Portal &#8211; Create Service Ticket</a> (Video)</p>
<p><a href="http://www.databatrix.com/wp-content/uploads/2009/08/eManage_Mobile_Portal_Add_New_Company.wmv">e-manage Mobile Portal &#8211; Add New Company</a> (Video)</p>
<p>I created a web application written in VB.NET that would connect directly with the MS SQL Server to supply the user with the data they needed.  I created it to be light as possible without giving up functionality and usability.  I also integrated with Yahoo Business Search API to lookup business addresses automatically to increase accuracy.  From the mobile portal, you can:</p>
<ul>
<li>View/Edit/Create a Company or Location</li>
<li>Create a Company with the aid of a Yahoo search</li>
<li>View/Edit/Create a Contact</li>
<li>Assign existing Company Contacts to a Project</li>
<li>View/Edit/Create a Project</li>
<li>View/Edit/Create a Service Agreement</li>
<li>View Service Ticket part totals when viewing a Service Agreement</li>
<li>Easily see a service agreement&#8217;s validity based on the agreement&#8217;s start date and agreement contact length</li>
<li>View/Edit/Create a Service Ticket</li>
<li>Assign/Re-Assign Service Tickets to Service Agreements</li>
<li>Add Parts to a Service Ticket by Searching the e-manage part database</li>
<li>View Part totals for a Service Ticket</li>
<li>View/Download a document/attachment that belongs to a Company, Contact, Project, Service Agreement, or Service Ticket</li>
<li>View/Create a Note that belongs to a Company, Contact, Project, Service Agreement, or Service Ticket</li>
<li>View/Reply/Acknowledge a Note that belongs to any object</li>
<li>Submit Project Action Items</li>
<li>View your Actions To Perform</li>
<li>View your Open Action Items</li>
<li>View Recent Items (syncs with the Recent Items in e-manage and updates any items that you open via the mobile portal)</li>
<li>Open multiple items at the same time in a tabbed environment</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.databatrix.com/2009/08/e-manage-mobile-portal/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
<enclosure url="http://www.databatrix.com/wp-content/uploads/2009/08/eManage_Mobile_Portal_Create_Service_Ticket.wmv" length="3940379" type="video/x-ms-wmv" />
<enclosure url="http://www.databatrix.com/wp-content/uploads/2009/08/eManage_Mobile_Portal_Add_New_Company.wmv" length="2566817" type="video/x-ms-wmv" />
		</item>
		<item>
		<title>eManage Search for Blackberry</title>
		<link>http://www.databatrix.com/2009/08/emanage-search-for-blackberry/</link>
		<comments>http://www.databatrix.com/2009/08/emanage-search-for-blackberry/#comments</comments>
		<pubDate>Tue, 18 Aug 2009 01:42:18 +0000</pubDate>
		<dc:creator>Eric</dc:creator>
				<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[Blackberry Enterprise Server]]></category>
		<category><![CDATA[Blackberry MDS Runtime]]></category>
		<category><![CDATA[MS SQL]]></category>
		<category><![CDATA[Web Services]]></category>

		<guid isPermaLink="false">http://www.databatrix.com/2009/08/emanage-search-for-blackberry/</guid>
		<description><![CDATA[Background: Our CRM software contains a huge list of contacts that are only available from within the software application. Problem: It becomes a challenge when a sales team member is out of the office (on the road) and needs a customer&#8217;s phone number or email address.&#160; It is typically not feasible to boot up their [...]]]></description>
			<content:encoded><![CDATA[<h3>Background:</h3>
<p>Our CRM software contains a huge list of contacts that are only available from within the software application.</p>
<h3>Problem:</h3>
<p>It becomes a challenge when a sales team member is out of the office (on the road) and needs a customer&#8217;s phone number or email address.&#160; It is typically not feasible to boot up their laptop, connect to the Internet and lookup the contact.</p>
<h3>Solution:</h3>
<p>The solution was to create a simple Blackberry application that will allow the team member the ability to lookup a contact against our CRM software&#8217;s database.&#160; From their Blackberry, they would then be able to call any of the listed phone numbers for the contact or send them an email.</p>
<h3>Result:</h3>
<p><a href="http://www.databatrix.com/wp-content/uploads/2009/08/HomeScreen02.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="HomeScreen-02" border="0" alt="HomeScreen-02" src="http://www.databatrix.com/wp-content/uploads/2009/08/HomeScreen02_thumb.png" width="260" height="200" /></a> <a href="http://www.databatrix.com/wp-content/uploads/2009/08/HomeScreen03.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="HomeScreen-03" border="0" alt="HomeScreen-03" src="http://www.databatrix.com/wp-content/uploads/2009/08/HomeScreen03_thumb.png" width="260" height="200" /></a> <a href="http://www.databatrix.com/wp-content/uploads/2009/08/HomeScreen04_e.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="HomeScreen-04_e" border="0" alt="HomeScreen-04_e" src="http://www.databatrix.com/wp-content/uploads/2009/08/HomeScreen04_e_thumb.png" width="260" height="200" /></a> <a href="http://www.databatrix.com/wp-content/uploads/2009/08/HomeScreen05.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="HomeScreen-05" border="0" alt="HomeScreen-05" src="http://www.databatrix.com/wp-content/uploads/2009/08/HomeScreen05_thumb.png" width="260" height="200" /></a> </p>
<p>I created a small Blackberry application designed using the <a href="http://na.blackberry.com/eng/developers/rapidappdev/vsplugin.jsp">Blackberry Plug-in for Microsoft Visual Studio</a>.&#160; The applications allows the user to search by name or company (or both).&#160; The application then submits the search request to the Blackberry Enterprise Server, which then uses a web service that I created to search against our CRM database which is a SQL Server 2005 database.    <br />Once the results are returned, you then have the ability to call any of the listed numbers, email, or add them to your Blackberry address book (which will in turn add them to your Outlook address book).    <br />Overall basic program, but can be a lifesaver when out of the office.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.databatrix.com/2009/08/emanage-search-for-blackberry/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Inventory Application</title>
		<link>http://www.databatrix.com/2009/08/inventory-application/</link>
		<comments>http://www.databatrix.com/2009/08/inventory-application/#comments</comments>
		<pubDate>Tue, 18 Aug 2009 00:50:05 +0000</pubDate>
		<dc:creator>Eric</dc:creator>
				<category><![CDATA[.NET 2.0]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[Desktop Applications]]></category>
		<category><![CDATA[MS SQL]]></category>
		<category><![CDATA[Web Applications]]></category>

		<guid isPermaLink="false">http://www.databatrix.com/2009/08/inventory-application/</guid>
		<description><![CDATA[Background: As for any company, physical inventory time is never fun.&#160; Our inventory software did not have a good interface for doing this. Problem: The process of taking physical inventory was long and tedious.&#160; The process typically involved printing our a huge list of parts, write in the quantity next to the part, then someone [...]]]></description>
			<content:encoded><![CDATA[<h3>Background:</h3>
<p>As for any company, physical inventory time is never fun.&#160; Our inventory software did not have a good interface for doing this.</p>
<h3>Problem:</h3>
<p>The process of taking physical inventory was long and tedious.&#160; The process typically involved printing our a huge list of parts, write in the quantity next to the part, then someone would enter that info in an Excel spreadsheet so that it could be imported back into our inventory software to reconcile.&#160; Another issue was finding the inventory items themselves, most items were organized well, but some could only be found by the &quot;one guy&quot; that knows where everything is located.&#160; Identification of parts and part numbers was needed.</p>
<h3>Solution:</h3>
<p>The solution was to create a desktop application that could be used to take physical inventory.&#160; The application would search against our existing parts database and store inventory quantities in a separate table that could later be reconciled.&#160; The application would also print out a part identification label on a thermal printer that was to be placed on the shelf of each item.&#160; This would make subsequent physical inventories much easier.</p>
<h3>Result:</h3>
<p><a href="http://www.databatrix.com/wp-content/uploads/2009/08/Inventory1.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Inventory1" border="0" alt="Inventory1" src="http://www.databatrix.com/wp-content/uploads/2009/08/Inventory1_thumb.png" width="260" height="132" /></a>Fig. 1</p>
<p><a href="http://www.databatrix.com/wp-content/uploads/2009/08/Inventory2.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Inventory2" border="0" alt="Inventory2" src="http://www.databatrix.com/wp-content/uploads/2009/08/Inventory2_thumb.png" width="260" height="153" /></a>Fig. 2</p>
<p><a href="http://www.databatrix.com/wp-content/uploads/2009/08/Inventory3.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Inventory3" border="0" alt="Inventory3" src="http://www.databatrix.com/wp-content/uploads/2009/08/Inventory3_thumb.png" width="260" height="213" /></a>Fig. 3&#160;&#160; </p>
<p>I created a desktop application the keep track of inventory.&#160; The application also has the ability to print out part identification stickers on a thermal printer that included part information along with a barcode.&#160; Fig. 2 shows the part detail screen.&#160; You can find out various information from the Detail screen as well as adjust inventory levels.&#160; You can pull up a part by either searching by part number or scan the corresponding barcode the program had previously printed out.   <br />The application was such a success, I created a web interface to allow certain other employees access to inventory levels.&#160; Also various reports were created that were needed Accounting purposes.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.databatrix.com/2009/08/inventory-application/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Company Intranet</title>
		<link>http://www.databatrix.com/2009/08/company-intranet/</link>
		<comments>http://www.databatrix.com/2009/08/company-intranet/#comments</comments>
		<pubDate>Tue, 18 Aug 2009 00:46:26 +0000</pubDate>
		<dc:creator>Eric</dc:creator>
				<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[MS SQL]]></category>
		<category><![CDATA[Web Applications]]></category>

		<guid isPermaLink="false">http://www.databatrix.com/2009/08/company-intranet/</guid>
		<description><![CDATA[Background: A company I worked for had a new Internet (external) web site built. Problem: We already had a working Intranet (internal) site, but my company wanted to make the Intranet (internal) site to have a similar look and feel of the Internet (external) site.&#160; They also wanted it to be more database driven so [...]]]></description>
			<content:encoded><![CDATA[<h3>Background:</h3>
<p>A company I worked for had a new Internet (external) web site built. </p>
<h3>Problem:</h3>
<p>We already had a working Intranet (internal) site, but my company wanted to make the Intranet (internal) site to have a similar look and feel of the Internet (external) site.&#160; They also wanted it to be more database driven so regular users could update the site without using Microsoft FrontPage (the way it was updated at the time).</p>
<table border="0" cellspacing="0" cellpadding="2" width="502">
<tbody>
<tr>
<td valign="top" width="250">
<p align="center"><a href="http://www.databatrix.com/wp-content/uploads/2009/08/Intranet1.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Intranet1" border="0" alt="Intranet1" src="http://www.databatrix.com/wp-content/uploads/2009/08/Intranet1_thumb.png" width="260" height="218" /></a>            <br />New External Site </p>
</td>
<td valign="top" width="250">
<p align="center"><a href="http://www.databatrix.com/wp-content/uploads/2009/08/Intranet2.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Intranet2" border="0" alt="Intranet2" src="http://www.databatrix.com/wp-content/uploads/2009/08/Intranet2_thumb.png" width="260" height="176" /></a>            <br />Existing Internal Site </p>
</td>
</tr>
</tbody>
</table>
<h3>Solution:</h3>
<p>I was to create a new Intranet (internal) web site to have a similar look and feel of the external site.&#160; I also needed to bring over a few existing tools from the existing Intranet site and make it easier to update.</p>
<h3>Result:</h3>
<p><a href="http://www.databatrix.com/wp-content/uploads/2009/08/Intranet3.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Intranet3" border="0" alt="Intranet3" src="http://www.databatrix.com/wp-content/uploads/2009/08/Intranet3_thumb.png" width="260" height="193" /></a>Fig. 1</p>
<p><a href="http://www.databatrix.com/wp-content/uploads/2009/08/Intranet4.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Intranet4" border="0" alt="Intranet4" src="http://www.databatrix.com/wp-content/uploads/2009/08/Intranet4_thumb.png" width="260" height="199" /></a>Fig. 2</p>
<p><a href="http://www.databatrix.com/wp-content/uploads/2009/08/Intranet5.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Intranet5" border="0" alt="Intranet5" src="http://www.databatrix.com/wp-content/uploads/2009/08/Intranet5_thumb.png" width="260" height="199" /></a>Fig. 3&#160;&#160; </p>
<p>I created a new Intranet site that looked very similar to the new Internet (external) site.&#160; The site was created using Visual Studio 2005 and is almost completely database driven.&#160; This way routine updates can be made either from within the site itself or by modifying data in the database.&#160; Fig. 2 shows the &quot;People Finder&quot; employee lookup.&#160; You can search by name, department, or office location.&#160; Fig. 3 shows the training area.&#160; This is a place where videos, documents, etc can be placed.&#160; Originally I created the &quot;tree&quot; to pull from a database.&#160; Shortly after publishing the site, I was hammered with stuff to add to the training section, so I changed it to pull from a folder on the web server.&#160; So if you needed to add a item you could use Windows Explorer, browse out to that folder, and paste the file.&#160; Every time the page loads, it looks to that folder and re-creates the tree.&#160; This works great for the capacity that we are using it.&#160; Article items (shown in the tan and blue boxes in Fig. 1) can be added/modified from within the web application.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.databatrix.com/2009/08/company-intranet/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Installation Schedule 2.0</title>
		<link>http://www.databatrix.com/2009/08/installation-schedule-2-0/</link>
		<comments>http://www.databatrix.com/2009/08/installation-schedule-2-0/#comments</comments>
		<pubDate>Tue, 18 Aug 2009 00:41:09 +0000</pubDate>
		<dc:creator>Eric</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[MS SQL]]></category>
		<category><![CDATA[Web Applications]]></category>

		<guid isPermaLink="false">http://www.databatrix.com/2009/08/installation-schedule-2-0/</guid>
		<description><![CDATA[Background: This project had a similar background to the Install Schedule application.&#160; We started using a software package called eManage (I worked for this company later and built a mobile web application to interface with their database) to manage several areas of our business.&#160; The software has a built in calendar that can be used [...]]]></description>
			<content:encoded><![CDATA[<h3>Background:</h3>
<p>This project had a similar background to the <a href="http://www.databatrix.com/2009/08/installation-schedule/">Install Schedule application</a>.&#160; We started using a software package called <a href="http://www.google.com/search?hl=en&amp;sa=X&amp;oi=spell&amp;resnum=0&amp;ct=result&amp;cd=1&amp;q=Marketplace+software+e+manage&amp;spell=1">eManage</a> (I worked for this company later and built a mobile web application to interface with their database) to manage several areas of our business.&#160; The software has a built in calendar that can be used for scheduling installations.&#160; The look and feel of the calendar is very similar to the Microsoft Outlook calendar.</p>
<h3>Problem:</h3>
<p>Our employees were accustom to the layout of the <a href="http://www.databatrix.com/2009/08/installation-schedule/">Install Schedule application</a>.&#160; They liked each installer to have its own line, doing it that way also makes it easier to manage employee&#8217;s time too!&#160; It was not possible to change eManage to show the calendar this way.</p>
<table border="0" cellspacing="0" cellpadding="2" width="400">
<tbody>
<tr>
<td valign="top" width="200">
<p align="center"><a href="http://www.databatrix.com/wp-content/uploads/2009/08/Install_Calendar12.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Install_Calendar1" border="0" alt="Install_Calendar1" src="http://www.databatrix.com/wp-content/uploads/2009/08/Install_Calendar1_thumb1.png" width="260" height="169" /></a>            <br />Each employee has a line </p>
</td>
<td valign="top" width="200">
<p align="center"><a href="http://www.databatrix.com/wp-content/uploads/2009/08/emanageSchedule.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="emanageSchedule" border="0" alt="emanageSchedule" src="http://www.databatrix.com/wp-content/uploads/2009/08/emanageSchedule_thumb.png" width="260" height="129" /></a>            <br />Calendar day shows all jobs on that given day </p>
</td>
</tr>
</tbody>
</table>
<h3>Solution:</h3>
<p>Build a separate web site application that will have the look and feel of the <a href="http://www.databatrix.com/2009/08/installation-schedule/">Install Schedule</a>, but pull its information from the eManage application.&#160; Job assignments and modifications will be made from within the eManage application and those changes will be reflect instantly on the web site.</p>
<h3>Result:</h3>
<p><a href="http://www.databatrix.com/wp-content/uploads/2009/08/Installation_Calendar2_1.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Installation_Calendar2_1" border="0" alt="Installation_Calendar2_1" src="http://www.databatrix.com/wp-content/uploads/2009/08/Installation_Calendar2_1_thumb.png" width="260" height="195" /></a>Fig. 1</p>
<p><a href="http://www.databatrix.com/wp-content/uploads/2009/08/Installation_Calendar2_2.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Installation_Calendar2_2" border="0" alt="Installation_Calendar2_2" src="http://www.databatrix.com/wp-content/uploads/2009/08/Installation_Calendar2_2_thumb.png" width="260" height="193" /></a>Fig. 2</p>
<p><a href="http://www.databatrix.com/wp-content/uploads/2009/08/Installation_Calendar2_3.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Installation_Calendar2_3" border="0" alt="Installation_Calendar2_3" src="http://www.databatrix.com/wp-content/uploads/2009/08/Installation_Calendar2_3_thumb.png" width="260" height="197" /></a>Fig. 3&#160;&#160; </p>
<p>The web site pulls data straight from the eManage database so the info is always live.&#160; It also provides the installers and coordinators a familiar look to the schedule.&#160; Each user has their own user settings which allows you to view the installers that you want to view and customize the size of the calendar to fit your particular screen resolution.&#160; Fig. 2 shows that you are able to click on a job to expand the bar to see all of the information.&#160; The color schema for the jobs are the same as they appear in eManage.&#160; Fig. 3 shows the &quot;Jump to Date&quot; which utilizes a modal popup screen.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.databatrix.com/2009/08/installation-schedule-2-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Desktop Tools</title>
		<link>http://www.databatrix.com/2009/08/desktop-tools/</link>
		<comments>http://www.databatrix.com/2009/08/desktop-tools/#comments</comments>
		<pubDate>Mon, 17 Aug 2009 23:51:09 +0000</pubDate>
		<dc:creator>Eric</dc:creator>
				<category><![CDATA[.NET 2.0]]></category>
		<category><![CDATA[Desktop Applications]]></category>
		<category><![CDATA[MS SQL]]></category>
		<category><![CDATA[Web Services]]></category>

		<guid isPermaLink="false">http://www.databatrix.com/2009/08/desktop-tools/</guid>
		<description><![CDATA[Background: I created a single page web page that was set as the background using the Active Desktop function of Windows XP.&#160; This web page allowed you to search the employee database for phone numbers or extensions.&#160; It also had a section to calculate shipping for certain items my company sells. Problem: Active Desktop started [...]]]></description>
			<content:encoded><![CDATA[<h3>Background:</h3>
<p>I created a single page web page that was set as the background using the Active Desktop function of Windows XP.&#160; This web page allowed you to search the employee database for phone numbers or extensions.&#160; It also had a section to calculate shipping for certain items my company sells.</p>
<h3>Problem:</h3>
<p>Active Desktop started messing up when laptop users would boot without a internet connection present.&#160; Also, since the web page was hosted on the company Intranet, a login dialog box would pop-up if IE was not configured properly which was confusing to some users.</p>
<h3>Solution:</h3>
<p>Rebuild the web page to not use Active Desktop, but still have the tools easily accessible.&#160; Having a bookmark to the web page was not considered &quot;easily accessible&quot;.</p>
<h3>Result:</h3>
<p><a href="http://www.databatrix.com/wp-content/uploads/2009/08/Desktop_Tools1.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Desktop_Tools1" border="0" alt="Desktop_Tools1" src="http://www.databatrix.com/wp-content/uploads/2009/08/Desktop_Tools1_thumb.png" width="260" height="179" /></a> Fig. 1</p>
<p><a href="http://www.databatrix.com/wp-content/uploads/2009/08/Desktop_Tools2.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Desktop_Tools2" border="0" alt="Desktop_Tools2" src="http://www.databatrix.com/wp-content/uploads/2009/08/Desktop_Tools2_thumb.png" width="260" height="196" /></a>Fig. 2</p>
<p><a href="http://www.databatrix.com/wp-content/uploads/2009/08/Desktop_Tools3.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Desktop_Tools3" border="0" alt="Desktop_Tools3" src="http://www.databatrix.com/wp-content/uploads/2009/08/Desktop_Tools3_thumb.png" width="235" height="260" /></a>&#160; Fig. 3</p>
<p>I decided to created a small application that runs in the system tray.&#160; Right-clicking the icon in the tray would expand a menu of available tools.&#160; Fig. 1 shows the menu and the employee search box that appears after clicking &quot;People Finder&quot;.&#160; Certain menu items are shown/hidden depending on the user&#8217;s login.&#160; For example, my login shows 6 items, but &quot;Support Ticket&quot; and &quot;Cams&quot; are not show for others.&#160; Rights are stored in the SQL database and not in the application so allowing access is simple and does not require an application update.&#160; Since we are on the subject of databases&#8230;how should the application connect to it?&#160; I decided to not connect directly to the database since the user would have to be on the network or have their VPN connected, but instead indirectly by using web services.&#160; Using web services allowed the application to work as long as any Internet connection was present.&#160; If a connection was not present, the application hides menu items that require a connection or certain rights.&#160; I created a separate web site that hosted the web service application that basically would act as a proxy for my application.   <br />Since I knew I would be updating the application as time went by, I wanted the application to be able to update itself.&#160; I accomplished this by using some of the &quot;Click Once&quot; features of Visual Studio.&#160; Instead of using the default settings, I handled the Click Once part programmatically so that I could force the update.    <br /><a href="http://www.databatrix.com/wp-content/uploads/2009/08/Desktop_Tool1.jpg"><img style="border-bottom: 0px; border-left: 0px; display: inline; margin-left: 0px; border-top: 0px; margin-right: 0px; border-right: 0px" title="Desktop_Tool1" border="0" alt="Desktop_Tool1" align="left" src="http://www.databatrix.com/wp-content/uploads/2009/08/Desktop_Tool1_thumb.jpg" width="260" height="213" /></a> I added a &quot;Sales Links&quot; item that expands into a limitless list of links and sub-links.&#160; The links can be&#160; URLs, local folders, or anything that you can type into the Start&gt;Run box!&#160; Users with permission can easily modify and add links.&#160; The application refreshes the links from the database every 30 minutes.    <br />Lets talk security&#8230;    <br />Since only a standard Internet connection is needed for the application to work, there were a couple of security concerns.&#160; The web service application was open to the public!&#160; That&#8217;s okay, lots of web service applications are open to the public&#8230;that&#8217;s kind of the point of them.&#160; I decided to use &quot;keys&quot; that had to be passed each time the application consumed a web service.&#160; In other words, a password (or key) is passed to the web service and every method (function) the web service has requires a password.&#160; What about updates?&#160; The application needs to look in a public place for updates.&#160; If its public then everyone could download the program.&#160; That&#8217;s okay too!&#160; I just had to put some security measures in place with the application is launched.&#160; Let&#8217;s just say that when the program starts it knows if it is suppose to be on that computer, if the check fails the application quits.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.databatrix.com/2009/08/desktop-tools/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Custom Conversion Application</title>
		<link>http://www.databatrix.com/2009/08/custom-conversion-application/</link>
		<comments>http://www.databatrix.com/2009/08/custom-conversion-application/#comments</comments>
		<pubDate>Mon, 17 Aug 2009 23:39:18 +0000</pubDate>
		<dc:creator>Eric</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[Desktop Applications]]></category>
		<category><![CDATA[MS SQL]]></category>
		<category><![CDATA[Web Applications]]></category>
		<category><![CDATA[Web Services]]></category>

		<guid isPermaLink="false">http://www.databatrix.com/2009/08/custom-conversion-application/</guid>
		<description><![CDATA[Background: One of the many things my company does is file room conversions.&#160; To make this short and sweet, a file folder may need to be moved to a new location.&#160; In the process the folder may need a new label applied to the folder.&#160; This is simplistic example of a conversion.&#160; A client requested [...]]]></description>
			<content:encoded><![CDATA[<h3>Background:</h3>
<p>One of the many things my company does is file room conversions.&#160; To make this short and sweet, a file folder may need to be moved to a new location.&#160; In the process the folder may need a new label applied to the folder.&#160; This is simplistic example of a conversion.&#160; A client requested this type of service from us.</p>
<h3>Problem:</h3>
<p>This was a large conversion and the client required several specific &quot;checks&quot; to be in place.&#160;&#160; The original folder needed to be scanned by a barcode reader to rule out data entry errors.&#160; The barcode data would then need to be sent to the client so that other various information could be added.&#160; The data would then need to come back to us so that we could print new labels.&#160; Since this was a daily process for approximately 3 months, some tracking was needed so that at any given time a folder could be found.</p>
<h3>Solution:</h3>
<p>I was to create several applications to aid in the conversion process.&#160; Starting with one to handle the barcode scanning in the first stage.&#160; Next a secure web site needed to be created to allow files to be received from scanning, downloaded by the client, and re-uploaded.</p>
<h3>Result:</h3>
<p><a href="http://www.databatrix.com/wp-content/uploads/2009/08/Conversion1.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Conversion1" border="0" alt="Conversion1" src="http://www.databatrix.com/wp-content/uploads/2009/08/Conversion1_thumb.png" width="260" height="212" /></a> Fig. 1</p>
<p><a href="http://www.databatrix.com/wp-content/uploads/2009/08/Conversion2.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Conversion2" border="0" alt="Conversion2" src="http://www.databatrix.com/wp-content/uploads/2009/08/Conversion2_thumb.png" width="210" height="260" /></a>Fig. 2</p>
<p><a href="http://www.databatrix.com/wp-content/uploads/2009/08/Conversion3.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Conversion3" border="0" alt="Conversion3" src="http://www.databatrix.com/wp-content/uploads/2009/08/Conversion3_thumb.png" width="260" height="137" /></a>Fig. 3&#160; </p>
<p>I created 2 desktop applications and 1 web application that included a web service.&#160; The first desktop application was installed on laptop with barcode scanners attached.&#160; This application would be used to gather file label barcode.&#160; Fig. 1 show the screen of the laptop with the application running.&#160; The screen provided various information and also included visual and audible verification of scanned barcodes.&#160; Because of the barcode situation on the folders, the application needed to check to make sure the barcode was in fact valid.&#160; <br />I provided 2 different way to get the scanned data back to the main office.&#160; One way was by using a web site upload utility.&#160; The other way was to have the barcode scanning application automatically send the file via a web service that I created.&#160; Either way, the file was placed in the same folder back at the main office.&#160; This folder was being watched my another desktop application that I made that ran on a separate machine.&#160; Once a file was uploaded, the desktop application would grab the file, import all of the data into a SQL Server, and post the file on the secure web site where the client could download the file.&#160; The client would add various information to the data and re-upload it via the web site.&#160; Date and time stamps were noted of all of the transactions.&#160; The re-uploaded file was placed in a different folder that was also watched by the desktop application.&#160; Once this file was uploaded, it was checked for certain required data, checked for the correct sort order, imported into the SQL Server, and marked as &quot;OK&quot; so the client would know that everything was good.    <br />Up until now, everything was automated and only required routine checkups to make sure everything was okay.&#160; The last step was to print out the labels (sample shown in Fig. 2).&#160; The step to print the labels was simplified into dragging and dropping the file that was re-uploaded from the client into a separate watched folder.&#160; Once the file was dropped there, it was sorted into a special sort order since their sheets were later to be cut into single labels.&#160; Then a cover sheet was printed followed by the label print job.&#160; After the labels are sent to the printer the printed date and time is noted in the database and viewable from the web site.    <br />Fig. 3 show the landing page of the web site application which allows access to several tools and lookups.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.databatrix.com/2009/08/custom-conversion-application/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cell Phone Usage</title>
		<link>http://www.databatrix.com/2009/08/cell-phone-usage/</link>
		<comments>http://www.databatrix.com/2009/08/cell-phone-usage/#comments</comments>
		<pubDate>Mon, 17 Aug 2009 23:34:21 +0000</pubDate>
		<dc:creator>Eric</dc:creator>
				<category><![CDATA[AJAX]]></category>
		<category><![CDATA[ASP.NET]]></category>
		<category><![CDATA[MS SQL]]></category>
		<category><![CDATA[Web Applications]]></category>

		<guid isPermaLink="false">http://www.databatrix.com/2009/08/cell-phone-usage/</guid>
		<description><![CDATA[Background: My company uses Sprint as a cellular provider.&#160; Paper bills are 300+ pages and arrive in a box.&#160; Sprint offers a service to download cell data at the end of each month (for a cost). Problem: Flipping through the bill was very cumbersome and took sometimes several hours.&#160; My company wanted an easy way [...]]]></description>
			<content:encoded><![CDATA[<h3>Background:</h3>
<p>My company uses Sprint as a cellular provider.&#160; Paper bills are 300+ pages and arrive in a box.&#160; Sprint offers a service to download cell data at the end of each month (for a cost).</p>
<h3>Problem:</h3>
<p>Flipping through the bill was very cumbersome and took sometimes several hours.&#160; My company wanted an easy way to look at the employees usage.</p>
<h3>Solution:</h3>
<p>Utilize the Sprint service to download data each month.&#160; Load the data into our own SQL Server.&#160; Create a web site to summarize that data while providing a simple user interface.</p>
<h3>Result:</h3>
<p><a href="http://www.databatrix.com/wp-content/uploads/2009/08/Cell_Phone11.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Usage Reports" border="0" alt="Usage Reports" src="http://www.databatrix.com/wp-content/uploads/2009/08/Cell_Phone1_thumb1.png" width="260" height="120" /></a> Fig. 1</p>
<p>&#160;<a href="http://www.databatrix.com/wp-content/uploads/2009/08/Cell_Phone21.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Detailed Usage" border="0" alt="Detailed Usage" src="http://www.databatrix.com/wp-content/uploads/2009/08/Cell_Phone2_thumb1.png" width="260" height="180" /></a>Fig. 2</p>
<p>I created a basic web site to simplify the cell usage data.&#160; You can search by bill cycle or a specific data range.&#160; Users that use more than 1,000 average billable minutes per month are highlighted in red.&#160; Clicking the specific user will show the call details.&#160; Fig. 2 shows the Detailed Usage page which also allows you to highlight mobile to mobile, text messages, nights, or weekends.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.databatrix.com/2009/08/cell-phone-usage/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installation Schedule</title>
		<link>http://www.databatrix.com/2009/08/installation-schedule/</link>
		<comments>http://www.databatrix.com/2009/08/installation-schedule/#comments</comments>
		<pubDate>Mon, 17 Aug 2009 22:21:38 +0000</pubDate>
		<dc:creator>Eric</dc:creator>
				<category><![CDATA[ASP]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[MS SQL]]></category>
		<category><![CDATA[Web Applications]]></category>

		<guid isPermaLink="false">http://www.databatrix.com/?p=13</guid>
		<description><![CDATA[Background: This is what started it all (at least at my previous employer).&#160; The company I worked for company sells stuff and that stuff has to be installed by a professional installer.&#160; They have a large staff of professional installers.&#160; They have a lot of stuff that needs to be installed.&#160; See where I am [...]]]></description>
			<content:encoded><![CDATA[<h3>Background:</h3>
<p>This is what started it all (at least at my previous employer).&#160; The company I worked for company sells <span style="font-style: italic">stuff</span> and that <span style="font-style: italic">stuff</span> has to be installed by a professional installer.&#160; They have a large staff of professional installers.&#160; They have a lot of <span style="font-style: italic">stuff</span> that needs to be installed.&#160; See where I am getting?&#160; Before I started, this information was stored in a Excel spreadsheet, which did the job until they started growing.&#160; Then it was moved to an Access database, which was much better; however, not everyone knows how to use Access, so a basic web interface to the database was created in FrontPage to update the rows of data.&#160; Each row in the table was a day and each row had a column for every installer.</p>
<h3>Problem:</h3>
<p>This was functional, however as installers were added and new column had to be added to the Access database.&#160; Also the FrontPage site had to be updated to account for the added column.&#160; The good thing about FrontPage was that it appears simple because it hides a bunch of code behind the scenes, the bad thing is that if something goes wrong (like your computer crashes while updating the site) it becomes a real nightmare to get everything back up and running.</p>
<h3>Solution:</h3>
<p>The plan was to create a fully database driven installation calendar.&#160; One that could be updated from within the application itself.&#160; Instead of having a list of days and putting a installation on each day, we would have a list of jobs and add installers.&#160; This makes it easier to use since jobs often spanned across multiple days.</p>
<h3>Result:</h3>
<p><a href="http://www.databatrix.com/wp-content/uploads/2009/08/Install_Calendar11.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Install_Calendar1" border="0" alt="Install_Calendar1" src="http://www.databatrix.com/wp-content/uploads/2009/08/Install_Calendar1_thumb.png" width="260" height="169" /></a>Fig. 1</p>
<p><a href="http://www.databatrix.com/wp-content/uploads/2009/08/Install_Calendar21.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Install_Calendar2" border="0" alt="Install_Calendar2" src="http://www.databatrix.com/wp-content/uploads/2009/08/Install_Calendar2_thumb.png" width="260" height="173" /></a>Fig. 2</p>
<p><a href="http://www.databatrix.com/wp-content/uploads/2009/08/Install_Calendar31.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="Install_Calendar3" border="0" alt="Install_Calendar3" src="http://www.databatrix.com/wp-content/uploads/2009/08/Install_Calendar3_thumb.png" width="260" height="170" /></a>Fig. 3</p>
<p>I created a web site that used ASP (Classic ASP, not .NET) and a MSDE database.&#160; The hard part for me on this project was drawing out a calendar dynamically and &quot;putting stuff&quot; on it.&#160; How was that going to look?&#160; How should it look?&#160; Fig. 1 shows the result.&#160; The calendar is shown on the left and jobs that are shown in the current view are shown on the right.&#160; Fig. 2 shows the detail view of a job.&#160; This is where installers could be added to a selected job along with a few other functions.&#160; Fig. 3 shows the print view.&#160; This was helpful when trying to coordinate the jobs.&#160; This was another painful page to write because of the layout.&#160; The only way I could get the data in the format I needed for the page was to do lots of sub-queries.&#160; One for each day and installer, this made the process time for this particular page several seconds!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.databatrix.com/2009/08/installation-schedule/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

