|
[ mr2002 @ 03.09.2009. 11:15 ] @
| Kako da resim ovaj problem? Treba da presmetam radni sati zaposlenima pri tom veliki broj od njih nemaju fiksno radno vreme. Primer:
radnik pocetak kraj
radnik1 29.08. 2009 od 08:00 30.08. 2009 do 08:00
radnik2 30.08. 2009 od 08:00 31.08. 2009 do 08:00
pri tom treba da dobijem sledece:
radnik1 ukupno: 12 sati nocni: 8 sati vikend:8 sati
radnik2 ukupno: 24 sati nocni: 8 sati vikend:16 sati
nocni rad je vreme 22:00 – 06:00, a vikend samo vreme u nedelju 00: 00 – 24:00
|
[ Getsbi @ 03.09.2009. 11:34 ] @
[ mr2002 @ 03.09.2009. 12:16 ] @
Ovo je bila brza reakcija i hvala vam.
Megutim, to ne daje resenje mog problema. Ne znam kako da izdvojim u posebno nocni rad i vikend u zadatom vremenskom intervalu recimo 29.08.2009 od 20:00 do 30.08.2009 do 08:00. Znaci da se prikazu posebno nocni rad i vikend?
[ Getsbi @ 03.09.2009. 12:35 ] @
Možda da napraviš tabelu kalendar sa datumima za recimo godinu dana. U toj tabeli da imaš osim datuma i dane. Evo ovde http://www.elitesecurity.org/t374283-0#2374480 imaš u zadnjoj poruci jednu takvu tabelu napunjenu za tekuću godinu. Potom da napišeš VBA kod koji će da ti izdvaja posebne vrste sati (noćne, dnevne, vikendske ili praznične).
Možeš VBA kod da napišeš i bez pomenute tabele, ali onda nećeš imati informaciju o praznicima koji su lokalnog karaktera. sa tabelom je jednostavnije. Dođe više, kao neki plan rada za budući period.
[ captPicard @ 03.09.2009. 12:54 ] @
A da dodaš u tabelu polja koja su ti potrebna npt.
radnik
dosao
otisao
dnevni_rad
nocni_rad
rad_blagdan
i onda napraviš triggere koji će ti after insert/updatre odmah punitit te podatke?
Tako riješiš sve probleme...
[ Zidar @ 03.09.2009. 13:47 ] @
Ako poslusas Getsbija, tabela Kalendar ce ti resiti problem praznika, radnih i neradnih dana. Ostaje problem nocnog rada. Moze se resiti na slican nacin. Napravis tabelu SatiUDanu, koja bi imala 24 reda, po jedanz a svaki sat u toku dana. Dodas jos jednu kolonu, na primer VrstaSata i tu imas vrednosti ('dnevni rad','nocni rad'). To ce ti pomoci da sate razvrstas po kategorijama.
:-)
[ Zidar @ 03.09.2009. 14:40 ] @
Zadatk koji mr2002 ima nije ni malo lak. saveti koje smo dali su suvise uopsteni i onome ko nije radio sa vremenima nazalost nece mnogo pomoci :-(
Predlazem da Toni zakaci bazicu sa jednom tabelom, gde se vidi nekoliko radnika tokom nekoliko dana, sa raznim slucajevima radnog vremena. Onda cemo da dodamo tabelu Kalendar i atbelu SatiUDanu pa mozda nesto i ispadne iz svega.
mr2002, zakaci tabelu sa test podacima.
:-)
[ Getsbi @ 03.09.2009. 15:08 ] @
@ Zidar
U pravu si što se smenskog rada tiče.
Kao doprinos ideji da smanjimo kodiranje dodao sam tabelu "tblDvadesetCetiriCasa" sa smenama, a tabeli "tblDatumi", dodao polje Praznik, Yes/No.
Naka mr2002 to inkorporira u svoj fajl sa podacima i neka ga zakači.
[ mr2002 @ 03.09.2009. 15:42 ] @
Hvala na predlozenim resenjima, ali ipak ja sam okacio jedan fajl sa moznim varijacijama radnog vremena.
[ Zidar @ 03.09.2009. 21:42 ] @
Evo. Koristio sam Getsbijeveu tabelu tblDatumi(dodao datum 31 Dec 200  i tableu tblDvadesetCetiriCasa. POdatke u tabeli tblDvadesetCetiriCasa sam malcice izmenio, sati idu od 0 do 23 umesto 1 do 24. To je zbog formule koju ja primenjujem, pa mi je bilo akse nego da menjam formulu.
Potreban je kveri qryKalendarSati, koji datume iz Getsbijeve tabele pretvara u 24 sata svaki. Ta 24 sat za svaki dan se uporedjuju sa vremenima upisanim u tabelu tabelaRabotnoVreme. To se radi u kveriju qryWorkingTimeExpanded. To je 70% posla. Ostatak posla obavlja qryWorkingTimePayable - pokazuje za svaki rekord (Rabotnik, StartTime, EndTime) koliko ima praznicnih ati, koliko obicnih sati i sve to po smenama. dalje mozes i sam.

[ captPicard @ 03.09.2009. 21:46 ] @
Svaka čast!
Zidar, smijem pitati gdje radiš?
[ Zidar @ 03.09.2009. 21:48 ] @
@captPicard: Hvala na komplimentu. Goverment of Ontario, Toronto, Canada. I ne radim u IT ili kao programer, obican sluzbenik 
[ captPicard @ 03.09.2009. 21:55 ] @
Mislim da si pogriješio profesiju :-P 
[ mr2002 @ 03.09.2009. 22:44 ] @
ZIDAR, nemam reci da izrazim zahvalnost.
I da budem iskren nisam ni ocekivao da neko tako brzo reaguje.
Hiljadu puta hvala tebi, Getsbi i svim drugima.
Pozdrav.
[ Getsbi @ 03.09.2009. 23:47 ] @
@ Zidar
Skidam kapu.
[Ovu poruku je menjao Getsbi dana 04.09.2009. u 01:02 GMT+1]
[ Zidar @ 04.09.2009. 14:14 ] @
Hvala svima na lepim recima
Medjutim, ova tema zajedno sa dve poslednje mozgalice i jos jednom temom o DatTime podacima, pokazuje da postoji jedan velika rupa u poznavanju SQL tehnika koje se ticu DateTime podataka. Sve osobe koje su postovale na ovoj temi su najblaze receno veoma daleko od nivoa pocetnika ili priucenog amatera. Pa ipak , ovo sve izgleda kao velika novost. I za mene. Ako mi koji smo odradili ovu temu imamo teskoca, sta reci za 'obicne smrtnike'?
Ovo racunanje vremena sa upotrebom tabele 24Sata ja sam imao u glavi kao teorijsku ideju, ali je niakd nisam realizovao, do sada. Valjda nije bilo prilike ni potreba. Znaci, i meni je ovo prvi put u zivotu da sam napisao konktretnih deset linija SQL koji racuna radno vreme bas na ovaj nacin. Nema puno knjiga koje se ovom oblasti bave, ni na engleskom. I one koje postoje, nisu bas uvek ono sto nam treba. Bilo bi lepo kad bi postojala knjiga na naem jeziku. Bilo bi lepo da se ove stvari pocnu predavati u skolama i kursevima. Ako ima neko ko cita forum a predaje u skoli ili na fakultetu, ili ima uticaja, eto ideje za unapredjene plana i programa. Dotle, ostaje nam forum kao mesto gde se jos uvek moze ponesto nauciti.
[ mr2002 @ 04.09.2009. 22:19 ] @
Mozda i nije najbolje resenje kako sam to uradio, megutim dobio sam neke rezultate koje sam trazio i to je za sada ok.
Ovo je samo proba i ima puno toga da se doraguje da bi izgledala kako treba, no tu su eksperti koji ce sigurno dati neke nasoke za dalje.
Mozda je malo urageno sa moje strane, no tek da se vidi (nocni rad, vikend, praznik).
[ mr2002 @ 07.09.2009. 23:11 ] @
Ponovo problem. I kad sam mislio da sam resio problem eto novi problem.
Kad izaberem da prikazem rab. sate po sektorima grupno daje mi zbirno rab. sate svih zaposlenih u tom sektoru, a ne pojedinacno za svaki radnik.
[ Zidar @ 09.09.2009. 13:51 ] @
@mr2002: Pazi ovako, ako u kveriji grupises po sektoru, uvek ces dobiti zbirove po sektoru, tako GROUP BY kveri radi. Kazi sta u stvari pokusavas da napravis, pa da vidimo iam li pomoci.
Inace, kad postavis bazu u poruku, gledaj da je ime uvek razlicito od svih ostalih baza koje su bile zakacene za poruku. Kad mi vratis bazu sa istim imenom koje sam ja upotrebio, ali sa dodacima, pa ja to download, onda moj original bude prebrisan. Da se to ne bi desilo, promeni bazi ime malkice. I ako imas konkretan problem, taj probelm je u nekom kveriju, reportu, formi modulu. Uvek u poruci naznaci nesto kao "U zakacenoj bazi kveri qryRabotniSati ne radi kako ja hocu. ja hocu da pokaze ovo, a kveri pokazuje nesto drugo" Ond ami znamo gde da gledamo.
I generalno, nije dobro da ti se objekti u access fajlu zovu "Rabotni sati". Mnogo je boklje qryRabotniSati, ili tblRabotniSati. Ne sme biti razmaka i nasih znakova i cirilice.

[ mr2002 @ 09.09.2009. 21:30 ] @
Ono sto sam hteo da dobijem je sledece: da dobijem prikaz rezultata ostvarenih sati (ukupno, nokni, vikend, praznik) za svih radnika pojedinacno u sektoru nebitno dali isti ke se prikazati u formi ili izvestaju. Probao sam vise puta ali dobijao sam zbirno (ukupno,nokni, vikend, praznik) sati kao za svih radnika.
Zidar:I generalno, nije dobro da ti se objekti u access fajlu zovu "Rabotni sati". Mnogo je boklje qryRabotniSati, ili tblRabotniSati. Ne sme biti razmaka i nasih znakova i cirilice.
To mi je jasno. To sto je tako u bazi je zbog toga sto nisam imao mnogo vremena da je sregujem i bilo je u eksperimentalnoj fazi koliko da vidim kako baza funkcionise i onda to primenim kako treba. Bazu koju radim daleko je od toga kako izgleda i koje fontovi koristim zbog lokalizacije. Ali dobro je da se zna sta i kako treba da se postavi.
[ domaci_a_nas @ 10.09.2009. 09:35 ] @
Za prazna mesta se slažem, ali za naming convention, to je najveća glupost. Ja ako hoću da napravim formu po tabeli RadniSati nazvaću je RadniSatiFrm, a ne FrmRadniSati. Razlog je prost, kad hoću brzo da izaberem taj form iz liste formi ja pritisnem samo slovo R i eto je, a ako bi sve forme imale isto početno slovo, moram da ih biram mišem.
[ captPicard @ 10.09.2009. 12:42 ] @
Citat: domaci_a_nas: Za prazna mesta se slažem, ali za naming convention, to je najveća glupost. Ja ako hoću da napravim formu po tabeli RadniSati nazvaću je RadniSatiFrm, a ne FrmRadniSati. Razlog je prost, kad hoću brzo da izaberem taj form iz liste formi ja pritisnem samo slovo R i eto je, a ako bi sve forme imale isto početno slovo, moram da ih biram mišem.
Možda to vrijedi za Access, ali inače se ne bi složio. Puno je bolje da naziv počinje sa vrstom objekta. Ne moraš pisati frm, ja to radim ovako
FNekaForma
QNekiReport
...
[ Getsbi @ 10.09.2009. 13:08 ] @
Evo ovde sam ja nešto kao savetovao oko Access name coding convention. http://www.icentar.com/showthr...=7480&highlight=convention
Možda nekom pomogne ili da dobru ideju. Najvažnije je da konvenciju ustanovite i da je se dosledno pridržavate. A to koja je, ne mora da bude od presudnog značaja.
[ mr2002 @ 10.09.2009. 16:45 ] @
Poslednja tri posta ocigledno nisu predlog za resenje problema, megutin ocigledno je i to da se svako najbolje snalazi u sopstvenom haosu.
[ Zidar @ 10.09.2009. 16:47 ] @
@mr2002 "Ono sto sam hteo da dobijem je sledece: da dobijem prikaz rezultata ostvarenih sati (ukupno, nokni, vikend, praznik) za svih radnika pojedinacno u sektoru nebitno dali isti ke se prikazati u formi ili izvestaju. Probao sam vise puta ali dobijao sam zbirno (ukupno,nokni, vikend, praznik) sati kao za svih radnika.
"
OK, to je vec bolje :-) To vec imas - treba dodati Sektor u kveriju qryWorkingTimePayable. Otvori kveri u design i povuci kolonu Sektor. Evo je u zakacenom fajlu.
Sto se tice imenovanja objekata, pocni od pocetka kako treba. Ako napravis puno tabela i kverija koje se zovu "moj kveri", "moja tabela za ovo ili ono", kada mislis da ce s 'popraviti' nazive? Moraces da pises sve ispocetka, a to jos niko nije uradio u praksi. Zato, dok nije kasno, popravi sta imas sada. Vrlo brzo bice kasno, ako vec nije, a onda ces imati mnogo problema samo zbog razmaka ili nasih znakova u nazivima.
@domaci_a_nas: Ne postoji zakon koji te tera da forma zoves frmNesto. Moze i nestoFRM, ako ti odgovara. Sve dok radis sam, nema veze. Medjutim, standardi se uvode zbog timskog rada. Ako vecina programera ocekuje da forme pocinju sa frm a kveriji sa qry, onda ima smisla drzati se standarda, makar ih i ne voleli. I ja ne volim ono tbl uopste, ali mi prija da vidim iz naziva da li je u pitanju query ili tabela.
No, sve je stvar ukusa. Kako rece Getsbi "Najvažnije je da konvenciju ustanovite i da je se dosledno pridržavate. A to koja je, ne mora da bude od presudnog značaja. "
:-)
[ mr2002 @ 10.09.2009. 17:57 ] @
Zidar, nije problem da se povuce pole sektor i da se prikaze u formi ili qveriju. Problem, na primer u izvestaju da prikazem grupno po sektorima za svaki radnik presmetano ukupno sati, nokni, vikend, praznik. To mi je problem. Pojedinaco videosam to mogu selektirati, no ne mogu to po sektorima za svih radnika.
[ Zidar @ 10.09.2009. 18:52 ] @
Nisam siguran da te razumem. Nacrtaj u Excelu primer kako zelis da vidis rezultate. "Grupno za svaki radnik po sektorima" mi nije bas najjasnije.
I jos jedno ce svakako trebati - da se definisu sledece stvari:
1) nocni rad
2) praznik
3) vikend
Na primer, to bi moglo ovako da izgleda:
nocni rad = treca smena
praznik = kad je radnik radio prvu i drugu smenu na dan koji je u tabeli kalendar oznacen kao 'praznik'.
vikend = subota ili nedelja koje nisu praznik. Ako je subota ili nedelja praznik, onda se racuna kao praznik
Treca smena je problematicna za praznik i vikend. Petak nije vikend, ali subota jeste. Kako racunati za radnika kojipocne rad u petak uvece u 22:00 i zavrsi ujutru u 6:00 u Subotu. Da li je deo od ponoci do 6 ujutru u Subotu noni rad ili vikend, ili nocni rad plus vikend?
STa se radi kad je treca smena na prelazu u dva razlicita meseca? Na primer, neko dodje na posao u trecu smenu 31 Marta 2009 22:00 i radi do 1 Aprila 2009 6:00. U koji mesec se racunaju sati pre ponoci a u koji sati posle ponoci?
Tu gde radis postoje pravila koja regulisuove stvari. Kad znamo pravila mozemo da probamo da resimo problem.
[ mr2002 @ 10.09.2009. 20:05 ] @
Evo malo promenjenu bazu koju sam zapoceo i objasnjenje u exell fajlu.
[ Zidar @ 10.09.2009. 22:25 ] @
To je vec bolje.
Imam pitanja:
vikend = nedelja -- sta je sa subotom? Da li je subota vikend?
godisni odmor = ponedeljak - petak, minus praznici? praznici se ne racunaju u godisnji odmor
bolovanje = ponedeljak - petak, minus praznici? praznici se ne racunaju kao bolovanje
nocni rad je li to treca smena, od 22:00 do 6:00 sutradan?
Sta se desava kad je nocni rad u nedelju ili za praznik? gde se pisu ti sati, u Nocni rad ili u Praznik ili u Vikend?
Nemas rad vikendom u Excel tabeli. Gde cemo da prikazemo rad vikendom?
Oznacio si da je Nedelja 2 Aug 2009 da je praznik. Jeste praznik, (Ilinden?), ali pada u nedelju. Nedelja je ionako neradni dan. Ako praznik pada u nedelju, obicno se onda sledeci radni dan uzima kao neradni. Znaci, ako je praznik pao u nedelju, sledi da Pondedeljak postaje praznik. E taj ponedeljak treba u tabeli Kalendar da oznacis kao praznik.
Ovo je mnoogo komplikovanjie nego sto je izgledalo na pocetku, eh?
Ovo treba da se uradi u bazi (ima sve u zakacenom fajlu):
1) u tabelu tblIzraboteni da dodas polje VrstaSati, ima tri moguce vrednosti R = rabota, normalan rad G = godisnji odmor, B = Bolovanje
2) polje VrstaSati ne sma da ima default vrednost, i mora da bude "Required=Yes"
3) u tabelu tblIZraboteni da dodas Validation Rule: "kad je neko na bolovanje ili godisnji odmor, mora da se upisuju sati od 7:00 do 3:00, ne sme da se pise druga ili treca smena"
4) Dodao sam VrsatSati u qryWorkingTimeExpanded i qryWorkingTimePayable
5) napravio sam nove kverije qryGosisnji, qryBolovanja, qryTrecaSmena, qryRedovniDani
Sad mozes iz kverija u tacki 5) da radis GROUP BY po mesecima i dosli smo na pola puta. Dobices dakle 4 GROUP BU kverija, koje cemo u sledecem koraku da pokupimo u jedan, pomocu jos jednog trika. To sutra, moram kuci sada.
[ mr2002 @ 12.09.2009. 00:44 ] @
Zidar, praznici, vikend, nokni rad sve je to OK. Problem je generisati izvestaj po sektorima u kome su prikazani pojedinacno radnici i svi ostvareni sati kao u exell fajlu. Kad kreiram izvestaj prikazuje mi da multi level group by nije dozvoljeno u subquery. kako da dobijem taj prikaz.
[ mr2002 @ 13.09.2009. 00:04 ] @
Resio sam problem i sa prikazom ostvarenih radnih sati po sektorima u izvestaju. Prikacena baza je samo primer, sto svakako nije konacan prikaz i izgled baze.
Jos jednom hvala na saradnju Getsbi i svakako Zidar koji mi je pomogao sve vreme.
Zidar nisi na posao?
[ Zidar @ 14.09.2009. 17:13 ] @
Vidis da moze ;-)
[ mr2002 @ 14.09.2009. 18:22 ] @
Zidar ocekivao sam vise osven deka moze. Dali je dobro to resenje ili moze da se napravi i jos bolje? Izostao je trik. Pozdrav.
[ Zidar @ 14.09.2009. 21:00 ] @
Moras da mi kazes koji reprt, koji kveri, koja forma te muce, da znam u sta da gledam. Ako mi samo poasljes bazu sa gomilom ojekata unutra ne mogu nista da uradim. Ipak nemam vremena da otvaram jedan po jedan objekt i da pokusam da pogodim sta ide prvo a sta posle, d abih izbegao one poruke o parametrima za onvaj ili onaj kveri.
Ako si vec resio problem bez trikova, onda je bolje bez trikova, ali ne znam dok ne vidim tacno gde je resenja i kako. Ako radi, pusti ga na miru. Ako ne radi, nekako cemo ga naterai da proradi.
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|