Funkcje finansowe towarzyszą nam w codziennym życiu, choć wielu z nas nie zdaje sobie z tego sprawy. Zaciągamy kredyty, leasingujemy, inwestujemy i często mamy problem z obliczeniem podstawowych wskaźników.
Funkcje finansowe umożliwiają na przykład obliczanie wartości inwestycji lub amortyzacji, które są bardzo istotne dla funkcjonowania przedsiębiorstwa lub budżetu domowego.
Funkcje finansowe mogą być wam znane z Microsoft Excel. Okazuje się, że Crystal Reports również zawiera identyczną listą funkcji i można je z powodzeniem zastosować w raportach. Dzięki temu, że nazwy funkcji są identyczne jak w Excelu, można skorzystać z opisów pod tym linkiem.
W przypadku niektórych funkcji nie jest łatwe zadanie, gdyż używa się ich inaczej niż zwykłych funkcji agregujących takich jak suma lub średnia. Problem wynika z tego, że jako argument funkcji trzeba przekazać zmienną tablicową, a nie wprost wartość pola z tabeli.
Pokażę to na przykładzie funkcji NPV, która umożliwia obliczanie aktualnej wartości netto inwestycji na podstawie danej stopy dyskontowej oraz serii przyszłych płatności (wartości ujemne) i dochodów (wartości dodatnie). Dokładny opis funkcji NPV znajduje się tutaj
Składnia Crystal Reports:
NPV (rate, values)
gdzie rate - to stopa procentowa, a values - to lista wartości
Przykład:
NPV (0.05, [1000, 2000, 1500, 1200])
Niby proste wywołanie, ale w jaki sposób zamienić wartości poszczególnych rekordów na listę wartości?
Musimy to zrobić w 3 krokach:
- deklarujemy tablicę
- przepisujemy bieżące wartości rekordów do tablicy
- podstawiamy tablicę wartości do funkcji
1. Tworzymy formułę Init w nagłówku raportu (report header):
2. Tworzymy formułę Calculate i umieszczamy ją w sekcji szczegółów (details):
3. Tworzymy formułę Display w stopce raportu (report footer)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Deklaracja zmiennej tablicowej | |
shared currencyVar array items; | |
// Ustawiamy wielkość tablicy na podstawie ilości rekordów | |
Redim items [Count ({SalesOrderDetail.UnitPrice})]; | |
true |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Deklaracja zmiennej tablicowej | |
shared currencyVar array items; | |
// Jeśli wartość ujemna to podstawiamy jako pierwszy element | |
if {SalesOrderDetail.UnitPrice} < 0 then | |
items[1] := {SalesOrderDetail.UnitPrice} | |
else | |
items[recordnumber] := {SalesOrderDetail.UnitPrice}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// Deklaracja zmiennej tablicowej | |
shared currencyVar array items; | |
// Obliczenie funkcji NPV na podstawie wartości w tablicy | |
NPV(0.05, items) |
Gotowe.
Mam nadzieję, że teraz poradzicie sobie również z innymi funkcji finansowymi w Crystal Reports i zagoszczą one w waszych raportach. Powodzenia!
Komentarze