views:

136

answers:

3

Hi All,

I have a ton of associated data revolving around a school, students, teachers, classes, locations, etc etc

I am faced with a challenge put fourth by my client; they want to have reports on everything. This means they want the ability to cross reference data points every which way and i think i'm just short of writing a pretty query builder. :/

This stack question is aimed at soliciting opinions on how to structure a reporting interface beautifully.

Any suggestions, references, examples, jQ plugins etc would be amazing.

Thank you!

+6  A: 

I find the Trac's query builder rather acceptable for what it is meant to do.

But most probably your clients don't want everything, they are just too lazy to think about what they want now. You could help them decide by analyzing the use cases together, and come up at least with a few kinds of queris with just a few parts customizable -- in the worst case -- or just a few canned queries they really need -- in the best.

Radomir Dopieralski
Is this what you are referencing? http://trac.edgewall.org/query
Zaz
+1 for lazy clients. Help them understand what they're actually asking for and they may be more willing to be specific.
banzaimonkey
@Zaz yes, I use it daily at work, so probably I'm just accustomed
Radomir Dopieralski
@banzaimonkey if only it would be so easy.
mhitza
+1 but I doubt clients with that requirement would have the analytical clarity to put any of their queries into such an interface - at least it would be "hard".
peterchen
+4  A: 

You should probably schedule a meeting with your client to determine what they need to do. This does not mean having them speculate about how great it would be if your software could do everything, was ultra-flexible yet totally easy to use, etc... but sit down and find out what they are doing right now. I'm saying this because that "oh, I'd like to be able to cross-reference everything with everything else!" sounds a bit too familiar, and might end in an ugly case of inner-platform effect.

I've found that rapid paper prototyping with the client is a great way to explore possible ideas, as it shifts their attention away from "can you make this button yellow?" issues to The Big Picture, to let them make up their minds what they actually need. Plus, it's ridiculously inexpensive to do.

Apart from that, for inspiration, there are UI pattern languages that address handling potentially large amounts of interconnected data. What's great about these is that you will often be able to use these patterns to communicate ideas to your client, since a well-structured pattern language will guide a non-expert through domain-relevant design decisions in increasing detail.

ig2r
This is a great idea. I have done a couple variants of these but over email, not in a sit down session. Can you tell me a little more about the UI Pattern Langauges? I have no experience with that -- thanks for responding btw.
Zaz
@Zaz that's basically an idea the interface design crowd has adapted from architect Christopher Alexander, who sought to capture the essence of designs in clearly defined "patterns" that would empower the inhabitants of his buildings to have a word in the design process. For UI, have a look at the web site for the book by Jenifer Tidwell (designinginterfaces.com), which has example patterns so that you can decide for yourself if this is any use for you. Note that interface patterns differ from software engineering patterns, the latter being more technical descriptions (singletons and stuff).
ig2r
+1  A: 

First, I can only support the other voices: work out with the clients what they actually need. A good argument is "I can do, but it will cost you X thousand dollars, every user will need Y hours of training, and you'll need a $100.000K/year developer to maintain it."

(Unfortunately, most clients at that point prefer to pick the guy who says "yes, can do cheaper!")


Only second, and only if the client says "yes we do need everything":

What works well is a list/grid view progressive filtering. Instead of buildign the SQL query, then running it, let the user directly work with the results: e.g. right clicking a cell, and selecting "limit to this value" could add a WHERE colN = <constant> constraint.

You can generate suggestions for columns from SELECT DISTINCT calls - if it returns less than, say, 20 values, you can offer checkboxes for a OR combination of possible values.

It would be interesting to discuss en elegant UI for the sea of remaining problems: OR'ed conditions across multiple columns, ordering by more than one column, grouping, ...

peterchen