Monday, 24 December 2007

Fantastic List of Top Tips for Reporting Services

As ive begun digging deep into Reporting Services for a new project ive been hunting around for good resources. In doing so came across this list of extremely well put together tips, tricks and best practices.

Some great things in here that i will be definitely putting to good use.

Tuesday, 11 December 2007

Silverlight Streaming Video Portal Site

If your into the new "thing" which is social networking sites using video - like youtube, then checkout the new Guidance Starter kit from Microsoft and Vertigo - Video.Show. Its the next installment in the .Show family.

All you need is to go to codeplex and download the kit.

To build you will need VS2008. Other things required are ht latest Silverlight install, Expression Encoder and a FREE Silverlight Streaming account from Microsoft. With this you get 700Kbps and 4GB bandwidth.

A great little setup to get you going with Silverlight Streaming!

Tuesday, 4 December 2007

4.5 Hours FREE Silverlight Training + FREE Expression Blend/Web and Design Training is offering an excellent package of FREE training for Silverlight. Over 4.5 hours covering the basics, right up to producing a fully featured media player.

Ive gone through the training and found it to be excellent - and its totally free!

FREE Silverlight Training

Also on is a batch of FREE Expression Blend, Web and design training. Ive yet to do this but as soon as i have some free time its on my list.

Another good free resource for Expression web is This site was put together by the same guys that did - again very good.

Wednesday, 28 November 2007

Collapsing all items in the Solution Explorer in Visual Studio

I sometimes get fed up up having to go through clicking solution folders to collapse everything to went on the hunt for a macro and came across this script by Scott Kuhl.

Sub CollapseAll()

' Get the the Solution Explorer tree
Dim solutionExplorer As UIHierarchy
solutionExplorer = DTE.Windows.Item(Constants.vsext_wk_SProjectWindow).Object()

' Check if there is any open solution
If (solutionExplorer.UIHierarchyItems.Count = 0) Then
End If

' Get the top node (the name of the solution)
Dim rootNode As UIHierarchyItem = solutionExplorer.UIHierarchyItems.Item(1)
rootNode.DTE.SuppressUI = True

' Collapse each project node
Collapse(rootNode, solutionExplorer)

' Select the solution node, or else when you click
' on the solution window
' scrollbar, it will synchronize the open document
' with the tree and pop
' out the corresponding node which is probably not what you want.

rootNode.DTE.SuppressUI = False

End Sub

Private Sub Collapse(ByVal item As UIHierarchyItem, ByRef solutionExplorer As UIHierarchy)

For Each innerItem As UIHierarchyItem In item.UIHierarchyItems
If innerItem.UIHierarchyItems.Count > 0 Then

' Re-cursive call
Collapse(innerItem, solutionExplorer)

' Collapse
If innerItem.UIHierarchyItems.Expanded Then
innerItem.UIHierarchyItems.Expanded = False
If innerItem.UIHierarchyItems.Expanded = True Then
' Bug in VS 2005
End If
End If

End If

End Sub

Simply add a new Macro to visual Studio then paste in the code.

It can be run directly from the MyMacros window or if it is something you use a lot assign a shortcut key to it by doing the follwing:

Tools|Customize|Commands|Press the Keyboard Button|type the namespace path to the new macro and assign the key sequence. Voila.

Here is the link to the blog i got the script from.

Scott Kuhl's Blog

Wednesday, 21 November 2007

Granting Execute Permissions to a user in SQL2005

I found it a chore to create execute permissions on all stored procedures in a database.

This query will do the job for you:


CREATE ROLE db_executor

GRANT EXECUTE TO db_executor

AND THEN when creating user, assign db_executor as role rather than dbo.

3.To assign user to all stored procedures in database run this.

SELECT 'grant exec on ' + QUOTENAME(ROUTINE_SCHEMA) + '.' +

The web page you are viewing is trying to close the window

Today i added print functionality to a web page that basically changes the stylesheet for print formatting and also automatically fires the print dialogue for the user. On doing this in IE7 you get the message:

"The web page you are viewing is trying to close the window"

when running the follwing javascript added to the page on page load:

If Not ClientScript.IsStartupScriptRegistered(Me.GetType, "OnLoad") Then

ClientScript.RegisterStartupScript(Me.GetType, "OnLoad", "window.print();window.close();", True)

End If

All you need to do to counteract this is put the following javascript code in before the close:'','_self');

So the code will now look like this:

ClientScript.RegisterStartupScript(Me.GetType, "OnLoad", "window.print();'','_self');window.close();", True)

Works a treat.

Wednesday, 14 November 2007 DataList v Repeater

In building the news feed in the previous article i initially used a data list. It all worked fin in IE but when i loaded the page up in Firefox my articles were showing outside the DIV they were supposed to be in! Confusing.

After investigating it with the IE Developers Toolbar i discovered the Datalist was outputting my news articles (which were built using the ul li structure) as tables!

NOTE: IE Developers toolbar is a wicked tool for web developers! Check it out here: Internet Explorer Toolbar This tool lets you see the DOM. Invaluable in debugging your pages.

I simply switched from using a DataList to a repeater and job done! My HTML was now as it was supposed to be and formatted in the correct div.

Paging Data From an XML file

I needed to display a news feed from an xml file. My original intentions were to use XML & XSL to tranform into html but i needed paging support.

I looked at the XMLData Source control and there isno paging support built onto this control. After a look around I came across a .NET class called PagedDataSource. This class abstracts the paging functionality that is used in data grids etc.

All you have to do is load the XML into a dataset, load the pageddatasource with the data from the dataset, set the paging on, set the page index and items per page. Voila! This can now be bound to any control that supports data binding. Wicked!

Here is some sample code binding it to a DataRepeater.

  1. Dim ds As New DataSet

  2. ds.ReadXml("Data.xml")

  3. Dim pagedData As New PagedDataSource

  4. Dim dv As New DataView(ds.Tables(0))

  5. dv.Sort = "SortDate DESC"

  6. pagedData.DataSource = dv

  7. pagedData.AllowPaging = True

  8. pagedData.PageSize = ItemsPerPage

  9. pagedData.CurrentPageIndex = CurrentIndex

  10. xmlRepeater.DataSource = pagedData

  11. xmlRepeater.DataBind()

  12. btnBack.Visible = Not pagedData.IsFirstPage

  13. btnMore.Visible = Not pagedData.IsLastPage

Thursday, 8 November 2007

Changing the namespace of a Windows Workflow project

Today i modified the namespace of a workflow project. A little further down the track when it came to hosting the workflow the workflow runtime puked with the following message:

"Cannot initialize 'StateMachineWorkflowActivity' that does not define a valid 'InitialStateName' property."

The state machine workflow had the initial state set but as i has messed about the with the namespace i had a hunch what it was.

If you come across this error simply open up the workflow.xoml file with an XML editor and change the 'StateMachineWorkflowActivity x:Class' attribute to match your newly modified namespace, save and close.

Now when you build it will run fine. Hopefully VS2008 will fix this as i see it as a bug in the IDE. Changing the namespace should change the namespace in the xoml.

Wednesday, 7 November 2007

The team behind have been hard at work behind the scenes again and produced another fine training website This site is tailored to SQL Server, Sharepoint, TSQL, Biztalk and Relational Database Design and Implementation. I'm sure these categories will also expand over time.

As a member of LVS they are currently offering a voucher code for 25% off the price which you will find on the member pages. If you are not a member click one of the banners at the top of my blog to take you to the sign up pages.

Ive gone through approximately 50% of the initial content releases on (and they have already released the next set of videos on SQL Server 2008) and i must say im impressed again by the quality of the video training on offer. The thing that beats me is the price - its SOOOOO CHEAP! I think these guys are selling themselves short but on the other hand its nice to see someone offering a quality service for an amazing price.

If you are interedted in software and database design and development then i cannot recommend and enough. For the price of a good book you will receive a LIFETIME of training!!

Google Adsense Marketing

Dived into my first adventure in internet marketing to promote a website ive been working on. Im impressed by the whole adwords/adsense stuff that google has set up. It also quite exciting the first time you set somethign like that live - will we get some new business, how many visitors will we get... etc..

The results after a week of advertising are pretty good. The website was new and therefore very low traffic. Its turned a handful of visitors into over 200 per week with several good business enquiries arising from it. We had a page impression count of around 15,000 from quite a niche market so on the whole very pleased.

Heres hoping it continues to improve and we get some quality leads from it. Even just one good transaction should pay for the campaign!

Onwards and upwards.

Wednesday, 5 September 2007

Microsoft Hoards 20% of your bandwidth for itself!

Today, i was astonished to find out that MS reservs 20% of the available internet bandwidth on your PC for its own applications - windows update etc... I found this reading Liquid Boys blog here:

Here is what he suggested you do to get around it:

Click Start then Run and type “gpedit.msc” without quotes.

This opens the “group policy editor” and go to: “Local Computer Policy”

Then “Computer Configuration” Then “Administrative Templates”

Then select “Network” then “QOS Packet Scheduler”

After that select “Limit Reservable Bandwidth”.

Double click on Limit Reservable bandwidth. It will say it is not configured, but the truth is under the ‘Explain’ tab i.e.” By default, the Packet Scheduler limits the system to 20 percent of the bandwidth of a connection, but you can use this setting to override the default.”
So the trick is to ENABLE reservable bandwidth, then set it to ZERO. This will allow the system to reserve nothing, rather than the default 20%.

Wednesday, 15 August 2007

Nokia N95 on the way

Had my last phone - Sony Erricson W800i for a year and a half now with the joystick frigged for the last 8 months of that! I was supposed to return it under warranty but just never got round to it.

So ive finally got round to doing something about it and found a cracking deal with 3 mobile. Last night i had a good look round at what other people have found and the things you can do with that phone are pretty amazing. To think back 25 years years or more ago when i was playing with my ZX Spectrum its unbelieveable how far we have come.

Right now im well excited about getting the phone and trying out all the cool things ive seen. I'll stick up a blog post to let you know what i think of it.

Hope the courier doesnt come too early as ive too much work on to get distracted for long today!

Tuesday, 31 July 2007

2 hours FREE Microsoft Office Sharepoint Services Training (MOSS) from MS

Came across this on the MS e-learning site today as im looking to further my skills in this area.

Sign up while its free if you are interested as there is a 1 year subscription on it. They may start charging soon.

Tuesday, 17 July 2007 - Fantastic learning site

Ive added some link banners to the top of my blog for I cant recommend this site enough. If you are a complete novice or an intermediate with plenty of .net under your belt you will always find something on there. Its how i learnt .NET and helped me become the developer I am today.

The videos date all the way back to 1.1 and then upto current day technologies such as AJAX. The current learning path is hooked into gaining microsoft certification for the new exams. This is something i am working towards and for the price they charge compared to a microsoft course it is pheomenal value. The best £100 i ever spent. Its the price of a couple of books and as im a better visual learner than learning from a book i find them invaluable.

They also have private forums for the lifetime members and these are great - especially for beginners. Anything you ask in here will be met with respect and you can guarantee you wont be shot down in flames!

ASP.NET AJAX Javscript call - Web Service is undefined Error

I tried to implement this using a script manager and script enabled WS but constantly kept getting the error 'service is undefined'. Talk about infuriating.

I ripped my web.config apart trying to find the problem, hacked my code, moved scripts - alsorts! Searched high and low on the net but could not find the solution to the problem anywhere. I had a sample project that it worked fine in and everything was exactly the same (well almost).

Then i started looking at references. When doing this i spotted the namespace in my project which lit a light bulb. The sample project was a Web Project and there is no namespace property like on the project. So i went back to my javascript and changed the following line as follows:

Webservicename.Webmethod(prams, callback);


Namespace.Webservicename.Webmethod(prams, callback);

Worked a treat!

Hopefully this will save someone a days worth of head scratching and wasted time like myself.

Tuesday, 3 July 2007

A nifty SQL query for searching for text references

I needed to find out where i was loading a file in a bulk insert today and found the following query:

WHERE ROUTINE_DEFINITION LIKE '%search string goes here%'

That will basically do a find for you and list the procedures your search string is present in.
Very handy.

Monday, 18 June 2007

Gatecrasher Gone!!!!

I was absolutely gutted to hear on the radio this evening that Gatecrasher in Sheffield is on fire as i write this! Sounds like its totally destroyed. Had some great time in there over the years! An end of an era and a sad sad day!

as the crasher slogan went


Windows Communication Foundation Deserialization Bug

I recently had a bash at putting a WCF service together. I did all the tutorials and everything seemed ok so i had a bash at my own. Well i put it all together but could i get to consume it in a windows application??? Could i b*&^*^*.

I was at it ages until i finally discovered why! I am using for this implementation. All the demos and tutorials i did in c# which is fine but for my project it had to be in It turns out there is a compilation switch that is different in and this causes a namespace problem which totally fricks up the deserialization of complex types! Working with strings and ints - no problem. Basic complex type such as a person with firstname and surname - forget it. All i got was an empty instance.

I wont go into the number of things i tried to get it all working but put it this way - i learnt a hell of a lot about xobjectgen and serialization.

So here is the fix! All you have to do is clear out the root namespace in your windows application and VOILA! It works.

If you are using C# you will not hit this problem because of the compiler switch you dont see.

I hope this saves someone a weeks worth of work pulling their hair out because i did! I was on the verge of binning WCF altogether. Now i think its pretty neat! And it seems very quick with the new high speed serialization engine.

Windows Workflow Foundation Activity Dependency Properties

I had been implementing a custom activity in WWF and added some dependecy properties to the actvity to allow binding. I tried and tried but for some reason i could not get the little blue i at the side of my properties to show it was bindable.

Here is what i had put in my activity:

Public Shared ToProperty As DependencyProperty = DependencyProperty.Register("To", GetType(String), GetType(SendEmailActivity), New PropertyMetadata(

Public Property EmailTo() As String
Return CType(MyBase.GetValue(SendEmailActivity.ToProperty), String)
End Get

Set(ByVal value As String)
MyBase.SetValue(SendEmailActivity.ToProperty, value)
End Set

End Property

As you can see i had ToProperty and EmailTo as the names. Even though they were pointing to each other the dependency property and the .NET accessor property need to be identical. They are even case sensitive!!

One to watch out for if you are doing any WWF and custom activities.

Wednesday, 30 May 2007

iGoogle is great

Came across some of the nifty little features on iGoogle the other day and have been playing ever since. The gadgets are great fun and i can see a massive use for them for friends that are scattered around the country or globe. Each friend could create a gadget for themselves and invite other friends to add it to their Google homepage. Then when they have some news, or a picture or anything really - they stick it in their gadget and upload. Next time their friends log on they can see what they have been up to.

Great for keeping in touch without the hassle of trying to chat when convenient with everyone.

Thumbs up for this effort from Google.

I'm also enjoying the themes - an active image that updates throughout the day to your timezone. Really smartens up your homepage.

Wednesday, 23 May 2007

Welcome to my blog

Ive read hundreds, had lots of thoughts, come across lots of things and thought... i really should get my own blog - but never got around to it. Well, here it is. Ive finally taken the plunge and setup my very own blog.

In it i hope to post nuggets of information about things i come across in my everyday life and work. Things to help people, things to warn people. Whatever i like. Lets see how it goes. I may come back to it 50 years on and have a permanent electronic reminder of my life.

Who knows...... Lets get started.