📄 frmrpttimepos.frm
字号:
GetWeekday (dBeginDate)
'===========获得该刷卡日期所拥有班次===========
bTime = Mid(bTime, 1, 4) & Mid(bTime, 6, 2) & Mid(bTime, 9, 2)
GetSetClassID EmployeeInfo(lEmpRow).CardID, bTime
'===========获得该刷卡日期刷卡次数=================
rstGrid.Fields("刷卡次数") = GetClassCount()
rstGrid.Fields("员工卡号") = EmployeeInfo(lEmpRow).CardID
rstGrid.Fields("员工名称") = EmployeeInfo(lEmpRow).EmployeeName
' If rstGrid.Fields("刷卡次数") = 0 Then
' rstGrid.Fields("说明") = "班次时间设定有误,不能正常输出!"
' GoTo NextFor
' End If
If rstGrid.Fields("刷卡次数") = 0 Then GoTo NextFor
If rstGrid.Fields("刷卡次数") = -1 Then
rstGrid.Fields("说明") = "时间段设置有冲突!"
GoTo NextFor
End If
' Dim ClassIDCount As Long
' Dim ClassIDIndex As Long
' sClassID = ""
' ClassIDCount = UBound(ClassIDInfo)
' For ClassIDIndex = 1 To ClassIDCount
' sClassID = sClassID & CStr(ClassIDInfo(ClassIDIndex).ClassID) & ","
' Next
'
' sClassID = Left(sClassID, Len(sClassID) - 1)
'
' If rstExec.State = 1 Then rstExec.Close
' Set rstExec = Nothing
' rstExec.CursorLocation = adUseClient
' rstExec.Open "select ClassName from Class where ClassID in (" & sClassID & ")", con, adOpenStatic, adLockBatchOptimistic
' sClassID = ""
' If rstExec.RecordCount > 0 Then
' rstExec.MoveFirst
' While Not rstExec.EOF
' sClassID = sClassID & rstExec.Fields("ClassName") & " "
' rstExec.MoveNext
' Wend
'
' End If
'
'
' rstGrid.Fields("班次组合") = sClassID
Dim tmpClassCount As Long
Dim tmpClassIndex As Long
If blntmpClassInfo = True Then
tmpClassCount = UBound(tmpClassInfo)
For tmpClassIndex = 1 To tmpClassCount
bln(tmpClassIndex) = True
rstGrid.Fields("时间" & tmpClassIndex * 2 - 1) = GetTime(tmpClassInfo(tmpClassIndex).bTime)
rstGrid.Fields("时间" & tmpClassIndex * 2) = GetTime(tmpClassInfo(tmpClassIndex).eTime)
rstGrid.Fields("所属班次" & tmpClassIndex * 2 - 1) = GetClassName(tmpClassInfo(tmpClassIndex).ClassID)
If tmpClassInfo(tmpClassIndex).AddClass = True Then
If GetYesNoLeave(EmployeeInfo(lEmpRow).EmployeeID, tmpClassIndex * 2, sDate) = True Then
rstGrid.Fields("备注" & tmpClassIndex * 2 - 1) = "请假"
Else
rstGrid.Fields("备注" & tmpClassIndex * 2 - 1) = "加班"
End If
Else
If GetYesNoVac(EmployeeInfo(lEmpRow).EmployeeID, tmpClassIndex * 2, EmployeeInfo(lEmpRow).VacID, sDate) = True Then
rstGrid.Fields("备注" & tmpClassIndex * 2 - 1) = "休假"
Else
If GetYesNoLeave(EmployeeInfo(lEmpRow).EmployeeID, tmpClassIndex * 2, sDate) = True Then
rstGrid.Fields("备注" & tmpClassIndex * 2 - 1) = "请假"
Else
rstGrid.Fields("备注" & tmpClassIndex * 2 - 1) = ""
End If
End If
End If
Next
End If
NextFor:
rstGrid.Update
End If
Next
dBeginDate = dBeginDate + 1
Loop
Grid.DefSortCol = "刷卡日期"
' Grid.Col("Date").SortDirection = sASC
' MsgBox rstGrid.RecordCount
For i = 1 To UBound(bln)
Grid.Col("时间" & i * 2 - 1).Visible = bln(i)
Grid.Col("时间" & i * 2).Visible = bln(i)
Grid.Col("所属班次" & i * 2 - 1).Visible = bln(i)
Grid.Col("备注" & i * 2 - 1).Visible = bln(i)
Next
Set Grid.DataSource = rstGrid
End Sub
Private Function GetTime(ByVal sTime As String) As String
Dim a As Integer
Dim b As Integer
a = Int(Val(sTime) / 60)
b = Int(Val(sTime) Mod 60)
GetTime = Right("00" & a, 2) & ":" & Right("00" & b, 2)
End Function
Private Sub SetGrid(ByVal TimeCount As Long)
If rstGrid.State = adStateOpen Then rstGrid.Close
Set rstGrid = Nothing
Dim i As Long
For i = 1 To rstGrid.Fields.Count
rstGrid.Fields.Delete i
Next
rstGrid.Fields.Append "员工名称", adVarChar, 20
rstGrid.Fields.Append "员工卡号", adVarChar, 20
rstGrid.Fields.Append "刷卡日期", adVarChar, 20
rstGrid.Fields.Append "星期", adVarChar, 20
rstGrid.Fields.Append "刷卡次数", adInteger
Grid.ClearHeadData
' Grid.AddHeader "序号", "Serial", 40, -1, "Serial", False, sSerial
' Grid.AddHeader "刷卡日期", "Date", 90, -1, "刷卡日期", False, sDefault
' Grid.AddHeader "星期", "Weekday", 20, -1, "星期", False, sDefault
' Grid.AddHeader "员工卡号", "Card", 60, -1, "员工卡号", False, sDefault
' Grid.AddHeader "员工名称", "Name", 60, -1, "员工名称", False, sDefault
' Grid.AddHeader "刷卡次数", "CardCount", 60, -1, "刷卡次数", False, sDefault
Grid.AddHeader "序号", "序号", 40, -1, "Serial", False, sSerial
Grid.AddHeader "刷卡日期", "刷卡日期", 90, -1, "刷卡日期", False, sDefault
Grid.AddHeader "星期", "星期", 20, -1, "星期", False, sDefault
Grid.AddHeader "员工卡号", "员工卡号", 60, -1, "员工卡号", False, sDefault
Grid.AddHeader "员工名称", "员工名称", 60, -1, "员工名称", False, sDefault
Grid.AddHeader "刷卡次数", "刷卡次数", 60, -1, "刷卡次数", False, sDefault
Dim intField As Integer
For intField = 1 To TimeCount * 2 Step 2
rstGrid.Fields.Append "时间" & intField, adVarChar, 20
rstGrid.Fields.Append "时间" & intField + 1, adVarChar, 20
rstGrid.Fields.Append "所属班次" & intField, adVarChar, 20
rstGrid.Fields.Append "备注" & intField, adVarChar, 20
Grid.AddHeader "上班时间", "时间" & intField, 80, -1, "时间" & intField, False, sDefault
Grid.AddHeader "下班时间", "时间" & intField + 1, 80, -1, "时间" & intField + 1, False, sDefault
Grid.AddHeader "所属班次", "所属班次" & intField, 80, -1, "所属班次" & intField, False, sDefault
Grid.AddHeader "备注", "备注" & intField, 80, -1, "备注" & intField, False, sDefault
Grid.AddCollect "时间段" & (intField + 1) / 2, "KeyOne" & intField
Grid.Col("时间" & intField).CollectKey = "KeyOne" & intField
Grid.Col("时间" & intField + 1).CollectKey = "KeyOne" & intField
Grid.Col("所属班次" & intField).CollectKey = "KeyOne" & intField
Grid.Col("备注" & intField).CollectKey = "KeyOne" & intField
Next
rstGrid.Fields.Append "说明", adVarChar, 255
Grid.AddHeader "说明", "说明", 120, -1, "说明", False, sDefault
rstGrid.Open "", , adOpenStatic, adLockBatchOptimistic
Grid.HeadHeight = 40
Grid.AllowAddNew = False
Grid.GroupCol = 4
Grid.Col("序号").SumText = "合计"
Grid.SmallSumText = "小计"
End Sub
Private Sub GetWeekday(ByVal dBeginDate As Date)
Select Case Weekday(dBeginDate)
Case 1
rstGrid.Fields("星期") = "日"
Case 2
rstGrid.Fields("星期") = "一"
Case 3
rstGrid.Fields("星期") = "二"
Case 4
rstGrid.Fields("星期") = "三"
Case 5
rstGrid.Fields("星期") = "四"
Case 6
rstGrid.Fields("星期") = "五"
Case 7
rstGrid.Fields("星期") = "六"
End Select
End Sub
Private Sub Form_Unload(Cancel As Integer)
If rstGrid.State = 1 Then rstGrid.Close
Set rstGrid = Nothing
If rstExec.State = 1 Then rstExec.Close
Set rstExec = Nothing
End Sub
Private Sub Form_Resize()
On Error Resume Next
Frame.Move 60, 0, Me.ScaleWidth - 120, 800
lblEmployee.Move 60, 300
cmbEmployee.Move lblEmployee.Left + lblEmployee.Width + 60, lblEmployee.Top - 30
lblBeginDate.Move cmbEmployee.Left + cmbEmployee.Width + 60, lblEmployee.Top
dtpBeginDate.Move lblBeginDate.Left + lblBeginDate.Width + 60, lblEmployee.Top - 30
' lblBeginDate.Move 60, 300
' dtpBeginDate.Move lblBeginDate.Left + lblBeginDate.Width + 60, lblBeginDate.Top - 30
lblEndDate.Move dtpBeginDate.Left + dtpBeginDate.Width + 60, lblEmployee.Top
dtpEndDate.Move lblEndDate.Left + lblEndDate.Width + 60, lblEmployee.Top - 30
' cmdQuery.Move dtpEndDate.Left + dtpEndDate.Width + 60, lblEmployee.Top - 60
' cmdQuery.Move Frame.Width - cmdQuery.Width - 100, lblEmployee.Top - 60
cmdPrint.Move Frame.Width - cmdQuery.Width - 100, lblEmployee.Top - 90
cmdExpor.Move cmdPrint.Left - cmdExpor.Width - 60, lblEmployee.Top - 90
cmdQuery.Move cmdExpor.Left - cmdQuery.Width - 60, lblEmployee.Top - 90
Grid.Move 0, Frame.Top + Frame.Height, Me.ScaleWidth, Me.ScaleHeight - Frame.Height
End Sub
Public Sub PrintBill()
If rstGrid.State <> adStateOpen Then Exit Sub
Dim i As Integer
Dim j As Integer
For i = 1 To UBound(bln)
If bln(i) = True Then j = j + 1
Next
j = j * 2
Grid.SortOutRst
ACRptEngine1.Init
ACRptEngine1.AddDataSet "ac", rstGrid
If j = 0 Then
ACRptEngine1.SetReportFile App.Path & "\RPT\RPTPos0.apt"
ElseIf j = 2 Then
ACRptEngine1.SetReportFile App.Path & "\RPT\RPTPos02.apt"
ElseIf j = 4 Then
ACRptEngine1.SetReportFile App.Path & "\RPT\RPTPos04.apt"
ElseIf j = 6 Then
ACRptEngine1.SetReportFile App.Path & "\RPT\RPTPos06.apt"
ElseIf j = 8 Then
ACRptEngine1.SetReportFile App.Path & "\RPT\RPTPos08.apt"
End If
ACRptEngine1.PrintReport
End Sub
Public Sub PreviewBill()
If rstGrid.State <> adStateOpen Then Exit Sub
Dim i As Integer
Dim j As Integer
For i = 1 To UBound(bln)
If bln(i) = True Then j = j + 1
Next
j = j * 2
Grid.SortOutRst
ACRptEngine1.Init
ACRptEngine1.AddDataSet "ac", rstGrid
If j = 0 Then
ACRptEngine1.SetReportFile App.Path & "\RPT\RPTPos00.apt"
ElseIf j = 2 Then
ACRptEngine1.SetReportFile App.Path & "\RPT\RPTPos02.apt"
ElseIf j = 4 Then
ACRptEngine1.SetReportFile App.Path & "\RPT\RPTPos04.apt"
ElseIf j = 6 Then
ACRptEngine1.SetReportFile App.Path & "\RPT\RPTPos06.apt"
ElseIf j = 8 Then
ACRptEngine1.SetReportFile App.Path & "\RPT\RPTPos08.apt"
End If
ACRptEngine1.Preview
End Sub
Public Sub ShowDesignerBill()
If rstGrid.State <> adStateOpen Then Exit Sub
Dim i As Integer
Dim j As Integer
For i = 1 To UBound(bln)
If bln(i) = True Then j = j + 1
Next
j = j * 2
Grid.SortOutRst
ACRptEngine1.Init
ACRptEngine1.AddDataSet "ac", rstGrid
If j = 0 Then
ACRptEngine1.SetReportFile App.Path & "\RPT\RPTPos00.apt"
ElseIf j = 2 Then
ACRptEngine1.SetReportFile App.Path & "\RPT\RPTPos02.apt"
ElseIf j = 4 Then
ACRptEngine1.SetReportFile App.Path & "\RPT\RPTPos04.apt"
ElseIf j = 6 Then
ACRptEngine1.SetReportFile App.Path & "\RPT\RPTPos06.apt"
ElseIf j = 8 Then
ACRptEngine1.SetReportFile App.Path & "\RPT\RPTPos08.apt"
End If
ACRptEngine1.ShowDesigner
End Sub
Private Sub Grid_DblClick()
If Grid.RecordCount = 0 Then
Message "没有可用信息!"
Exit Sub
End If
If Grid.CurRow = -1 Then
Message "请先选中数据!"
Exit Sub
End If
Load frmRptTimePos_D
frmRptTimePos_D.ShowBill rstGrid.Fields("刷卡日期"), rstGrid.Fields("星期"), rstGrid.Fields("员工卡号"), rstGrid.Fields("员工名称")
frmRptTimePos_D.Show vbModal
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -