Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Oblicznie czasu.

1 view
Skip to first unread message

Yansza

unread,
Oct 25, 2004, 1:29:53 PM10/25/04
to
Czy ktoś z szanownych grupowiczów wymyślił algorytm na oblicznie okresów
czasowych zawartych w innym okresie. Wiem że brzmi to dziwnie, więc zaraz
się postaram wyjasnić o co michodzi. 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. Chciałbym te informacje mieć w dwów a nie w trzech
rekordach.
Pozdrawiam Yansza


Krzysztof Naworyta

unread,
Oct 25, 2004, 2:02:50 PM10/25/04
to
Juzer Yansza <ker...@poczta.onet.pl> napisał

(...)


| 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

Yansza

unread,
Oct 25, 2004, 3:59:10 PM10/25/04
to

Użytkownik "Krzysztof Naworyta" <k.naw...@datacomp.com.pl> napisał w
wiadomości news:cljf1j$hrt$1...@news.onet.pl...

> Juzer Yansza <ker...@poczta.onet.pl> napisał
>
> (...)
> | 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 ?
Panie Krzyśku nawetPan nie wie ile ja skorzystałem z Pańskich rad na grupie
i prawdę mówiąc liczyłem że to właśnie Pan się odezwie.
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.
> archiwum grupy:
> http://groups.google.pl/advanced_group_search?&as_ugroup=pl*msaccess
>


Tomek

unread,
Oct 25, 2004, 5:26:02 PM10/25/04
to

Użytkownik "Yansza" <ker...@poczta.onet.pl> napisał

> 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

Krzysztof Naworyta

unread,
Oct 25, 2004, 6:10:56 PM10/25/04
to
Juzer Yansza <ker...@poczta.onet.pl> napisał

|| 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
...

Yansza

unread,
Oct 26, 2004, 12:35:56 AM10/26/04
to

Użytkownik "Tomek" <a...@a.com> napisał w wiadomości
news:cljr5f$15$1...@nemesis.news.tpi.pl...
Może rzeczywiście trochę zalatywało wazeliniarstwem, ale KN sobie na to
zasłużył.
Dziękuję. Będę to rozgryzał po południu bo teraz gnam do roboty.
Pozdrawiam
>
>
> --
> pzdr
>
> tomek
>


Yansza

unread,
Oct 26, 2004, 12:37:26 AM10/26/04
to

Użytkownik "Krzysztof Naworyta" <k.naw...@datacomp.com.pl> napisał w
wiadomości news:cljtsl$201$1...@news.onet.pl...
Dziękuję.
>
> archiwum grupy:
> http://groups.google.pl/advanced_group_search?&as_ugroup=pl*msaccess
>


Yansza

unread,
Oct 30, 2004, 3:38:46 AM10/30/04
to

>
> 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
> ...
>
> --
> KN
>
> archiwum grupy:
> http://groups.google.pl/advanced_group_search?&as_ugroup=pl*msaccess

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


>


Yansza

unread,
Oct 30, 2004, 3:45:58 AM10/30/04
to
Zapomniałem jeszcze dodać że okresy składkowe mogą kilka razy wystąpić i w
takim okresie znowu nieskładkowe.
Pozdrawiam


0 new messages