Need help with Data Bar chart

I've created a report that lists projects, their budgets, amount already spent and amount remaining in the budget.  What I'd like to do is have a small data bar chart in the last column that visually displays the amount of the budget spent for each client/project as a percentage.

I attached a picture of what I had in mind.  At a glance my boss would be able to look down the page at a list of projects and see which ones were 50% spent, 90% spent or overspent.  I'm just not sure how to customize a chart to do this.  Plus a lot of my figures are calculated so perhaps I should create a seperate dataset for the chart?  I thought of using a pie chart but I think the data bar chart is a better solution.

Any ideas or input please share!    If anyone with report/chart experience has a suggestion of how to display the desired graphical data I'm all ears!
Who is Participating?

[Product update] Infrastructure Analysis Tool is now available with Business Accounts.Learn More

I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Nico BontenbalCommented:
See this article:
You'll need the "stacked bar".  Not sure what you want to do with the overspent. I think you should have a green bar up to 100% and then a red bar attached to it with the overspent (10% for example). You might not need an separate dataset. You probably can do all the calculations in the report.
The data labels are probably the most tricky part because you want to display the total budget also. I need to experiment somewhat to give you the right answer. I can make an example for you but than I need to know what version of SQL server you are using. And could you upload the report (.rdl) here so I can use that as a starting point.
HSI_guelphAuthor Commented:
I'm using a virtual machine running MS SQL Server 2008 R2 to access a virtual MS SQL Server 2005 database (does that even matter? that its a different version then what I'm developing on?).

Here is a copy of the .rdl.  I'm not sure it matters how much the project is over as much as what is left in the budget (if they are over they are over but if they are way under just before the end of contract they need to allocate the funds since many projects are smaller ones of a master project).

It would be cool if I could get the bar to be green when they are under 50%, yellow if they are 50-75%, orange 75%-90% and red when they are either 100% or 90%-100% (numbers are just examples).  I read that there are stop lights I can implement into the report which would be ok to use too.  I would like something that is clear and simple to draw the eye to key areas that might be of concern/interest.  Any graphical tool would suffice but a bar would show how all projects are doing budgetwise.  Also the number of clients on a page may vary and I don't want a big graph on the page but a small indicator per row.
HSI_guelphAuthor Commented:
I got it working!  I changed it to a stacked bar, like you suggested, and then went into the series properties fill tab and entered the expression for color:
=Switch((Sum(Fields!Expenses.Value) + Sum(fields!Labour.Value)) > fields!Budget.Value, "Red",
(Sum(Fields!Expenses.Value) + Sum(fields!Labour.Value)) > fields!Budget.Value*.85, "Orange",
(Sum(Fields!Expenses.Value) + Sum(fields!Labour.Value)) < fields!Budget.Value*.85, "Green")

Its working great but I am running into some instances where I'm dividing by 0 and getting an #Error.  If that happens I'd like the fill color to be the same as the background, white, but I am having no luck adding a test for error into my above expression.

Any ideas please?
Become a CompTIA Certified Healthcare IT Tech

This course will help prep you to earn the CompTIA Healthcare IT Technician certification showing that you have the knowledge and skills needed to succeed in installing, managing, and troubleshooting IT systems in medical and clinical settings.

HSI_guelphAuthor Commented:
Also I am getting a warning
Warning      1      [rsRuntimeErrorInExpression] The Color expression for the chart ‘DataBar2’ contains an error: Input string was not in a correct format.      C:\Users\hsiadmin.HUMANSYSTEMS\Documents\Visual Studio 2008\Projects\Report Development\Report Development\BudgetExample.rdl      0      0      
Do I need to correct this?  Will it impact running the report?
Nico BontenbalCommented:
Well done! I was just starting the example but it looks like you are ahead of me. You can get around the division by zero by using an if statement. But be careful, both parts of the iif are evaluated, so you might still get an error. So if something like:

Open in new window

return the error. You need to change it to:
=iif(Fields!Budget.Value = 0, 0, Sum(Fields!Labour.Value)/iif(Fields!Budget.Value=0,1,Fields!Budget.Value))

Open in new window

And you can use the Fields!Budget.Value = 0 criterium for your color also and make sure it returns white. Or use it for the Hidden property of your Chart so the chart doesn't display at all.

You expression for the color returns null if none of the expressions are true. I think that is what causing the error. Try adding
True, "White"

Open in new window

to the switch statement to make sure it always return a valid color. If that doesn't help add an extra column to your table with the expression you use for the color. That way you can see what the expression returns and makes it easier to debug.

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
HSI_guelphAuthor Commented:
Thank you very much for the help!  Sometimes its more helpful to get advice on how or what you want to display rather than the code since the code is pretty rigid, its the mind of the coder that creative and flexible.
Nico BontenbalCommented:
You're welcome. When I read your post of  2012-04-05 at 16:12:19 I was afraid we still had a long way to go. So my compliments to you for getting this working with only a few hints.
HSI_guelphAuthor Commented:
Thank you :)
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today

From novice to tech pro — start learning today.