📄 frm_addworker.frm
字号:
Set grpTemp = wksWorker.CreateGroup(Chk_Groups(i).Caption)
If GrpSelected(i) = True And GrpChange(i) = False Then
wksWorker.Users(Lst_Workers.ListIndex).Groups.Delete (Chk_Groups(i).Caption)
Else
wksWorker.Users(Lst_Workers.ListIndex).Groups.Append grpTemp
End If
End If
Next i
End If
End Sub
Private Sub Cmd_Exit3_Click()
On Error GoTo EHand
Unload Me
EHand:
'If strOkorEsc = "确定" Then MsgBox Err.Description, vbCritical + vbOKOnly, STRGARAGE
End Sub
Private Sub Form_Load()
Dim rsSalary As Recordset
Dim intSalarySetup As Integer
Frm_Login.Show vbModal
On Error GoTo EHand
Set wksWorker = DBEngine.CreateWorkspace("wksworker", Frm_Login.Txt_Name, Frm_Login.Txt_PWD, dbUseJet)
Set dbWorker = wksWorker.OpenDatabase(DBPATH, False, False)
LstFresh
Chk_Groups(0).Caption = wksWorker.Groups(0).Name
For i = 1 To wksWorker.Groups.Count - 1
Load Chk_Groups(i)
Chk_Groups(i).Left = Chk_Groups(i - 1).Left
Chk_Groups(i).Top = Chk_Groups(i - 1).Top + 400
Chk_Groups(i).Caption = wksWorker.Groups(i).Name
Chk_Groups(i).Visible = True
Next i
ReDim GrpSelected(wksWorker.Groups.Count)
ReDim GrpChange(wksWorker.Groups.Count)
For i = 1 To wksWorker.Groups.Count - 1
If wksWorker.Groups(i).Name = "Users" Then Chk_Groups(i).Value = 1
Next i
Cmd_DelWorker.Enabled = False
Cmd_AddWorker.Enabled = False
Cmd_SetGroup.Enabled = False
FirstClickLstBox = True
For i = 0 To 2
Frame1(i).Caption = ""
Next i
'加载薪金设置页面
'判断是否有权限,
If dbWorker.Containers("tables").Documents("职员表").AllPermissions <> 1048575 Then
Frame1(1).Visible = False
Frame1(2).Visible = False
Exit Sub
End If
Set rsSalary = dbWorker.OpenRecordset("职员表", dbOpenTable)
intSalarySetup = 0
For i = 0 To rsSalary.Fields.Count - 1
If Mid(rsSalary.Fields(i).Name, 1, 2) = "gz" Or Mid(rsSalary.Fields(i).Name, 1, 2) = "GZ" Then
If intSalarySetup <> 0 Then
Load lbl_SalaryTitle(intSalarySetup)
Load Txt_SalarySetup(intSalarySetup)
Load Lbl_SalarySetup(intSalarySetup)
lbl_SalaryTitle(intSalarySetup).Left = lbl_SalaryTitle(intSalarySetup - 1).Left
Txt_SalarySetup(intSalarySetup).Left = Txt_SalarySetup(intSalarySetup - 1).Left
Lbl_SalarySetup(intSalarySetup).Left = Lbl_SalarySetup(intSalarySetup - 1).Left
lbl_SalaryTitle(intSalarySetup).Top = lbl_SalaryTitle(intSalarySetup - 1).Top + 400
Txt_SalarySetup(intSalarySetup).Top = Txt_SalarySetup(intSalarySetup - 1).Top + 400
Lbl_SalarySetup(intSalarySetup).Top = Lbl_SalarySetup(intSalarySetup - 1).Top + 400
lbl_SalaryTitle(intSalarySetup).Visible = True
Txt_SalarySetup(intSalarySetup).Visible = True
Lbl_SalarySetup(intSalarySetup).Visible = True
End If
lbl_SalaryTitle(intSalarySetup).Caption = Mid(rsSalary.Fields(i).Name, 3)
Select Case rsSalary.Fields(i).Type
Case dbCurrency '数字
'Txt_SalarySetup(intSalarySetup).Text = CStr(rsSalary.Fields(i) + 0)
' If rsSalary.Fields(i) > 0 Then
' lbl_Salarytitle(intSalarySetup).Value = 1
' Else
' lbl_Salarytitle(intSalarySetup).Value = 0
'End If
Lbl_SalarySetup(intSalarySetup).Caption = "元"
Case dbSingle '小数
'Txt_SalarySetup(intSalarySetup).Text = CStr(rsSalary.Fields(i) * 100)
'If rsSalary.Fields(i) > 0 Then
' lbl_Salarytitle(intSalarySetup).Value = 1
' Else
' lbl_Salarytitle(intSalarySetup).Value = 0
'End If
Lbl_SalarySetup(intSalarySetup).Caption = "%"
End Select
intSalarySetup = intSalarySetup + 1
End If
Next i
Do Until rsSalary.EOF
Lst_Salary.AddItem rsSalary.Fields("姓名")
rsSalary.MoveNext
Loop
rsSalary.Close
Cmd_CountSalary.Enabled = False
'薪金计算中设置时间
Txt_Date(3).Text = CStr(Year(Date))
Txt_Date(4).Text = CStr(Month(Date))
Txt_Date(5).Text = CStr(Day(Date))
If Txt_Date(4) = "1" Then
Txt_Date(0).Text = CStr(CInt(Year(Date)) - 1)
Txt_Date(2).Text = 12
Else
Txt_Date(0).Text = CStr(Year(Date))
Txt_Date(1).Text = CStr(Month(Date) - 1)
Txt_Date(2).Text = CStr(Day(Date))
End If
For i = 0 To 5
intPeriod(i) = CInt(Txt_Date(i).Text)
Next i
'
For i = 1 To 2
Frame1(i).Visible = False
Next i
Exit Sub
EHand:
If strOkorEsc = "确定" Then MsgBox Err.Description, vbCritical + vbOKOnly, STRGARAGE
If strOkorEsc = "取消" Then cmd_Exit3 = True
Unload Me
End Sub
Private Sub Form_Unload(Cancel As Integer)
On Error GoTo EHand
EHand:
End Sub
Private Sub Lst_Salary_Click()
Dim prsSalary As Recordset
Dim intObjNo As Integer
intObjNo = 0
If Lst_Salary.ListIndex < 0 Then
Cmd_CountSalary.Enabled = False
Exit Sub
End If
Cmd_CountSalary.Enabled = True
Set prsSalary = dbWorker.OpenRecordset("select * from 职员表 where 姓名 = '" & _
Lst_Salary.List(Lst_Salary.ListIndex) & "'", dbOpenDynaset)
For i = 0 To prsSalary.Fields.Count - 1
If Mid(prsSalary.Fields(i).Name, 1, 2) = "gz" Or Mid(prsSalary.Fields(i).Name, 1, 2) = "GZ" Then
Select Case prsSalary.Fields(i).Type
Case dbCurrency '数字
Txt_SalarySetup(intObjNo).Text = CStr(prsSalary.Fields(i) + 0)
Lbl_SalarySetup(intObjNo).Caption = "元"
Case dbSingle '小数
Txt_SalarySetup(intObjNo).Text = CStr(prsSalary.Fields(i) * 100)
Lbl_SalarySetup(intObjNo).Caption = "%"
End Select
intObjNo = intObjNo + 1
End If
Next i
End Sub
Private Sub Lst_Workers_Click()
Dim i As Integer
If Lst_Workers.ListIndex >= 0 Then
Call ShowGrpsofUser(Lst_Workers.ListIndex)
For i = 0 To wksWorker.Groups.Count - 1
If Chk_Groups(i).Value = 1 Then
GrpChange(i) = True
Else
GrpChange(i) = False
End If
Next i
Cmd_DelWorker.Enabled = True '判断是否修改
If IsChangeGrp = True And FirstClickLstBox = False Then
If MsgBox("您已经修改用户(" & Lst_Workers.List(Lst_Workers.ListIndex) & ")的所属组的设置,您要做这些修改吗?", vbOKCancel + vbQuestion, STRGARAGE) = vbOK Then
Cmd_SetGroup = True
End If
End If
Else
Cmd_DelWorker.Enabled = False
End If
If FirstClickLstBox = False Then FirstClickLstBox = True
End Sub
Private Sub TabStrip1_Click()
Dim i As Integer
If dbWorker.Containers("tables").Documents("职员表").AllPermissions < 1048575 Then
If TabStrip1.SelectedItem.Index = 3 Or TabStrip1.SelectedItem.Index = 2 Then
MsgBox "您无权做此操作", vbInformation + vbOKOnly, STRGARAGE
Exit Sub
End If
End If
For i = 0 To 2
If i = TabStrip1.SelectedItem.Index - 1 Then
Frame1(i).Visible = True
Else
Frame1(i).Visible = False
End If
Next i
End Sub
Private Sub Txt_NewName_Change()
If Len(txt_NewworkerPwd.Text) > 0 And Len(Txt_NewName.Text) > 0 Then
Cmd_AddWorker.Enabled = True
Else
Cmd_AddWorker.Enabled = False
End If
End Sub
Private Sub txt_NewworkerPwd_Change()
If Len(txt_NewworkerPwd.Text) > 0 And Len(Txt_NewName.Text) > 0 Then
Cmd_AddWorker.Enabled = True
Else
Cmd_AddWorker.Enabled = False
End If
End Sub
Sub ShowGrpsofUser(UserNo As Integer)
Dim i, j As Integer
For j = 0 To Chk_Groups.Count - 1
Chk_Groups(j).Value = 0
GrpSelected(j) = False
Next j
For i = 0 To wksWorker.Users(UserNo).Groups.Count - 1
For j = 0 To Chk_Groups.Count - 1
If Chk_Groups(j).Caption = wksWorker.Users(UserNo).Groups(i).Name Then
Chk_Groups(j).Value = 1
GrpSelected(j) = True
End If
Next j
Next i
End Sub
Function IsChangeGrp() As Boolean
'如果当前用户的组设置没有改变则返回false
Dim i As Integer
IsChangeGrp = False
For i = 0 To wksWorker.Groups.Count - 1
If GrpSelected(i) <> GrpChange(i) Then
IsChangeGrp = True
Exit Function
End If
Next i
End Function
Sub LstFresh() '刷新listbox
Dim i As Integer
Lst_Workers.Clear
For i = 0 To wksWorker.Users.Count - 1
Lst_Workers.AddItem (wksWorker.Users(i).Name)
Next i
End Sub
Private Sub Txt_SalarySetup_Change(Index As Integer)
Cmd_SalaryEdit.Enabled = True
End Sub
Sub showRs(RS As Recordset, Top As Single, Left As Single, Width As Single, Height As Single)
Dim i As Integer
For i = 0 To RS.Fields.Count - 1
Select Case RS.Fields(i).Type
Case dbCurrency '货币
Case dbGUID
Case dbText
Case dbBoolean
End Select
Next i
End Sub
Private Sub Vscro_Date_Change(Index As Integer)
Dim intMaxDays As Integer
Select Case Index
Case 0, 3
Txt_Date(Index).Text = CStr(intPeriod(Index) + Vscro_Date(Index).Value)
Case 1, 4
If intPeriod(Index) + Vscro_Date(Index).Value <= 12 And intPeriod(Index) + Vscro_Date(Index).Value >= 1 Then
Txt_Date(Index).Text = CStr(intPeriod(Index) + Vscro_Date(Index).Value)
Else
If intPeriod(Index) + Vscro_Date(Index).Value > 12 Then Vscro_Date(Index).Value = 12 - intPeriod(Index)
If intPeriod(Index) + Vscro_Date(Index).Value < 1 Then Vscro_Date(Index).Value = 1 - intPeriod(Index)
End If
Case 2, 5
Select Case CInt(Txt_Date(Index - 1).Text)
Case 1, 3, 5, 7, 8, 10, 12
intMaxDays = 31
Case 2
If CInt(Txt_Date(Index - 2).Text) Mod 4 = 0 Then
intMaxDays = 29
Else
intMaxDays = 28
End If
Case Else
intMaxDays = 30
End Select
If intPeriod(Index) + Vscro_Date(Index).Value <= intMaxDays And intPeriod(Index) + Vscro_Date(Index).Value >= 1 Then
Txt_Date(Index).Text = CStr(CStr(intPeriod(Index) + Vscro_Date(Index).Value))
Else
If intPeriod(Index) + Vscro_Date(Index).Value > intMaxDays Then Vscro_Date(Index).Value = intMaxDays - intPeriod(Index)
If intPeriod(Index) + Vscro_Date(Index).Value < 1 Then Vscro_Date(Index).Value = 1 - intPeriod(Index)
End If
End Select
End Sub
Function DateBegin() As String
DateBegin = Txt_Date(1).Text & "/" & Txt_Date(2).Text & "/" & Txt_Date(0).Text
End Function
Function dateEnd() As String
dateEnd = Txt_Date(4).Text & "/" & Txt_Date(5).Text & "/" & Txt_Date(3).Text
End Function
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -