[ DeX_ @ 11.05.2005. 21:33 ] @
Posto sam pocetnik molio bi za pomoc da rijesim jedan problem .
problem 1 .
Imam program za videoteku ali nemogu nikako da napravim da kad neko iznajmi kasetu recimo u petak a vrati u ponedeljak da se ne racuna nedelja tj da rezultat izmedju datuma nebude 3 vec 2. Uspio sam to rijesiti ali svaki put moram unijeti da se racun umanjuje za jedan ako je izmedju datuma bila nedelja.Kako to napraviti da se ta procedura automatski izvrsava.

problem 2
Da se automatski unosi da je recimo svaka 4 kaseta besplatna ( i u ovom slucaju ja moram naznaciti da je 4 kaseta besplatna)

Nadam se da ste me razumjeli.

S postovanjem!

[ Zidar @ 12.05.2005. 21:10 ] @
1) Izbacivanje nedelje. tebi treba da izracunas da li je u nekom datumskom intervalu bila neka nedelja, i koliko se puta javila nedelja. evo ti par funkcija koje to rade:
Code:

Function SundaysBetween(Date1 As Date, Date2 As Date)
'Calculates how many Sundays in given date interval (date1,date2)
Dim intNumSundays As Integer
Dim datFirst As Date
Dim datLast As Date
Dim intDelta As Integer
Dim datCurrent As Date

intDelta = Date1 - Date2

Select Case intDelta
    Case Is >= 0
        datFirst = Date2: datLast = Date1
    Case Is < 0
        datFirst = Date1: datLast = Date2
End Select

intNumSundays = 0
datCurrent = LastSunday(datLast)
If datCurrent > datFirst Then
'at least one sunday between dates
intNumSundays = intNumSundays + 1
End If

intDelta = datCurrent - datFirst
intNumSundays = intNumSundays + Int(intDelta / 7)

SundaysBetween = intNumSundays

End Function


Function LastSunday(datDate As Date) As Date
'Purpose: returns last Sunday before datDate
'If datdate=Sunday, then returns datDate itself
'Examples
'? LastSunday(#5/8/2005#) returns itself, 08/05/2005 , since 8 May 2005 is Sunday
'? LastSunday(#5/12/2005#) 12 May 2005 is Thursday, previous Sunday was on 08/05/2005, May 08, 2005

LastSunday = datDate - Weekday(datDate) + 1
End Function



2) kako da svaka cetvrta kaseta bude besplatna. Zavisi od toga kako si dizajnirao tabele. pretpostavicu da je sve OK. U tom slucaju, pretpostavljam da imas tabelu u koju se upisuju usete kasete, i da u toj tabeli imas polja (KlijentID,KasetaID,BrojacKasetPoKlijentu)
Polje BrojacKasetaPoKlijentu se za svaki novi rekord poveca za 1. Brojs od 1 za svakog klijenta posebno. Znaci, Zika ce da ima brojeve 1,2,3,4,5,6 ali ce i Mika da ima brojeve 1,2,3,4,5,6,7,8 - brojac ide od 1 pa navise za svakog klijenta. Kako znas koja je kaseta cetvrta po redu - pa laoko, brojac mora da bude deljiv sa 4. Koristi Mod, INt ili sta god hoces da odredis da li je broj deljiv sa cetiri.
[ izonic @ 12.05.2005. 21:34 ] @
Evo za prvo pitanje a na drugo ne mogu odgovorit bez strukture baze.

Function BrojDana(OdDatuma As Variant, DoDatuma As Variant)

Dim BrojD As Integer
If VarType(OdDatuma) <> 7 Or VarType(DoDatuma) <> 7 Then
MsgBox "Pogresan datum"
Exit Function
Else
'kao OdDatuma = #5/19/2005#
'kao DoDatuma = #9/19/2005#
BrojD = Day(DoDatuma) - Day(OdDatuma)

Do While OdDatuma < DoDatuma + 1
BrojD = WeekDay(OdDatuma)
If BrojD <> 1 Then
BrojDana = BrojDana + 1
End If
OdDatuma = OdDatuma + 1
Loop
End If
End Function
[ DeX_ @ 13.05.2005. 19:23 ] @

Zahvaljujem se Zidaru i izonic-u na pomoci mislim da mi je sad puno jasnije kako da to rijesim.
S postovanjem!