Marcin S.

Marcin S. BI Consultant, ETL
developer

Temat: Cross Tab lub inne rozwiazanie

Witam,

'biznes' wymyslil sobie raport z policzonymi rekordami (child-ach) wg tzw. Priorytetow (1,2,3,4,5 - 1 jako najwazniejszy). W kolumnie ma znajdowac sie Kraj (z rekordu nadrzednego - parenta), ktorego rekord dotyczy, natomiast w wierszach Kategorie i Podkategoriie okreslone na rekordach (child-ach).

W Cross-Tabie wyglada to tak:
- columns: Kraj (kraj jest pobierany z rodzica - parenta), wartosci z widoku; Priorytet - dotyczy child-a
- rows: Kategoria; Podkategoria (dotyczy child-a)
- summarized fields: distinctCount rec.id (id rekordu - child)

W efekcie dostaje cos takiego:

Kraj
Total | Priorytet1 | Priorytet2 | Priorytet3
Kategoria1 | Podkategoria1 | 4 | 1 | 2 | 1
...

Co oznacza w sumie 4 rekordy w tej kategorii i podkategorii z rozbiciem na priorytety. Jezeli w Kategorii1/Podkategorii1 nie wystepuje rekord z jednym z Priorytetow, wowczas kolumny, np. Priorytet2 nie bedzie na raporcie. Natomiast jezeli w nastepnej Kategorii2/Podkategorii2 wystapi rekord z okreslonym Priorytetem2, to dla Kategorii1/Podkategorii1 w tej kolumnie bedzie 0 .

Biznes jest zainteresowany tylko pierwszymi trzema poziomami priorytetow oraz pokolorowaniem pol z wartosciami dla kazdego priorytetu. Problem w tym ze kiedy w 'Format Field' probuje przypisac kolor dla tla pola (lub kolor czcionki), wowczas wszystkie priorytety maja jeden kolor. Formule dla zmiany koloru ustawiam na polu, po ktorym sumuje/zliczam czyli distinctCount rec.id (id rekordu - child):

if {Widok_Priorytet_wartosc} like 'Priorytet1'
then crRed
else if {Widok_Priorytet_wartosc} like 'Priorytet2'
then crYellow
else if {Widok_Priorytet_wartosc} like 'Priorytet3'
then crAqua
else crNoColor

Bede wdzieczny za sugestie, pomoc.
Pozdrawiam
Marcin S.

Marcin S. Programista, trener
i konsultant w
zakresie .NET/.NET
Cor...

Temat: Cross Tab lub inne rozwiazanie

Zamiast Format Field wykorzystaj opcję Hightlighting Expert.
Marcin S.

Marcin S. BI Consultant, ETL
developer

Temat: Cross Tab lub inne rozwiazanie

dzieki, nie wpadlem na to.

Czy w cross-tabie mozna jakos ustawic rozszerzanie pola w wierszach, opcja can grow jest wyszrzona ?
Wiem jakie teraz mam dlugie wartosci dla Kategorii i Podkategorii i moge dostosowac szerokosc/wysokosc pol recznie, ale to srodowisko testowe.
Marcin S.

Marcin S. Programista, trener
i konsultant w
zakresie .NET/.NET
Cor...

Temat: Cross Tab lub inne rozwiazanie

Niestety, cross-tab pozbawiony jest takiej możliwości. Można najwyżej zwiększyć wysokość wiersza i zawartość będzie automatycznie zawijana. Niestety jeśli tekst będzie krótki, to wysokość wiersza się nie zmniejszy.

Możesz ewentualnie zastosować inne rozwiązanie - zmiana rozmiaru czcionki zależnie od długości tekstu:
if len(currentfieldvalue) > 20 then 6 else 10

pomysł zaczerpnięty z dyskusji:
http://www.tek-tips.com/viewthread.cfm?qid=1356549Marcin Sulecki edytował(a) ten post dnia 20.12.11 o godzinie 11:39
Marcin S.

Marcin S. BI Consultant, ETL
developer

Temat: Cross Tab lub inne rozwiazanie

Dzieki.
Czy w cross-tabie mozna ustawic 'keep group togheter' dla kolumny? W moim przypadku sa to kraje. Dla kazdego kraju wyswietlam 'Total' liczony dla Priorytetow i niestety dzieli mi kraj na dwie strony, co po eksporcie do .pdfa wyglada kiepsko.
W Customize Style w Cross-Tab Expercie mam zaznaczone 'Columns Header'.

Po za tym czy istnieje mozliwosc wstawienia tytulu raportu i logo na kazdej stronie, ktora jest przerzucana ? Logo powtarza sie w momencie kiedy np. dla 10-ciu wierszy mieszczacych sie na stronie, dojdziemy do konca listy krajow, wowczas na nastepnej stronie pojawia sie tytul i logo.Jedno i drugie mam w tym samym Page Header-ze.
Marcin S.

Marcin S. Programista, trener
i konsultant w
zakresie .NET/.NET
Cor...

Temat: Cross Tab lub inne rozwiazanie

1. Opcja Keep group togheter dla kolumny
Oczywiście. W cross-tab w Customize Style jest opcja Keep Column Together, która pilnuje, aby kolumna nie było przecięta w połowie. Ale to jest domyślnie włączony, więc podejrzewam, że masz inny problem. Przydałby się jakiś zrzut.

2. Tytuł i logo na każdej stronie

1. Umieść tytuł i logo w Page Header
2. Zaznacz wszystkie obiekty w Page Header
3. Wybierz pod prawym przyciskiem Format Object, zakładka Common
4. Zaznacz opcję Repeat on Horizontal Pages

Gotowe.
Marcin S.

Marcin S. BI Consultant, ETL
developer

Temat: Cross Tab lub inne rozwiazanie

ad. 1
Zrzut czego bys chcial zobaczyc ?

ad.2
Dzieki, dziala, to bylo to :)
Marcin S.

Marcin S. Programista, trener
i konsultant w
zakresie .NET/.NET
Cor...

Temat: Cross Tab lub inne rozwiazanie

ad. 1
Zrzut tego raportu, albo chociaż jego fragment, bo nie wiem na czym dokładnie polega twój problem.
Marcin S.

Marcin S. Programista, trener
i konsultant w
zakresie .NET/.NET
Cor...

Temat: Cross Tab lub inne rozwiazanie

ad 1.
Już rozumiem. Potrzebujesz opcji w stylu Keep Group Together, która działałaby na cross-tab'ie. Niestety nie ma takiej opcji :(
Marcin S.

Marcin S. BI Consultant, ETL
developer

Temat: Cross Tab lub inne rozwiazanie

1. sorry za brak zrzutu, w ciagu dnia nie moglem, pozniej wylecialo mi z glowy.
2. dzieki za pomoc.

Dokladnie, tak - keep group together mi brakuje. Eksport do .pdfa wyglada mniej wiecej jak wydruk arkusza .xls wykraczajacego poza marginesy strony - np. dwie kolumny na nowej stronie :(

Cross-Tab jest niestety jak dla mnie ulomny ale z drugiej strony nie przychodzi mi do glowy inne rozwiazanie do stworzenia raportu.
Marcin S.

Marcin S. Programista, trener
i konsultant w
zakresie .NET/.NET
Cor...

Temat: Cross Tab lub inne rozwiazanie

No niestety cross-tab ma wiele braków, mimo swoich dużych możliwości. Na przykład nie można modyfikować marginesu pomiędzy wartością a obramowaniem komórki. Już nie raz zdarzyło mi się porzucić cross-tab i zrobić raport tradycyjną metodą.
Marcin S.

Marcin S. BI Consultant, ETL
developer

Temat: Cross Tab lub inne rozwiazanie

Ja wylaczylem marginesy w tym przypadku i odsunalem wartosci od linii ustawiajac Paragraph w Format Field dla tekstow i wysrodkowalem w przypadku liczb, ale brakuje (nie tylko w Cross-Tabie) mi jeszcze mozliwosci wysrodkowania 'middle/top/bottom' :/
Marcin S.

Marcin S. Programista, trener
i konsultant w
zakresie .NET/.NET
Cor...

Temat: Cross Tab lub inne rozwiazanie

Ja wylaczylem marginesy w tym przypadku i odsunalem wartosci od linii ustawiajac Paragraph w Format Field dla tekstow i wysrodkowalem w przypadku liczb,

Dzięki za wskazówkę, sprawdzę u siebie:)

ale brakuje (nie tylko w Cross-Tabie) mi jeszcze mozliwosci wysrodkowania 'middle/top/bottom' :/

oj tak :)

Następna dyskusja:

Cross tab




Wyślij zaproszenie do