Public Function DateFYStart(ByVal intYear As Integer) As Date
Dim datFYstart As Date
Dim intWeekday As Integer
Dim intOffset As Integer
' Nominel start date of fiscal year.
datFYstart = DateSerial(intYear, 2, 1)
intWeekday = WeekDay(datFYstart, vbMonday)
If intWeekday <= 4 Then
' Use Monday before.
intOffset = -intWeekday
Else
' Use Monday next.
intOffset = 7 - intWeekday
End If
' Adjust start date to closest Monday.
datFYstart = DateAdd("d", 1 + intOffset, datFYstart)
DateFYStart = datFYstart
End Function
Public Function DateFYEnd(ByVal intYear As Integer) As Date
Dim datFYend As Date
' Subtract one day from start date of next FY.
datFYend = DateAdd("d", -1, DateFYStart(intYear + 1))
DateFYEnd = datFYend
End Function
Public Function FiscalYear(ByVal datDate As Date) As Integer
Dim intFYyear As Integer
intFYyear = Year(datDate)
If DateDiff("d", datDate, DateFYStart(intFYyear)) > 0 Then
' Fiscal year is before calendar year.
intFYyear = intFYyear - 1
End If
FiscalYear = intFYyear
End Function
Public Function FiscalWeek(ByVal datDate As Date) As Long
Dim lngFiscalWeek As Long
lngFiscalWeek = DateDiff("ww", DateFYStart(FiscalYear(datDate)), datDate, vbMonday) + 1
FiscalWeek = lngFiscalWeek
End Function
ASKER
Public Function YTDAmortizationReturnCalc(ByVal ClientNumber As String, ByVal DateOfData As Date, ByVal YTDAmortizationCalc As String) As Variant
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim strSQL As String
Set db = CurrentDb
ClientNumber = "ABC0"
DateOfData = "3/31/2007"
If YTDAmortizationCalc <> "" And IsNull(YTDAmortizationCalc) = False Then
Set rs = db.OpenRecordset("SELECT " & YTDAmortizationCalc & " FROM tblNonCalcSpreads INNER JOIN tblEBITDA ON (tblNonCalcSpreads.DateOfData = tblEBITDA.DateOfData) AND (tblNonCalcSpreads.ClientNumber = tblEBITDA.ClientNumber) WHERE tblEBITDA.ClientNumber = '" & ClientNumber & "' AND tblEBITDA.DateOfData = #" & DateOfData & "#")
YTDAmortizationReturnCalc = rs.Fields(0)
rs.Close
Set rs = Nothing
'db.Close
'Set db = Nothing
Else
If ClientNumber = "ABC0" Then
Set rs = db.OpenRecordset("SELECT a.ClientNumber, DSum(Amortization) From tblEBITDA a INNER JOIN tblAVSFSNIDCalc b ON a.ClientNumber = b.ClientNumber WHERE a.DateOfData BETWEEN Iif(Month(Date())>b.FYE,DateSerial(Year(Date()),b.FYE+1,1),DateSerial(Year(Date())-1,b.FYE+1,1) AND Iif(Month(Date())>b.FYE,DateSerial(Year(Date())+1,b.FYE+1,0),DateSerial(Year(Date()),b.FYE+1,0) GROUP BY a.ClientNumber")
Else
YTDAmortizationReturnCalc = Null
End If
End If
'This will save the value back to the table
strSQL = "Update tblEBITDA set YTDAmortization =" & YTDAmortizationReturnCalc & " WHERE tblEBITDA.ClientNumber = '" & ClientNumber & "' AND tblEBITDA.DateOfData = #" & DateOfData & "#"
CurrentDb.Execute strSQL, dbFailOnError
rs.Close
Set rs = Nothing
End Function
ASKER
ASKER
ASKER
ASKER
Public Function DateFYStart( _
ByVal intYear As Integer, _
ByVal intFYMonth As Integer) _
As Date
Dim datFYstart As Date
Dim intWeekday As Integer
Dim intOffset As Integer
' Nominel start date of fiscal year.
datFYstart = DateSerial(intYear, intFYMonth, 1)
ASKER
Public Function DateFYStart(ByVal intYear As Integer, ByVal intMonth As Integer) As Date
Dim datFYstart As Date
Dim intWeekday As Integer
Dim intOffset As Integer
'Nominel start date of fiscal year
datFYstart = DateSerial(intYear, intMonth, 1)
intWeekday = Weekday(datFYstart, vbMonday)
If intWeekday <= 4 Then
'Use Monday before
intOffset = -intWeekday
Else
'Use Monday next
intOffset = 7 - intWeekday
End If
'Adjust start date to closest Monday
datFYstart = DateAdd("d", 1 + intOffset, datFYstart)
DateFYStart = datFYstart
End Function
Public Function DateFYEnd(ByVal intYear As Integer, ByVal intMonth As Integer) As Date
Dim datFYend As Date
'Subtract one day from start date of next FY
datFYend = DateAdd("d", -1, DateFYStart(intYear + 1, intMonth))
DateFYEnd = datFYend
End Function
Public Function FiscalYear(ByVal datDate As Date) As Integer
Dim intFYyear As Integer
intFYyear = year(datDate)
If DateDiff("d", datDate, DateFYStart(intFYyear, FYE)) > 0 Then
'Fiscal year is before calendar year
intFYyear = intFYyear - 1
End If
FiscalYear = intFYyear
End Function
Public Function YTDAmortizationReturnCalc(ByVal ClientNumber As String, ByVal DateOfData As Date, ByVal YTDAmortizationCalc As String) As Variant
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim strSQL As String
Set db = CurrentDb
'Dim YTDAmort As Long
ClientNumber = "ABC0"
DateOfData = "3/31/2007"
If YTDAmortizationCalc <> "" And IsNull(YTDAmortizationCalc) = False Then
strSQL = "SELECT " & YTDAmortizationCalc & " " & _
"FROM tblNonCalcSpreads INNER JOIN tblEBITDA " & _
"ON (tblNonCalcSpreads.DateOfData = tblEBITDA.DateOfData) " & _
"AND (tblNonCalcSpreads.ClientNumber = tblEBITDA.ClientNumber) " & _
"WHERE (((tblEBITDA.ClientNumber) = '" & ClientNumber & "') " & _
"AND ((tblEBITDA.DateOfData) = #" & DateOfData & "#));"
Set rs = db.OpenRecordset(strSQL)
YTDAmortizationReturnCalc = rs.Fields(0)
rs.Close
Set rs = Nothing
'db.Close
Else
FiscalYear (DateOfData)
If ClientNumber = "ABC0" Then
'YTDAmort = DSum("[Amortization]", "tblEBITDA", "[ClientNumber] = '" & ClientNumber & "'")
'AND [DateOfData] BETWEEN DateFYStart(Year(DateOfData), Clients.FYE) " & _
' ' "AND DateFYEnd(Year(DateOfData))
strSQL = "SELECT Sum(Amortization) as Amort " & _
"FROM ((tblClients INNER JOIN tblNonCalcSpreads ON tblClients.ClientNumber = tblNonCalcSpreads.ClientNumber) " & _
"INNER JOIN tblEBITDA ON tblNonCalcSpreads.ClientNumber = tblEBITDA.ClientNumber " & _
"AND tblNonCalcSpreads.DateOfData = tblEBITDA.DateOfData) " & _
"WHERE tblEBITDA.DateOfData " & _
"BETWEEN DateFYStart(Year(#" & DateOfData & "#), tblClients.FYE) " & _
"AND DateFYEnd(Year(#" & DateOfData & "#), tblClients.FYE)" & _
"GROUP BY tblEBITDA.ClientNumber));"
'iif(Month(#" & DateOfData & "#)>tblClients.FYE,DateSerial(Year(#" & DateOfData & "#),tblClients.FYE+1,1),DateSerial(Year(#" & DateOfData & "#)-1,tblClients.FYE+1,1) " & _
'"AND iif(Month(#" & DateOfData & "#)>tblClients.FYE,DateSerial(Year(#" & DateOfData & "#)+1,tblClients.FYE+1,0),DateSerial(Year(#" & DateOfData & "#),tblClients.FYE+1,0)) " &
Debug.Print strSQL
Set rs = db.OpenRecordset(strSQL)
YTDAmortizationReturnCalc = rs!Amort
Else
YTDAmortizationReturnCalc = Null
End If
End If
'This will save the value back to the table
strSQL = "UPDATE tblEBITDA " & _
"SET YTDAmortization =" & YTDAmortizationReturnCalc & " " & _
"WHERE (((tblEBITDA.ClientNumber) = '" & ClientNumber & "'_ " & _
"AND ((tblEBITDA.DateOfData) = #" & DateOfData & "#));"
CurrentDb.Execute strSQL, dbFailOnError
rs.Close
Set rs = Nothing
Set db = Nothing
End Function
Public Function DateFYStart(ByVal intYear As Integer, ByVal intMonth As Integer) As Date
Dim datFYstart As Date
'Nominel start date of fiscal year
datFYstart = DateSerial(intYear, intMonth, 1)
DateFYStart = datFYstart
End Function
ASKER
ASKER
Public Function YTDAmortizationReturnCalc(ByVal ClientNumber As String, ByVal DateOfData As Date, ByVal YTDAmortizationCalc As String) As Variant
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim strSQL As String
Set db = CurrentDb
'Dim FYEnd As Date
'Dim YTDAmort As Long
ClientNumber = "ABC0"
DateOfData = "3/31/2007"
If YTDAmortizationCalc <> "" And IsNull(YTDAmortizationCalc) = False Then
strSQL = "SELECT " & YTDAmortizationCalc & " " & _
"FROM tblNonCalcSpreads INNER JOIN tblEBITDA " & _
"ON (tblNonCalcSpreads.DateOfData = tblEBITDA.DateOfData) " & _
"AND (tblNonCalcSpreads.ClientNumber = tblEBITDA.ClientNumber) " & _
"WHERE (((tblEBITDA.ClientNumber) = '" & ClientNumber & "') " & _
"AND ((tblEBITDA.DateOfData) = #" & DateOfData & "#));"
Set rs = db.OpenRecordset(strSQL)
YTDAmortizationReturnCalc = rs.Fields(0)
rs.Close
Set rs = Nothing
'db.Close
Else
'FYEnd = DateSerial(FiscalYear(DateOfData), [tblClients.FYE], 1)
'Debug.Print FYEnd
If ClientNumber = "ABC0" Then
'YTDAmort = DSum("[Amortization]", "tblEBITDA", "[ClientNumber] = '" & ClientNumber & "'")
'AND [DateOfData] BETWEEN DateFYStart(Year(DateOfData), Clients.FYE) " & _
' ' "AND DateFYEnd(Year(DateOfData))
strSQL = "SELECT Sum(Amortization) as Amort, DateSerial(FiscalYear(DateOfData),tblClients.FYE,1) as FYEnd " & _
"FROM ((tblClients INNER JOIN tblNonCalcSpreads ON tblClients.ClientNumber = tblNonCalcSpreads.ClientNumber) " & _
"INNER JOIN tblEBITDA ON tblNonCalcSpreads.ClientNumber = tblEBITDA.ClientNumber " & _
"AND tblNonCalcSpreads.DateOfData = tblEBITDA.DateOfData) " & _
"WHERE tblEBITDA.DateOfData " & _
"BETWEEN iif(DateOfData>FYEnd,DateAdd('m', +1, (DateAdd('y', -1, FYEnd)), DateAdd('m', +1, FYEnd))" & _
"AND (DateOfData)" & _
"GROUP BY tblEBITDA.ClientNumber));"
'DateFYStart(Year(#" & DateOfData & "#), tblClients.FYE) " & _
'"AND DateFYEnd(Year(#" & DateOfData & "#), tblClients.FYE)" & _
Debug.Print strSQL
Set rs = db.OpenRecordset(strSQL)
YTDAmortizationReturnCalc = rs!Amort
Else
YTDAmortizationReturnCalc = Null
End If
End If
'This will save the value back to the table
strSQL = "UPDATE tblEBITDA " & _
"SET YTDAmortization =" & YTDAmortizationReturnCalc & " " & _
"WHERE (((tblEBITDA.ClientNumber) = '" & ClientNumber & "'_ " & _
"AND ((tblEBITDA.DateOfData) = #" & DateOfData & "#));"
CurrentDb.Execute strSQL, dbFailOnError
rs.Close
Set rs = Nothing
Set db = Nothing
End Function
Dim strDate As String
<snip>
DateOfData = #3/31/2007#
strDate = Format(DateOfData, "d\/m\/yyyy hh:nn AM/PM"
If YTDAmortizationCalc <> "" And IsNull(YTDAmortizationCalc) = False Then
strSQL = "SELECT " & YTDAmortizationCalc & " " & _
"FROM tblNonCalcSpreads INNER JOIN tblEBITDA " & _
"ON (tblNonCalcSpreads.DateOfData = tblEBITDA.DateOfData) " & _
"AND (tblNonCalcSpreads.ClientNumber = tblEBITDA.ClientNumber) " & _
"WHERE (((tblEBITDA.ClientNumber) = '" & ClientNumber & "') " & _
"AND ((tblEBITDA.DateOfData) = #" & strDate & "#));"
<snip>
ASKER
strSQL = "SELECT Sum(Amortization) as Amort, DateSerial(FiscalYear(DateOfData),tblClients.FYE,1) as FYEnd " & _
"FROM ((tblClients INNER JOIN tblNonCalcSpreads ON tblClients.ClientNumber = tblNonCalcSpreads.ClientNumber) " & _
"INNER JOIN tblEBITDA ON tblNonCalcSpreads.ClientNumber = tblEBITDA.ClientNumber " & _
"AND tblNonCalcSpreads.DateOfData = tblEBITDA.DateOfData) " & _
"WHERE tblEBITDA.DateOfData " & _
"BETWEEN iif(DateOfData>FYEnd,DateAdd('m', +1, (DateAdd('y', -1, FYEnd)), DateAdd('m', +1, FYEnd))" & _
"AND (DateOfData)" & _
"GROUP BY tblEBITDA.ClientNumber));"
ASKER
ASKER
Public Function YTDAmortizationReturnCalc(ByVal ClientNumber As String, ByVal DateOfData As Date, ByVal YTDAmortizationCalc As String) As Variant
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim strSQL As String
Set db = CurrentDb
ClientNumber = "ABC0"
DateOfData = "3/31/2007"
If YTDAmortizationCalc <> "" And IsNull(YTDAmortizationCalc) = False Then
strSQL = "SELECT " & YTDAmortizationCalc & " " & _
"FROM tblNonCalcSpreads INNER JOIN tblEBITDA " & _
"ON (tblNonCalcSpreads.DateOfData = tblEBITDA.DateOfData) " & _
"AND (tblNonCalcSpreads.ClientNumber = tblEBITDA.ClientNumber) " & _
"WHERE (((tblEBITDA.ClientNumber) = '" & ClientNumber & "') " & _
"AND ((tblEBITDA.DateOfData) = #" & DateOfData & "#));"
Set rs = db.OpenRecordset(strSQL)
YTDAmortizationReturnCalc = rs.Fields(0)
rs.Close
Set rs = Nothing
'db.Close
Else
If ClientNumber = "ABC0" Then
strSQL = "SELECT tblEBITDA.ClientNumber, Sum(tblEBITDA.Amortization) " & _
"FROM tblEBITDA INNER JOIN tblClients " & _
"ON tblEBITDA.ClientNumber = tblClients.ClientNumber " & _
"WHERE tblEBITDA.DateOfData BETWEEN " & _
"Iif(Month(Date())>tblClients.FYE,DateSerial(Year(Date()),tblClients.FYE+1,1),DateSerial(Year(Date())-1,tblClients.FYE+1,1) " & _
"AND Iif(Month(Date())>tblClients.FYE,DateSerial(Year(Date())+1,tblClients.FYE+1,0),DateSerial(Year(Date()),tblClients.FYE+1,0) " & _
"AND tblEBITDA.DateOfData<=DateAdd('d',-Day(Date()),Date())" & _
"GROUP BY tblEBITDA.ClientNumber;"
Debug.Print strSQL
Set rs = db.OpenRecordset(strSQL)
YTDAmortizationReturnCalc = rs!Amort
Else
YTDAmortizationReturnCalc = Null
End If
End If
'This will save the value back to the table
strSQL = "UPDATE tblEBITDA " & _
"SET YTDAmortization =" & YTDAmortizationReturnCalc & " " & _
"WHERE (((tblEBITDA.ClientNumber) = '" & ClientNumber & "'_ " & _
"AND ((tblEBITDA.DateOfData) = #" & DateOfData & "#));"
CurrentDb.Execute strSQL, dbFailOnError
rs.Close
Set rs = Nothing
Set db = Nothing
End Function
ASKER
SELECT tblEBITDA.ClientNumber, Sum(tblNonCalcSpreads.Amortization) AS Amort, tblEBITDA.DateOfData
FROM (tblClients INNER JOIN tblEBITDA ON tblClients.ClientNumber = tblEBITDA.ClientNumber) INNER JOIN tblNonCalcSpreads ON (tblNonCalcSpreads.DateOfData = tblEBITDA.DateOfData) AND (tblNonCalcSpreads.ClientNumber = tblEBITDA.ClientNumber) AND (tblClients.ClientNumber = tblNonCalcSpreads.ClientNumber)
GROUP BY tblEBITDA.ClientNumber
HAVING (((tblEBITDA.DateOfData) Between IIf(Month(Date())>[tblClients].[FYE],DateSerial(Year(Date())+1,[tblClients].[FYE],0),DateSerial(Year(Date()),[tblClients].[FYE]+1,0)) And IIf(Month(Date())>[tblClients].[FYE],DateSerial(Year(Date())+1,[tblClients].[FYE]+1,0),DateSerial(Year(Date()),[tblClients].[FYE]+1,0))) AND ((tblEBITDA.DateOfData)<=DateAdd('d',-Day(Date()),Date())));
ASKER
SELECT tblEBITDA.ClientNumber, Sum(tblNonCalcSpreads.Amortization) AS Amort
FROM (tblClients
INNER JOIN tblEBITDA ON tblClients.ClientNumber = tblEBITDA.ClientNumber)
INNER JOIN tblNonCalcSpreads ON (tblNonCalcSpreads.DateOfData = tblEBITDA.DateOfData)
AND (tblNonCalcSpreads.ClientNumber = tblEBITDA.ClientNumber)
AND (tblClients.ClientNumber = tblNonCalcSpreads.ClientNumber)
WHERE tblEBITDA.DateOfData Between IIf(Month(Date())>[tblClients].[FYE],
DateSerial(Year(Date()),[tblClients].[FYE]+1,1),DateSerial(Year(Date()),[tblClients].[FYE]+1,0)) AND
IIf(Month(Date())>[tblClients].[FYE],
DateSerial(Year(Date())+1,[tblClients].[FYE]+1,0),DateSerial(Year(Date()),[tblClients].[FYE]+1,0)))
GROUP BY tblEBITDA.ClientNumber
ASKER
Public Function YTDDepreciationReturnCalc(ByVal ClientNumber As String, ByVal DateOfData As Date, ByVal YTDDepreciationCalc As String) As Variant
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim strSQL As String
Set db = CurrentDb
ClientNumber = "ABC0"
DateOfData = "3/31/2007"
If YTDDepreciationCalc <> "" And IsNull(YTDDepreciationCalc) = False Then
strSQL = "SELECT " & YTDDepreciationCalc & " " & _
"FROM tblNonCalcSpreads INNER JOIN tblEBITDA " & _
"ON (tblNonCalcSpreads.DateOfData = tblEBITDA.DateOfData) " & _
"AND (tblNonCalcSpreads.ClientNumber = tblEBITDA.ClientNumber) " & _
"WHERE tblEBITDA.ClientNumber = '" & ClientNumber & "' " & _
"AND tblEBITDA.DateOfData = #" & DateOfData & "#"
Set rs = db.OpenRecordset(strSQL)
YTDDepreciationReturnCalc = rs.Fields(0)
rs.Close
Set rs = Nothing
Else
If ClientNumber = "ABC0" Then
strSQL = "SELECT tblEBITDA.ClientNumber, Sum(tblNonCalcSpreads.Depreciation) AS Depr " & _
"FROM (tblClients INNER JOIN tblEBITDA " & _
"ON tblClients.ClientNumber = tblEBITDA.ClientNumber) INNER JOIN tblNonCalcSpreads " & _
"ON (tblNonCalcSpreads.DateOfData = tblEBITDA.DateOfData) " & _
"AND (tblNonCalcSpreads.ClientNumber = tblEBITDA.ClientNumber) " & _
"AND (tblClients.ClientNumber = tblNonCalcSpreads.ClientNumber) " & _
"WHERE (((tblEBITDA.DateOfData) BETWEEN " & _
"IIf(Month(Date())>[tblClients].[FYE],DateSerial(Year(Date())+1,[tblClients].[FYE],0),DateSerial(Year(Date()),[tblClients].[FYE]+1,0)) " & _
"AND IIf(Month(Date())>[tblClients].[FYE],DateSerial(Year(Date())+1,[tblClients].[FYE]+1,0),DateSerial(Year(Date()),[tblClients].[FYE]+1,0))))" & _
"GROUP BY tblEBITDA.ClientNumber;"
Debug.Print strSQL
Set rs = db.OpenRecordset(strSQL)
If rs.RecordCount = 0 Then
Debug.Print rs.RecordCount
YTDDepreciationReturnCalc = Null
Exit Function
End If
YTDDepreciationReturnCalc = rs!Depr
Else
YTDDepreciationReturnCalc = Null
End If
End If
'This will save the value back to the table
strSQL = "UPDATE tblEBITDA " & _
"SET YTDDepreciation =" & YTDDepreciationReturnCalc & " " & _
"WHERE tblEBITDA.ClientNumber = '" & ClientNumber & "' " & _
"AND tblEBITDA.DateOfData = #" & DateOfData & "#"
CurrentDb.Execute strSQL, dbFailOnError
rs.Close
Set rs = Nothing
'db.Close
Set db = Nothing
End Function
ASKER
Public Function YTDDepreciationReturnCalc(ByVal CliNum As String, ByVal strDate As Date, ByVal YTDDepreciationCalc As String) As Variant
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim strSQL As String
Set db = CurrentDb
CliNum = "ABC0"
strDate = "3/31/2007"
If YTDDepreciationCalc <> "" And IsNull(YTDDepreciationCalc) = False Then
strSQL = "SELECT " & YTDDepreciationCalc & " " & _
"FROM tblNonCalcSpreads INNER JOIN tblEBITDA " & _
"ON (tblNonCalcSpreads.DateOfData = tblEBITDA.DateOfData) " & _
"AND (tblNonCalcSpreads.ClientNumber = tblEBITDA.ClientNumber) " & _
"WHERE tblEBITDA.ClientNumber = '" & CliNum & "' " & _
"AND tblEBITDA.DateOfData = #" & strDate & "#"
Set rs = db.OpenRecordset(strSQL)
YTDDepreciationReturnCalc = rs.Fields(0)
rs.Close
Set rs = Nothing
Else
If CliNum = "ABC0" Then
strSQL = "SELECT tblEBITDA.ClientNumber, Sum(tblNonCalcSpreads.Depreciation) AS Depr " & _
"FROM (tblClients INNER JOIN tblEBITDA " & _
"ON tblClients.ClientNumber = tblEBITDA.ClientNumber) INNER JOIN tblNonCalcSpreads " & _
"ON (tblNonCalcSpreads.DateOfData = tblEBITDA.DateOfData) " & _
"AND (tblNonCalcSpreads.ClientNumber = tblEBITDA.ClientNumber) " & _
"AND (tblClients.ClientNumber = tblNonCalcSpreads.ClientNumber) " & _
"WHERE (((tblEBITDA.DateOfData) BETWEEN " & _
"IIf(Month(Date())>[tblClients].[FYE],DateSerial(Year(Date())+1,[tblClients].[FYE],0),DateSerial(Year(Date()),[tblClients].[FYE]+1,0)) " & _
"AND IIf(Month(Date())>[tblClients].[FYE],DateSerial(Year(Date())+1,[tblClients].[FYE]+1,0),DateSerial(Year(Date()),[tblClients].[FYE]+1,0))))" & _
"GROUP BY tblEBITDA.ClientNumber;"
Debug.Print strSQL
Set rs = db.OpenRecordset(strSQL)
If rs.RecordCount = 0 Then
Debug.Print rs.RecordCount
YTDDepreciationReturnCalc = Null
Exit Function
End If
YTDDepreciationReturnCalc = rs!Depr
Else
YTDDepreciationReturnCalc = Null
End If
End If
'This will save the value back to the table
strSQL = "UPDATE tblEBITDA " & _
"SET YTDDepreciation =" & YTDDepreciationReturnCalc & " " & _
"WHERE tblEBITDA.ClientNumber = '" & CliNum & "' " & _
"AND tblEBITDA.DateOfData = #" & strDate & "#"
CurrentDb.Execute strSQL, dbFailOnError
rs.Close
Set rs = Nothing
'db.Close
Set db = Nothing
End Function
ASKER
Public Function YTDDepreciationReturnCalc(ByVal CliNum As String, ByVal strDate As Date, ByVal YTDDepreciationCalc As String) As Variant
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim strSQL As String
Set db = CurrentDb
CliNum = "ABC0"
strDate = "12/31/2007"
If YTDDepreciationCalc <> "" And IsNull(YTDDepreciationCalc) = False Then
strSQL = "SELECT " & YTDDepreciationCalc & " " & _
"FROM tblNonCalcSpreads INNER JOIN tblEBITDA " & _
"ON (tblNonCalcSpreads.DateOfData = tblEBITDA.DateOfData) " & _
"AND (tblNonCalcSpreads.ClientNumber = tblEBITDA.ClientNumber) " & _
"WHERE tblEBITDA.ClientNumber = '" & CliNum & "' " & _
"AND tblEBITDA.DateOfData = #" & strDate & "#"
Set rs = db.OpenRecordset(strSQL)
YTDDepreciationReturnCalc = rs.Fields(0)
rs.Close
Set rs = Nothing
Else
If CliNum = "ABC0" Then
strSQL = "SELECT tblEBITDA.ClientNumber, Sum(tblNonCalcSpreads.Depreciation) AS Depr " & _
"FROM (tblClients INNER JOIN tblEBITDA " & _
"ON tblClients.ClientNumber = tblEBITDA.ClientNumber) INNER JOIN tblNonCalcSpreads " & _
"ON (tblNonCalcSpreads.DateOfData = tblEBITDA.DateOfData) " & _
"AND (tblNonCalcSpreads.ClientNumber = tblEBITDA.ClientNumber) " & _
"AND (tblClients.ClientNumber = tblNonCalcSpreads.ClientNumber) " & _
"WHERE (((tblEBITDA.DateOfData) BETWEEN " & _
"IIf(Month(Date())>[tblClients].[FYE],DateSerial(Year(Date()),[tblClients].[FYE]+1,1),DateSerial(Year(Date()),[tblClients].[FYE]+1,1)) " & _
"AND IIf(Month(Date())>[tblClients].[FYE],DateSerial(Year(Date())+1,[tblClients].[FYE]+1,0),DateSerial(Year(Date()),[tblClients].[FYE]+1,0))))" & _
"GROUP BY tblEBITDA.ClientNumber;"
Debug.Print strSQL
Set rs = db.OpenRecordset(strSQL)
If rs.RecordCount = 0 Then
Debug.Print rs.RecordCount
YTDDepreciationReturnCalc = Null
Exit Function
End If
YTDDepreciationReturnCalc = rs!Depr
Else
YTDDepreciationReturnCalc = Null
End If
End If
'This will save the value back to the table
strSQL = "UPDATE tblEBITDA " & _
"SET YTDDepreciation =" & YTDDepreciationReturnCalc & " " & _
"WHERE tblEBITDA.ClientNumber = '" & CliNum & "' " & _
"AND tblEBITDA.DateOfData = #" & strDate & "#"
CurrentDb.Execute strSQL, dbFailOnError
rs.Close
Set rs = Nothing
'db.Close
Set db = Nothing
End Function
ASKER
ASKER
ASKER
ASKER
ASKER
Public Function YTDDepreciationReturnCalc(ByVal CliNum As String, ByVal strDate As String, ByVal YTDDepreciationCalc As String) As Variant
Comment out line 7 - prefix a single quote.ASKER
ASKER
Public Function YTDDepreciationReturnCalc(ByVal CliNum As String, ByVal strDate As String, ByVal YTDDepreciationCalc As String) As Variant
Dim db As dao.Database
Dim rs As dao.Recordset
Dim strSQL As String
Set db = CurrentDb
CliNum = "ABC0"
'strDate = "12/31/2007"
If YTDDepreciationCalc <> "" And IsNull(YTDDepreciationCalc) = False Then
strSQL = "SELECT " & YTDDepreciationCalc & " " & _
"FROM tblNonCalcSpreads INNER JOIN tblEBITDA " & _
"ON (tblNonCalcSpreads.DateOfData = tblEBITDA.DateOfData) " & _
"AND (tblNonCalcSpreads.ClientNumber = tblEBITDA.ClientNumber) " & _
"WHERE tblEBITDA.ClientNumber = '" & CliNum & "' " & _
"AND tblEBITDA.DateOfData = #" & strDate & "#"
Set rs = db.OpenRecordset(strSQL)
YTDDepreciationReturnCalc = rs.Fields(0)
rs.Close
Set rs = Nothing
Else
If CliNum = "ABC0" Then
strSQL = "SELECT tblEBITDA.ClientNumber, Sum(tblNonCalcSpreads.Depreciation) AS Depr " & _
"FROM (tblClients INNER JOIN tblEBITDA " & _
"ON tblClients.ClientNumber = tblEBITDA.ClientNumber) INNER JOIN tblNonCalcSpreads " & _
"ON (tblNonCalcSpreads.DateOfData = tblEBITDA.DateOfData) " & _
"AND (tblNonCalcSpreads.ClientNumber = tblEBITDA.ClientNumber) " & _
"AND (tblClients.ClientNumber = tblNonCalcSpreads.ClientNumber) " & _
"WHERE (((tblEBITDA.DateOfData) BETWEEN " & _
"IIf(Month(Date())>[tblClients].[FYE],DateSerial(Year(Date()),[tblClients].[FYE]+1,1),DateSerial(Year(Date()),[tblClients].[FYE]+1,1)) " & _
"AND IIf(Month(Date())>[tblClients].[FYE],DateSerial(Year(Date())+1,[tblClients].[FYE]+1,0),DateSerial(Year(Date()),[tblClients].[FYE]+1,0))))" & _
"GROUP BY tblEBITDA.ClientNumber;"
Debug.Print strSQL
Set rs = db.OpenRecordset(strSQL)
If rs.RecordCount = 0 Then
Debug.Print rs.RecordCount
YTDDepreciationReturnCalc = Null
Exit Function
End If
YTDDepreciationReturnCalc = rs!Depr
Else
YTDDepreciationReturnCalc = Null
End If
End If
'This will save the value back to the table
strSQL = "UPDATE tblEBITDA " & _
"SET YTDDepreciation =" & YTDDepreciationReturnCalc & " " & _
"WHERE tblEBITDA.ClientNumber = '" & CliNum & "' " & _
"AND tblEBITDA.DateOfData = #" & strDate & "#"
CurrentDb.Execute strSQL, dbFailOnError
'rs.Close
Set rs = Nothing
'db.Close
Set db = Nothing
End Function
ASKER
ASKER
ClientNumber DateOfData YTDDepreciation
ABC0 1/31/2007 5
ABC0 2/28/2007 9
ABC0 3/31/2007 52
ABC0 4/30/2007 19
ABC0 5/31/2007 23
ABC0 6/30/2007 28
ABC0 7/31/2007 33
ABC0 8/31/2007 37
ABC0 9/30/2007 42
ABC0 10/31/2007 45
ABC0 11/30/2007 49
ABC0 12/31/2007 52
YTDDepreciation
5
9
14
19
23
28
33
37
42
45
49
52
ASKER
ASKER
ASKER
SELECT tblNonCalcSpreads.ClientNumber, tblNonCalcSpreads.DateOfData, YTDDepreciationReturnCalc([tblNonCalcSpreads].[ClientNumber],[tblNonCalcSpreads].[DateOfData],[tblEBITDA].[YTDDepreciation]) AS YTDDepreciation
FROM (tblClients INNER JOIN tblNonCalcSpreads ON tblClients.ClientNumber = tblNonCalcSpreads.ClientNumber) INNER JOIN (tblEBITDACalc INNER JOIN tblEBITDA ON tblEBITDACalc.ClientNumber = tblEBITDA.ClientNumber) ON (tblNonCalcSpreads.DateOfData = tblEBITDA.DateOfData) AND (tblNonCalcSpreads.ClientNumber = tblEBITDA.ClientNumber)
WHERE (((tblNonCalcSpreads.ClientNumber)="ABC0"));
ASKER
YTDDepreciation
5
9
52 <- notice this. As I said in my post at http:#a21963861
19
23
28
33
37
42
45
49
52
http:#a21963861
ASKER
ASKER
ASKER
Public Function YTDDepreciationReturnCalc(ByVal CliNum As String, ByVal strDate As Date, ByVal YTDDepreciationCalc As String) As Variant
Dim db As dao.Database
Dim rs As dao.Recordset
Dim strSQL As String
Set db = CurrentDb
CliNum = "ABC0"
strDate = "5/31/2007"
If YTDDepreciationCalc <> "" And IsNull(YTDDepreciationCalc) = False Then
strSQL = "SELECT " & YTDDepreciationCalc & " " & _
"FROM tblNonCalcSpreads INNER JOIN tblEBITDA " & _
"ON (tblNonCalcSpreads.DateOfData = tblEBITDA.DateOfData) " & _
"AND (tblNonCalcSpreads.ClientNumber = tblEBITDA.ClientNumber) " & _
"WHERE tblEBITDA.ClientNumber = '" & CliNum & "' " & _
"AND tblEBITDA.DateOfData = #" & strDate & "#"
Set rs = db.OpenRecordset(strSQL)
YTDDepreciationReturnCalc = rs.Fields(0)
rs.Close
Set rs = Nothing
Else
If CliNum = "ABC0" Then
strSQL = "SELECT Sum(tblNonCalcSpreads.Depreciation) AS Depr " & _
"FROM (tblClients INNER JOIN tblEBITDA " & _
"ON tblClients.ClientNumber = tblEBITDA.ClientNumber) INNER JOIN tblNonCalcSpreads " & _
"ON (tblNonCalcSpreads.DateOfData = tblEBITDA.DateOfData) " & _
"AND (tblNonCalcSpreads.ClientNumber = tblEBITDA.ClientNumber) " & _
"AND (tblClients.ClientNumber = tblNonCalcSpreads.ClientNumber) " & _
"WHERE (((tblEBITDA.DateOfData) BETWEEN " & _
"IIf(Month(#" & strDate & "#)>[tblClients].[FYE],DateSerial(Year(#" & strDate & "#),[tblClients].[FYE]+1,1),DateSerial(Year(#" & strDate & "#),[tblClients].[FYE]+1,1)) " & _
"AND IIf(Month(#" & strDate & "#)>[tblClients].[FYE],DateSerial(Year(#" & strDate & "#)+1,[tblClients].[FYE]+1,0),DateSerial(Year(#" & strDate & "#),[tblClients].[FYE]+1,0))));"
Debug.Print strSQL
Set rs = db.OpenRecordset(strSQL)
If rs.RecordCount = 0 Then
Debug.Print rs.RecordCount
YTDDepreciationReturnCalc = Null
Exit Function
End If
YTDDepreciationReturnCalc = rs!Depr
Debug.Print rs!Depr
Else
YTDDepreciationReturnCalc = Null
End If
End If
'This will save the value back to the table
strSQL = "UPDATE tblEBITDA " & _
"SET YTDDepreciation =" & YTDDepreciationReturnCalc & " " & _
"WHERE tblEBITDA.ClientNumber = '" & CliNum & "' " & _
"AND tblEBITDA.DateOfData = #" & strDate & "#"
CurrentDb.Execute strSQL, dbFailOnError
'rs.Close
Set rs = Nothing
'db.Close
Set db = Nothing
End Function
ASKER
ASKER
ASKER
Public Function YTDDepreciationReturnCalc(ByVal CliNum As String, ByVal strDate As Date, ByVal YTDDepreciationCalc As String) As Variant
Dim db As dao.Database
Dim rs As dao.Recordset
Dim strSQL As String
Set db = CurrentDb
CliNum = "ABC0"
'strDate = "5/31/2007" <--Commented out
'If YTDDepreciationCalc <> "" And IsNull(YTDDepreciationCalc) = False Then <---Changed as in next line
Nz(YTDDepreciationCalc,"")<> ""
strSQL = "SELECT " & YTDDepreciationCalc & " " & _
"FROM tblNonCalcSpreads INNER JOIN tblEBITDA " & _
"ON (tblNonCalcSpreads.DateOfData = tblEBITDA.DateOfData) " & _
"AND (tblNonCalcSpreads.ClientNumber = tblEBITDA.ClientNumber) " & _
"WHERE tblEBITDA.ClientNumber = '" & CliNum & "' " & _
"AND tblEBITDA.DateOfData = #" & strDate & "#"
Set rs = db.OpenRecordset(strSQL)
YTDDepreciationReturnCalc = rs.Fields(0)
rs.Close
Set rs = Nothing
Else
If CliNum = "ABC0" Then
strSQL = "SELECT Sum(tblNonCalcSpreads.Depreciation) AS Depr " & _
"FROM (tblClients INNER JOIN tblEBITDA " & _
"ON tblClients.ClientNumber = tblEBITDA.ClientNumber) INNER JOIN tblNonCalcSpreads " & _
"ON (tblNonCalcSpreads.DateOfData = tblEBITDA.DateOfData) " & _
"AND (tblNonCalcSpreads.ClientNumber = tblEBITDA.ClientNumber) " & _
"AND (tblClients.ClientNumber = tblNonCalcSpreads.ClientNumber) " & _
"WHERE tblEBITDA.DateOfData BETWEEN " & _
"IIf(Month(strDate)>[tblClients].[FYE],DateSerial(Year(strDate),[tblClients].[FYE]+1,1), " & _
"DateSerial(Year(strDate)-1,[tblClients].[FYE]+1,1)) AND " & _
"IIf(Month(strDate)>[tblClients].[FYE],DateSerial(Year(strDate)+1,[tblClients].[FYE]+1,0), " & _
"DateSerial(Year(strDate),[tblClients].[FYE]+1,0));"
Debug.Print strSQL
Set rs = db.OpenRecordset(strSQL)
If rs.RecordCount = 0 Then
Debug.Print rs.RecordCount
YTDDepreciationReturnCalc = Null
Exit Function
End If
YTDDepreciationReturnCalc = rs!Depr
Debug.Print rs!Depr
Else
YTDDepreciationReturnCalc = Null
End If
End If
'This will save the value back to the table
strSQL = "UPDATE tblEBITDA " & _
"SET YTDDepreciation =" & YTDDepreciationReturnCalc & " " & _
"WHERE tblEBITDA.ClientNumber = '" & CliNum & "' " & _
"AND tblEBITDA.DateOfData = #" & strDate & "#"
CurrentDb.Execute strSQL, dbFailOnError
'rs.Close
Set rs = Nothing
'db.Close
Set db = Nothing
End Function
ASKER
After another good hard look at this thing, I can see where strSQL in the Else part is totally wrong. The function is passed the ClientNumber as CliNum and the date as strDate so you can use tblNonCalcSpreads directly without any joins.
strSQL = "SELECT tblNonCalcSpreads.ClientNumber, Sum(tblNonCalcSpreads.Depreciation) AS Depr " & _
"FROM tblNonCalcSpreads WHERE tblNonCalcSpreads.DateOfData = #" & strDate & _
"# AND tblNonCalcSpreads.ClientNumber = '" & CliNum & _
"' GROUP BY tblNonCalcSpreads.ClientNumber;"
ASKER
ASKER
ASKER
strDate = "#07/14/2008#"
ASKER
ASKER
ASKER
"WHERE tblNonCalcSpreads.DateOfData BETWEEN " & _
"IIf(Month(#" & strDate & "#)>[tblClients].[FYE],DateSerial(Year(#" & strDate & "#),[tblClients].[FYE]+1,1), " & _
"DateSerial(Year(#" & strDate & "#)-1,[tblClients].[FYE]+1,1)) AND #" & _
strData & "#));"
ASKER
ASKER
Public Function YTDDepreciationReturnCalc(ByVal CliNum As String, ByVal dtDate As Date, ByVal YTDDepreciationCalc As String) As Variant
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim strSQL As String
Set db = CurrentDb
CliNum = "ABC0"
dtDate = #10/31/2007#
If YTDDepreciationCalc <> "" And IsNull(YTDDepreciationCalc) = False Then
strSQL = "SELECT " & YTDDepreciationCalc & " " & _
"FROM tblNonCalcSpreads INNER JOIN tblEBITDA " & _
"ON (tblNonCalcSpreads.DateOfData = tblEBITDA.DateOfData) " & _
"AND (tblNonCalcSpreads.ClientNumber = tblEBITDA.ClientNumber) " & _
"WHERE tblEBITDA.ClientNumber = '" & CliNum & "' " & _
"AND tblEBITDA.DateOfData = #" & dtDate & "#"
Set rs = db.OpenRecordset(strSQL)
YTDDepreciationReturnCalc = rs.Fields(0)
rs.Close
Set rs = Nothing
Else
If CliNum = "ABC0" Then
strSQL = "SELECT Sum(tblNonCalcSpreads.Depreciation) AS Depr " & _
"FROM (tblNonCalcSpreads INNER JOIN tblClients " & _
"ON tblNonCalcSpreads.ClientNumber = tblClients.ClientNumber " & _
"WHERE tblNonCalcSpreads.DateOfData BETWEEN " & _
"IIf(Month(#" & dtDate & "#)>[tblClients].[FYE],DateSerial(Year(#" & dtDate & "#),[tblClients].[FYE]+1,1), " & _
"DateSerial(Year(#" & dtDate & "#)-1,[tblClients].[FYE]+1,1)) AND " & _
"IIf(Month(#" & dtDate & "#)>[tblClients].[FYE],DateSerial(Year(#" & dtDate & "#)+1,[tblClients].[FYE]+1,0), " & _
"DateSerial(Year(#" & dtDate & "#),[tblClients].[FYE]+1,0));"
Debug.Print strSQL
Set rs = db.OpenRecordset(strSQL)
If rs.RecordCount = 0 Then
Debug.Print rs.RecordCount
YTDDepreciationReturnCalc = Null
Exit Function
End If
YTDDepreciationReturnCalc = rs!Depr
Debug.Print rs!Depr
Else
YTDDepreciationReturnCalc = Null
End If
End If
'This will save the value back to the table
strSQL = "UPDATE tblEBITDA " & _
"SET YTDDepreciation =" & YTDDepreciationReturnCalc & " " & _
"WHERE tblEBITDA.ClientNumber = '" & CliNum & "' " & _
"AND tblEBITDA.DateOfData = #" & dtDate & "#"
CurrentDb.Execute strSQL, dbFailOnError
'rs.Close
Set rs = Nothing
'db.Close
Set db = Nothing
End Function
ASKER
SELECT Sum(tblNonCalcSpreads.Depreciation) AS Depr FROM (tblClients INNER JOIN tblNonCalcSpreads ON tblClients.ClientNumber = tblNonCalcSpreads.ClientNumber) INNER JOIN (tblEBITDACalc INNER JOIN tblEBITDA ON tblEBITDACalc.ClientNumber = tblEBITDA.ClientNumber) ON (tblNonCalcSpreads.DateOfData = tblEBITDA.DateOfData) AND (tblNonCalcSpreads.ClientNumber = tblEBITDA.ClientNumber)WHERE tblNonCalcSpreads.DateOfData BETWEEN IIf(Month(#10/31/2007#)>[tblClients].[FYE],DateSerial(Year(#10/31/2007#),[tblClients].[FYE]+1,1), DateSerial(Year(#10/31/2007#)-1,[tblClients].[FYE]+1,1)) AND IIf(Month(#10/31/2007#)>[tblClients].[FYE],DateSerial(Year(#10/31/2007#)+1,[tblClients].[FYE]+1,0), DateSerial(Year(#10/31/2007#),[tblClients].[FYE]+1,0));
ASKER
ASKER
Sub AJ()
Dim cnt As Long
Dim strSQL
For cnt = 1 To 12
Debug.Print DateSerial(Year(#10/31/2007#), cnt + 1, 1) _
, DateSerial(Year(#10/31/2007#) + 1, cnt + 1, 1) _
, DateSerial(Year(#10/31/2007#) - 1, cnt + 1, 1) _
, DateSerial(Year(#10/31/2007#), cnt + 1, 1)
Next cnt
End Sub
strSQL = "SELECT Sum(tblNonCalcSpreads.Depreciation) AS Depr " & _
"FROM (tblNonCalcSpreads INNER JOIN tblClients " & _
"ON tblNonCalcSpreads.ClientNumber = tblClients.ClientNumber " & _
"WHERE tblNonCalcSpreads.DateOfData BETWEEN " & _
"IIf(Month(#" & dtDate & "#)>[tblClients].[FYE],DateSerial(Year(#" & dtDate & "#),[tblClients].[FYE]+1,1), " & _
"DateSerial(Year(#" & dtDate & "#)-1,[tblClients].[FYE]+1,1)) AND " & _
"IIf(Month(#" & dtDate & "#)>[tblClients].[FYE],DateSerial(Year(#" & dtDate & "#)+1,[tblClients].[FYE]+1,0), " & _
"DateSerial(Year(#" & dtDate & "#),[tblClients].[FYE]+1,0))-1;"
ASKER
strSQL = "SELECT Sum(S.Depreciation) AS Depr " & vbCrLf & _
"FROM (tblNonCalcSpreads S INNER JOIN tblClients C" & vbCrLf & _
"ON S.ClientNumber = C.ClientNumber " & vbCrLf & _
"WHERE S.DateOfData " & vbCrLf & _
"BETWEEN DateSerial(Year(#" & dtDate & "#)-IIF(Month(#" & dtDate & "#) > C.FYE,0,1),C.FYE+1,1)" & vbCrLf & _
"AND DateSerial(Year(#" & dtDate & "#)+IIF(Month(#" & dtDate & "#) > C.FYE,1,0),C.FYE+1,1)" & vbCrLf
ASKER
ASKER
ASKER
strSQL = "SELECT Sum(S.Depreciation) AS Depr " & vbCrLf & _
"FROM tblNonCalcSpreads S INNER JOIN tblClients C" & vbCrLf & _
"ON S.ClientNumber = C.ClientNumber " & vbCrLf & _
"WHERE S.DateOfData " & vbCrLf & _
"BETWEEN DateSerial(Year(#" & dtDate & "#)-IIF(Month(#" & dtDate & "#) > C.FYE,0,1),C.FYE+1,1)" & vbCrLf & _
"AND Date()" & vbCrLf
ASKER
ASKER
ASKER
Microsoft Access is a rapid application development (RAD) relational database tool. Access can be used for both desktop and web-based applications, and uses VBA (Visual Basic for Applications) as its coding language.
TRUSTED BY