?? 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 + -