Przejdź do głównej zawartości

Słownie złotych

Czasami na raportach, na przykład na fakturach, zachodzi potrzeba zamiany liczby na słownie złotych. Crystal to umożliwia ale tylko na język ang.

Dlatego napisałem funkcję UFL do CR, która to realizuje.

Jest to funkcja typu Crystal Reports UFL (User Function Libraries) i korzysta sie z niej tak samo jak z wbudowanych funkcji Crystal Reports.

Obecny zakres liczb od 0 do biliona.

Opis instalacji

0. Pobierz

1. Rozpakować archiwum i skopiować plik CRUFLslw.dll do np. katalogu C:\WINDOWS\system32

2. Uruchomić linię poleceń: CMD

3. Przejść do katalogu z plikiem: CD C:\WINDOWS\system32

3. Uruchomić polecenie rejestracji biblioteki: regsvr32 CRUFLslw.dll

Powinno wyświetlić się okno z informacją "DllRegisterServer in CRUFLslw.dll succeeded."

4. Uruchomić Crystal Reports

5. Utworzyć nową formułę i wpisać np. slownie(123.45)

Przetestowałem również z Crystal Reports 2008 i działa.

Komentarze

Anonimowy pisze…
Wielkie dzięki, a już zabierałem sie do tworzenia mega funkcji IF co by przetlumaczyc angielski na polski. Biblioteka baaaaaardzo sie przyda, pozdrawiam serdecznie
Unknown pisze…
Super!!! Funkcja działa też na starym Crystal Reports 8.5...wielkie dzięki...ratuje mi skórę :)
Tomek pisze…
Mam Pytanie a czy jest możliwość żeby ta funkcja zwracała wartość słownie jakiegoś pola danych? przykładowo sumy kilku składników?z góry dziękuje za pomoc
Marcin Sulecki pisze…
Oczywiście. Można utworzyć formułę, która będzie sumą składników i podstawić ją jako argument do funkcji np. slownie(@suma)
Tomek pisze…
Witam jeszcze raz:)Przepraszam że tak męczę ale gdy wpisuję formułę slownie({@KwPoz}), pokazuje mi się błąd "A number is required here" Pozdrawiam
Marcin Sulecki pisze…
Funkcja slownie oczekuje liczby jako argumentu. Upewnij się, czy formuła @KwPoz jest liczbą.
tomgryg pisze…
Witam,
a czy tę bibliotekę wystarczy wgrać na lokalnym komputerze czy również trzeba na serwerze raportowym?
Marcin Sulecki pisze…
Funkcja musi być zainstalowana tam gdzie jest generowany raport. Jeśli po stronie serwera, to musi być na serwerze.
Marcin Sulecki pisze…
CR 2008 posiada wbudowaną funkcję do konwersji liczby na język polski.

Sposób jej użycia opisałem w nowym
artykule
Anonimowy pisze…
A jedno pytanko którego tu nie zadano .... Jeśli wykorzystam tę bibliotekę w raporcie komercyjnym dla klienta to na jakiej zasadzie jest udzielana licencja ? Nie cierpię piractwa ...
Anonimowy pisze…
Na komputerze, gdzie zainstalowany jest CR 8.5 sp3 raport Subiekta GT działa bardzo ładnie podając wynik funkcji slownie(123). Jednak, gdy taki raport .rpt importuje do innego komputera, gdzie nie ma zainstalowanego CR raport nie działa. Po uruchomieniu raportu wyrzuca błąd: "The remaining text does not appear to be part of the formula". Oczywiście biblioteka CRUFLslw.dll rejestruje się bez problemu na obu komputerach. Nie pomaga restart komputera. Gdy z raportu usuwam pole w którym jest procedura slownie(123) wszystko jest ok. Czy ktoś orientuje się co jest przyczyną tego problemu ?
Anonimowy pisze…
Mógłbym prosić o ustosunkowanie się do pytania Kolegi ??

"A jedno pytanko którego tu nie zadano .... Jeśli wykorzystam tę bibliotekę w raporcie komercyjnym dla klienta to na jakiej zasadzie jest udzielana licencja ? Nie cierpię piractwa ..."
Anonimowy pisze…
Witam, można prosić o paczkę gdyż link wygasł a przydałby mi sie skrypcik :)
Marcin pisze…
W związku z wieloma zapytania chciałem poinformować, że biblioteka słownie złotych do zastosowań komercyjnych nie jest darmowa. Jeśli ktoś jej zainteresowany ofertą to proszę o maila.
Marcin pisze…
W przypadku systemu 64-bitowego bibliotekę należy zarejestrować poleceniem:

cd \windows\syswow64
regsvr32 C:\windows\System32\CRUFLSLW.DLL

Popularne posty z tego bloga

Konwersja daty w CDN Optima

Crystal Reports jest bardzo często zintegrowany z popularnymi aplikacjami. Przykładem jest system CDN Optima . Początkujących użytkownikom sprawiają kolumny z datą, bo data nie jest zapisana jako datetime lecz jako liczba. Otóż data w CDN Optima zapisana jest w formacie Clarion, czyli liczba dni, które upłynęły od daty 1800-12-28 . (Czy ktoś wie co to za data w historii?) Dlatego jeśli chcemy użyć takiego pola na raporcie, pierwsze co powinniśmy zrobić to dokonać konwersji liczby na datę. W innym przypadku Crystal Reports nie będzie wiedział, że jest to data i żadne formatowanie dat, grupowanie po okresach nie będzie działać. Formuła do konwersji formatu Clarion na datę : Jeśli mamy wiele takich pól to najlepiej utworzyć własną funkcję:

Zamiana daty i czasu na data-czas

Kolejne szkolenie u klienta i kolejne wyzwanie za mną... Chodziło o wygenerowanie raportu czasu pracy z uwzględnieniem, że zmiana następuje o godz. 6:00 a nie o północy. To znaczy, że godziny do 6:00 powinny być jeszcze zaliczane do dnia poprzedniego. Dodatkowym utrudnieniem u klienta był fakt, że data w bazie danych była rozbita na 2 pola: data w formacie: yyyy-mm-dd 00:00:00 godzina w formacie: 1900-01-01 HH:mm W takim razie do dzieła! Załóżmy, że mamy następującą tabelę: 1. Tworzymy formułę która zamieni 2 osobne pola z datą i czasem w jedno pole typu datetime: W ten sposób otrzymamy jedną wartość w formacie yyyy-mm-dd HH:mm 2. Następnie od tak utworzonej daty odejmujemy 6 godzin: Otrzymamy w rezultacie coś takiego: Kolumna WorkDate wyświetla datę do której została zakwalifikowana pozycja. Na podstawie tak utworzonej formuły można utworzyć grupowanie na raporcie.

Koszmar z limitem

Witajcie po dłuższej przerwie. Jakiś czas temu prowadziłem szkolenie w firmie i z jakiegoś powodu nie chciały nam się wyświetlać się wszystkie tabele z ich bazy danych. Na początku myślałem, że to kwestia uprawnień ale okazało się, że użytkownicy mają prawa do odczytu wszystkich tabel a problem wynika z czegoś innego... Okazało się, że winowajcą jest sam Crystal Reports, który ma ustawiony limit(!) na ilość obiektów pobieranych elementów ze struktury bazy danych, czyli tabel, widoków i procedur składowanych razem wziętych. Domyślnie jest to  8000 . Większość baz danych nie przekracza tego limitu, więc możecie spać spokojnie, ale przy większym systemie może nadejść koszmar, który zerwie Was na równe nogi. Pamiętajcie wówczas o moim blogu -  ten limit można zmienić (w praktyce podwyższyć). Niestety nie ma do tego opcji w Crystal Reports, trzeba pogrzebać w rejestrach windows: Zamykamy Crystal Reports Uruchamiamy aplikację Edytor rejestru , z linii poleceń: ...