Hi
I have "attempted" to create a user defined function, to use to workout the actual days the fall within a Period. This is to save me needing to use a complex nested if statment in the Sql
The function compiles (big deal), but it is not what I want.
Code below:
Code:
Option Compare Database
Option Explicit
Public Function WorkingDaysInPeriod(StartDate As Date, EndDate As Date) As Integer
'On Error GoTo Err_WorkingDaysInPeriod
Dim intCount2 As Integer
Dim Ans1 As Date
Dim Ans2 As Date
Ans1 = InputBox("Enter Period Start Date")
Ans2 = InputBox("Enter Period End Date")
Ans1 = DateValue(Ans1)
Ans2 = DateValue(Ans2)
Select Case WorkingDaysInPeriod(StartDate, EndDate)
Case StartDate >= Ans1 _
And StartDate <= Ans2 _
And EndDate <= Ans2
intCount2 = WorkingDays(StartDate, EndDate) + 1
Case StartDate >= Ans1 _
And StartDate <= Ans2 _
And EndDate > Ans2
intCount2 = WorkingDays(StartDate, Ans2) + 1
Case StartDate >= Ans1 _
And EndDate >= Ans1 _
And EndDate <= Ans2
intCount2 = WorkingDays(Ans1, EndDate) + 1
Case StartDate < Ans1 _
And EndDate > Ans2
intCount2 = WorkingDays(Ans1, Ans2) + 1
Case StartDate < Ans1 _
And EndDate > Ans1 _
And EndDate < Ans2
intCount2 = WorkingDays(Ans1, EndDate) + 1
Exit_WorkingDayInPeriods:
Exit Function
End Select
'Err_WorkingDaysInPeriod:
'Select Case Err
'
'Case Else
'MsgBox Err.Description
'Resume Exit_WorkingDaysInPeriod
'
'End Select
End Function
And this was the nested IIF staement in the sQL:
Code:
IIF(BD.[Class Start Date]>=[Please Enter Period Start Date] AND BD.[Class Start Date]<=[Please Enter Period End Date] AND BD.[Class End Date]>[Please Enter Period End Date],WORKINGDAYS(BD.[Class Start Date],[Please Enter Period End Date])+1,IIF(BD.[Class Start Date]>=[Please Enter Period Start Date] AND BD.[Class End Date]>=[Please Enter Period Start Date] AND BD.[Class End Date]<=[Please Enter Period End Date],WORKINGDAYS([Please Enter Period Start Date],BD.[Class End Date])+1,IIF(BD.[Class Start Date]<[Please Enter Period Start Date] AND BD.[Class End Date]>[Please Enter Period End Date],WORKINGDAYS([Please Enter Period Start Date],[Please Enter Period End Date])+1,IIF(BD.[Class Start Date]<[Please Enter Period Start Date] AND BD.[Class End Date]>[Please Enter Period Start Date] AND BD.[Class End Date]<[Please Enter Period End Date],WORKINGDAYS([Please Enter Period Start Date],BD.[Class End Date])+1,0)))))) AS Calculation
If that makes sense to anybody, any assistance would be much appreciated...
Thanks
Ronan