(...)
| Np podaję okres od
| 01-01-1990 do 05-01-1999 to mamy 9 lat i pięć dni i teraz wpisując
| kolejne rekordy które zwierają się w tym okresie pomniejszałyby ten
| okres np. wpisując 02-01-1990 do 03-01-1990 mamy 9 lat i 3 dni
| pierwszego okresu i oraz 2dni drugiego. Oczywiście obydwa te okresy
| byłyby wprowadzane z innym identyfikatorem.Chciałbym żeby niebyło
| potrzeby wprowadzać 01-01-1990 do 01-01-1990 z identyfikatorem np.1
| potem 02-01-1990 do 03-01-1990 z identyfikatorem np.2 i znów 04-01-1990
| do 05-01-1999 z identyfikatorem 1,
| bo tu jest sprawa prosta.
^^^^^^^^^^^^^
taa? a jak zinterpretować okresy:
15/12/1989 - 15/01/1990
01/01/1990 - 30/01/1990
10/01/1990 - 05/02/1990 ?
?
--
KN
archiwum grupy:
http://groups.google.pl/advanced_group_search?&as_ugroup=pl*msaccess
> I teraz wyjaśniam. Pracuję w ZUS-ie chcę napisać program który będzie
> liczył staż pracy. U nas jest tak że staż pracy dzieli się na okresy
> składkowe i nieskładkowe. Chciałbym wprowadzić całkowity okires
> zatrudnienia, potem wprowadzać okresy nieskładkowe które się będą
zawierać
> w tym, okresie składkowym pomniejszając go. Daty które Pan podał nie
mają
> zastosowania do naszych potrzeb.
IMHO sprawa dość prosta:
wprowadzamy dla danego klienta staż pracy, wprowadzamy dla tego samego
klienta w osobnej tabeli (tblNieskladkowe, pola:
IDKlient,PoczatekNieskladkowy,KoniecNieskladkowy) okresy nieskładkowe,
sumujemy długości ich i odejmujemy od stażu pracy.
Sorry, że wyrywam się przed KN ;-)
--
pzdr
tomek
|| taa? a jak zinterpretować okresy:
||
|| 15/12/1989 - 15/01/1990
|| 01/01/1990 - 30/01/1990
|| 10/01/1990 - 05/02/1990 ?
| Pracuję w ZUS-ie chcę napisać program który będzie
| liczył staż pracy. U nas jest tak że staż pracy dzieli się na okresy
| składkowe i nieskładkowe. Chciałbym wprowadzić całkowity okires
| zatrudnienia, potem wprowadzać okresy nieskładkowe które się będą
| zawierać w tym, okresie składkowym pomniejszając go. Daty które Pan
| podał nie mają zastosowania do naszych potrzeb.
Dokładnie jak mówi Tomek, choć moze z paroma uwagami:
W systemie daty są zrzucone na oś liczbową i definiowane jako ilość dni
jaka minęła od 30/12/1899 do danej daty. Liczby całkowite określają pełne
dni, a ułamki części "godzinowe"
Czyli ilość dni między data_koniec a data_start:
data_koniec - data_start + 1
mając tabelę w której:
człowiek | typ | start | koniec
------------------------------------------
1 1 1/1/1980 1/1/2004
1 2 d1s d1k
1 2 d2s d2k
1 2 d3s d3k
...
gdzie typ = 1 określa okres składkowy a typ=2 - nieskładkowy
łatwo obliczyć stosowną różnicę:
Select
czlowiek
, Sum(iif(typ=1, koniec - start + 1, Null) as calyokres
, Sum(iif(typ=2, koniec - start + 1, Null) as nieskladkowe
, Sum(iif(typ=1, koniec - start + 1, Null) -
Sum(iif(typ=2, koniec - start + 1, Null) as skladkowe
From ...
Group By
czlowiek
(nie trzeba dwóch róznych tabel!)
Problem zaczyna się jeśli z jakiś przyczyn okresy "nieskładkowe" mogą na
siebie zachodzić, albo okresy nieskładkowe nachodzą niecałkowicie (lub
wcale) na okres całkowity ...
Wtedy roboty będzie znacznie więcej.
Rozumiem, że system zabezpiecza przed tego rodzaju "nielogicznymi" wpisami
...
Niestety takie rozwiązanie nie do końca spełni swoje zadanie. Ja zbyt
ogólnie przedstawiłem problem. Spróbuję jeszcze raz.
Ktoś pracował np.
od 03-04-1970 do 08-09-1990 (okres składkowy OS) w tym czasie chorował np.
50 razy (okres nieskładkowy ONS)
I teraz jeślibym wprowadzał OS z tego okresu poprzedzielany ONS to nie
problemu z liczeniem tylko że proszę zauważyć że muszę wprowadzić 100
pozycji
03-04-1970 do 07-07-1971 (OS praca)
08-07-1971 do 10-07-1971(ONS 3-dniowe chorobowe)
11-07-1971 do (następnego chorobowego) i tak dalej.
Problem jest jednak w tym że okresy nieskładkowe mogą i występują także poza
OS i muszą też być sumowane ale już nie odliczane od OS.
Pomijam już takie niuanse że do staż pracy ONS nie może być większy niż 1/3
OS, lub to że wyliczenia to nie proste odjęcie dat, bo muszę je zamienić na
pełne miesiące z resztą dniową. A przy tym pełny miesiąc jest zaliczany gdy
np praca była od pierwszego dnia miesiąca przez 30 dni w czasie 31 dniowego
miesiąca i praca przez 31 dni w takim samym miesiącu to też pełny miesiąc,
a nie miesiąc i 1 dzień. Ale praca od połowy miesiąca przez 31 dni to już 1
mies i 1 dzień. Skomplikowane to, ale jakoś z tego wybrnąłem. Gnębi mnie
tylko racjonalizacja wprowadzania danych, którą można skrócić o połowę, co
przy mniejszej ilości niż 50 chorobowych jak w przykładzie ma duże
znaczenie.
Pozdrawiam Yansza
>