Dorota Trybała

Dorota Trybała
Projektant-programis
ta

Temat: Kryteria wyboru, parametry, nagłówek raportu

Potrzebuję rozwiązać następujące zagadnienie:
- Stworzyłam aplikację w VS, która w głównym oknie wyświetla rekordy wg zadanego kryterium i kryteria te zapisane są w tablicy.
- Te same kryteria stosuję do wybrania danych w raporcie (CR for VS 2010).

Nie wiem jak teraz:
1. Wydrukować te kryteria w nagłówku raportu.
2. Powtórzyć te kryteria w sekcji parametrów raportu, aby użytkownik mógł sobie filtrować dane do raportu bez cofania się do kryteriów w aplikacji.

Szczególnie zależy mi na rozwiązaniu 1. problemu.
Bartosz Michalski

Bartosz Michalski back-end developer,
specjalista z dużym
doświadczeniem w ...

Temat: Kryteria wyboru, parametry, nagłówek raportu

Dorota Trybała:
Potrzebuję rozwiązać następujące zagadnienie:
- Stworzyłam aplikację w VS, która w głównym oknie wyświetla rekordy wg zadanego kryterium i kryteria te zapisane są w tablicy.
- Te same kryteria stosuję do wybrania danych w raporcie (CR for VS 2010).

Nie wiem jak teraz:
1. Wydrukować te kryteria w nagłówku raportu.
2. Powtórzyć te kryteria w sekcji parametrów raportu, aby użytkownik mógł sobie filtrować dane do raportu bez cofania się do kryteriów w aplikacji.

Szczególnie zależy mi na rozwiązaniu 1. problemu.
ad1. może warto spróbować zrobić podraport z wyświetleniem danych z tablicy z kryteriami
ad2. nie do końca rozumiem :/ może udałoby się napisać coś szerzej :)
Dorota Trybała

Dorota Trybała
Projektant-programis
ta

Temat: Kryteria wyboru, parametry, nagłówek raportu

Ad.1. Odnośnie tego podraportu, to czy można wydrukować zawartość tablicy pamięciowej? Zaznaczam, że napisałam "tablica", w odróżnieniu od tabeli bazy danych. Jeśli tak, to pewnie to jest dobry pomysł, tylko póki co nie wiem jak to zrobić.
Ad.2. Już tłumaczę.
Załóżmy, że klient to sprzedawca internetowy, który w aplikacji filtruje rekordy i wyświetla sobie na ekranie, a kryterium jest takie:
miejscowość = 'KRAKÓW'
rodzaj_przesylki = 'POCZTA POLSKA'
następnie przechodzi do raportów i drukuje.
Chciałabym przechowywane w tablicy pamięciowej kryteria wyświetlić mu jako parametry raportu, żeby mógł je jeszcze zmieniać, aby gdy zachce zmodyfikować coś w tym kryterium zmienić tylko rodzaj_przesylki na 'KURIER' nie musiał wychodzić z raportu i ustawiać kryteriów w aplikacji.

Czy teraz wytłumaczyłam to wystarczająco jasno :)?
Marcin S.

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

Temat: Kryteria wyboru, parametry, nagłówek raportu

Musisz utworzyć odpowiednie parametry w raporcie i umieścić je w nagłówku.
Następnie przekazywać kryteria wyboru jako poszczególne parametry ReportDocument.SetParameterValue()

Aby użytkownik mógł szybko zmieniać kryteria bez potrzeby wychodzenia z raportu możesz wykorzystać panel z parametrami, który pojawił się w CR 2008.
Ewentualnie jeśli nie podoba się oryginalny panel dostarczony przez Crystala, to możesz stworzyć własny i na jego podstawie przekazywać wartości do raportu.
Oczywiście poprzez API.

Jeśli panel ma być uniwersalny dla każdego raportu to będziesz musiała zczytywać właściwości poszczególnych parametrów i tworzyć odpowiednie kontrolki. Jest z tym trochę roboty, ale zrobiłem coś takiego :)
Dorota Trybała

Dorota Trybała
Projektant-programis
ta

Temat: Kryteria wyboru, parametry, nagłówek raportu

Wiem, że trzeba stworzyć parametry i to m/w wiem jak robić, ale interesuje mnie to, czy można przejąć te parametry z programu w VS (C#) wywołującego raport.
Nie wiem też jak te parametry nie tylko umieścić jako kontrolki, ale WYDRUKOWAĆ w nagłówku.
Marcin S.

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

Temat: Kryteria wyboru, parametry, nagłówek raportu

Można również wyświetlić informacje, które są w pamięci - Crystal Reports potrafi pobrać dane z DataSet'a .NET

http://www.c-sharpcorner.com/UploadFile/rsubhajit/Crys...

i stworzyć uniwersalny podraport, który będzie wyświetlał zawartość tego dataseta jako listę parametrów.

Niestety jeśli twoja aplikacja nie korzysta z DataSet'ów to trzeba będzie go stworzyć i wypełnić.

Osobiście zalecam przekazywanie parametrów wprost do raportu bo to łatwiejsza metoda.
Marcin S.

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

Temat: Kryteria wyboru, parametry, nagłówek raportu

Co masz na myśli pisząć "przejąć te parametry"?

Za pomocą API można odczytać listę parametrów wraz z ich właściwościami i wartościami. I na przykład zmienić wartości tych parametrów.
Marcin S.

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

Temat: Kryteria wyboru, parametry, nagłówek raportu

Z kolei aby wydrukować wartości parametrów w nagłówku raportu, wystarczy je tam umieścić na zasadzie przenieść-i-upuść.
Dorota Trybała

Dorota Trybała
Projektant-programis
ta

Temat: Kryteria wyboru, parametry, nagłówek raportu

Kryteria filtrowania rekordów przejmuję z aplikacji (trzymam je w tablicy pamięciowej) i buduję SQLCommand. Chciałabym jeszcze te kryteria wydrukować w nagłówku albo w sposób dynamiczny wypełnić nimi parametry. Mam kilkanaście kryteriów i użytkownik decyduje, których potrzebuje, a program powinien zaprezentować tylko te kryteria, które zostały wybrane.

Czy teraz dobrze to wyjaśniłam?

Czy możesz mi wrzucić jakiś link prezentujący przejmowanie parametrów za pomocą API?Dorota Trybała edytował(a) ten post dnia 21.03.11 o godzinie 10:21
Dorota Trybała

Dorota Trybała
Projektant-programis
ta

Temat: Kryteria wyboru, parametry, nagłówek raportu

Już wiem jak te parametry przejąć i zastosować w raporcie. Tu jest rozwiązanie:
http://codeguru.pl/frmThread.aspx?id=472560
i tutaj:
http://forum.4programmers.net/C_i_.NET/115335-Crystal_...Dorota Trybała edytował(a) ten post dnia 23.03.11 o godzinie 12:10
Marcin S.

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

Temat: Kryteria wyboru, parametry, nagłówek raportu

Cieszę się, że udało ci znaleźć przykład w sieci.

Nie miałem czasu podeśłać.

osobiście używam metody: SetParameterValue zamiast (starszej) ApplyCurrentValues to ustawiania wartości parametrów.

Ale przyznam, że jest trochę zabawy jeśli chcemy bardzo dokładnie odczytać właściwości każdego parametru.
Dorota Trybała

Dorota Trybała
Projektant-programis
ta

Temat: Kryteria wyboru, parametry, nagłówek raportu

Marcin Sulecki:
osobiście używam metody: SetParameterValue zamiast (starszej) ApplyCurrentValues to ustawiania wartości parametrów.

Ale przyznam, że jest trochę zabawy jeśli chcemy bardzo dokładnie odczytać właściwości każdego parametru.

Użyłam właśnie SetParameterValue. Co masz na myśli pisząc "bardzo dokładnie"? Możesz to rozwinąć? Na razie robimy najprostsze raporty i wydaje mi się, że najtrudniejsze jest przygotowanie formuły w Selecting Formula. Może czegoś jeszcze nie jestem świadoma...Dorota Trybała edytował(a) ten post dnia 30.03.11 o godzinie 09:29
Marcin S.

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

Temat: Kryteria wyboru, parametry, nagłówek raportu

mam na myśli odczytanie wszystkich właściwości parametru:
- podstawowe: typ, nazwa, opis
- rozszerzone: np. czy parametr jest opcjonalny

później jest niezła zabawa w ustawianie wartości parametrów, zwłaszcza jeśli są to parametry typu multi-value.

Wszystko można zrobić, ale CR API nie jest w tym przypadku intuicyjne i trzeba się czasami naszukać.
Dorota Trybała

Dorota Trybała
Projektant-programis
ta

Temat: Kryteria wyboru, parametry, nagłówek raportu

A masz pod ręką jakiś dobry przykład z sieci z użyciem parametrów multi-value?Dorota Trybała edytował(a) ten post dnia 31.03.11 o godzinie 08:48
Dorota Trybała

Dorota Trybała
Projektant-programis
ta

Temat: Kryteria wyboru, parametry, nagłówek raportu

Zadam bardziej szczegółowe pytanie i liczę na pomoc szanownego grona.
Mam parametr np. parData, który ma służyć do filtrowania danych. Potrafię zrobić tak, aby raport wyświetlił tylko dane, których odpowiednie pole typu data równa się temu wprowadzonemu do parametru. Czy w przypadku dat od...do:
- muszę użyć kolejnego parametru i obsłużyć wszystko w Selection Formula, czy
- mogę ustawić określone właściwości parData (mam na myśli StartValue i EndValue)?
Jeśli to drugie, to bardzo proszę o przykład kodu, bo nie mam pojęcia jak to zrobić.

konto usunięte

Temat: Kryteria wyboru, parametry, nagłówek raportu

Kod bedzie z Java, ale w C# powinno byc cos podobnego.

ParameterFieldRangeValue newRangeValue = new ParameterFieldRangeValue ();
newRangeValue.setBeginValue (beginValue);
newRangeValue.setLowerBoundType (lowerBoundType);
newRangeValue.setEndValue (endValue);
newRangeValue.setUpperBoundType (upperBoundType);
...
clientDoc.getDataDefController ().getParameterFieldController ().setCurrentValue (subreportName, parameterName, newRangeValue);


W przypadku "no lower/no upper value przekazujesz null.Wlodzimierz M. edytował(a) ten post dnia 05.04.11 o godzinie 08:54
Dorota Trybała

Dorota Trybała
Projektant-programis
ta

Temat: Kryteria wyboru, parametry, nagłówek raportu

Dzięki za ten kawałek. Rzeczywiście jest do zastosowania :) Nie wiem tylko gdzie jest odwołanie do konkretnego parametru, czyli jak np. parametr nazywa się parData, to jak to w programie zastosować. To RangeValue widziałam już wiele razy, ale po prostu nie wiem jak to się wiąże z konkretnym paramatrem.
A czy parametr w raporcie ma mieć jakoś szczególnie ustawione właściwości (zezwalaj na wartości dyskretne, wielowartościowość, zakresy wartości)?Dorota Trybała edytował(a) ten post dnia 05.04.11 o godzinie 10:20Dorota Trybała edytował(a) ten post dnia 05.04.11 o godzinie 10:22

konto usunięte

Temat: Kryteria wyboru, parametry, nagłówek raportu

Zwroc uwage na ostatnia linijke:

...setCurrentValue (subreportName, parameterName, newRangeValue);

SubreportName: jesli nie masz subreportow to null
parameterName: wlasnie to. nazwa parametru - w twoim wypadku parData

Do setBeginValue()/setEndValue() przekaz obiekty klasy Date - klasa powininna sobie poradzic z konwersja.

Co do ustawien parametrow - koniec jezyka za przewodnika :-). Jak potrzebujesz zakresu dat, to raczej nie interesuje Cie wielowartosciowosc...
Sławomir M.

Sławomir M. Specjalista ds.
jakości
oprogramowania,
Asseco Business S...

Temat: Kryteria wyboru, parametry, nagłówek raportu

Szczerze mówiąc nie miałem czasu na prześledzenie całego wątku ale jeśli chodzi o zakres dat to wystarczy w Paremeter Fields dodać parametr np. {?Zakres dat}, gdzie wybieramy typ danych jako data oraz zezwolić na zakresy wartości.
W warunkach raportu robimy warunek {Route.RouteDate} in({?Zakres dat}) i przy uruchamianiu raportu pojawia się takie oto okienko:

Obrazek
Sławomir Malinowski edytował(a) ten post dnia 08.04.11 o godzinie 15:41
Dorota Trybała

Dorota Trybała
Projektant-programis
ta

Temat: Kryteria wyboru, parametry, nagłówek raportu

Tak m/w zrobiłam i poszło. Dziękuję wszystkim za odpowiedzi. Pewnie niedługo znów o coś zapytam ;)



Wyślij zaproszenie do