In case it is helpful, I am pasting ALL of the code inside the Timecard form. I wouldn't think the ones associated with buttons would have anything to do with it, but for the sake of being thoughout, I'm pasting it all.
Code:
Option Compare Database
Option Explicit
Private Sub CalculateButton_Click()
If Me.Dirty Then Me.Dirty = False
Call Module3.CalculateTimecard
If Me.Dirty Then Me.Dirty = False
End Sub
Private Sub CreatePDFButton_Click()
If Me.Dirty Then Me.Dirty = False
Call Module1.CreateSingleTimecard
DoCmd.Beep
MsgBox "PDF creation complete."
End Sub
Private Sub DeleteButton_Click()
'If Me.Dirty Then Me.Dirty = False
If MsgBox(Prompt:="Are you sure you wish to delete this record?", Buttons:=vbYesNo, Title:="Confirm Deletion") = vbYes Then
On Error Resume Next
DoCmd.RunCommand acCmdDeleteRecord
If Err.Number = 0 Then
MsgBox Prompt:="Record Deleted.", Buttons:=vbOKOnly, Title:="Deletion Successful"
Else
MsgBox Prompt:="No deletion occurred.", Buttons:=vbOKOnly, Title:="Error"
End If
Else
MsgBox Prompt:="The record was not deleted.", Buttons:=vbOKOnly, Title:="Canceled"
End If
End Sub
Private Sub EmployeeNameComboBox_AfterUpdate()
BoxRentalGreyedOut
End Sub
Private Sub Form_Current()
BoxRentalGreyedOut
End Sub
Private Sub Form_Load()
Dim rstQ_EmployeesOnJobs As Recordset
Dim JobID As Integer
Set rstQ_EmployeesOnJobs = CurrentDb.OpenRecordset(Name:="Q_Employees On Jobs", Type:=RecordsetTypeEnum.dbOpenSnapshot)
If Not IsNull(Me.OpenArgs) Then
Me.EmployeeNameComboBox = Me.OpenArgs
'this will get the JobID off the Q_EmployeesOnJob for that specific record and put that number in the JobNameComboBox
JobID = rstQ_EmployeesOnJobs.Fields("JobID")
Me.JobNameComboBox = JobID
End If
rstQ_EmployeesOnJobs.Close
Set rstQ_EmployeesOnJobs = Nothing
End Sub
Private Sub JobNameComboBox_AfterUpdate()
Dim rstT_Jobs As Recordset
Dim rstQ_EmployeesOnJobs As Recordset
Dim FoundEmployeeOnJob As Boolean
Set rstT_Jobs = CurrentDb.OpenRecordset(Name:="T_Jobs", Type:=RecordsetTypeEnum.dbOpenSnapshot)
Set rstQ_EmployeesOnJobs = CurrentDb.OpenRecordset(Name:="Q_Employees on Jobs", Type:=RecordsetTypeEnum.dbOpenSnapshot)
FoundEmployeeOnJob = False
'On Error Resume Next
rstQ_EmployeesOnJobs.MoveLast
rstQ_EmployeesOnJobs.MoveFirst
Do While Not rstQ_EmployeesOnJobs.EOF And FoundEmployeeOnJob = False
If Me.JobNameComboBox = rstQ_EmployeesOnJobs.Fields("JobID") Then FoundEmployeeOnJob = True
rstQ_EmployeesOnJobs.MoveNext
Loop
If FoundEmployeeOnJob = True Then
Me.EmployeeNameComboBox.RowSource = "SELECT EmployeesOnJobsID, NameAndTitle " & _
"FROM [Q_EmployeesAndPositions] " & _
"WHERE JobID = " & Me.JobNameComboBox & " " & _
"ORDER BY NameAndTitle;"
Me.EmployeeNameComboBox.Requery
With rstT_Jobs
.FindFirst "JobID = " & Me.JobNameComboBox
If .NoMatch Then
MsgBox "Could not find a record for Job #" & Me.JobNameComboBox & "in T_Jobs. Something is wrong."
rstT_Jobs.Close
rstQ_EmployeesOnJobs.Close
Set rstT_Jobs = Nothing
Set rstQ_EmployeesOnJobs = Nothing
Exit Sub
End If
End With
If rstT_Jobs.Fields("WBSNumber") <> 0 Or Not IsNull(rstT_Jobs.Fields("WBSNumber")) Then Me.CommentLine1 = "WBS #: " & rstT_Jobs.Fields("WBSNumber")
Else
MsgBox "No Employees are assigned to that Job, so you cannot select it. If you wish to fill out a Time Card for someone on that job, you must first assign an Employee to it via the Employees On Jobs Form."
Me.JobNameComboBox = Null
End If
rstT_Jobs.Close
rstQ_EmployeesOnJobs.Close
Set rstT_Jobs = Nothing
Set rstQ_EmployeesOnJobs = Nothing
End Sub
Private Sub SaveButton_Click()
If Me.Dirty Then Me.Dirty = False
End Sub
Private Sub WeekEnding_AfterUpdate()
Dim rstT_Timecards As Recordset
Dim JobID_Table As Integer
Dim EmployeeOnJobsID_Table As Integer
Dim WeekEndingDate_Table As Date
Dim JobID_CurrentRecord As Integer
Dim EmployeeOnJobsID_CurrentRecord As Integer
Set rstT_Timecards = CurrentDb.OpenRecordset(Name:="T_Timecards", Type:=RecordsetTypeEnum.dbOpenSnapshot)
JobID_CurrentRecord = Me.Controls("JobNameComboBox")
EmployeeOnJobsID_CurrentRecord = Me.Controls("EmployeesOnJobsID")
With rstT_Timecards
.MoveLast
.MoveFirst
Do While Not .EOF
If rstT_Timecards("TimecardID") <> Me.Controls("TimecardID") Then
JobID_Table = .Fields("JobID_notFK")
EmployeeOnJobsID_Table = .Fields("EmployeesOnJobsID")
If IsNull(.Fields("WeekEnding")) Then
WeekEndingDate_Table = 0
Else
WeekEndingDate_Table = .Fields("WeekEnding")
End If
If JobID_Table = JobID_CurrentRecord And EmployeeOnJobsID_Table = EmployeeOnJobsID_CurrentRecord And Me.Controls("WeekEnding") = WeekEndingDate_Table Then
MsgBox "A time card for this Job/Person/Position already exists with this Week Ending date. You cannot have more than one. Please select another Week Ending Date."
Me.WeekEnding = Null
Me.D1Date = Null
Me.D2Date = Null
Me.D3Date = Null
Me.D4Date = Null
Me.D5Date = Null
Me.D6Date = Null
Me.D7Date = Null
Me.WeekEnding.SetFocus
rstT_Timecards.Close
Set rstT_Timecards = Nothing
Exit Sub
End If
End If
.MoveNext
Loop
End With
Me.D1Date = DateAdd("d", -6, Me.WeekEnding)
Me.D2Date = DateAdd("d", -5, Me.WeekEnding)
Me.D3Date = DateAdd("d", -4, Me.WeekEnding)
Me.D4Date = DateAdd("d", -3, Me.WeekEnding)
Me.D5Date = DateAdd("d", -2, Me.WeekEnding)
Me.D6Date = DateAdd("d", -1, Me.WeekEnding)
Me.D7Date = Me.WeekEnding
rstT_Timecards.Close
Set rstT_Timecards = Nothing
End Sub
Sub BoxRentalGreyedOut()
Dim rstQ_EmployeesOnJobs As Recordset
Dim EmployeesOnJobsID As Integer
Set rstQ_EmployeesOnJobs = CurrentDb.OpenRecordset(Name:="Q_Employees On Jobs", Type:=RecordsetTypeEnum.dbOpenSnapshot)
EmployeesOnJobsID = Me.EmployeesOnJobsID
rstQ_EmployeesOnJobs.FindFirst "EmployeesOnJobsID = " & EmployeesOnJobsID
If rstQ_EmployeesOnJobs.NoMatch Then
MsgBox ("ERROR: Could not find a record in the 'Q_Employees On Jobs' query where the EmployeesOnJobsID field is equal to " & EmployeesOnJobsID)
Exit Sub
End If
If Not IsNull(Me.EmployeeNameComboBox) And rstQ_EmployeesOnJobs.Fields("BoxRentalYesNo") = "Yes" Then
Me.BoxRentalAcctCode.Enabled = True
Me.BoxRentalTotalAmt.Enabled = True
Else
Me.BoxRentalAcctCode.Enabled = False
Me.BoxRentalTotalAmt.Enabled = False
End If
rstQ_EmployeesOnJobs.Close
Set rstQ_EmployeesOnJobs = Nothing
End Sub