Pitanje je kako dobiti sedmicne izvestaje po programeru, po projektu, zbir sati, koliko para to vredi i tako dalje. Bilo bi lako kad bi u tabeli bilo polje koje odredjue ID svake radne sedmice. Tog polja nema, a svaki datum pripada nekoj sedmici. U toj banci, sedmice se identifikuju na osnovu poslednjeg radnog dana. Na zapadu je uobicajeno da se kaze na primer "report for the week ending 5/21/2004". Za danasnji dan, week ending je sledeci petak, 5/21/2004. Za sutrasnji dan, pa za sredu, cetvrtak week ending dan je takodje 5/21/2004. I Petak, 5/21/2004 spada u tu istu radnu nedelju, pa je i za sam petak week ending dan opet taj isti 5/21/2004.
U subotu pocinje nova sedmica i za sve njene dane bice week ending dan petak, 5/28/2004.
Izraz
NextEoW = datDate + (intDayConst - (datDate Mod 7))
1 = Nedelja
2 = Ponedeljek
3 = Utorak
4 = Sreda
5 = Cetvrtak
6 = Petak
7 = Subota
Znaci,
NextEoW = datDate + (6- (datDate Mod 7))
Function NextEoW(datDate As Date, intDayConst As Integer) As Date
'For any given datDate calculates next DayOfWeek, specified as intDayConst
'intDayConst IN (vbSunday, vbMonday, vbTuesday, vbWednesday, vbThursday, vbFriday, vbSaturday)
' same as (1,2,3,4,5,6,7)
'Example: want to find next Friday for given date #5/18/2004# = 18 May 2004
'Call: NextDoW(#18 may 2004#,vbFriday)
'
If Weekday(Date) = intDayConst Then
'This prevents moving end of week to the enxt week
NextEoW = datDate
Else
'This calculates Next Friday or so,just as NextGivenDay()
NextEoW = datDate + (intDayConst - (datDate Mod 7))
End If
End Function
Kako sad do kverija koji sumira stavri po radnim sedmicama? Pa mozemo da upotrebimo funkciju u kveriju ili da malo preradimo IF Then ELSE statement i dobijem nesto kao:
SELECT tblAvailableDates.ID, tblAvailableDates.ActDate, IIf(Weekday([ActDate])=1,[ActDate],[ActDate]+(1-([ActDate] Mod 7))) AS NextSunday
FROM tblAvailableDates;
Ona jedinica u SQL statmentu predstavlja dan koji je week ending - uovom slucaju Nedelja. Umesto 1 mozete da stavite brojeve od 1 do 7, 1= nedelja.. 7=Subota.
Ako neko ima bolje resenje, sa zadovoljstvom cemo da to uvrstimo u bazu znanja. Komentari i pitanja dobrodosli.
:-)