chunkII123
IS-IT--Management
I am not a programmer, however I am a IT professional specializing in computer hardware diagnostics, and networking. I recently went to work for a company in Grand Rapids, MI and we seem to have a problem with our time clock portion of the data base, I have included thewhole timeclock database via Visual Studio Debugger. Any help is much appreciated. The error occurs at the .edit function on line '146'. thanks again.
Option Compare Database
Private Sub Form_Load()
Call Load_List
End Sub
Private Sub Clear_List()
Dim Count As Integer
Count = TimeInListBox.ListCount
If Not (Count = 0) Then
Do While Count > 0
TimeInListBox.RemoveItem (Count - 1)
Count = Count - 1
Loop
End If
End Sub
Private Sub TimeClockManageButton_Click()
DoCmd.OpenForm "EnterPassword", , , stLinkCriteria
End Sub
Private Sub TimeInOutButton_Click()
Dim AB As Database, employeeRS As Recordset, EmpNum As String
EmpNum = InputBox("Enter Employee Number: ", "Employee Number")
If Len(EmpNum) > 0 Then
Set AB = OpenDatabase("C:\Access DB\MMI.mdb")
Set employeeRS = AB.OpenRecordset("Select * From Employees " _
& "Where EmployeeNumber = " & EmpNum & ";", dbOpenDynaset)
If employeeRS.EOF Then
MsgBox "Employee Number Not Valid"
Else
If employeeRS!Status = "out" Then
Call Add_Record(EmpNum)
TimeMessageTextBox.value = employeeRS!firstname & " IN at " & Format(Time, "Medium Time")
Else
Call Edit_Record(EmpNum)
TimeMessageTextBox.value = employeeRS!firstname & " OUT at " & Format(Time, "Medium Time")
End If
End If
employeeRS.Close
AB.Close
End If
Call Load_List
End Sub
Public Sub Load_List()
Call Clear_List
Dim AB As Database, employeeRS As Recordset
Set AB = OpenDatabase("C:\Access DB\MMI.mdb")
Set employeeRS = AB.OpenRecordset("Select * From Employees " _
& "Where Employees.Status = 'in'; ", dbOpenDynaset)
Do While Not employeeRS.EOF
TimeInListBox.AddItem (employeeRS!firstname)
employeeRS.MoveNext
Loop
employeeRS.Close
AB.Close
End Sub
Public Function Get_Total(StartTime, EndTime) As Double
Dim TotalMinutes, SHour, EHour, SMinute, EMinute
SHour = Hour(StartTime)
EHour = Hour(EndTime)
SMinute = Minute(StartTime)
EMinute = Minute(EndTime)
If EHour > SHour Then
TotalMinutes = ((EHour - (SHour + 1)) * 60) + (EMinute + (60 - SMinute))
ElseIf EHour = SHour Then
TotalMinutes = EMinute - SMinute
Else
TotalMinutes = ((EHour + (23 - SHour)) * 60) + (EMinute + (60 - SMinute))
End If
Get_Total = TotalMinutes / 60
End Function
Private Sub Add_Record(EmpNum)
Dim AB As Database, TimesheetRS As Recordset, employeeRS As Recordset, id As String
Set AB = OpenDatabase("C:\Access DB\MMI.mdb")
Set employeeRS = AB.OpenRecordset("Select * From Employees " _
& "Where EmployeeNumber = " & EmpNum & ";", dbOpenDynaset)
Set TimesheetRS = AB.OpenRecordset("Timesheet", dbOpenDynaset)
With TimesheetRS
.AddNew
!EmployeeNumber = employeeRS!EmployeeNumber
!first = employeeRS!firstname
!last = employeeRS!lastname
!Start = Time
!total = 0
!Date = Date
.Update
End With
TimesheetRS.MoveLast
With employeeRS
.Edit
!Status = "in"
!RecordID = TimesheetRS!RecordID
.Update
End With
employeeRS.Close
TimesheetRS.Close
AB.Close
End Sub
Private Sub Edit_Record(EmpNum)
Dim AB As Database, TimesheetRS As Recordset, employeeRS As Recordset, id As String
Set AB = OpenDatabase("C:\Access DB\MMI.mdb")
Set employeeRS = AB.OpenRecordset("Select * From Employees " _
& "Where EmployeeNumber = " & EmpNum & ";", dbOpenDynaset)
id = employeeRS!RecordID
Set TimesheetRS = AB.OpenRecordset("Select * From Timesheet " _
& "Where RecordID = " & id & ";", dbOpenDynaset)
With TimesheetRS
.Edit
!End = Time
!total = Get_Total(!Start, Time)
.Update
End With
With employeeRS
.Edit
!Status = "out"
!RecordID = 0
.Update
End With
employeeRS.Close
TimesheetRS.Close
AB.Close
End Sub
Private Sub TimeInOutButton_Exit(Cancel As Integer)
Exit Sub
End Sub
Private Sub TimeTodayButton_Click()
Dim AB As Database, TimesheetRS As Recordset, employeeRS As Recordset
Dim TotalHours, EmpNum As String, Name As String, SDate
TotalHours = 0
SDate = Format(Date, "Short Date")
Set AB = OpenDatabase("C:\Access DB\MMI.mdb")
EmpNum = InputBox("Enter Employee Number: ", "Employee Number")
Set employeeRS = AB.OpenRecordset("Select * From Employees " _
& "Where EmployeeNumber = " & EmpNum & ";", dbOpenDynaset)
Set TimesheetRS = AB.OpenRecordset("Select * From TimeSheet " _
& "Where EmployeeNumber = " & EmpNum & " And Date = #" _
& SDate & "#;", dbOpenDynaset)
If employeeRS.EOF Then
MsgBox "Employee Number Not Valid"
Else
Do While Not TimesheetRS.EOF
With TimesheetRS
TotalHours = TotalHours + TimesheetRS!total
Name = TimesheetRS!first
.MoveNext
End With
Loop
End If
employeeRS.Close
TimesheetRS.Close
AB.Close
TimeMessageTextBox.value = Name & "'s Total Today is " & Format(TotalHours, "Fixed")
End Sub
Private Sub TimeWeekButton_Click()
Dim AB As Database, TimesheetRS As Recordset, employeeRS As Recordset
Dim TotalHours, EmpNum As String, Name As String, DayNum, SDate, Lookup
TotalHours = 0
DayNum = 0
SDate = Format(Date, "Short Date")
DayNum = Weekday(Date)
Select Case DayNum
Case 1
Lookup = DateSerial(Year(Date), Month(Date), (Day(Date)) - 6)
Case 2
Lookup = DateSerial(Year(Date), Month(Date), Day(Date))
Case 3
Lookup = DateSerial(Year(Date), Month(Date), (Day(Date)) - 1)
Case 4
Lookup = DateSerial(Year(Date), Month(Date), (Day(Date)) - 2)
Case 5
Lookup = DateSerial(Year(Date), Month(Date), (Day(Date)) - 3)
Case 6
Lookup = DateSerial(Year(Date), Month(Date), (Day(Date)) - 4)
Case Else
Lookup = DateSerial(Year(Date), Month(Date), (Day(Date)) - 5)
End Select
Set AB = OpenDatabase("C:\Access DB\MMI.mdb")
EmpNum = InputBox("Enter Employee Number: ", "Employee Number")
Set employeeRS = AB.OpenRecordset("Select * From Employees " _
& "Where EmployeeNumber = " & EmpNum & ";", dbOpenDynaset)
Set TimesheetRS = AB.OpenRecordset("Select * From TimeSheet " _
& "Where EmployeeNumber = " & EmpNum & " And Date Between #" _
& SDate & "# And #" & Lookup & "#;", dbOpenDynaset)
If employeeRS.EOF Then
MsgBox "Employee Number Not Valid"
Else
Do While Not TimesheetRS.EOF
With TimesheetRS
TotalHours = TotalHours + TimesheetRS!total
Name = TimesheetRS!first
.MoveNext
End With
Loop
End If
employeeRS.Close
TimesheetRS.Close
AB.Close
TimeMessageTextBox.value = Name & "'s Total This Week is " & Format(TotalHours, "Fixed")
End Sub
Option Compare Database
Private Sub Form_Load()
Call Load_List
End Sub
Private Sub Clear_List()
Dim Count As Integer
Count = TimeInListBox.ListCount
If Not (Count = 0) Then
Do While Count > 0
TimeInListBox.RemoveItem (Count - 1)
Count = Count - 1
Loop
End If
End Sub
Private Sub TimeClockManageButton_Click()
DoCmd.OpenForm "EnterPassword", , , stLinkCriteria
End Sub
Private Sub TimeInOutButton_Click()
Dim AB As Database, employeeRS As Recordset, EmpNum As String
EmpNum = InputBox("Enter Employee Number: ", "Employee Number")
If Len(EmpNum) > 0 Then
Set AB = OpenDatabase("C:\Access DB\MMI.mdb")
Set employeeRS = AB.OpenRecordset("Select * From Employees " _
& "Where EmployeeNumber = " & EmpNum & ";", dbOpenDynaset)
If employeeRS.EOF Then
MsgBox "Employee Number Not Valid"
Else
If employeeRS!Status = "out" Then
Call Add_Record(EmpNum)
TimeMessageTextBox.value = employeeRS!firstname & " IN at " & Format(Time, "Medium Time")
Else
Call Edit_Record(EmpNum)
TimeMessageTextBox.value = employeeRS!firstname & " OUT at " & Format(Time, "Medium Time")
End If
End If
employeeRS.Close
AB.Close
End If
Call Load_List
End Sub
Public Sub Load_List()
Call Clear_List
Dim AB As Database, employeeRS As Recordset
Set AB = OpenDatabase("C:\Access DB\MMI.mdb")
Set employeeRS = AB.OpenRecordset("Select * From Employees " _
& "Where Employees.Status = 'in'; ", dbOpenDynaset)
Do While Not employeeRS.EOF
TimeInListBox.AddItem (employeeRS!firstname)
employeeRS.MoveNext
Loop
employeeRS.Close
AB.Close
End Sub
Public Function Get_Total(StartTime, EndTime) As Double
Dim TotalMinutes, SHour, EHour, SMinute, EMinute
SHour = Hour(StartTime)
EHour = Hour(EndTime)
SMinute = Minute(StartTime)
EMinute = Minute(EndTime)
If EHour > SHour Then
TotalMinutes = ((EHour - (SHour + 1)) * 60) + (EMinute + (60 - SMinute))
ElseIf EHour = SHour Then
TotalMinutes = EMinute - SMinute
Else
TotalMinutes = ((EHour + (23 - SHour)) * 60) + (EMinute + (60 - SMinute))
End If
Get_Total = TotalMinutes / 60
End Function
Private Sub Add_Record(EmpNum)
Dim AB As Database, TimesheetRS As Recordset, employeeRS As Recordset, id As String
Set AB = OpenDatabase("C:\Access DB\MMI.mdb")
Set employeeRS = AB.OpenRecordset("Select * From Employees " _
& "Where EmployeeNumber = " & EmpNum & ";", dbOpenDynaset)
Set TimesheetRS = AB.OpenRecordset("Timesheet", dbOpenDynaset)
With TimesheetRS
.AddNew
!EmployeeNumber = employeeRS!EmployeeNumber
!first = employeeRS!firstname
!last = employeeRS!lastname
!Start = Time
!total = 0
!Date = Date
.Update
End With
TimesheetRS.MoveLast
With employeeRS
.Edit
!Status = "in"
!RecordID = TimesheetRS!RecordID
.Update
End With
employeeRS.Close
TimesheetRS.Close
AB.Close
End Sub
Private Sub Edit_Record(EmpNum)
Dim AB As Database, TimesheetRS As Recordset, employeeRS As Recordset, id As String
Set AB = OpenDatabase("C:\Access DB\MMI.mdb")
Set employeeRS = AB.OpenRecordset("Select * From Employees " _
& "Where EmployeeNumber = " & EmpNum & ";", dbOpenDynaset)
id = employeeRS!RecordID
Set TimesheetRS = AB.OpenRecordset("Select * From Timesheet " _
& "Where RecordID = " & id & ";", dbOpenDynaset)
With TimesheetRS
.Edit
!End = Time
!total = Get_Total(!Start, Time)
.Update
End With
With employeeRS
.Edit
!Status = "out"
!RecordID = 0
.Update
End With
employeeRS.Close
TimesheetRS.Close
AB.Close
End Sub
Private Sub TimeInOutButton_Exit(Cancel As Integer)
Exit Sub
End Sub
Private Sub TimeTodayButton_Click()
Dim AB As Database, TimesheetRS As Recordset, employeeRS As Recordset
Dim TotalHours, EmpNum As String, Name As String, SDate
TotalHours = 0
SDate = Format(Date, "Short Date")
Set AB = OpenDatabase("C:\Access DB\MMI.mdb")
EmpNum = InputBox("Enter Employee Number: ", "Employee Number")
Set employeeRS = AB.OpenRecordset("Select * From Employees " _
& "Where EmployeeNumber = " & EmpNum & ";", dbOpenDynaset)
Set TimesheetRS = AB.OpenRecordset("Select * From TimeSheet " _
& "Where EmployeeNumber = " & EmpNum & " And Date = #" _
& SDate & "#;", dbOpenDynaset)
If employeeRS.EOF Then
MsgBox "Employee Number Not Valid"
Else
Do While Not TimesheetRS.EOF
With TimesheetRS
TotalHours = TotalHours + TimesheetRS!total
Name = TimesheetRS!first
.MoveNext
End With
Loop
End If
employeeRS.Close
TimesheetRS.Close
AB.Close
TimeMessageTextBox.value = Name & "'s Total Today is " & Format(TotalHours, "Fixed")
End Sub
Private Sub TimeWeekButton_Click()
Dim AB As Database, TimesheetRS As Recordset, employeeRS As Recordset
Dim TotalHours, EmpNum As String, Name As String, DayNum, SDate, Lookup
TotalHours = 0
DayNum = 0
SDate = Format(Date, "Short Date")
DayNum = Weekday(Date)
Select Case DayNum
Case 1
Lookup = DateSerial(Year(Date), Month(Date), (Day(Date)) - 6)
Case 2
Lookup = DateSerial(Year(Date), Month(Date), Day(Date))
Case 3
Lookup = DateSerial(Year(Date), Month(Date), (Day(Date)) - 1)
Case 4
Lookup = DateSerial(Year(Date), Month(Date), (Day(Date)) - 2)
Case 5
Lookup = DateSerial(Year(Date), Month(Date), (Day(Date)) - 3)
Case 6
Lookup = DateSerial(Year(Date), Month(Date), (Day(Date)) - 4)
Case Else
Lookup = DateSerial(Year(Date), Month(Date), (Day(Date)) - 5)
End Select
Set AB = OpenDatabase("C:\Access DB\MMI.mdb")
EmpNum = InputBox("Enter Employee Number: ", "Employee Number")
Set employeeRS = AB.OpenRecordset("Select * From Employees " _
& "Where EmployeeNumber = " & EmpNum & ";", dbOpenDynaset)
Set TimesheetRS = AB.OpenRecordset("Select * From TimeSheet " _
& "Where EmployeeNumber = " & EmpNum & " And Date Between #" _
& SDate & "# And #" & Lookup & "#;", dbOpenDynaset)
If employeeRS.EOF Then
MsgBox "Employee Number Not Valid"
Else
Do While Not TimesheetRS.EOF
With TimesheetRS
TotalHours = TotalHours + TimesheetRS!total
Name = TimesheetRS!first
.MoveNext
End With
Loop
End If
employeeRS.Close
TimesheetRS.Close
AB.Close
TimeMessageTextBox.value = Name & "'s Total This Week is " & Format(TotalHours, "Fixed")
End Sub