Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

oduzimanje sati obračun noćnih sati

[es] :: Access :: oduzimanje sati obračun noćnih sati

[ Pregleda: 3449 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

gatalinka

Član broj: 201383
Poruke: 53
*.adsl.net.t-com.hr.



Profil

icon oduzimanje sati obračun noćnih sati20.09.2011. u 12:37 - pre 153 meseci
pogledala sam slične probleme na forumu, ali nisam pronašla rješenje, bar ja tako mislim. Evo o čemu se radi,
znači imam radno vrijeme

početak 23.09.2011 20:00 kraj 24.09.2011 09:00

tip podataka je datetime

radno vrijeme između 22:00 i 7:00 se računa kao noćni rad, ostalo je dnevni rad

radni sati 24. 09. računaju se kao subota, a 23.09. kao normalni sati, i svako se iskazuje posebno, posebno noć, posebno subota, a ostali dani u tjednu posebno

priložila sam bazu, i nešto sam čaki napisala, ali kad sam došla do noći, tu sam se "ubila" i stala.

I još jedno pitanje...može li se hrpa tih iff-ova napisati u nekom podupitu (subquery) i kako.....
Prikačeni fajlovi
 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.dynamic.isp.telekom.rs.



+79 Profil

icon Re: oduzimanje sati obračun noćnih sati20.09.2011. u 15:18 - pre 153 meseci
Bio je jednom davno primer, neko je racunao nocne sate i praznike, ali nisam siguran da je na ovom forumu, moguce je da je Icentar koji vise ne radi. No, i za taj primerdali smo prekomplikovano resenje. Za tebe moze nesto jednostavnije. Jednostavnije za razumevanje, ne manje funkcionlno

Za pocetak, prosiri tabelu datuma, dogaj kolone 1) za ime dana u sedmici i 2) oznaku da li je dan praznik ili vikend ili radni dan. Subote i nedelje bice vikendi, ostali dani ce biti radni dani, osim onih koje proglasis za praznike. Ovako nekako:
tblDatum {Datum, DanUSedmici (Pon, Uto, Sre, Cet,Pet,Sub,Ned), VrstaDana (Radni,Praznik,Vikend)}

Zatim napravi tabelu sati, ovako tblSati { OdSati, DoSati, Smena }. Nekako ovako:
OdSati, DoSati, Smena
0 1 2
1 2 2
2 3 2
......
6 7 2
7 8 1
8 9 1
......
21 22 1
22 23 2
23 24 2

Ako kombiujes ove dve tabele sa postojecim tabelama tblDatum i tblRaspored, moci ces da resis problem. Ako zapne, pomoci cemo.

Postojece tabele bi mogla preurediti malo, da se lakse radi. Prvo, u tabeli tblRaspored ubaci Datum umesto DatumID. Zatim izbaci PrID i PRKarj, one i vise nece trebati. Umesto da za svaki upis u tabelu tblRaspored proveravas da li je pocetak i kraj pao na praznik, to ce ti reci prosirena tabela tblDatum.

Probaj, pa da pomazemo gde zapne.


 
Odgovor na temu

gatalinka

Član broj: 201383
Poruke: 53
*.adsl.net.t-com.hr.



Profil

icon Re: oduzimanje sati obračun noćnih sati20.09.2011. u 15:46 - pre 153 meseci
problem je u tome što mi je baza za seminar, taj primjer o kojem govoriš sam pronašla i pokušala ga primijeniti, međutim, rečeno je da ne valja, jer baza ne zadovoljava pravila normalizacije, pa sam se uvalila u sql izraze....a taj način bi to trebalo i riješiti

[Ovu poruku je menjao gatalinka dana 20.09.2011. u 17:00 GMT+1]
 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.dynamic.isp.telekom.rs.



+79 Profil

icon Re: oduzimanje sati obračun noćnih sati20.09.2011. u 17:23 - pre 153 meseci
Au, racunanje radnih sati po smenama i praznicima je pretesko za seminarski.

U tom slucaju, evo ti resenja koje veoma blizu onoga sta ti treba. Sve tvoje tabele ostale su iste,ostaje sve normalizovano. uz trazene izmene.

Izbacivanje datumID: nije nista manje normalizovano ako se radi sa Datum umesto datumID, vidi zakaceni primjer. To mozed\s da odbranis lako pred profesorom. Da ne moze, ne biso mogli da postavimo relaciju, zar ne?

Izbacivanje PrID i PRKarj: vrednosti u tim kolonam se ponavljaju => tabela nije normalizovana. Za svakog radnika koji radi na praznik, treba upisati vrednost PrID i PRKarj u tabeli tblRaspored. Ako te kolone prebacimo u tabelu tblDatumi, onda nema ponavljanja u tblRaspored => normalizovali smo tabelu tblRaspored ukidanjem ponavljajucih vrednosti.

Trik je tabela tblSati. Tabela sati ima dve grupe od po 24 sata. To je zato sto radnik moze poceti da radi u jednom danu i mora zavrsiti ili istog ili sledeceg dana. Samo smo jednostavno popisali radne sate u dva uzastopna dana, dva puta po 24 sata. To smo kasnije iskoristili u kverijima, da jedan red iz tabele tblRaspored predstavimo kao 8 sati (ili vec koliko sati je radio radnik) i pokazemo svaki taj sat. A za svaki sat znamo kojoj smeni pripada. Posto znamo i za svaki dan da li je vikend, praznik ili radni dan, to za svaki odradjeni sat znamo koja je smena i i kkavom danu pripada. Otuda mozemo da izracunamo koliko treba da platimo.

Primeti da kombinavija za placanje ima N gde je N = (broj smena ) x (broj vrsta dana) U tvom slucaju je broj smena = 2 i broj vrsta dana = 3 (radni dan, praznik, vikend) ili 2 ako praznik i vikend tretiras isto.

U zakacenom primeru, pogledaj relacije - videces da se nista posebno nije promenilo.

Kveri koji pokazuje sve sto te interesuje je qryPocetakKrajSatID_SatiDani. Da bi se on odradio, pocinje se od qryPocetakKraj i ide redom na qryPocetakKrajSatID pa na qryPocetakKrajSatID_Sati. Otvori Query window u detail pogledu i vidi komentare.

Srecan rad i odbrana seminarskog

Prikačeni fajlovi
 
Odgovor na temu

gatalinka

Član broj: 201383
Poruke: 53
*.adsl.net.t-com.hr.



Profil

icon Re: oduzimanje sati obračun noćnih sati20.09.2011. u 22:20 - pre 153 meseci
nisam baš bila najsretnija s rješenjem koji je Zidar predložio, pa sam pokušavala drugačije...
rješila sam, bar mislim...i molim mišljenje...

znači za subotu, nedjelju, noć i praznike napisala sam funkciju, koju sam u upitu pozvala, i radi....bar se meni tako čini...

nešto mi ne valja sa praznicima....pa dajte pogledajte gdje sam ga fulala....u if funkciji sam ga negdje zbrljala, ali sad mi već i duša spava

primjer ću prikačiti...pa možda nekome i bude od koristi, jer izgleda dosta jednostavno...bar to meni tako djeluje
Prikačeni fajlovi
 
Odgovor na temu

gatalinka

Član broj: 201383
Poruke: 53
*.adsl.net.t-com.hr.



Profil

icon Re: oduzimanje sati obračun noćnih sati20.09.2011. u 22:43 - pre 153 meseci
evo ispravak funkcije za izračun praznika

Public Function HollidayHours(Date1 As Variant, Date2 As Variant, praznik1 As Boolean, praznik2 As Boolean) As Integer

Dim d1 As Date
Dim d2 As Date
Dim n As Integer
Dim h As Integer
Dim pr1 As Boolean
Dim pr2 As Boolean

pr1 = praznik1 = False
pr2 = praznik2 = False

d1 = Date1
d2 = Date2

n = 0

While DateDiff("h", d1, d2) > 0
h = DatePart("h", d1)
If (h >= 0 And pr1 = False Or pr2 = False) Then /// ovaj if je nedostajao
n = n + 1
End If
d1 = DateAdd("h", 1, d1)
Wend
HollidayHours = n
End Function


i sad molim pogledajte sve to zajedno da li sam ga negdje fulala....

 
Odgovor na temu

Zidar
Canada

Moderator
Član broj: 15387
Poruke: 3085
*.dynamic.isp.telekom.rs.



+79 Profil

icon Re: oduzimanje sati obračun noćnih sati20.09.2011. u 23:50 - pre 153 meseci
Moze i tako. Jedino u praksi pozivanje korisnickih funkcija iz kverija se ne preporucuje bez preke potrebe. No, moze i ovako, bar si pokazala da umes da programiras. Dok radi, dobro je.

Srecan rad
 
Odgovor na temu

gatalinka

Član broj: 201383
Poruke: 53
213.147.100.*



Profil

icon Re: oduzimanje sati obračun noćnih sati27.03.2012. u 12:09 - pre 146 meseci
sa zakašnjenjem stavljam primjer baze za daljnje korištenje, pa možda nekome dobro dođe kao neka ideja
Prikačeni fajlovi
 
Odgovor na temu

[es] :: Access :: oduzimanje sati obračun noćnih sati

[ Pregleda: 3449 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.