Krzysiek Krzysiek

Krzysiek Krzysiek specjali ds wdrożeń

Temat: Crystal Reports - Macierz - Problem sumą i jej dalszą...

Witam,
mam takie problem:
w macierzy w CR mam :

nazwa podsumowanie
n1 p1
n2 p2
gdzie:
p[nr] - suma sekund

Chciałbym po podsumowaniu dodać kolumnę, w której te sekundy zamieniam na godziny i minuty.
np za pomocą formuły:
ToText(FLOOR({p1}/3600),0)+ ":" + Right("0"+ToText(FLOOR(({p1} MOD 3600)/60),0),2)

Ale nie wiem jak to zrobić.
Do jak tworze sobie takie pole to jako podsumowanie w ekspercie macierzy mogę wybrać tylko liczebność, tryb itd ... ale nie uzyskuje zamierzonego efektu.

Bardzo proszę o pomoc.
dziękuję
Marcin S.

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

Temat: Crystal Reports - Macierz - Problem sumą i jej dalszą...

Zastosuj funkcję TimeSerial:


TimeSerial(0, 0, {@p1})


gdzie p1 to czas w sekundach.

Gotowe!

Później takie pole możesz sformatować i ukryć sekundy.
Krzysiek Krzysiek

Krzysiek Krzysiek specjali ds wdrożeń

Temat: Crystal Reports - Macierz - Problem sumą i jej dalszą...

Dziękuję za odpowiedź.

Ale może opiszę dokładniej mój problem.

Moje dane źródłowe to:

kolumna_1(identyfikator, może się powtarzać) kolumna_2(czas w sekundach)
k_1 _identyfikator c_1_sek
k_2 _identyfikator c_2_sek
k_3 _identyfikator c_3_sek
k_1 _identyfikator c_4_sek
k_3 _identyfikator c_5_sek
itd ...

Na początku raportu w szczegółach wyświetlam wszystkie dane powyższe, gdzie przedstawiam sobie też czas w formacie hh:mm.

Teraz muszę poniżej wyświetlić powyższe jako pogrupowanie po kolumnie_1 i suma_czasów (ale w formacie hh:mm).

Ponieważ nie wiem czy się da zrobić na raporcie drugą sekcję szczegółów (z podpiętym nowym widokiem), gdzie dane już są w takim formacie jak chce uzyskać zauważyłem.
Zauważyłem, że w CR jest opcja dodania macierzy i tak też zrobiłem w stopce grupy.
Efekty jaki udało mi się uzyskać to pogrupowanie po kolumnie 1 i kolumna_2 - suma (sekcja podsumowanie w ekspercie macierzy).
Tą sumę chciałbym przedstawić jako hh:mm - ale liczne próby uzyskania takiego efektu kończą się fiaskiem.
W Reporting Services Microsoftu można było dodać kolumnę i obrabiać dane z takiej kolumny podsumowania - ale niestety tutaj tak się chyba nie da.

:(
Jeżeli to możliwe proszę o pomoc.

P.S.
to jest uproszczenie bo w danych źródłowych jest jeszcze kolumna z użytkownikami - a raport jest tak zrobiony, że jednej użytkownik jest na jednej stornie.Ten post został edytowany przez Autora dnia 12.10.16 o godzinie 11:34
Marcin S.

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

Temat: Crystal Reports - Macierz - Problem sumą i jej dalszą...

Niestety nie rozumiem twojego opisu. Może lepiej wstaw szkic jak ma wyglądać taki raport to ci pomogę.
Tomasz J.

Tomasz J. finanse,
rachunkowość,
podatki,
raportowanie

Temat: Crystal Reports - Macierz - Problem sumą i jej dalszą...

Spróbuj użyć funkcji:
CTime({tutajTwojepolezsekundami} / 86400) według mnie rozwiązuje to problem poszczególnych wierszy i zamiast np. 123 sekund, otrzymujesz 02:03 (jeśli dobrze rozumiem o co chodzi..)

W tabeli przestawnej (macierzy) nie udało mi się podsumować według innego pola (aż takich sztuczek nie potrafię).

Ale, jeśli masz pogrupowany raport i dobrze sumuje pole sekund według ID, to użyj tej samej sumy w formule. u mnie wygląda to tak:

CTime(Sum ({tutajTwojepolezsekundami}, {tutajTwojpoleID}) / 86400) - UWAGA - crystal dorzuca tu w składni sumę, z tym że ta formuła nie była pisana z ręki - pogrupowałem raport (chyba tak jak Ty) i dopiero wtedy użyłem podsumowania które przygotował Crystal u mnie brzmi to mniej więcej tak:
(znak sumy)Grupa nr 1: tutajTwojpoleIID - A: Suma dla tutajTwojepolezsekundami

w pogrupowanym raporcie efekt uzyskujesz w zasadzie ten sam jaki uzyskałbyś w macierzy.
Krzysiek Krzysiek

Krzysiek Krzysiek specjali ds wdrożeń

Temat: Crystal Reports - Macierz - Problem sumą i jej dalszą...

Marcin S.:
Niestety nie rozumiem twojego opisu. Może lepiej wstaw szkic jak ma wyglądać taki raport to ci pomogę.

Z góry dzięki za pomoc.
Moźe fajtycznie opisałem to zbyt zagmatfanie.
Genrralnie chodzi o to, że w macierzy grupuje po kolumnie id, która nie jest unikatowa - powtarza się w tabeli, z której korzystam.
W podsumowaniu macierzy sumuje kolumnę sekundy.
I to wygląda ok. Tyle, że muszę ten czas przedstawić w godzina i minutach hh:mm.
I z tym mam problem. Bo jak tworzę sobie pole z formuła, która przedstawia czas w hh:mm i chce to wsgawic do podsumowania macierzy to nie moge uzyc sumy tylko liczebnosc, tryb itd... co daje mi bledne wyniki.
Marcin S.

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

Temat: Crystal Reports - Macierz - Problem sumą i jej dalszą...

Dzięki za dodatkowy opis.

W takim razie jeśli używasz macierzy to trzeba zastosować zaawansowane obliczanie.

1. Zaznacz macierz (cross-tab) i wybierz opcję Advanced Calculations -> Embedded Summary.


Obrazek


2. Wpisz formułę

TimeSerial(0, 0, GridValueAt (CurrentRowIndex,CurrentColumnIndex , 0 ))


Powstanie dodatkowe pole z podsumowaniem czasu w formacie hh:mm:ss

Teraz czas ukryć kolumnę z "surowymi" sekundy.

3. Wybierz opcję Cross-tab Expert -> Customize Style -> Summarized Fields i zaznacz opcję Horizontal


Obrazek


4. Zaznacz kolumnę z surowymi sekundami i wybierz opcję Suppress.

Gotowe!

Ja otrzymałem coś takiego:

Obrazek


Nie miałem pod ręką tabeli z pracownikami więc w przykładzie użyłem produktów :)

Daj znać czy ci się udało.

Powodzenia!Ten post został edytowany przez Autora dnia 13.10.16 o godzinie 22:22
Marcin S.

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

Temat: Crystal Reports - Macierz - Problem sumą i jej dalszą...

Jeszcze jedno... jeśli chcesz aby podsumowanie czasu było w formacie hh:mm czyli bez sekund to:
1. Zaznacz pole z podsumowaniem czasu
2. Wybierz opcję Format Field i wybierz odpowiedni format:

Obrazek


Efekt końcowy:

Obrazek
Krzysiek Krzysiek

Krzysiek Krzysiek specjali ds wdrożeń

Temat: Crystal Reports - Macierz - Problem sumą i jej dalszą...

Dziękuję za super opis !!
Używam wersji 11.5.7.636 i może tu być problem bo nie mam zaawansowanej kalkulacji w macierzy - niestety po kliknięciu prawym przyciskiem myszy w macierz nie widzę zaawansowanego obliczania.

Czy możliwe, że w tej wesji tego nie ma ?


Obrazek
Ten post został edytowany przez Autora dnia 14.10.16 o godzinie 08:56
Marcin S.

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

Temat: Crystal Reports - Macierz - Problem sumą i jej dalszą...

Tak, ta opcja jest dostępna dopiero od CR 2008. We wcześniejszych wersjach nie było takich możliwości i to był duży problem. Zastanów się w takim razie czy faktycznie potrzebujesz macierzy.
Czy liczba twoich wierszy jest zmienna? Jeśli stała to zastąp to zwykłym raportem kolumnowym.
Krzysiek Krzysiek

Krzysiek Krzysiek specjali ds wdrożeń

Temat: Crystal Reports - Macierz - Problem sumą i jej dalszą...

No właśnie ... niestety ... :(

Moim źródłem danych jest widok
nr_pracownika dzien nr_zlecenia czas_poswiecony_na_zlecenie.

W danym dniu nr_zlecenia może się powtarzać.

W parametrach raportu podaję nr pracownika i okres (dzień od -do).
Raport mam tak zbdowany, że pogrupowany jest po pracowniku i dniu.
I wyświetlam sumy czasu na dany dzień.
Każdy nastpępny pracownik jak na nowej stronie.
To działa ok, wygląda tak:


Obrazek


Teraz muszę dodać podsumowanie za cały miesiąc.
Robiąc to przez macierz uzyskuję to co chcę, ale czas w sekundach. A ja potrzebuje w hh:mm.

Jak inaczej mogę to zrobić ?Ten post został edytowany przez Autora dnia 14.10.16 o godzinie 13:15
Marcin S.

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

Temat: Crystal Reports - Macierz - Problem sumą i jej dalszą...

Czy to podsumowanie za cały miesiąc ma wyglądać w ten sposób:

Pracownik: imię i nazwisko
| dzień | czas |
| 1 | 5:25 |
| 2 | 2:00 |
| ... | .... |
| 31 | 0:30 |

suma: 7:55

--- nowa strona ---

Jeśli tak to nie jest potrzebna do tego macierz i mogę ci opisać rozwiązanie.
Krzysiek Krzysiek

Krzysiek Krzysiek specjali ds wdrożeń

Temat: Crystal Reports - Macierz - Problem sumą i jej dalszą...

Nie dokładnie tak. To co zostało do dorobienia nie jest widoczne na tym szablonie.
Tą macierz chciałem umieścić na dole strony.

To co opisałeś mam juź w szczegółach.
podsumowanie za cały mieśiąc nie powinno zawierać dni. Tylko:
Nr_zlecenia czas w hh:mm.
czyli powinno być podsumowane po nr_zlecenia za cały okres, bez podziłu na dni.

P.S.
dziękuję za pomoc.Ten post został edytowany przez Autora dnia 15.10.16 o godzinie 10:05
Marcin S.

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

Temat: Crystal Reports - Macierz - Problem sumą i jej dalszą...

Czyli coś takiego dla każdego pracownika:
| zlecenie | czas |
| ZL 1 | 5:25 |
| ZL 2 | 2:00 |
| ZL 3 | 2:00 |

w stopce grupy (Group Footer)?

Zgadza się?

W takim razie proponuję zamiast macierzy utworzyć podraport (subreport). Mogę ci dokładnie opisać ale potwierdź czy o to właśnie chodzi.
Krzysiek Krzysiek

Krzysiek Krzysiek specjali ds wdrożeń

Temat: Crystal Reports - Macierz - Problem sumą i jej dalszą...

Tak o to chodzi.
Marcin S.

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

Temat: Crystal Reports - Macierz - Problem sumą i jej dalszą...

W takim razie zamiast macierzy zastosujemy podraport powiązany z pracownikiem.

1. Wstaw grupowanie po pracowniku
2. Utwórz podraport (Insert -> Subreport)
3. W podraporcie wstaw grupowanie po id_zlecenia
4. W podraporcie utwórz formułę

timeserial(0, 0, Sum ({czas_w_sekundach}, {Zlecenia.Id_zlecenia}))

i umieść w nagłówku grupy zlecenia.

5. Ukryj szczegóły w podraporcie bo nie będą potrzebne (opcja suppress)
6. Podraport umieść w stopce grupy pracownika
7. Na podraporcie przejdź do opcji Change Subreport Links i wskaż powiązanie pomiędzy raportem głównym a podraportem (identyfikator pracownika).

Gotowe.

Powodzenia!
Krzysiek Krzysiek

Krzysiek Krzysiek specjali ds wdrożeń

Temat: Crystal Reports - Macierz - Problem sumą i jej dalszą...

Jeszcze raz dzięki ... dzisiaj spróbuję to zrobić :)

Następna dyskusja:

Problem przy instalacji Cry...




Wyślij zaproszenie do