I've created some code to insert records into a temp table to be referenced in a pick list. The output would be as follows:
I have 2 questions. 1. How can I optimize the code below as it seems to run slowly and 2. Where should I put the code? (It would need to be run at the beginning of each month.)
Much appreciated!
Code:
MonthYear StoredDate
July 2002 2002/07/31
August 2002 2002/08/31
September 2002 2002/09/30
October 2002 2002/10/31
November 2002 2002/11/30
December 2002 2002/12/31
January 2003 2003/01/31
February 2003 2003/02/28
March 2003 2003/03/31
April 2003 2003/04/30
May 2003 2003/05/31
June 2003 2003/06/30
I have 2 questions. 1. How can I optimize the code below as it seems to run slowly and 2. Where should I put the code? (It would need to be run at the beginning of each month.)
Much appreciated!
Code:
-------- begin ----------
'Create table containing date values to be used for "Date Planned" of a course
DoCmd.RunSQL ("DELETE FROM DateTemp;") 'clear the DateTemp table
Dim sMonthNumber As String, sYear As String, sCurrentYear As String, iMonthCount As Integer, sSQL As String 'declarations
Dim sMonth As String, bWillIncrement As Boolean, bHasIncremented As Boolean, sMonthYear As String, StoredDate As String 'declarations
sMonthNumber = Month(Date) 'retrieve the month number of the current number
sYear = Year(Date) 'retrieve the current year - to be incremented
sCurrentYear = Year(Date) 'retrieve the current year to be used as a reference
bWillIncrement = False 'initialize
bHasIncremented = False 'initialize
For iMonthCount = 1 To 12 'insert a record for the next 12 months
sSQL = "INSERT INTO DateTemp (MonthYear, StoredDate) VALUES ("
sMonth = DLookup("[MonthName]", "MonthLookup", "[MonthNo] = " & sMonthNumber) 'retrieve the name of the current month by referencing the MonthLookup table
If sMonthNumber = 1 And iMonthCount <> 1 Then 'will not increment the year if the current month is January
bWillIncrement = True 'the year will increment in the next iteration of the loop
End If
If bWillIncrement Then
sYear = sYear + 1 'increment the year if the month has changed over to January
bWillIncrement = False 're-initialize
bHasIncremented = True 'to be used when inserting the value into the StoredDate field
End If
sMonthYear = "'" & sMonth & " " & sYear & "'" 'prepare value to inserted into the MonthYear field
sSQL = sSQL & sMonthYear & ", " 'insert value into MonthYear field
'insert the end of month date into StoredDate field for a given month year
Select Case sMonthNumber
Case "1"
If bHasIncremented Then
StoredDate = "#" & sYear & "-01-31#"
Else
StoredDate = "#" & sCurrentYear & "-01-31#"
End If
Case "2"
If bHasIncremented Then
StoredDate = "#" & sYear & "-02-28#"
Else
StoredDate = "#" & sCurrentYear & "-02-28#"
End If
Case "3"
If bHasIncremented Then
StoredDate = "#" & sYear & "-03-31#"
Else
StoredDate = "#" & sCurrentYear & "-03-31#"
End If
Case "4"
If bHasIncremented Then
StoredDate = "#" & sYear & "-04-30#"
Else
StoredDate = "#" & sCurrentYear & "-04-30#"
End If
Case "5"
If bHasIncremented Then
StoredDate = "#" & sYear & "-05-31#"
Else
StoredDate = "#" & sCurrentYear & "-05-31#"
End If
Case "6"
If bHasIncremented Then
StoredDate = "#" & sYear & "-06-30#"
Else
StoredDate = "#" & sCurrentYear & "-06-30#"
End If
Case "7"
If bHasIncremented Then
StoredDate = "#" & sYear & "-07-31#"
Else
StoredDate = "#" & sCurrentYear & "-07-31#"
End If
Case "8"
If bHasIncremented Then
StoredDate = "#" & sYear & "-08-31#"
Else
StoredDate = "#" & sCurrentYear & "-08-31#"
End If
Case "9"
If bHasIncremented Then
StoredDate = "#" & sYear & "-09-30#"
Else
StoredDate = "#" & sCurrentYear & "-09-30#"
End If
Case "10"
If bHasIncremented Then
StoredDate = "#" & sYear & "-10-31#"
Else
StoredDate = "#" & sCurrentYear & "-10-31#"
End If
Case "11"
If bHasIncremented Then
StoredDate = "#" & sYear & "-11-30#"
Else
StoredDate = "#" & sCurrentYear & "-11-30#"
End If
Case "12"
If bHasIncremented Then
StoredDate = "#" & sYear & "-12-31#"
Else
StoredDate = "#" & sCurrentYear & "-12-31#"
End If
End Select
sSQL = sSQL & StoredDate & ");" 'insert value into StoredDate field
DoCmd.RunSQL (sSQL) 'insert the record into the DateTemp table
If sMonthNumber = "12" Then
sMonthNumber = "1" 'go to January
Else
sMonthNumber = sMonthNumber + 1 'increment the month number
End If
Next
-------- end ----------