Home > Dashboards > Xcelsius 2008 and Refresh On Load

Xcelsius 2008 and Refresh On Load

Are you used to the new Xcelsius 2008 yet?  The release of SP1 has definately been a big improvement.  Like many others, I struggled with the new and improved Xcelsius.  There were a few too many quirks for me and until the release of SP1, I went back to Xcelsius 4.5.

Besides the fact that there are several “little things” that work differently between Xcelsius 2008 and 4.5, I did notice a couple of bigger things.  One in particular was the Refresh on Load feature.  I found that there was a big difference between setting the data connection to refresh on open and setting the Connection Refresh button to refresh on load.

Although I did discover a whitepaper that eventually explained it all to me, I ended up figuring this one out on my own.  I should have asked myself early on why there was a ‘refresh on open’ on both the data connection AND the connection refresh.

Data Connection – Refresh on Load

When the SWF file is launched, data is retrieved from the spreadsheet and any data connections, and then dashboard components are generated.  The Refresh On Load option forces the Data Connection to retrieve data from the source before the components are generated.

What’s the downside? The downside I discovered is that you cannot use values from the controls within the Xcelsius model to drive the prompts in your web services because in reality, the controls haven’t been ‘created’ yet.  I found that even though I had default values of “All” hard-coded in my model, I could NOT get my web services queries to fire.  Instead I would get the message:  All prompts are not filled.

In order to avoid this message, you can NOT refresh the data connection on open.  Instead you much create a connection refresh as an object on your Xcelsius model.

Connection Refresh – Refresh on Load

Connection Refresh works like it did in Xcelsius 4.5.  I wrongly assumed that I would no longer need to use a connection refresh in Xcelsius 2008, but due to the issue of not being able to set values for prompts, I found they were still necessary.

BUG?  I’m not sure if it’s a bug, but I also found that if I evoke the dynamic visibility on a Connection Refresh and the object is hidden, then the refresh on open does not work.

Here is an example (the connection refresh buttons are hidden)

Then the user clicks on the setup icon and they are exposed

From a demonstration perspective, I like to hide my Connection Refresh buttons and only display them once the user clicks in a specific area to view them.  In my case I was unable to get the refresh on open to fire on a Connection Refresh if at the time the model was opened, the object was hidden.

NOTE:  To work around this bug, I added a “transparent” button at the top of my model which was NOT hidden.  It was transparent the user could not see it.   When the model opened, the transparent CR button refreshed my web services.  This allowed me to keep my buttons “hidden” but get past the refresh bug.

Final Alternative

Creating an extra step in the lookup logic will make it possible for you to be able to use the data connection – refresh on load AND have the prompts work correctly.  Instead of having the prompt use the target cell of a selector (e.g. B2) , create a second cell that says:  =IF(ISBLANK(B2), “Default Value”, B2) and have the prompt use it instead.  This way, even if the selector value is blank, because the object has not yet been created, the prompt will always have a valid value.

Click here to download sample. BTW,I did not include the database and web service for this sample.

In Crystal Xcelsius 4.5, I was so accustomed to having my web service query prompts feed from the target cells, that it took me a little while to realized that this formula would fix the problem as well.


Based upon these findings, here are my thoughts:

  • If you want the model to come up faster (before the data has been retrieved), then always use a connection refresh – refresh on open.
  • If you want to model to have the latest data at the time it opens, then always use a data connection – refresh on open.

In general, my personal preference is to use the connection refresh because I think it’s better to allow the user to see the model as soon as possible and then wait for the refresh of the data.  I also like it because it means i don’t have to update my old Xcelsius 4.5 models to use the interim calculation I describe above.

Again, here is the whitepaper just in case you want to read the full details.

Hope this helps you as much as it helped me.

«Good BI»

  1. September 30th, 2008 at 08:59 | #1

    Thanks for posting this. I noticed that the “Refresh on Open” wasn’t working with component values, but didn’t know how to resolve it.

  2. September 30th, 2008 at 09:45 | #2

    Glad it helped you. Thanks for reading!

  3. October 14th, 2008 at 08:54 | #3

    Thanks for the article – quick question though – do you ever need to use the “Refresh Every” . It does not work. Any ideas would be greatly appreciated.

  4. July 11th, 2013 at 07:02 | #4

    Nice information dude…..Keep it up the same work…..

  1. No trackbacks yet.