<?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>Jake's Jaunts &#187; Coding</title>
	<atom:link href="http://php.kennedydatasolutions.com/blog/category/coding/feed/" rel="self" type="application/rss+xml" />
	<link>http://php.kennedydatasolutions.com/blog</link>
	<description>The endless unravelling of Jacob Kennedy's mind.</description>
	<lastBuildDate>Thu, 25 Mar 2010 03:29:39 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Invest In Cheese Goes Live</title>
		<link>http://php.kennedydatasolutions.com/blog/2010/03/20/invest-in-cheese-goes-live/</link>
		<comments>http://php.kennedydatasolutions.com/blog/2010/03/20/invest-in-cheese-goes-live/#comments</comments>
		<pubDate>Sun, 21 Mar 2010 03:17:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[KDS]]></category>
		<category><![CDATA[Websites]]></category>
		<category><![CDATA[Wordpress]]></category>

		<guid isPermaLink="false">http://php.kennedydatasolutions.com/blog/2010/03/20/invest-in-cheese-goes-live/</guid>
		<description><![CDATA[Another website goes gold.&#160; This one, investincheese.ca, is a website dedicated to the promotion of cheese-making and enjoying in the Frontenac, Hastings, Lennox and Addington, and Prince Edward County regions.
The site features dynamic pulls from Twitter, Flickr and YouTube as well as some unique things like a news ticker, the Digg Digg plugin which enables [...]]]></description>
			<content:encoded><![CDATA[<p>Another website goes gold.&nbsp; This one, <a href="http://investincheese.ca" target="_blank">investincheese.ca</a>, is a website dedicated to the promotion of cheese-making and enjoying in the Frontenac, Hastings, Lennox and Addington, and Prince Edward County regions.</p>
<p>The site features dynamic pulls from Twitter, Flickr and YouTube as well as some unique things like a news ticker, the Digg Digg plugin which enables easy sharing on Twitter, Facebook and Google Buzz as well as the Share This plugin.&nbsp; It is, of course, a Wordpress-driven site and is best of breed for March 2010.</p>
<p><a href="http://investincheese.ca" target="_blank"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" title="cheese" border="0" alt="cheese" src="http://php.kennedydatasolutions.com/blog/wp-content/uploads/2010/03/cheese.png" width="534" height="316"></a> </p>
<p>Coming later this week is a news aggregator.&nbsp; Very cool stuff.</p>
<p>I say, LET THEM EAT CHEESE!</p>
]]></content:encoded>
			<wfw:commentRss>http://php.kennedydatasolutions.com/blog/2010/03/20/invest-in-cheese-goes-live/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adelita Rose Goes Live</title>
		<link>http://php.kennedydatasolutions.com/blog/2009/09/14/adelita-rose-goes-live/</link>
		<comments>http://php.kennedydatasolutions.com/blog/2009/09/14/adelita-rose-goes-live/#comments</comments>
		<pubDate>Mon, 14 Sep 2009 19:51:23 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[KDS]]></category>

		<guid isPermaLink="false">http://php.kennedydatasolutions.com/blog/2009/09/14/adelita-rose-goes-live/</guid>
		<description><![CDATA[Yesterday I put the finishing touches on a website for photographer Caitlin den Boer.&#160; Her company is called Adelita Rose and the website features some neat tricks using Wordpress.
Along with her most recent Twitter tweet, we also automatically show an excerpt from her most recent blog post.&#160; On the home page there is also a [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday I put the finishing touches on a website for photographer Caitlin den Boer.&nbsp; Her company is called <a href="http://adelitarose.com/">Adelita Rose</a> and the website features some neat tricks using Wordpress.</p>
<p>Along with her most recent <a href="http://twitter.com">Twitter</a> tweet, we also automatically show an excerpt from her most recent blog post.&nbsp; On the home page there is also a slideshow going on in the background.&nbsp; I wanted the site content to be completely controlled by Caitlin so that meant using only standard Wordpress tools for the post and page editing.&nbsp; Well, in the newer versions of Wordpress images can be displayed in galleries.&nbsp; A gallery normally shows up as a series of thumbnails on a page which, while a neat way of showing a collection of images at one time, is not nearly as visually impressive as an auto-advancing, full-framed slideshow.&nbsp; What I did was I hid the thumbnailed gallery and used Mootools to read in all of the links to the medium-sized images, used AJAX to follow the links and grab the images, stored them in local, hidden divs, and then created a cross-fading array loop of those divs. The effect is seamless and fairly quick.&nbsp; The bonus is that each of the images is clickable to the full blown image (copyright Adelita Rose, of course).&nbsp; The portfolio pages use the same tricks.</p>
<p>The contact page is a modified plugin and the music player is a free, Flash-based mp3 player that I have randomly selecting a loop of Caitlin&#8217;s chosen music.</p>
<p>The look and feel went through a couple of revisions with Rene Dick at <a href="http://scoutdesign.ca">Scout Design</a> to nail down Caitlin&#8217;s vision but the end result is awesome.&nbsp; I&#8217;m so glad we were able to deliver a non-Flash product that she can administer that still has that polished look a photographer wants.</p>
<p>Cheers to Caitlin and Rene on a very successful project!</p>
<p>J</p>
]]></content:encoded>
			<wfw:commentRss>http://php.kennedydatasolutions.com/blog/2009/09/14/adelita-rose-goes-live/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Maps in PDF?</title>
		<link>http://php.kennedydatasolutions.com/blog/2009/07/30/google-maps-in-pdf/</link>
		<comments>http://php.kennedydatasolutions.com/blog/2009/07/30/google-maps-in-pdf/#comments</comments>
		<pubDate>Thu, 30 Jul 2009 21:35:56 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[KDS]]></category>
		<category><![CDATA[Websites]]></category>

		<guid isPermaLink="false">http://php.kennedydatasolutions.com/blog/2009/07/30/google-maps-in-pdf/</guid>
		<description><![CDATA[This is a general call for help.&#160; An APB if you wish.&#160; I&#8217;ve got a client who has requested Google Maps.&#160; No problem.&#160; They want a CMS.&#160; No problem.&#160; They want to be able to get directions between the articles, which are points of interest, in the order in which the user defines.&#160; No problem.&#160; [...]]]></description>
			<content:encoded><![CDATA[<p>This is a general call for help.&nbsp; An APB if you wish.&nbsp; I&#8217;ve got a client who has requested Google Maps.&nbsp; No problem.&nbsp; They want a CMS.&nbsp; No problem.&nbsp; They want to be able to get directions between the articles, which are points of interest, in the order in which the user defines.&nbsp; No problem.&nbsp; Now they want to bundle the whole thing in a single zip file, including the articles which should be pdfs.&nbsp; No, er, what&#8217;s that?</p>
<p>I can put the attachments in a single zip file.&nbsp; I can make the articles into pdfs.&nbsp; What I can&#8217;t seem to do, for the life of me, is get the Google Map into a dynamically created pdf.&nbsp; I&#8217;m sure there&#8217;s a way, I just haven&#8217;t come across it yet.&nbsp; Anyone?</p>
<p>Anyone?</p>
<p>I&#8217;ll post the answer here and give credit where it&#8217;s due. promise.</p>
<p>Anyone?</p>
]]></content:encoded>
			<wfw:commentRss>http://php.kennedydatasolutions.com/blog/2009/07/30/google-maps-in-pdf/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Who Has Time?</title>
		<link>http://php.kennedydatasolutions.com/blog/2009/07/18/who-has-time/</link>
		<comments>http://php.kennedydatasolutions.com/blog/2009/07/18/who-has-time/#comments</comments>
		<pubDate>Sat, 18 Jul 2009 05:21:43 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Mind Omelettes]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Sears]]></category>

		<guid isPermaLink="false">http://php.kennedydatasolutions.com/blog/2009/07/18/who-has-time/</guid>
		<description><![CDATA[I borrowed the title of this post heavily from my friend, Rene, who lamented on how he was busy but how he had to find time to keep up appearances on his website.  I, too, find myself in the position of being so busy that keeping my site up to date has taken a back [...]]]></description>
			<content:encoded><![CDATA[<p>I borrowed the title of this post heavily from my friend, <a target="_blank" href="http://scoutdesign.ca/?p=484" title="Scout Design">Rene</a>, who lamented on how he was busy but how he had to find time to keep up appearances on his website.  I, too, find myself in the position of being so busy that keeping my site up to date has taken a back seat to actually doing the work.  But please don&#8217;t let it sound like I&#8217;m complaining.</p>
<p>The past month has seen me busier than ever before.  I expanded my business to include my favourite hobby, home theatre and movies in general, and wouldn&#8217;t you know it, my web business blows up.  I&#8217;ve released 2 sites already this month and will have another 3 before the July page flips to August.  While it puts stress on the home life, the nature of the beast is such that you must strike while the iron is hot.</p>
<p>Since my biggest project of 2009 so far has now gone gold with only minor updates remaining (<a target="_blank" href="http://www.niagaragreenbelt.com">niagaragreenbelt.com</a>) I feel it&#8217;s time to update the site.</p>
<p>To date I&#8217;ve partnered with great creatives like Brock, <a target="_blank" href="http://scoutdesign.ca/">Rene</a>, <a target="_blank" href="http://www.helmstudios.ca/">Aron </a>and <a target="_blank" href="http://zeppelin.ca/">Gabriel</a> and the work seems to be flowing nicely.  The even better news is that I&#8217;m very busy at <a target="_blank" href="http://www.sears.ca">Sears Canada </a>and the work there seems to be rounding me out.  Not only can I code your front end website but I have the ability to do the dirty, SQL back end too.</p>
<p>Let me just close by saying that 3G has finally arrived in Belleville, but it hasn&#8217;t reached into Prince Edward County.  Typing on an iPod Touch is not as easy as it is on the Blackberry, and that isn&#8217;t easy in the first place (with chubby digits).  I&#8217;m now trying to <a target="_blank" href="http://twitter.com/jacobkennedy" title="Follow Me">Tweet </a>as much as makes sense but I&#8217;m still not paying enough attention to my LinkedIn account.  I still love my PS3 but even more so now that I&#8217;m streaming iTunes from my Macbook.  And lastly, why hasn&#8217;t Adam Sandler been making <a target="_blank" href="http://www.imdb.com/title/tt0960731/" title="Bedtime Stories">kids&#8217; movies</a> all along?</p>
<p>Oh yeah, and I&#8217;m an uncle again!  Congrats to my sister Maija, brudder Jonny, niece Lexi and only nephew Jonah Watson Goward (7lbs 5oz).</p>
]]></content:encoded>
			<wfw:commentRss>http://php.kennedydatasolutions.com/blog/2009/07/18/who-has-time/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>My BIDS Complaints</title>
		<link>http://php.kennedydatasolutions.com/blog/2008/09/25/my-bids-complaints/</link>
		<comments>http://php.kennedydatasolutions.com/blog/2008/09/25/my-bids-complaints/#comments</comments>
		<pubDate>Thu, 25 Sep 2008 15:40:23 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[BIDS]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[SQL Server]]></category>

		<guid isPermaLink="false">http://php.kennedydatasolutions.com/blog/2008/09/25/my-bids-complaints/</guid>
		<description><![CDATA[BIDS is the acronym we use around the office for Microsoft&#8217;s SQL Server Business Intelligence Development Studio.&#160; It&#8217;s an invaluable tool for moving data around between, into and out of SQL Server.&#160; It&#8217;s extremely powerful and was a major improvement over the old Data Transformation Services bundled with SQL Server 2000.&#160; The problem is, I [...]]]></description>
			<content:encoded><![CDATA[<p>BIDS is the acronym we use around the office for Microsoft&#8217;s SQL Server Business Intelligence Development Studio.&nbsp; It&#8217;s an invaluable tool for moving data around between, into and out of SQL Server.&nbsp; It&#8217;s extremely powerful and was a major improvement over the old Data Transformation Services bundled with SQL Server 2000.&nbsp; The problem is, I don&#8217;t think it was ever tested by real life users.</p>
<p>Let&#8217;s just start with the interface.&nbsp; The GUI in BIDS is pretty typical of modern Microsoft apps whereby there are multiple floating panels that you can dock anywhere you please.&nbsp; They&#8217;re ok, I only have issues with the pinning when it refuses to auto-hide.&nbsp; My screen isn&#8217;t big enough to have everything open but I would imagine that on a 24&#8243; widescreen pushing 1900+ pixels wide, it would be very functional with most panels always open.&nbsp; The real problem is in the Control Flow panel.&nbsp; If you&#8217;ve got one lonely little task in that panel, BIDS, for some reason, can&#8217;t detect where that task is and have it auto-centered.&nbsp; Most of the time I&#8217;ll open a package and have to scroll around the screen looking for the one task.&nbsp; But this problem is merely annoying compared to some of the other problems.</p>
<p>One major issue I have is that when you first open a project, BIDS tries to validate every single package in the project.&nbsp; This can take a very long time, especially if some of the packages rely on connections that aren&#8217;t live offline or rely on attached devices.&nbsp; Those packages will fail validation, pop errors, and waste time &#8211; since you may not have been working on those packages anyway.</p>
<p>Another issue I have is with connections in the Connection Manager.&nbsp; If you rename a connection, and that connection is used in a nested task, chances are pretty good that you&#8217;ve now broken that nested task.&nbsp; BIDS, like most Microsoft products, uses an internal unique ID instead of the names (likely in the name of performance) to actually point to connections.&nbsp; Unfortunately it doesn&#8217;t seem to recurse into all of the tasks to update the ID/names of assigned connections if you change a name &#8211; causing hours of frustration as you hunt down why a package that worked before a simple name change won&#8217;t work now.</p>
<p>My last complaint, for today, is with the SSIS Import and Export Wizard.&nbsp; This is the only way to graphically pull or push data from and to your servers.&nbsp; If you choose to copy a table from one server to another, where the table already exists, you have the option of deleting the existing data.&nbsp; If you choose to delete existing records, BIDS creates an Execute SQL Task that is supposed to have all of the DELETE statements.&nbsp; It doesn&#8217;t.&nbsp; What you end up with is a set of GO statements.&nbsp; That&#8217;s it.&nbsp; One for each table you wanted to overwrite.&nbsp; It took me three or four tries with primary key violations to realize that nothing was being deleted.&nbsp; This is consistent and cannot be fixed.&nbsp; I end up having to do the deletes on my own.&nbsp; Obviously that&#8217;s not a big deal but it&#8217;s such a simple bug &#8211; did no one try to do one of these in testing?</p>
<p>Ugh.&nbsp; Any other strange BIDS problems out there?</p>
]]></content:encoded>
			<wfw:commentRss>http://php.kennedydatasolutions.com/blog/2008/09/25/my-bids-complaints/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Free Advice &#8211; Worth Every Penny</title>
		<link>http://php.kennedydatasolutions.com/blog/2008/08/06/free-advice-worth-every-penny/</link>
		<comments>http://php.kennedydatasolutions.com/blog/2008/08/06/free-advice-worth-every-penny/#comments</comments>
		<pubDate>Wed, 06 Aug 2008 20:47:20 +0000</pubDate>
		<dc:creator></dc:creator>
				<category><![CDATA[Books]]></category>
		<category><![CDATA[Coding]]></category>
		<category><![CDATA[KDS]]></category>

		<guid isPermaLink="false">http://php.kennedydatasolutions.com/blog/2008/08/06/free-advice-worth-every-penny/</guid>
		<description><![CDATA[I talked to my friend Scott for the first time in a long time yesterday.&#160; He and I were like brothers growing up and share like and dislike, almost without exception.&#160; The one major difference between us would probably be our chosen paths.&#160; While he went the photography route (the roundabout way through several stops) [...]]]></description>
			<content:encoded><![CDATA[<p>I talked to my friend Scott for the first time in a long time yesterday.&nbsp; He and I were like brothers growing up and share like and dislike, almost without exception.&nbsp; The one major difference between us would probably be our chosen paths.&nbsp; While he went the photography route (the roundabout way through several stops) I went the web programming route (also the roundabout way).</p>
<p><a href="http://www.mootools.net"><img style="border-right: 0px; border-top: 0px; border-left: 0px; border-bottom: 0px" height="108" alt="image" src="http://php.kennedydatasolutions.com/blog/wp-content/uploads/2008/08/image.png" width="260" align="right" border="0"></a>The most common questions I get asked by people who are really interested in what I do is &#8216;what are you using to build your websites with&#8217; and &#8216;what javascript framework&nbsp; do you use?&#8217;&nbsp; It was in explaining my choices to Scott that I felt like it would be worth explaining them to the world (potential clients may be curious).</p>
<p>The lesser of the two questions is what I&#8217;m using to build websites.&nbsp; The desktop application I&#8217;m using is Adobe Dreamweaver but I&#8217;m really only using that for the code collapsing, snippets and site organization.&nbsp; My foundation of choice is WordPress.&nbsp; I&#8217;ve found it to be almost infinitely customizable and flexible enough to cover just about any project.&nbsp; I found Joomla too big and hit WordPress next.&nbsp; I&#8217;d love to give Drupal a try but I have a strong belief that being really strong with one tool makes you more marketable than being slightly experienced with several.&nbsp; I have not met a site that WordPress didn&#8217;t like.&nbsp; (But just because WordPress is in my &#8216;lesser&#8217; category, don&#8217;t be fooled into thinking it&#8217;s not important.&nbsp; WordPress is amazing.&nbsp; It&#8217;s only lesser because it&#8217;s so easy to use and largely unnoticed by site visitors.)</p>
<p>The bigger impact tool I&#8217;m using right now is a javascript framework called MooTools.&nbsp; Scott had never heard of MooTools and I guess this is where the line between web surfer extraordinaire and web programmer is drawn.&nbsp; A surfer may know which blogging tool or BB platform he&#8217;s looking at but he&#8217;s unlikely to know which javascript framework is in use.</p>
<p>MooTools isn&#8217;t for javascript n00bs.&nbsp; You have to be fairly comfortable with coding in general but also with CSS and the DOM.&nbsp; Once you&#8217;re pretty good with those, stepping into MooTools is heaven.&nbsp; Once I started working with MooTools I realized that there really wasn&#8217;t a single thing I couldn&#8217;t do with a web page.&nbsp; It&#8217;s that powerful.</p>
<p>Once you&#8217;ve decided that MooTools is interesting and deserves looking into further, have a look at Aaron Newton&#8217;s <a href="http://clientside.cnet.com" target="_blank">Clientside</a>.&nbsp; All of the things you want to do on a daily basis with MooTools are covered.&nbsp; Man, it&#8217;s almost all done for you!&nbsp; Aaron&#8217;s got a <a href="http://www.amazon.ca/MooTools-Essentials-Reference-JavaScript-Development/dp/1430209836/ref=pd_bbs_sr_1?ie=UTF8&amp;s=books&amp;qid=1218055556&amp;sr=8-1" target="_blank">book</a> coming out in August and I can&#8217;t wait to get my hands on it.</p>
<p>I used to rely pretty heavily on the official MooTools forum which was shut down when version 1.2 of the framework was released.&nbsp; I don&#8217;t lean quite as heavily on the community now but I invite everyone struggling with a MooTools script to try the unofficial forum at <a href="http://mooforum.net">http://mooforum.net</a>.&nbsp; I cruise it quite often and try to help where I can.&nbsp; My handle there is Lweel8 (it&#8217;s a bumper stumper for my punctuality when it comes to sporting events).</p>
<p>Best of luck to everyone out there.&nbsp; I hope to see you in the forum.</p>
]]></content:encoded>
			<wfw:commentRss>http://php.kennedydatasolutions.com/blog/2008/08/06/free-advice-worth-every-penny/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Internet Explorer Breaks Excel Pivot Tables</title>
		<link>http://php.kennedydatasolutions.com/blog/2008/02/05/internet-explorer-breaks-excel-pivot-tables/</link>
		<comments>http://php.kennedydatasolutions.com/blog/2008/02/05/internet-explorer-breaks-excel-pivot-tables/#comments</comments>
		<pubDate>Tue, 05 Feb 2008 19:52:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Computers]]></category>

		<guid isPermaLink="false">http://php.kennedydatasolutions.com/blog/?p=33</guid>
		<description><![CDATA[&#160;
Yep, it&#8217;s true.&#160; It appears that one hand of Microsoft doesn&#8217;t know what the other is doing.&#160; I haven&#8217;t found a lot of hits on this but apparently both sides of this bug confirm its existence and both claim it&#8217;s not their problem.
Symptom:

Microsoft Excel cannot find the references inside a pivot table that references the [...]]]></description>
			<content:encoded><![CDATA[<p>&nbsp;</p>
<p>Yep, it&#8217;s true.&nbsp; It appears that one hand of Microsoft doesn&#8217;t know what the other is doing.&nbsp; I haven&#8217;t found a lot of hits on this but apparently both sides of this bug confirm its existence and both claim it&#8217;s not their problem.</p>
<p>Symptom:</p>
<ul>
<li>Microsoft Excel cannot find the references inside a pivot table that references the same workbook when opened from Internet Explorer</li>
</ul>
<p>Cause:</p>
<ul>
<li>Internet Explorer adds &#8216;[X]&#8216; to the end of the file name when storing the file in the IE temp folder, where X represents an incrementing integer based on the number of downloads of the same file, <b>and the square brackets are illegal characters for file names in Windows</b></li>
</ul>
<p>Steps to reproduce:</p>
<ul>
<li>Browsing with Internet Explorer</li>
<li>Clicking on a link to an Excel spreadsheet with a pivot table in it that references itself</li>
<li>Clicking on &quot;Open&quot; rather than &quot;Save&quot;</li>
</ul>
<p>The only solution I could think of was to write a VBA macro to rename the file and reattach all of the pivot tables.&nbsp; I hope this saves someone else some trouble in the future.&nbsp; When you think of me, think of me fondly&#8230;</p>
<p>( You&#8217;ll have to add a reference to <b>Microsoft VBScript Regular Expressions 5.5</b> or better. )</p>
<p>&nbsp;</p>
<p>&nbsp;<code>Sub Auto_Open()<br />
&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp;&nbsp; Dim sFilename As String&nbsp;&nbsp; ' the corrected filename<br />
&nbsp;&nbsp;&nbsp; Dim oASheet As Worksheet&nbsp; ' the worksheet object<br />
&nbsp;&nbsp;&nbsp; Dim oPT As PivotTable&nbsp;&nbsp;&nbsp;&nbsp; ' the pivot table object<br />
&nbsp;&nbsp;&nbsp; Dim sTempSource As String ' the pivot table temporary source variable<br />
&nbsp;&nbsp;&nbsp; Dim sNewRange As String&nbsp;&nbsp; ' the new pivot table source variable<br />
&nbsp;&nbsp;&nbsp; Dim reg As New RegExp&nbsp;&nbsp;&nbsp;&nbsp; ' a regular expression for matching wildcards<br />
&nbsp;&nbsp;&nbsp; Dim i As Integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' looping integer<br />
&nbsp;&nbsp;&nbsp; Dim j As Integer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' looping integer<br />
&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp;&nbsp; ' Set a regex to test whether this is a temp spreadsheet from IE.<br />
&nbsp;&nbsp;&nbsp; ' Only a temp spreadsheet from IE will have square brackets in the filename.<br />
&nbsp;&nbsp;&nbsp; reg.Pattern = &quot;[[\]]&quot;<br />
&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp;&nbsp; If reg.Test(ActiveWorkbook.FullName) Then<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' the temp filename has square brackets in it<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' just a little message telling the user what's going on<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MsgBox &quot;Renaming temp file and reattaching pivot tables...&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' The .Name property already has the brackets stripped out of it so<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' we can build the new path using it and the .Path property.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sFilename = ActiveWorkbook.Path &amp; &quot;\&quot; &amp; ActiveWorkbook.Name<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' Now we save the file so that the assignment of source data to the<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' pivot tables won't fail.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ActiveWorkbook.SaveAs Filename:=sFilename<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' The range for the pivot table requires a square bracket<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' just before the file name so we rebuild the path, less the drive letter.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sNewRange = Replace(ActiveWorkbook.Path, &quot;C:&quot;, &quot;&quot;) &amp; &quot;\[&quot; &amp; ActiveWorkbook.Name &amp; &quot;]&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' now set the regex for the tail end of the spreadsheet, including the trailing &quot;]&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reg.IgnoreCase = True<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; reg.Pattern = &quot;.*\.xls\]&quot;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' now loop through all of the sheets looking for pivot tables<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For j = 1 To ActiveWorkbook.Worksheets.Count<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set oASheet = ActiveWorkbook.Worksheets(j)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' now loop through any pivot tables on the worksheet<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For i = 1 To oASheet.PivotTables.Count<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set oPT = oASheet.PivotTables(i)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sTempSource = oPT.SourceData<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' go ahead and replace the invalid path with the new path<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; sTempSource = &quot;'&quot; &amp; reg.Replace(sTempSource, sNewRange)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'oPT.PivotTableWizard SourceType:=xlDatabase, SourceData:=sTempSource<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' assign the new path to the sourcedata property<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; oPT.SourceData = sTempSource<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' release the object<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set oPT = Nothing<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Next i<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' release the object<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Set oASheet = Nothing<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Next j<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &nbsp;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' Save the workbook, just to be thorough.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' Without saving a user would be able to close the workbook without saving<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' and then open the workbook from the<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' recent documents list and have broken pivot tables.<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ActiveWorkbook.Save<br />
&nbsp;&nbsp;&nbsp; Else<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ' Not a spreadsheet with square brackets in the filename<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'MsgBox &quot;No renaming required&quot;<br />
&nbsp;&nbsp;&nbsp; End If</p>
<p>End Sub</code></p>
]]></content:encoded>
			<wfw:commentRss>http://php.kennedydatasolutions.com/blog/2008/02/05/internet-explorer-breaks-excel-pivot-tables/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Office Space</title>
		<link>http://php.kennedydatasolutions.com/blog/2007/07/26/office-space/</link>
		<comments>http://php.kennedydatasolutions.com/blog/2007/07/26/office-space/#comments</comments>
		<pubDate>Thu, 26 Jul 2007 19:13:52 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[DIY - House]]></category>
		<category><![CDATA[Mind Omelettes]]></category>

		<guid isPermaLink="false">http://php.kennedydatasolutions.com/blog/?p=19</guid>
		<description><![CDATA[My wife is a fan of the Shopaholic series of books and one of her favourite moments is when the heroine decides she&#8217;s going to get control of her over-spending.  She decides that she&#8217;s going to write all of her spending down in a notebook and analyze where everything goes.  In order to [...]]]></description>
			<content:encoded><![CDATA[<p>My wife is a fan of the Shopaholic series of books and one of her favourite moments is when the heroine decides she&#8217;s going to get control of her over-spending.  She decides that she&#8217;s going to write all of her spending down in a notebook and analyze where everything goes.  In order to do that, she goes out and buys a fancy new notebook and a beautiful, and very expensive, pen &#8211; thus going further into debt.  We had to giggle when we talked about building my office because we were spending what seemed like a ton of money in order to make the money back &#8211; to pay for the office!</p>
<p>Well, after only a few <strike>days </strike>nights in the new space I can already see that it&#8217;s going to be great.&nbsp; The lighting, the tunes, the white board, the dual monitor, the filing cabinets.&nbsp; I finally have a place to work &#8211; and my wife has her dining room table back.</p>
<p>I read it somewhere relating to studying but you really do have to have a space set aside specifically for working.&nbsp; Doing any kind of job in an inappropriate environment just leads to sub-par results&#8230;</p>
<p>Here&#8217;s to awesome results, CHEERS!</p>
]]></content:encoded>
			<wfw:commentRss>http://php.kennedydatasolutions.com/blog/2007/07/26/office-space/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RegexBuddy &#8211; A Coder&#8217;s Best Friend</title>
		<link>http://php.kennedydatasolutions.com/blog/2007/07/04/regexbuddy-a-coders-best-friend/</link>
		<comments>http://php.kennedydatasolutions.com/blog/2007/07/04/regexbuddy-a-coders-best-friend/#comments</comments>
		<pubDate>Wed, 04 Jul 2007 19:41:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Programs]]></category>

		<guid isPermaLink="false">http://php.kennedydatasolutions.com/blog/?p=15</guid>
		<description><![CDATA[I&#8217;m pretty handy with a chunk of code.  Within a couple of seconds I can parse just about any regular expression with a reasonable amount of success.  What I can&#8217;t seem to do is write the darn things when switching between JavaScript, PHP, VB.NET and VBscript.  That&#8217;s where RegexBuddy comes in.
RegexBuddy is [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m pretty handy with a chunk of code.  Within a couple of seconds I can parse just about any regular expression with a reasonable amount of success.  What I can&#8217;t seem to do is write the darn things when switching between JavaScript, PHP, VB.NET and VBscript.  That&#8217;s where RegexBuddy comes in.</p>
<p>RegexBuddy is a little, but powerful, program written by a company called JGSoft (Just Great Software &#8211; catchy, no?).  I was already a supporter of EditPad Pro, which is a replacement for Notepad that allows regular expression find and replaces, tabbing, line numbering and tons of other features, but I&#8217;m downright evangelical about RegexBuddy.  You can build your expressions by hand or use the helpful &#8220;Insert Token&#8221; button, you can have your expression explained back to you in plain English, you can test your expression against a string you insert, but best of all, you can have the program build the entire script you need &#8211; in the coding language of your heart&#8217;s desire!</p>
<p>Being that I&#8217;ve just jumped into SQL Server 2005 with both feet, my knowledge of VB.NET is not nearly as complete as my knowledge of PHP and VBscript.  Even once I had my expression, and was confident that it should return the proper results, I didn&#8217;t know that I had to import a library to use it.  RegexBuddy knew.</p>
<p>Long story short, there&#8217;s a text file I&#8217;ve been procrastinating about parsing and cleaning up for almost 3 years.  Using RegexBuddy I built, tested and implemented a housekeeping function in just over an hour.  A 500KB files was reduced to under 30KB and made importing into SQL a breeze.   Yay RegexBuddy!  Now I just need to find my credit card to pay for the program&#8230;</p>
<p><em>If you&#8217;re curious about the expression that made my life so easy, here it is</em>:  &#8220;^.* (\d?\d/\d?\d/\d{4}) to \1.* (\d{4}[BMR]|\d{7}).* \d?\d:\d\d:\d\d.* \d?\d:\d\d:\d\d.*(\d?\d:\d\d:\d\d).* \d?\d:\d\d:\d\d.* (\d?\d:\d\d:\d\d).*$&#8221;<em> which I then used in a replace with</em> &#8220;$1,$2,$3,$4&#8243;.</p>
]]></content:encoded>
			<wfw:commentRss>http://php.kennedydatasolutions.com/blog/2007/07/04/regexbuddy-a-coders-best-friend/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cross-browser headaches with columns</title>
		<link>http://php.kennedydatasolutions.com/blog/2007/06/14/cross-browser-headaches-with-columns/</link>
		<comments>http://php.kennedydatasolutions.com/blog/2007/06/14/cross-browser-headaches-with-columns/#comments</comments>
		<pubDate>Thu, 14 Jun 2007 18:35:17 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Mind Omelettes]]></category>

		<guid isPermaLink="false">http://php.kennedydatasolutions.com/blog/?p=4</guid>
		<description><![CDATA[Just wanted to rant a little.  I&#8217;ve been causing myself fits trying to position elements inside of table cells.  IE handles it just fine but Firefox barfs immediately.
I know what you&#8217;re saying, &#8220;don&#8217;t use tables for positioning, fool.&#8221;  Thanks for the advice,  and watch your mouth &#8211; this is a family blog.  As anyone who [...]]]></description>
			<content:encoded><![CDATA[<p>Just wanted to rant a little.  I&#8217;ve been causing myself fits trying to position elements inside of table cells.  IE handles it just fine but Firefox barfs immediately.</p>
<p>I know what you&#8217;re saying, &#8220;don&#8217;t use tables for positioning, fool.&#8221;  Thanks for the advice,  and watch your mouth &#8211; this is a family blog.  As anyone who has done a lot of web work knows, tables are much easier to use and normally are the most faithful to the layout you are intending to produce.  For the code snobs out there, divs MAY work just as well but you have to admit that they are not nearly as flexible &#8211; right now.  When browser support, nay, when <em>cross</em>-browser support of div positioning is more consistent then I&#8217;ll officially make the switch.  Attributes like min-width and auto margins are, on paper, the answer to a lot of layout issues.  The trouble is that they are simply W3 guidelines for <em>future</em> browsers.  By the time Joe Q Public gets around to having a standards-compliant browser installed on their home machine, well, I&#8217;ll probably be dealing with cell phone browser layout issues.</p>
<p>Now I hear you saying, &#8220;but you can always use the [insert your favourite] hack to make it work, dummy.&#8221;  If I have to use a hack then I&#8217;m not likely to go that route.  Hacks inevitably lead to support issues and eventual outdating.  Today&#8217;s hacks are tomorrow&#8217;s bugs.  [and I'll thank you to cease with the name calling]</p>
<p>No, for now I&#8217;ll just motor along with tables, where I need them, and I&#8217;ll use divs where columns aren&#8217;t important.</p>
<p>You know, none of this would ever have become an issue if some of you out there didn&#8217;t have a real hate on for Microsoft.  I&#8217;ve got nothing against Billy G and the Midnight Racers but having competing browsers out there is making my job more desired.  Thank you, haters.</p>
<p>Stay tuned for my next post entitled, &#8220;Cross-browser headaches with lists.&#8221;  My one tip for fledgling pros out there is test in IE and Firefox often.  The only consistent thing between them are the inconsistencies.</p>
]]></content:encoded>
			<wfw:commentRss>http://php.kennedydatasolutions.com/blog/2007/06/14/cross-browser-headaches-with-columns/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
