Dobrý den,

myslím, že kromě vlastních reportů musíte mít ve vaší databázi nějak popsanou i navigaci mezi nimi. Při přechodu k novému reportu musíte zjistit, které parametry už znáte z předchozího, a které je potřeba vykoukat z pozice buňky, na kterou bylo kliknuto. Potřebujete tedy u každého dotazu vědět, které sloupce z jeho výsledku tvoří klíč. To odnikud nevytáhnete, musíte to mít zapsané u své definice reportu.

Pokud dáte uživateli možnost přechodu jen k jednomu dalšímu reportu, máte situaci snažší. Pokud však zjistíte, že drill down může jít různými směry (a velmi by mě překvapilo, kdyby tomu tak nebylo), tak musíte uživatele ještě nechat vybrat, podle čeho si chce report nechat rozpadnout.

Honza Dvořák
MathAn Praha


Vladimír Náprstek napsal:
Dobrý den,
pracuji na jednom reportovacím nástroji a nyní potřebuji trochu poradit.
Nástroj je obecný s tím, že předem netuším, jaká data mi z DB polezou
(report je definovaný SQL dotazem, uloženým v DB). Na začátku uživatel
zadá kritéria (cca 5 předem daných a společných pro všechny reporty).
Zobrazí se sumární tabulka. A teď je třeba se dostat na detailní pohled.
Uživatel může kliknout na libovolné číslo v tabulce a detailní pohled
zobrazí data. Problém je v tom, že detail přebírá nejen původní
parametry, ale omezení vzniká navíc na základě vybraného řádku i
sloupce. A tady nevím jak problém uchopit. Řádek může být definován
vícero hodnotami v prvních sloupcích (závisí na konkrétním reportu) a
který detailní report bude použit zase závisí na sloupci, ve kterém je
číslo, na které uživatel kliknul.

Možná to zní zmateně, tak raději přidám příklad. Mějme report, kde jsou
sloupce: rok, stát a následují nějaké prodávané komodity. Uživatel si
klikne na nějaké číslo a detailní report mu ukáže data pro rok a stát
(první dva sloupce) a danou komoditu (sloupec, ve kterém kliknul na
číslo). A tohle musím nějak zajistit pro libovolný report (není dáno,
kolik úvodních sloupců je klíčových) a navíc každý report má jiný
detail).

Máte nějaký nápad, jak toto "filozoficky" uchopit?


Odpovedet emailem