Piotr
Warda
informatyk-ekonomist
a
Temat: Optima - problem z sortowaniem kalendarza
Witam,Próbuję zrobić raport, który będzie drukował dla każdego pracownika szablon listy obecności z wykorzystaniem kalendarza. Ponieważ ma to byc wydruk seryjny, więc korzystam z tabel:
Rpt_Zaznaczenia2 - wybór osób do drukowania
PracIdx - filtruję osoby zatrudnione i tylko etatowców
PracEtaty - dla każdego zatrudnionego wybieram numer ostatniego kalendarza
Z Optimy przekazuję przez zmienną 'rok' typu data miesiąc i rok drukowania listy obecności
Raport mam zrobiony, tak:
formuła wybierania grup: {Pracidx.PRI_Archiwalny}=0 and {Pracidx.PRI_Typ}=10
nagłowek grupy 1 (grupowanie osób - funkcja: nazwisko+imię) - wydruk góry tabelki tabelki
nagłowek grupy 2 (grupowanie wpisów dla osoby: PracEtaty.PRE_PraId
stopka grupy 2 mam podraport drukujący wiersze tabelki na każdy dzień miesiąca
stopka grupy 1 podsumowanie tabelki
Do podraportu przekazuję dwa parametry:
rok - z parametrów
PracEtaty.PRE_KalId - numer kalendarza dla konkretnego pracownika.
I teraz podraport:
Z uwagi na liknowanie w Optimie tabel Kalendarze i KalDni - otwieram obydwie tabele.
formuła wybierania grup: Year({KalendDni.KAD_Data})=Year({?Pm-@mc_rok}) and
Month({KalendDni.KAD_Data})=Month({?Pm-@mc_rok})
formuła wybierania rekordów: {KalendDni.KAD_KalId} = {?Pm-PracEtaty.PRE_KalId}
nagłówek grupy 1 - grupowanie Kalendarze.KAL_KalId
nagłowek grupy 2 - grupowanie funkcją {KalendDni.KAD_KalId}+{KalendDni.KAD_Data}
w szczegółach drukuję wiersz tabelki biorąc dzień miesiąca formułą: ToText(Day({KalendDni.KAD_Data}),0,'','')
W tabeli mam różne kalendarze dla grup osób i czasami pojawia się problem, że na wydruku dni miesiąca nie są uporządkowane rosnąco. Gdzie tkwi przyczyna - domyślam się, że tabela w raporcie nie ustawia się prawidłowo po kluczu - tylko dlaczego?
Z opisu struktury tabeli:
KAD_KalId - integer
KAD_Data - datetime
Klucze:
KAD_Primary - KAD_KadId - Klucz główny
KADData - KAD_KalId ,KAD_Data - Unikalny indeks po id kalendarza i dacie
Może jakieś sugestie?
Pozdrawiam,