Thursday, May 28, 2009

Page Numbers in SSRS

So I just spent 30 minutes trying to get a page number on the bottom of a report I’m building in SSRS.  30 minutes for a feature that I get in a button-click in virtually every other application that I have installed on my computer.

The adventure starts with this TechNet article that seems to indicate that this is all simple to do:

Adding a Page Number to a Header or Footer

Footers commonly display a page number. To display a page number in the header or footer of a report, create a text box in the footer and add the following expression:

=Globals.PageNumber & " of " & Globals.TotalPages

Ok, let’s do that.  Sounds straightforward enough.  Oh wait… then I get this:

The Value expression for the textbox ‘textbox1’ refers to the global variable PageNumber or TotalPages.  These global variables can be used only in the page header and page footer.

What the hell?  Ok, let’s do some Googling (which reminds me, I love that “To Google” is now a valid part of the English language… what a world).  This lead me to a few different forum and blog posts.  All of these seemed to indicate that I had to write backend code to make this work.  Stupidly, I thought “sure, why not? It seems totally reasonable that I should have to write custom code to get PAGE NUMBERS ON A REPORT”.

I realize I don’t get to write code that often anymore, never mind writing a report.  So I’m a little rusty.  But am I so rusty that I’ve forgotten my core lesson that “if it seems too complicated you probably screwed up”?

Thankfully writing this blog rant reminded me of that fact midway through this and I thought “alright, it’s gotta be me, not the tool”.  Of course, as always, foolishness usually lies with the user of the tool not the tool itself.  Suffice it to say there’s a BIG difference between a table footer and a page footer.  Whoops.

In my defence, adding a page number in Word (or anything like it) is about as simple as can be.  Given that SSRS is meant to simplify the creation of reports, why is it so hard to do trivial tasks?  Ok, I’m exaggerating, it wasn’t that hard.  But it’s always fair to blame the tool, right?

Monday, May 25, 2009

Web 2.0 & SharePoint

Last week, I went with a co-worker to a seminar at Microsoft on social computing with SharePoint. It was an interesting discussion with some very smart people.  A few of the central themes were:

  1. There are effectively two hierarchies that exist in every organization: a formal one and an informal one. The formal hierarchy is defined by reporting relationships and is generally well documented. It is also mostly useless. The informal hierarchy is the unwritten relationships that exist between people and forms the basis for how things actually get done. It is the reason why someone who is 4 levels down in the formal hierarchy is actually the most important person in the organization. This hierarchy is terribly served by IT.
  2. The tools that we use to collaborate and communicate with all introduce varying levels of social friction that ultimately impair the activity itself.
  3. There is an untold amount of tacit knowledge contained in people’s heads and that is flowed in discussions around the water cooler but is not captured or codified. This knowledge tends to disappear when staff leaves or when time erases our memories.

Successful social computing initiatives (i.e. Facebook, Twitter) seem to work because they manage to lower the social friction and distance between people.  And while the average person is using these tools more and more in their personal lives there is a great vacuum in their professional lives because “Corporate IT” has not kept pace.  A great example is the basic fact that the internet looks and works so well and intranets look like high school computer science projects.

SharePoint is a great tool for helping people to collaborate around documents but its “social computing” features (i.e. the My Sites) are still quite primitive.  SharePoint 2010 may bring new tools to the table but ultimately the issues to be resolved are cultural, not technological.

Over the next few months I will be spending considerable effort on attempting to solve some of the social friction problems that exist at my organisation.  How can we collaborate better?  How can we capture tacit information?  How do we capture ideas from the broader community and distil them into action?