I almost always use alerters for hyperlinks (XIr3.x) instead of entering a hyperlink directly into a cell. Here’s my reasons:
1. It’s easy to turn them off.
If I’m developing, I might not want the hyperlinks active all of the time, for instance: experimenting with drilling.Using an alerter saves me having to remove the hyperlink from the cell and replace with the object instead.
2. It’s easy to make them conditional.
If I want to make my hyperlinks conditional, it’s easy to specify this via the alerter, rather than write a condition formula followed by the hyperlink text directly into the cell – the longer the condition, the harder it is to visually parse the text. Moving the condition to the alerter makes the cell cleaner (although it does obfuscate the mechanism, as with any alerter / conditional formatting)
Using the above point, you can make hyperlinks which only appear at certain levels of your drill hierarchy. Putting this logic directly into a cell is potentially going to make very long formulae:
Consider this example, a basic E-Fashion query:
I’ve applied a hyperlink on the [Sales revenue] column to open a child report using [Year] & [Store name] objects. No sorting is applied, it defaults to sorting by [Year] and [Store name]. If I sort descending on the [Sales revenue] column, see what happens:
The default sort is still applied – by [Year] descending, and [Store name] descending; this is because the hyperlink contains both the [Year] and [Store name] objects, hence the sort is based on these. If we remove the [Year] from the hyperlink, when we sort on the [Sales revenue] column we get this:
The sort is now only considering the [Store name] as that’s all that’s left in the hyperlink. Obviously this is not ideal. If we remove the hyperlink from the [Store name] object and use it via an alerter instead:
..then when we sort based on our [Sales revenue] column we get the desired result:
Hopefully this gives some good reasons why you might consider applying your hyperlinks via alerters or conditional formatting instead of directly to the report canvas 🙂 . Maybe you have some good reasons for doing so, or not doing so?
Caveat: Based on XI R3.x java client; functionality may be different in 4.x.