📄 formemployee.vb
字号:
Private Sub BeginEdit()
btnUpdate.Enabled = True
btnCancel.Enabled = True
End Sub
Private Sub EndEdit()
btnUpdate.Enabled = False
btnCancel.Enabled = False
End Sub
Private Sub InitialData()
'Initial TextBox
txtName.Text = oEmployee.Name
txtAddress.Text = oEmployee.Address
txtBankAccount.Text = oEmployee.BankAccount
txtBirthday.Text = oEmployee.Birthday
txtFireDate.Text = oEmployee.FireDate
txtHireDate.Text = oEmployee.HireDate
txtHomePhone.Text = oEmployee.HomePhone
txtIdcard.Text = oEmployee.IDCard
txtIntro.Text = oEmployee.Intro
txtMarry.Text = oEmployee.Marry
txtMobile.Text = oEmployee.Mobile
uctlNativePlace.Text = oEmployee.NativePlace
txtNumber.Text = oEmployee.Number
txtPersonalEmail.Text = oEmployee.PersonalEmail
txtPostalcode.Text = oEmployee.Postalcode
txtSex.Text = oEmployee.Sex
txtStatus.Text = oEmployee.Status
txtWorkAge.Text = oEmployee.WorkAge
txtWorkEmail.Text = oEmployee.WorkEmail
txtWorkPhone.Text = oEmployee.WorkPhone
'PictureBox1.Image.FromFile(oEmployee.Photo)
'Initial ComboxBox
cmbNation.DataSource = Nothing
cmbNation.Items.Clear()
cmbNation.DisplayMember = "name"
cmbNation.ValueMember = "id"
cmbNation.DataSource = DbBase.DataInterface().Execute4DS("select id,name from nation").Tables(0).DefaultView
cmbNation.Text = oEmployee.Nation
cmbEducation.DataSource = Nothing
cmbEducation.Items.Clear()
cmbEducation.DisplayMember = "name"
cmbEducation.ValueMember = "id"
cmbEducation.DataSource = DbBase.DataInterface().Execute4DS("select id,name from education_level").Tables(0).DefaultView
cmbEducation.Text = oEmployee.Education
cmbPostTitle.DataSource = Nothing
cmbPostTitle.Items.Clear()
cmbPostTitle.DisplayMember = "name"
cmbPostTitle.ValueMember = "id"
cmbPostTitle.DataSource = DbBase.DataInterface().Execute4DS("select id,name from post_name").Tables(0).DefaultView
cmbPostTitle.Text = oEmployee.PostTitle
cmbBussiness.DataSource = Nothing
cmbBussiness.Items.Clear()
cmbBussiness.DisplayMember = "name"
cmbBussiness.ValueMember = "id"
cmbBussiness.DataSource = DbBase.DataInterface().Execute4DS("select id,name from bussiness").Tables(0).DefaultView
cmbBussiness.Text = oEmployee.Bussiness
cmbDepartment.DataSource = Nothing
cmbDepartment.Items.Clear()
cmbDepartment.DisplayMember = "name"
cmbDepartment.ValueMember = "number"
cmbDepartment.DataSource = DbBase.DataInterface().Execute4DS("select number,name from department order by number").Tables(0).DefaultView
cmbDepartment.Text = oEmployee.Department.Name
cmbEmployeeLevel.DataSource = Nothing
cmbEmployeeLevel.Items.Clear()
cmbEmployeeLevel.DisplayMember = "role"
cmbEmployeeLevel.ValueMember = "level"
cmbEmployeeLevel.DataSource = DbBase.DataInterface().Execute4DS("select level,role from payroll_level").Tables(0).DefaultView
cmbEmployeeLevel.Text = oEmployee.EmployeeLevel
End Sub
Private Sub InitialTree(Optional ByVal bShowAll As Boolean = False)
'Initial tvEmployee
tvEmployee.Nodes.Clear()
Dim dsCompany As DataSet
dsCompany = DbBase.DataInterface().Execute4DS("select top 1 id,name from company")
Dim tnRoot As TreeNode
tnRoot = New TreeNode(dsCompany.Tables(0).Rows(0).Item("name"))
tnRoot.Tag = dsCompany.Tables(0).Rows(0).Item("id")
tnRoot.ImageIndex = 0
tnRoot.SelectedImageIndex = 0
Dim dsDeparts As DataSet
dsDeparts = DbBase.DataInterface().Execute4DS("select number,name from department order by number")
'Add Deparments to tvEmployee
Dim iNodeIndex As Integer
For Each drDepart As DataRow In dsDeparts.Tables(0).Rows
Dim tnDepart As TreeNode
tnDepart = New TreeNode(drDepart.Item("name"))
tnDepart.Tag = drDepart.Item("number")
tnDepart.ImageIndex = 1
tnDepart.SelectedImageIndex = 1
If Microsoft.VisualBasic.Right(drDepart.Item("number"), 1) = "0" Then
tnRoot.Nodes.Add(tnDepart)
iNodeIndex = tnDepart.Index
Else
Dim dsEmployee As DataSet
Dim sSql As String
If bShowAll Then
sSql = "select name,number from v_employee where department_number = '" & tnDepart.Tag & "'"
Else
sSql = "select name,number from v_employee where department_number = '" & tnDepart.Tag & "' and status = '在职'"
End If
dsEmployee = DbBase.DataInterface().Execute4DS(sSql)
For Each drEmployee As DataRow In dsEmployee.Tables(0).Rows
Dim tnEmployee As TreeNode
tnEmployee = New TreeNode(drEmployee.Item("name"), 2, 2)
tnEmployee.Tag = drEmployee.Item("number")
tnDepart.Nodes.Add(tnEmployee)
Next
tnRoot.Nodes.Item(iNodeIndex).Nodes.Add(tnDepart)
End If
Next
tvEmployee.Nodes.Add(tnRoot)
tvEmployee.ExpandAll()
End Sub
Private Sub GetData()
oEmployee.Name = txtName.Text
oEmployee.Sex = txtSex.Text
oEmployee.Nation = cmbNation.Text
oEmployee.IDCard = txtIdcard.Text
oEmployee.Birthday = txtBirthday.Text
oEmployee.NativePlace = uctlNativePlace.Text
oEmployee.HomePhone = txtHomePhone.Text
oEmployee.Mobile = txtMobile.Text
oEmployee.Address = txtAddress.Text
oEmployee.Postalcode = txtPostalcode.Text
oEmployee.Education = cmbEducation.Text
oEmployee.PostTitle = cmbPostTitle.Text
oEmployee.PersonalEmail = txtPersonalEmail.Text
oEmployee.Intro = txtIntro.Text
oEmployee.Marry = txtMarry.Text
oEmployee.Photo = ""
oEmployee.Number = txtNumber.Text
oEmployee.Department = New Department(cmbDepartment.SelectedValue)
oEmployee.Bussiness = cmbBussiness.Text
oEmployee.HireDate = txtHireDate.Text
oEmployee.FireDate = txtFireDate.Text
oEmployee.Status = txtStatus.Text
oEmployee.WorkEmail = txtWorkEmail.Text
oEmployee.WorkPhone = txtWorkPhone.Text
oEmployee.WorkAge = txtWorkAge.Text
oEmployee.EmployeeLevel = cmbEmployeeLevel.Text
End Sub
Private Sub FormEmployee_Load(ByVal sender As Object, ByVal e As EventArgs) Handles MyBase.Load
InitialTree(miShowAll.Checked)
End Sub
Private Sub tvEmployee_AfterSelecet(ByVal sender As Object, ByVal e As TreeViewEventArgs) Handles tvEmployee.AfterSelect
Select Case e.Node.ImageIndex
Case 2
oEmployee = New Employee(CStr(e.Node.Tag))
Case 1
oEmployee = New Employee
oEmployee.Department = New Department(e.Node.Tag)
End Select
InitialData()
EndEdit()
End Sub
Private Sub tvEmployee_MouseDown(ByVal send As Object, ByVal e As MouseEventArgs) Handles tvEmployee.MouseDown
Dim tnClicked As TreeNode
tnClicked = tvEmployee.GetNodeAt(New Point(e.X, e.Y))
If Not tnClicked Is Nothing And Not tnClicked Is tvEmployee.Nodes(0) Then
tvEmployee.SelectedNode = tnClicked
'oEmployee = New Employee(tnClicked.Tag)
End If
End Sub
Private Sub cmbDepartment_SelectedIndexChanged(ByVal send As Object, ByVal e As EventArgs) Handles cmbDepartment.SelectedIndexChanged
Dim sNumber As String = txtNumber.Text
Dim iLen As Integer = sNumber.Length
If iLen = 3 Then
txtNumber.Text = cmbDepartment.SelectedValue & sNumber
ElseIf iLen = 2 Or iLen = 5 Then
txtNumber.Text = sNumber.Replace(Microsoft.VisualBasic.Left(sNumber, 2), cmbDepartment.SelectedValue)
Else
txtNumber.Text = cmbDepartment.SelectedValue
End If
End Sub
Private Sub btnExit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnExit.Click
Me.Close()
End Sub
Private Sub miAdd_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles miAdd.Click
oEmployee = New Employee
Dim tnSelected As TreeNode = tvEmployee.SelectedNode
If tnSelected.ImageIndex = 1 Then
oEmployee.Department = New Department(tnSelected.Tag)
ElseIf tnSelected.ImageIndex = 2 Then
oEmployee.Department = New Department(tnSelected.Parent.Tag)
End If
InitialData()
BeginEdit()
btnUpdate.Text = "聘 用"
End Sub
Private Sub miEdit_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles miEdit.Click
BeginEdit()
btnUpdate.Text = "修 改"
End Sub
Private Sub miDel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles miDel.Click
BeginEdit()
btnUpdate.Text = "解 聘"
End Sub
Private Sub miShowAll_Click(ByVal sender As Object, ByVal e As EventArgs) Handles miShowAll.Click
miShowAll.Checked = Not miShowAll.Checked
InitialTree(miShowAll.Checked)
End Sub
Private Sub pmEmployee_Popup(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles pmEmployee.Popup
If tvEmployee.SelectedNode Is Nothing Then
Exit Sub
End If
Select Case tvEmployee.SelectedNode.ImageIndex
Case 2
miClear.Visible = False
miEdit.Visible = True
miDel.Visible = True
miTransfer.Visible = True
miRetire.Visible = True
miSplitter.Visible = True
miSplitter2.Visible = True
miShowAll.Visible = True
Case 1
miClear.Visible = True
miEdit.Visible = False
miDel.Visible = False
miTransfer.Visible = False
miRetire.Visible = False
miSplitter.Visible = False
miSplitter2.Visible = True
miShowAll.Visible = True
Case Else
For Each mi As MenuItem In pmEmployee.MenuItems
mi.Visible = False
Next
End Select
End Sub
Private Sub miClear_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles miClear.Click
If MessageBox.Show("该操作将删除该部门下的所有员工,确定吗?", "清空部门", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) Then
For Each tnTemp As TreeNode In tvEmployee.SelectedNode.Nodes
Dim oEmpTmp As Employee
oEmpTmp = New Employee(CStr(tnTemp.Tag))
oEmpTmp.Fire(CType(New Date, String))
Next
End If
InitialTree(miShowAll.Checked)
End Sub
Private Sub btnUpdate_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnUpdate.Click
Select Case btnUpdate.Text
Case "聘 用"
GetData()
oEmployee.Hire()
Case "修 改"
GetData()
oEmployee.Update()
Case "解 聘"
If MessageBox.Show("确认要解雇该员工吗?", "解聘员工", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) = Windows.Forms.DialogResult.OK Then
oEmployee.Fire(txtFireDate.Text)
End If
Case "退 休"
oEmployee.Retire()
Case "调 动"
oEmployee.Transfer(New Department(cmbDepartment.SelectedValue))
End Select
InitialTree(miShowAll.Checked)
InitialData()
EndEdit()
End Sub
Private Sub miRetire_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles miRetire.Click
btnUpdate.Text = "退 休"
BeginEdit()
End Sub
Private Sub btnCancel_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCancel.Click
EndEdit()
InitialData()
End Sub
Private Sub miTransfer_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles miTransfer.Click
cmbDepartment.Focus()
btnUpdate.Text = "调 动"
BeginEdit()
End Sub
End Class
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -