Već neko vrijeme me muči pravljenje izvještaja koji se zasniva na podacima koji su organizovani u hijerarhiju proizvoljne dubine, t.j. jednom običnom, najobičnijem stablu.
Najbolje ću objasniti problem na primjeru. U prikačenoj bazi nalazi se tabela tblVrstaUslova koja čuva podatke o nekakvim uslovima koji imaju svoju hijerarhiju. Ova tabela referencira samu sebe, čime se omogućava pravljenje hijerarhije proizvoljne dubine. tblLice sadrži podatke o licima a tblPotrebniUslovi povezuje lica i uslove koje ta lica moraju ispuniti da bi dobila šarenu lažu. :) Sve je to lijepo prikazano na sledećoj slici:

Hijerarhija se uspostavlja preko polja IdNadredjeneVrste, s tim što jedan uslov može istovremeno imati nadređeni uslov i biti nadređeni uslov drugim uslovima. Uz pomoć date tabele i malo koda dobije se sledeća forma koja uslove prikazuje u stablu:

Ono što ja nikako ne mogu da prokljuvim je kako da napravim izvještaj koji će biti fleksibilan, u smislu da neće imati problem sa bilo kojom dubinom stabla, a koji će prikazivati koja lica treba da zadovolje koje uslove. Recimo nešto ovakvo:

Znam da je ova situacija da Ojdanić treba da ide na "Kurs jezika" i "Kurs engleskog jezika" >> "Engleski jezik (nivo 2)", koji je njegovo "dijete" malo glupa, ali je moguća. U realnom sistemu, korisnik kao uslov može izabrati samo list u stablu (dakle, onaj koji je poslednji u hijerarhiji i nema "djece"), ali vrlo lako se može desiti da je "Kurs jezika", u vrijeme kada je postavljen kao uslov, bio poslednji u hijerarhiji a tek kasnije su mu dodata djeca. Dakle, kada je "Kurs jezika" bio list korisnik ga je mogao izabrati kao uslov koji lice mora da zadovolji. Ali pretpostavimo da su nakon toga "Kursu jezika" dodata djeca "Kurs engleskog jezika" i "Kurs njemačkog jezika". Od tog trenutka, korisnik više "Kurs jezika" ne može postaviti kao uslov, već samo njegovu djecu, t.j. listove, ali raniji unosi u koima je "Kurs jezika" bio izabran kao uslov i dalje se nalaze u bazi i validni su. Prema tome, potrebno je da izvještaj izgleda kao što je na slici prikazano.
Ima li ideja? Sve dolazi u obzir: i privremene tabele i kombinovani upiti i VBA - sve. Pucajte! :)