📄 frmvacedit.frm
字号:
Dim iWeek As Integer
For iWeek = 1 To 7
cmbWeek.AddString CStr(iWeek) + vbLf
Next
'================================cmbMonth===================================
cmbMonth.ShowHeadScale = "0,20"
cmbMonth.ShowHeadValue = "DataID,日"
cmbMonth.ShowIndex = 1
cmbMonth.Type = tNormal
cmbMonth.DropWidth = cmbTimeMode.Width \ 15
Dim iMonth As Integer
For iMonth = 1 To 31
cmbMonth.AddString CStr(iMonth) + vbLf
Next
'=================================Grid=================================
Grid.AddHeader "序号", "Serial", 40, -1, "Serial", False, sSerial
Grid.AddHeader "开始日期", "BeginDate", 120, -1, "BeginDate", False, sDefault
Grid.AddHeader "结束日期", "EndDate", 120, -1, "EndDate", False, sDefault
Grid.AddHeader "时间模式", "TimeMode", 120, -1, "TimeMode", False, sDefault
Grid.AddHeader "开始时间", "BeginTime", 120, -1, "BeginTime", False, sDefault
Grid.AddHeader "结束时间", "EndTime", 120, -1, "EndTime", False, sDefault
Grid.AddHeader "时段", "TimePos", 120, -1, "TimePos", False, sDefault
Grid.EditHwnd(ComboBox) = cmbTimePos.hWnd
Grid.EditHwnd(ComboBox2) = cmbTimeMode.hWnd
Grid.EditHwnd(ComboBox3) = cmbWeek.hWnd
Grid.EditHwnd(ComboBox4) = cmbMonth.hWnd
Grid.EditHwnd(DTPicker) = dtpTime.hWnd
cmbTimeMode.RelateHwnd = Grid.hWnd
cmbTimePos.RelateHwnd = Grid.hWnd
cmbWeek.RelateHwnd = Grid.hWnd
cmbMonth.RelateHwnd = Grid.hWnd
dtpTime.RelateHwnd = Grid.hWnd
Grid.Col("BeginDate").EditType = DTPicker
Grid.Col("EndDate").EditType = DTPicker
Grid.Col("TimeMode").EditType = ComboBox2
' Grid.Col("BeginTime").EditType = DTPicker
' Grid.Col("EndTime").EditType = DTPicker
Grid.Col("TimePos").EditType = ComboBox
Grid.AllowAddNew = True
Grid.AllowEdit = True
Grid.MainCol = "BeginDate"
txtName.MaxTextLen = 20
End Sub
Private Sub cmdNext_Click()
If ChangedMsg = False Then Exit Sub
If rstExec.State = 1 Then rstExec.Close
Set rstExec = Nothing
rstExec.CursorLocation = adUseClient
Debug.Print "select Top 1 * from VacInfo where VacID>" & m_VacID & " order by VacID "
rstExec.Open "select Top 1 * from VacInfo where VacID>" & m_VacID & " order by VacID ", con, adOpenStatic, adLockBatchOptimistic
If rstExec.RecordCount < 1 Then Exit Sub
EditBill (rstExec.Fields("VacID"))
End Sub
Private Sub cmdPrevious_Click()
If ChangedMsg = False Then Exit Sub
If rstExec.State = 1 Then rstExec.Close
Set rstExec = Nothing
rstExec.CursorLocation = adUseClient
Debug.Print "select Top 1 * from VacInfo where VacID<" & m_VacID & " order by VacID desc"
rstExec.Open "select Top 1 * from VacInfo where VacID<" & m_VacID & " order by VacID desc", con, adOpenStatic, adLockBatchOptimistic
If rstExec.RecordCount < 1 Then Exit Sub
EditBill (rstExec.Fields("VacID"))
End Sub
Public Sub AddBill()
txtName.PutText ""
txtName.SetFocus
m_Edit = False
m_VacID = "0"
m_Changed = False
Me.Caption = "默认休假-新增"
If rstGrid.State = 1 Then rstGrid.Close
Set rstGrid = Nothing
rstGrid.CursorLocation = adUseClient
rstGrid.Open "select BeginDate,EndDate,TimeMode,BeginTime,EndTime,TimePos from VacInfo_D where VacID=0", con, adOpenStatic, adLockBatchOptimistic
Set Grid.DataSource = rstGrid
End Sub
Public Sub EditBill(ByVal VacID As String)
If rstExec.State = 1 Then rstExec.Close
Set rstExec = Nothing
rstExec.CursorLocation = adUseClient
rstExec.Open "select VacName from VacInfo where VacID=" & VacID, con, adOpenStatic, adLockBatchOptimistic
If IsNull(rstExec.Fields("VacName")) Then txtName.Text = "" Else txtName.Text = rstExec.Fields("VacName")
m_Edit = True
m_Changed = False
m_VacID = VacID
Me.Caption = "默认休假-修改"
If rstGrid.State = 1 Then rstGrid.Close
Set rstGrid = Nothing
rstGrid.CursorLocation = adUseClient
rstGrid.Open "select BeginDate,EndDate,TimeMode,BeginTime,EndTime,TimePos from VacInfo_D where VacID=" & VacID, con, adOpenStatic, adLockBatchOptimistic
Set Grid.DataSource = rstGrid
End Sub
Public Function SaveBill() As Boolean
On Error GoTo SaveErr
SaveBill = False
If Trim(txtName.Text) = "" Then
Message "请输入名称!"
txtName.SetFocus
Exit Function
End If
If rstGrid.RecordCount < 1 Then
Message "请输入时间明细!"
Exit Function
Else
rstGrid.MoveFirst
While Not rstGrid.EOF
If Trim(rstGrid.Fields("BeginDate")) = "" _
Or IsNull(rstGrid.Fields("BeginDate")) Then
Message "请输入开始日期!"
Exit Function
End If
If Trim(rstGrid.Fields("EndDate")) = "" _
Or IsNull(rstGrid.Fields("EndDate")) Then
Message "请输入结束日期!"
Exit Function
End If
If CDate(rstGrid.Fields("BeginDate")) > CDate(rstGrid.Fields("EndDate")) Then
Message "结束日期不能比开始日期早!"
Exit Function
End If
If Trim(rstGrid.Fields("TimeMode")) = "" _
Or IsNull(rstGrid.Fields("TimeMode")) Then
Message "请输入时间模式!"
Exit Function
End If
If Trim(rstGrid.Fields("TimeMode")) <> "每天" Then
If Trim(rstGrid.Fields("BeginTime")) = "" _
Or IsNull(rstGrid.Fields("BeginTime")) Then
Message "请输入开始时间!"
Exit Function
End If
If Trim(rstGrid.Fields("EndTime")) = "" _
Or IsNull(rstGrid.Fields("EndTime")) Then
Message "请输入结束时间!"
Exit Function
End If
If Val(rstGrid.Fields("BeginTime")) > Val(rstGrid.Fields("EndTime")) Then
Message "结束时间不能比开始时间早!"
Exit Function
End If
End If
If Trim(rstGrid.Fields("TimePos")) = "" _
Or IsNull(rstGrid.Fields("TimePos")) Then
Message "请输入时间段!"
Exit Function
End If
rstGrid.MoveNext
Wend
End If
Dim lTrans As Long
If m_Edit = False Then
If rstExec.State = 1 Then rstExec.Close
Set rstExec = Nothing
rstExec.CursorLocation = adUseClient
rstExec.Open "select * from VacInfo where VacName='" & Trim(txtName.Text) & "'", con, adOpenStatic, adLockBatchOptimistic
If rstExec.RecordCount > 0 Then
Message "该休假名称已存在!"
Exit Function
End If
rstExec.AddNew
rstExec.Fields("VacName") = Trim(txtName.Text)
rstExec.UpdateBatch
If rstExec.State = 1 Then rstExec.Close
Set rstExec = Nothing
rstExec.CursorLocation = adUseClient
rstExec.Open "select * from VacInfo where VacName='" & Trim(txtName.Text) & "'", con, adOpenStatic, adLockBatchOptimistic
If rstExec.RecordCount = 0 Then
Message "新增出错!"
Exit Function
Else
m_VacID = rstExec.Fields("VacID")
End If
con.BeginTrans
lTrans = 1
Else
con.BeginTrans
lTrans = 1
If rstExec.State = 1 Then rstExec.Close
Set rstExec = Nothing
rstExec.CursorLocation = adUseClient
rstExec.Open "select * from VacInfo where VacID= " & m_VacID, con, adOpenStatic, adLockBatchOptimistic
If rstExec.RecordCount = 0 Then
Message "记录不存在!"
Exit Function
End If
rstExec.Fields("VacName") = Trim(txtName.Text)
rstExec.UpdateBatch
End If
con.Execute "delete from VacInfo_D where VacID=" & m_VacID
Dim strSQL As String
Dim lItemNO As Long
If rstGrid.RecordCount > 0 Then
rstGrid.MoveFirst
While Not rstGrid.EOF
lItemNO = lItemNO + 1
strSQL = "insert into VacInfo_D(VacID,ItemNo,BeginDate,EndDate,TimeMode,BeginTime, " _
& "EndTime,TimePos) Values( " _
& m_VacID _
& "," & lItemNO _
& ",'" & rstGrid.Fields("BeginDate") _
& "','" & rstGrid.Fields("EndDate") _
& "','" & rstGrid.Fields("TimeMode") _
& "','" & rstGrid.Fields("BeginTime") _
& "','" & rstGrid.Fields("EndTime") _
& "','" & rstGrid.Fields("TimePos") & "')"
Debug.Print strSQL
con.Execute strSQL
rstGrid.MoveNext
Wend
End If
If FindWindow("frmVac") = True Then frmVac.RefreshBill
SaveBill = True
m_Changed = False
con.CommitTrans
lTrans = 2
Exit Function
SaveErr:
If lTrans = 1 Then con.RollbackTrans
ErrMsg
End Function
Private Sub cmdSaveExit_Click()
If SaveBill = False Then Exit Sub
Unload Me
End Sub
Private Sub cmdSaveNew_Click()
If SaveBill = False Then Exit Sub
AddBill
End Sub
Private Sub cmdExit_Click()
m_Changed = False
Unload Me
End Sub
Public Sub DelRecord()
Grid.Delete
m_Changed = True
End Sub
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
Dim l As Long
If m_Changed = True Then l = ChangedBox("记录已更改,是否保存?")
If l = vbYes Then
If SaveBill = False Then Cancel = 1
ElseIf l = vbNo Then
Cancel = 0
ElseIf l = vbCancel Then
Cancel = 1
End If
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 cmbTimeMode_Selected()
On Error Resume Next
If Trim(cmbTimeMode.Text) = "每周" Then
Grid.Col("BeginTime").EditType = ComboBox3
Grid.Col("EndTime").EditType = ComboBox3
If Weekday(Date) = 1 Then
rstGrid.Fields("BeginTime") = "7"
rstGrid.Fields("EndTime") = "7"
Else
rstGrid.Fields("BeginTime") = CStr(Weekday(Date) - 1)
rstGrid.Fields("EndTime") = CStr(Weekday(Date) - 1)
End If
ElseIf Trim(cmbTimeMode.Text) = "每月" Then
Grid.Col("BeginTime").EditType = ComboBox4
Grid.Col("EndTime").EditType = ComboBox4
rstGrid.Fields("BeginTime") = Day(Date)
rstGrid.Fields("EndTime") = Day(Date)
ElseIf Trim(cmbTimeMode.Text) = "每天" Then
Grid.Col("BeginTime").EditType = OtherHwnd
Grid.Col("EndTime").EditType = OtherHwnd
rstGrid.Fields("BeginTime") = ""
rstGrid.Fields("EndTime") = ""
End If
rstGrid.Update
Grid.Refresh
End Sub
Private Sub Grid_AfterColEdit(ByVal ColIndex As Long)
If Grid.IsInNewRow Then
rstGrid.AddNew
rstGrid.Fields("BeginDate") = Format(dtpTime.Value, "yyyy-mm-dd")
rstGrid.Update
Grid.RefreshNew
End If
m_Changed = True
End Sub
Private Sub Grid_BeforeRowChange(ByVal NewRow As Long, Cancel As Long)
On Error Resume Next
If Grid.FieldByKey(NewRow, "TimeMode") = "每周" Then
Grid.Col("BeginTime").EditType = ComboBox3
Grid.Col("EndTime").EditType = ComboBox3
ElseIf Grid.FieldByKey(NewRow, "TimeMode") = "每月" Then
Grid.Col("BeginTime").EditType = ComboBox4
Grid.Col("EndTime").EditType = ComboBox4
ElseIf Grid.FieldByKey(NewRow, "TimeMode") = "每天" Then
Grid.Col("BeginTime").EditType = OtherHwnd
Grid.Col("EndTime").EditType = OtherHwnd
End If
End Sub
Private Sub Grid_RButtonUp(ByVal Area As SSUPERGRIDLib.sArea, ByVal X As Long, ByVal Y As Long)
If Area = sBlankArea Or sRowArea Then
Set iFrom = Me
Me.PopupMenu MNU.mnuClassEdit
End If
End Sub
Private Sub txtName_Change()
m_Changed = True
End Sub
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -