Tomasz Drzazga

Tomasz Drzazga Informatyk, Infolex
Duszniki-Zdrój

Temat: Pola wyrażeń SQL - brak opcji

Witam,

W eksploratorze pól nie mam opcji "Pola wyrażeń SQL". Zastanawiam się co zrobić, aby była możliwość dodatnia "Pola wyrażeń SQL" tak, aby była ona widoczna w eksloratorze pól. Gdzieś czytałem, że Crystal reports sam decyduje czy to pole ma sens w danym raporcie i wtedy opcja jest destępna lub nie.
W moim raporcie dane pobieram za pomocą Polecenia (Command) i może dlatego nie mam tej opcji.
Może da się to jakoś wymusić, a może po prostu zamiast "Pola wyrażeń SQL" muszę dodać kolejne polecenie i połaczyć oba.
Przemysław Janczewski

Przemysław Janczewski Administrator
systemu IT

Temat: Pola wyrażeń SQL - brak opcji

Command + command daje radę nie wiem jednak jak będzie wyglądała jego wydajność.
Zamiast commanda może spróbować zrobić widok w bazie i do niego dopiąć sql?
Piotr Dryńkowski

Piotr Dryńkowski Specjalista ds.
Systemów ERP,
Crystal Reports,
PL/SQL

Temat: Pola wyrażeń SQL - brak opcji

Pole wyrażeń SQL jest zawsze dostępne jeśli raport jest oparty na Visual Link, nigdy jeśli jest na command/procedure.
Zauważyłem podglądając zapytanie SQL w raporcie w którym używałem wyrażeń SQL, że Crystal poprostu zagnieżdża wyrażenia w głównym Select np

Select
tab.kol1,
tab.kol2,
(select tab1.kol1 from tab.1 where...) pole wyrażeń sql1,
(select tab1.kol1 from tab.1....) pole wyrażeń sql2
from tab

Więc spokojnie możesz w ten sposób sobie poradzić.
Pamiętaj, że taki zagnieżdżony select musi wynik skalarny (jeden wiersz jedna kolumna) - identycznie jak w Polu Wyrażeń SQL w CRTen post został edytowany przez Autora dnia 02.12.15 o godzinie 11:32
Krzysztof Wojtal

Krzysztof Wojtal Specjalista ds
systemu ERP, PL/SQL,
Crystal rep., Power
B...

Temat: Pola wyrażeń SQL - brak opcji

Cześć,

Jeżeli oparłeś raport na zapytaniu SQL, to ta opcja faktycznie jest niedostępna. Pytanie, co chciałeś poprzez "Pola wyrażeń SQL" odczytać? Czy dane cykliczne, czy tylko coś do np. nagłówka raportu. Jeżeli do nagłówka, to możesz zbudować sobie raport i podpiąć go jako podraport. Jeżeli pobierasz cyklicznie jakieś dane, to możesz rozbudować sobie zapytanie SQL.
Ja stosuję tylko zapytanie SQL w raportach, ponieważ:
- mam podgląd do danych jakie mi zwraca,
- jestem pewien, że parametry przekazane i użyte w zapytaniu zwrócą mi tylko potrzebne dane,
- parametry wielokrotne (przekazane kilka wyników) są obsługiwane po stronie zapytania,
- wielkość paczki danych przesyłana po sieci jest istotna, a nie zawsze Crystal radzi sobie z parametrami aby przekazać je jako WHERE i zwraca całą masę danych, co blokuje sieć i wydłuża czas wykonania raportu, ponieważ to stacja robocza użytkownika musi jeszcze przefiltrować dane.

Jeżeli chodzi o podraporty, to stosowanie ich np. w detalach mija się z celem, ponieważ jeżeli główne zapytanie zwróci ci 1000 rekordów i do każdego z nich będziesz chciał wykonać podraport, to zostanie przekazane kolejnych 1000 zapytani do serwera, co znacząco wydłuży wykonanie raportu. Ja z doświadczenia wiem, że raport z podraportami potrafi się wykonywać np. 2 min, a oparty tylko na samym zapytaniu wykona się w kilka sekund.

Pozdrawiam
Krzysiek
Tomasz Drzazga

Tomasz Drzazga Informatyk, Infolex
Duszniki-Zdrój

Temat: Pola wyrażeń SQL - brak opcji

Dziękuję za odpowiedzi.
Faktycznie jest tak, że jak kożystam z Command to nie ma opcji "Pola wyrażeń SQL". Jak dodaję tabele i łaczę je (pola baz danych) to opcja jest dostępna.
Poradziłem sobie tak, że stworzyłem funkcję która pobiera parametry i zwraca wynik w głównym Command.

Wniosek jest taki, że jesli "Pola wyrażeń SQL" są niedostępne to można sobie poradzić w inny spodób.

Dzięki jeszce raz
Marcin S.

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

Temat: Pola wyrażeń SQL - brak opcji

Zgadza się, jeśli korzystasz z SQL Command to opcja SQL Expression jest faktycznie niedostępna.
Ale nawet jeśli byłaby dostępna to najlepiej wszystkie pola pobrać za pomocą jednego zapytania w SQL Command niż strzelać kilka razy do bazy danych.

I jeszcze jedna dobra rada - gdy używasz SQL Command nie korzystaj ze standardowych parametrów raportu lecz tych dostępnych w okienku Command.

Standardowe parametry oczywiście zadziałają, ale spadnie wydajność, bo raport pobiera wszystkie dane na komputer lokalny i dopiero wówczas zaczyna filtrować na podstawie parametru.
Jeśli użyjesz parametrów w Command to całe przetwarzanie będzie na serwerze bazy danych.

Pamiętaj również, że zamiast Command możesz utworzyć procedurę składowaną w bazie danych i z niej skorzystać jako źródło raportu. To będzie jeszcze bardziej wydajne.

Następna dyskusja:

Pola wyrażeń SQL




Wyślij zaproszenie do