SSRS ilə hesabatlılıq: yaranan çətinliklər və onların həlli (1 hissə)
Salam. Bu məqalədə mən SSRS (SQL Server Reporting Services) hesabat inkişafı zamanı yaranan problemlər və onların həllini göstərəcəm. Daha ətraflı:
- Sütun/Cədvəl/Sıranın əks onunan dəyərlərdən aslı olaraq gizlənilməsi.
- Xananın dəyərdən aslı olaraq rənginin dəyişdirilməsi.
- Hesabatın parameterlərin ayrı hesabata ötürülməsi
Sütun/Cədvəl/Sıranın əks onunan dəyərlərdən aslı olaraq gizlənilməsi.
Problem: Satış şöbəsinə təqdim olunan hesabatda tarix aralığında imtina olunan xidmətlər olmasa da məlumat hesabatda əks olunur. Yer tutmaması və çaşqınlıq yaradılmaması üçün imtina olmadıqda sütunu gizlətmək lazımdır.
Həll: Digər məqaləmdə yaratdığım cədvələ müraciət edək. Orada siz “Alışdan sonra imtina” sütunundakı dəyərin “0” olduğunu görürsünüz. Biz sütunda dəyər “0”-a bərabər olduğu halda o sütunu gizlətmək istəyirik.
Bunun üçün lazımi sütun üzərinə sağ maus düyməsi – “Column Visibility”.
Sonra “Show or hide based on an expression” seçib xana yanında “Expression” düyməsinə basırıq. Açılan pəncərədə “IIF” funksiyasından istifadə edərək yazırıq:
=IIF(Fields!AlishdanSonraImtina.Value = 0,True,False) |
=Əgər(Xanadaki dəyər bərabərdir 0, o zaman Gizlət, əks halda Göstər) |
Funksiyanı yazarkən pəncərədə qeyd olunmuş “Category” altlığındakı köməkçilərdən istifadə edə bilərsiniz.
- Fields(%DataSetAdı%) xanasından filtr aparmaq istədiyiniz dəyəri,
- Constants xanasından “Sütnunu qizlətmək ya yox” məntiqinin ala biləcək dəyərləri (True(gizlətmək)/False (göstərmək)
- Program Flow-dan ‘IIF’ məntiqi.
Nəticə: Dəyər sıfıra bərabər olduğundan sütun əks olunmur.
Cədvəl və ya sıraları “gizlətmək” üçün müvafiq olaraq cədvəl və ya sıranı seçərək eyni əməliyyatlar aparmaq lazımdır.
Xananın dəyərdən aslı olaraq rəngin dəyişdirilməsi.
Problem: Satış şöbəsi müdirinin dəyərdən aslı olaraq xananın rəngin dəyişmək tələbi var. Məsəl üçün:
Əgər “Cəmi məbləğ” 30 000 AZN-dirsə o zaman qırmızı, 30 000 AZN-dən 45 000 AZN-dək sarı, 45 000 AZN+ yaşıl rəngə boyanmalıdır.
=IIF(Fields!CemiMebleg.Value,<30000,"Red",IIF(Fields!CemiMebleg.Value<90,"Yellow","Green")) |
=Əgər(CəmiMəbləğ 30000 azdırsa o zaman Qırmızı rəng, əks halda növbəti Əgər(Əgər CəmiMəbləğ 45000 azdırsa o zaman Sarı rəng, əks halda Yaşıl rəng)) |
Həll: Rəngin dəyişilməsi lazım olan xananı seçib üzərinə sağ maus düyməsi basıb “Text Box properties” seçmək, sonra “Fill” menyusuna keçid edib “Fill Color” seçiminin yanında yerləşən “Expression” düyməsinə basmaq lazımdır.
Funksiyanı yazarkən pəncərədə qeyd olunmuş “Category” altlığındaki köməkçilərdən istifadə edə bilərsiniz.
- Fields(%DataSetAdı%) xanasından filtr aparmaq istədiyiniz dəyəri,
- Constants xanasından mümkün rəngləri
- Program Flow-dan ‘IIF’ məntiqi.
Nəticə:
Hesabatın parameterlərin ayrı hesabata ötürülməsi
Problem:
Bizdə 2 hesabat var:
- Gün ərzində qəbul olunmuş ödənişlər
- Satılmış xidmətlər
Bizə “Gün ərzində qəbul olunmuş ödənişlər” arasında sadəcə ödəniş koduna tıklamaq ilə “Satılmış xidmətlər” hesabatından bu xidmət üzrə təfərruatlar almaq ehtiyacı yaranıb.
Həll:
İlk öncə “Satılmış xidmətlər” hesabatındaki SQL sorğunu dəyişmək lazımdır.
Ilkin sorğunu təqdim edirəm.
SELECT status,amount, sub_start_date,sub_end_date, sub_code FROM sales;
Biz bu sorğu sonuna
WHERE sub_code = @sub_code
kod parçasın əlavə etmək ilə idarə oluna bilən ‘@sub_code’ parameterin əlavə etdik. Bundan sonra biz “Gün ərzində qəbul olunmuş ödənişlər” hesabatı şablonuna daxil olub orada olan “Abunə nömrəsi” sütunun “data” hissəsinə tıklayaraq “Text Box properties” menyusuna daxil oluruq.
Pəncərədə “Action” seçimini edərək “Go to report” xanasını seçərək “Specify report” siyahısından “Satılmış xidmətlər” hesabatını seçib “Add” düyməsini basmaq lazımdır. Sonra “Name” xanasından “Satılmış xidmətlər” hesabatında mövcud olan parameterlərdən “sub_code’ seçib onun cari hesabatdan bərabər olan sütunu [sub_code] seçik OK basırıq.
Nəticə: Artıq “Gün ərzində qəbul olunmuş ödənişlər” hesabatından sadəcə ödəniş koduna tıklayaraq “Satılmış xidmətlər” hesabatına keçib yalnız bu abunə kodu haqqında məlumat görə biləcəksiniz.
Şərhlər ( 1 )
Super !!!