[ agkiki @ 04.08.2013. 13:38 ] @
Zdravo svima, imam problem da izracunam između dva datuma oD do i da dobijem broj dana bez subote i nedelje.

Problem je u tome sto kada mi zatreba da neki radnik radi recimo os 7-og u mesecu do recimo 20-tog moram peške da brojim koliko je dana
radio oduzimajuci subote i nedelje, nadam se se to može da se uradi.
Evo šeljem primer, pogledajte pa ako može pomognitemi.
Unapred hvala IKA
[ Getsbi @ 04.08.2013. 14:56 ] @
Koristi funkciju DateDiff() sa intervalom w (radni dan).
http://office.microsoft.com/sr...atediff-HA001228811.aspx?CTT=1
[ agkiki @ 04.08.2013. 15:44 ] @
Getsbi hvala ti puno, odradio sam ono sto mi treba, hvala još jednom IKA
[ izonic @ 04.08.2013. 22:40 ] @
Code:
Function BrojDana(Datum1 As Date, datum2 As Date) As Integer
BrojDana = Abs(Datum1 - datum2)
End Function
[ agkiki @ 04.08.2013. 23:02 ] @
Hvalati druže na trudu, ali ja sam vec po savetu Gedzbija skinuo jednu funkciju koja to ja navodno radi, ali nisam zadovoljan
jer nedaje tacne podatke., naprimer:
Kada zadam datum od recimo 01.01.2013 pa do 10.01.2013 in mi izracuna 7 radnih dana sto je tacno jer se neracunaju subeote i nedelje
u tom rasponu.
Ali kada mu zadam od 01.01.2013 do 20.01 2013 on mi izracuna 16 radnih dana sto nije tacno jer je ustvari 14 dana. Neznam sta da radim, ne znam u cemu je problem, zato ti kacim na post pa pogledaj ako možeš da nesto uradiš, bio bi ti zahvalan.
Puno pozdrava Ika.
[ goranvuc @ 05.08.2013. 06:53 ] @
Citat:
Kada je interval „Radni dan“ ("w"), funkcija DateDiff će vratiti broj sedmica između dva datuma


Kako li si ti dobio 7 i 14 - sam Bog zna, verovatno mnozis rezultat sa 7...
[ izonic @ 05.08.2013. 07:58 ] @
Code:
Function BrojDana(Datum1 As Date, Datum2 As Date) As Integer
'Dani bez subote i nedjelje
Dim D1 As Date, D2 As Date, Dan As Integer

If Datum1 > Datum2 Then
    D1 = Datum2
    D2 = Datum1
Else
    D1 = Datum1
    D2 = Datum2
End If

Do While D2 > D1
    D1 = D1 + 1
    Dan = WeekDay(D1)
    If Dan > 1 And Dan < 7 Then
    BrojDana = BrojDana + 1
    End If
Loop
End Function
[ SLOJ.1973 @ 05.08.2013. 08:04 ] @
Citat:
agkiki:
Zdravo svima, imam problem da izracunam između dva datuma oD do i da dobijem broj dana bez subote i nedelje.

Problem je u tome sto kada mi zatreba da neki radnik radi recimo os 7-og u mesecu do recimo 20-tog moram peške da brojim koliko je dana
radio oduzimajuci subote i nedelje, nadam se se to može da se uradi.
Evo šeljem primer, pogledajte pa ako može pomognitemi.
Unapred hvala IKA

A sta ces ako neki radnik mora da radi na drzavni praznik koji ne pada u subotu ili nedelju? Znaci neradni dan,a nije subota ili nedelja.
[ agkiki @ 05.08.2013. 11:45 ] @
Druže izgleda da ja racunam i krajnji dan, mada meni nije jasno jer od 01. - 20 ima 3 subote i 3 nedelje to je 6 dana ostaje znaci 14 radnih dana a ne 16.
Možda ja pogrešno racunam, molim te objasni mi, moram da priznam da me je I Sloj zbunio sa praznicima
Pozdrav Ika
[ izonic @ 05.08.2013. 13:47 ] @
sve ovisi sta hoces.
Matematicki ti je ovako
od 20 do 1 imas 19 -6=13
6-subote i nedjelje.

E sad ako kazmo od 1- 20 i kazemo sa prvim i i dvdesteim onda imamo 14 kako si ti napisao.
Mozes iskoristiti isrti kod samo malo drugacije
Evo:
Code:
Function BrojDana(Datum1 As Date, Datum2 As Date) As Integer
'BROJ DANA BEZ SUBOTE I NEDJELJE
Dim D1 As Date, D2 As Date, Dan As Integer

If Datum1 > Datum2 Then
    D1 = Datum2
    D2 = Datum1
Else
    D1 = Datum1
    D2 = Datum2
End If

Do While D2 > D1
    Dan = WeekDay(D1)
    If Dan > 1 And Dan < 7 Then
    BrojDana = BrojDana + 1
    End If
    D1 = D1 + 1
Loop
End Function


Ako uzmes i ono sto ti je sloj napisao a nebi trebao to zanemariti onda ispada da je najbolje da imas tabelu u koju ces popisati sve neradne dane.
Onda se napravi procedura koja ce voditi racuna koji su dani neradni.
[ agkiki @ 05.08.2013. 15:07 ] @
Šta da kažem, hvala puno, a što se tiče Sloja mislim da je u pravu i kao što si rekao napravicu tabelu, još jednom hvala Ika
[ Getsbi @ 05.08.2013. 15:24 ] @
@goranvuc
Mora da je greška u dokumentaciji. Oba intervala: "w" i "ww" daju isti rezultat. Pogledao sam i originalnu dokumentaciju Ista priča. Nisam ranije koristio izračunavanje broja radnih dana ali je za očekivati da "w"-weekday daje broj radnih dana, a "ww" -week daje broj sedmica. Možda je moja logika pogrešna.

Jedan link sa rezultatima testa u prilog rečenom: http://www.thevbprogrammer.com/Ch04/04-12-DateDiff.htm
[ goranvuc @ 05.08.2013. 19:13 ] @
Greska je u prevodu...

Evo original: http://msdn.microsoft.com/en-us/library/aa262712(v=vs.60).aspx

Obratiti paznju na:

Citat:
When interval is Weekday ("w"), DateDiff returns the number of weeks between the two dates. If date1 falls on a Monday, DateDiff counts the number of Mondays until date2. It counts date2 but not date1. If interval is Week ("ww"), however, the DateDiff function returns the number of calendar weeks between the two dates. It counts the number of Sundays between date1 and date2...
[ Getsbi @ 05.08.2013. 19:48 ] @
Sad je jasno. Loš prevod me nagnao da kolegu pogrešno uputim. Mada svi rečnici koje sam naknadno konsultovao kažu za week-day da je radni dan, a za days of the week da je dan u nedelji
[ xl_kid @ 13.08.2013. 09:00 ] @
Možda će nekom koristiti a nekome dati ideju. Tabela (excel) koju koristim za dnevne izvestaje. Ostavio sam samo deo koji je vezan za datume. Ne računa praznike ako se upišu u listu praznika. U Miki!A2 upišete datum a na sheet-u "L" u polju F5 imate rezultat.