OBI EE Filtrowanie po datach użycie zmiennych repozytorium predefiniowanych
Posted by Marek Gregor on Grudzień 18th, 2009
Wpis ten potraktuję jako pomoc użytkownikom w mojej firmie ale można go też potraktować jako good practice.
So, go on….
Bardzo często filtrujemy po datach i bardzo dobrze po to są. Więc tworzymy mozolnie raport, robimy skomplikowane funkcje, przestawiamy to wszystko w tabelach przestawnych, robimy super kolorowe wykresy i… dodajemy filtr na daty tak aby pokazać wynik za poprzedni miesiąc czyli np filtrujemy jakies pole aby zawierało się w datach 2009-11-01 do 2009-11-30. Zapisujemy ten raport na pulpicie i już mamy gotowca którego możemy oglądać codziennie i cieszyć się dobrymi wynikami ale…. tylko przez miesiąc za miesiąc musimy wejść i przestawić datę i tak co miesiąc. Jeszcze gorzej jest gdy mamy raport filtrowany datą dzienną czyli załóżmy zawsze na wczoraj. Jakie jest rozwiązanie
1. Filtrować funkcją opartą na dacie (nie o tym ten topik ale pokażę) czyli np zamiast filtrować na sztywno w raporcie Data=’2009-11-16′ robimy filtr na funkcji która wygląda następująco:
Data=TIMESTAMPDIFF(SQL_TSI_DAY,Current_Date,1)
O funkcjach na datach zrobię osobny wpis
2. Użyć zmiennych przedefiniowanych przez administratora (czyli w VB Leasing przeze mnie
)
Otóż
Zrobiłem na potrzeby użytkowników szereg zmiennych tzw repozytorium które zwracają różne daty ustalane na podstawie bieżącej daty.
Oto lista tych zmiennych wraz z komentarzem i przykładem co zwróci taka zmienna zakładając że wykonana jest w dniu zrobienia tego wpisu tj w dniu: 2009-12-16
| Nazwa zmiennej | Opis | Przykład (dla dnia 2009-12-16) |
| varData1dago | wczorajsza data | 2009-12-15 |
| varData0mago | dzisiejsza data | 2009-12-16 |
| varData1mago | data miesiąc temu | 2009-11-16 |
| varData2mago | 2 miesiące temu | 2009-10-16 |
| varData3mago | 3 miesiące temu | 2009-09-16 |
| varData4mago | 4 miesiące temu | 2009-08-16 |
| varData5mago | 5 miesiące temu | 2009-07-16 |
| varData6mago | 6 miesiące temu | 2009-06-16 |
| varData12mago | 12 miesiące temu | 2008-12-16 |
| varFirstCurrent | pierwszy dzien bieżącego miesiąca | 2009-12-01 |
| varFirst1mago | pierwszy dzień 1 miesiąc temu | 2009-11-01 |
| varFirst2mago | pierwszy dzień 2 miesiąc temu | 2009-10-01 |
| varFirst3mago | pierwszy dzień 3 miesiąc temu | 2009-09-01 |
| varFirst4mago | pierwszy dzień 4 miesiąc temu | 2009-08-01 |
| varFirst5mago | pierwszy dzień 5 miesiąc temu | 2009-07-01 |
| varFirst6mago | pierwszy dzień 6 miesiąc temu | 2009-06-01 |
| varFirst12mago | pierwszy dzień 12 miesiąc temu | 2008-12-01 |
| varLastCurrent | ostatni dzien bieżącego miesiąca | 2009-12-31 |
| varLast1mago | ostatni dzień 1 miesiąc temu | 2009-11-30 |
| varLast2mago | ostatni dzień 2 miesiąc temu | 2009-10-31 |
| varLast3mago | ostatni dzień 3 miesiąc temu | 2009-09-30 |
| varLast4mago | ostatni dzień 4 miesiąc temu | 2009-08-31 |
| varLast5mago | ostatni dzień 5 miesiąc temu | 2009-07-31 |
| varLast6mago | ostatni dzień 6 miesiąc temu | 2009-06-30 |
| varLast12mago | ostatni dzień 12 miesiąc temu | 2008-12-31 |
| varRMcurrent | Rok miesiąć dzisiejszej daty | 2009-12 |
| varRM1mago | Rok miesiąć 1 miesiąc temu | 2009-11 |
| varRM2mago | Rok miesiąć 2 miesiące temu | 2009-10 |
| varRM3mago | Rok miesiąć 3 miesiące temu | 2009-09 |
| varRM6mago | Rok miesiąć 6 miesięcy temu | 2009-06 |
| varRM12mago | Rok miesiąć 12 miesięcy temu | 2008-12 |
| varRcurrent | bieżący rok | 2009 |
| varLastCurrent | ostatni dzień bieżącego roku | 2009-12-31 |
Tak więc użycie tak więc użycie takiej zmiennej i dynamiiczne filtrowanie danych będzie polegało na zastąpieniu statycznie wprowadzonej daty zmienną repozytorium.
Przykład:
Tworzymy raport z polem daty do filtrowania i filtrujemy

Wybieramy zmienną serwera

Wpisujemy zmienną z tabeli wyzej (na przykłądzie chce pokazac raport z dnia wczorajszego więc użyję zmiennej varData1dago)

i cieszymy się wynikiem

Dodano 2010-01-05
Dodałem jeszcze parę zmiennych do tego zestawu tj
tj zestaw zwracający daty od 13 do 24 miesięcy wstecz
varData13mago
varData14mago
varData15mago
varData16mago
varData17mago
varData18mago
varData19mago
varData20mago
varData20mago
varData20mago
varData20mago