Xây dựng hệ thống thông tin quản lý nhân sự tại công ty cổ phần xây dựng Vinaconex 1

LỜI MỞ ĐẦU Ngày nay, nhân lực luôn là mối quan tâm hàng đầu của mỗi quốc gia nói chung và các doanh nghiệp nói riêng. Các doanh nghiệp luôn có những chính sách thu hút nhân tài để người lao động gắn bó lâu dài với công ty, và luôn tạo điều kiện cho nhân viên phát huy tính sáng tạo, không ngừng học hỏi những tiến bộ khoa học công nghệ mới. Nhất là trong thời đại công nghệ thông tin ngày càng có nhiều đóng góp cho sự phát triển của xã hội. Đặc biệt là trong lĩnh vực quản lý điều hành, ứng dụng tốt công nghệ thông tin luôn trợ giúp cho lãnh đạo ra các quyết định điều hành đúng đắn và kịp thời, hơn thế nữa còn giúp cho công tác quản lý giảm tối đa những sai sót, tiết kiệm thời gian, kinh phí. Các công ty dù đang hoạt động trong lĩnh vực nào cũng nhận thấy rằng ứng dụng công nghệ thông tin vào quá trình sản xuất, kinh doanh, điều hành doanh nghiệp giúp tăng năng suất lao động, tăng hiệu quả trong quản lý. Vì vậy, các doanh nghiệp ở Việt Nam hiện nay dành một phần ngân sách để đầu tư vào xây dựng, và phát triển hệ thống thông tin cho phù hợp tình hình sản xuất kinh doanh để nâng cao khả năng cạnh tranh trên thị trường. Công ty Cổ phần xây dựng Vinaconex 1 là một công ty hàng đầu trong lĩnh vực xây dựng. Nhận thức rõ tầm quan trọng của việc ứng dụng công nghệ thông tin vào công tác quản lý cũng như vai trò to lớn của đội ngũ cán bộ nhân viên công ty có kế hoạch xây dựng hệ thống thông tin quản lý nhân sự. Qua thời gian thực tập tại công ty, em đã học hỏi và tìm hiểu cách thức quản lý nhân sự tại công ty và quyết định chọn đề tài “Xây dựng hệ thống thông tin quản lý nhân sự tại công ty cổ phần xây dựng Vinaconex 1” với hy vọng có thể đóng góp một phần vào công tác quản lý nhân sự tại công ty. Đề tài này được trình bày dưới 3 chương: Chương 1 : Tổng quan về công ty cổ phần xây dựng Vinaconex 1 và bài toán quản lý nhân sự. Chương 2: Phương pháp luận xây dựng hệ thống thông tin quản lý nhân sự Chương 3: Xây dựng hệ thống thông tin quản lý nhân sự Trong thời gian thực tập tại công ty, em xin chân thành cảm ơn cán bộ phòng tổ chức hành chính đã cung cấp thông tin để em có thể hoàn thành đề tài. Đặc biệt, em xin gửi lời cảm ơn đến cô giáo TS.Trần Thị Song Minh đã hướng dẫn và chỉ bảo trong quá trình em tìm hiểu và thực hiện đề tài. Tuy nhiên, do hạn chế về thời gian, cũng như kinh nghiệm và kiến thức thực tế, đề tài sẽ không tránh được những sai sót, em mong cô và các thầy trong khoa Tin học kinh tế- Trường Đại học Kinh tế quốc dân đóng góp ý kiến và tiếp tục chỉ bảo. MỤC LỤC DANH MỤC HÌNH VẼ, BẢNG BIỂU LỜI MỞ ĐẦU 1 CHƯƠNG 1 3 TỔNG QUAN VỀ CÔNG TY CỔ PHẦN XÂY DỰNG VINACONEX 1 VÀ BÀI TOÁN QUẢN LÝ NHÂN SỰ 3 1.1. Tổng quan về công ty cổ phần xây dựng Vinaconex1 3 1.1.1. Lịch sử hình thành và phát triển của công ty 3 1.1.2. Cơ cấu tổ chức của công ty 5 1.1.3. Các lĩnh vực hoạt động và các sản phẩm, dịch vụ của công ty 5 1.1.4. Phương hướng phát triển của công ty 7 1.2 Thực trạng ứng dụng công nghệ thông tin tại công ty cổ phần xây dựng Vinaconex1 8 1.2.1. Các ứng dụng công nghệ thông tin tại công ty cổ phần xây dựng Vinaconex1 8 1.2.2. Kế hoạch ứng dụng công nghệ thông tin tại công ty cổ phần xây dựng Vinaconex1 9 1.3 Giải pháp tin học hoá cho bài toán quản lý nhân sự 10 1.3.1. Lý do chọn đề tài 10 1.3.2. Nội dung và mục đích của đề tài 10 1.3.3. Hạ tầng công nghệ và các yếu tố liên quan 11 CHƯƠNG 2 12 PHƯƠNG PHÁP LUẬN XÂY DỰNG HỆ THỐNG THÔNG TIN QUẢN LÝ NHÂN SỰ 12 2.1. Tổng quan về hệ thống thông tin 12 2.1.1. Khái quát về hệ thống thông tin 12 2.1.2. Phân loại hệ thống thông tin 13 2.1.3. Các mô hình biểu diễn hệ thống thông tin 15 2.1.4. Tổng quan về hệ thống thông tin quản lý nhân sự 16 2.2. Phương pháp phát triển hệ thống thông tin 17 2.2.1. Phương pháp phát triển nguyên mẫu 17 2.2.2. Phương pháp vòng đời phát triển hệ thống SDLC (System Development Life Cycle) 18 2.2.3. Phương pháp phát triển nhanh hệ thống thông tin 19 2.3. Các giai đoạn của phát triển hệ thống thông tin 19 2.3.1. Giai đoạn đánh giá yêu cầu 19 2.3.2. Giai đoạn phân tích chi tiết 20 2.3.3. Giai đoạn thiết kế 24 2.3.4. Giai đoạn cài đặt và khai thác 28 2.4. Cơ sở phương pháp luận về hệ quản trị cơ sở dữ liệu và ngôn ngữ lập trình trong phân tích hệ thống thông tin 29 2.4.1. Giới thiệu về ngôn ngữ lập trình VB 6.0 29 2.4.2. Giới thiệu về hệ quản trị cơ sở dữ liệu Microsoft Access 2003 29 CHƯƠNG 3 31 XÂY DỰNG HỆ THỐNG THÔNG TIN QUẢN LÝ NHÂN SỰ 31 3.1. Phân tích yêu cầu hệ thống thông tin quản lý nhân sự tại công ty Cổ phần xây dựng Vinaconex 1 31 3.1.1. Các công cụ để khảo sát hệ thống thông tin quản lý nhân sự tại công ty cổ phần xây dựng Vinaconex1 31 3.1.2. Khảo sát hệ thống thông tin quản lý nhân sự 33 3.2. Phân tích chi tiết hệ thống thông tin quản lý nhân sự tại công ty cổ phần xây dựng Vinaconex1 36 3.2.1. Mô hình hoá hệ thống thông tin dưới góc độ luồng thông tin 36 3.2.2. Mô hình hoá hệ thống thông tin dưới góc độ chức năng 39 3.2.3. Mô hình hoá hệ thống thông tin dưới góc độ luồng dữ liệu 40 3.3. Thiết kế hệ thống thông tin quản lý nhân sự tại công ty cổ phần xây dựng Vinaconex1 45 3.3.1. Thiết kế cơ sở dữ liệu 45 3.3.2. Thiết kế logic xử lý 65 3.3.3. Thiết kế giao diện 70 3.4. Triển khai hệ thống thông tin quản lý nhân sự tại công ty cổ phần xây dựng Vinaconex1 100 3.4.1. Triển khai hệ thống 100 3.4.2. Đóng gói và đào tạo 101 KẾT LUẬN 103 DANH MỤC TÀI LIỆU THAM KHẢO 105 PHỤ LỤC 106 MỤC LỤC 172

doc161 trang | Chia sẻ: lvcdongnoi | Lượt xem: 2380 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Xây dựng hệ thống thông tin quản lý nhân sự tại công ty cổ phần xây dựng Vinaconex 1, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
dd = False an trangThai resetForm End Sub Private Sub CmdLuu_Click() If add = True Then If checkForm = True Then adoNhanVien.Recordset.AddNew adoNhanVien.Recordset(0) = txtMaNV.Text adoNhanVien.Recordset(1) = txtTenDem.Text adoNhanVien.Recordset(2) = txtTen.Text adoNhanVien.Recordset(3) = DTPicker1.Value adoNhanVien.Recordset(4) = txtSoDT.Text adoNhanVien.Recordset(5) = OptTrue.Value adoNhanVien.Recordset(6) = optSex1.Value adoNhanVien.Recordset(7) = txtNguyenQuan.Text adoNhanVien.Recordset(8) = txtHoKhau.Text adoNhanVien.Recordset(9) = Check1.Value adoNhanVien.Recordset(10) = txtCMTND.Text adoNhanVien.Recordset(11) = DTPicker2.Value adoNhanVien.Recordset(12) = txtTaiKhoan.Text adoNhanVien.Recordset.Update add = False an trangThai End If End If If edit = True Then If checkForm = True Then adoNhanVien.Recordset(0) = txtMaNV.Text adoNhanVien.Recordset(1) = txtTenDem.Text adoNhanVien.Recordset(2) = txtTen.Text adoNhanVien.Recordset(3) = DTPicker1.Value adoNhanVien.Recordset(4) = txtSoDT.Text adoNhanVien.Recordset(5) = OptTrue.Value adoNhanVien.Recordset(6) = optSex1.Value adoNhanVien.Recordset(7) = txtNguyenQuan.Text adoNhanVien.Recordset(8) = txtHoKhau.Text adoNhanVien.Recordset(9) = Check1.Value adoNhanVien.Recordset(10) = txtCMTND.Text adoNhanVien.Recordset(11) = DTPicker2.Value adoNhanVien.Recordset(12) = txtTaiKhoan.Text adoNhanVien.Recordset.Update edit = False an trangThai End If End If End Sub Private Function checkForm() As Boolean If txtMaNV.Text = "" Then MsgBox "B¹n ch­a nhËp m· nh©n viªn !" txtMaNV.SetFocus checkForm = False ElseIf txtTenDem.Text = "" Then MsgBox "B¹n ch­a nhËp tªn ®Öm cho nh©n viªn !" txtTenDem.SetFocus checkForm = False ElseIf txtTen.Text = "" Then MsgBox "B¹n ch­a nhËp tªn cho nh©n viªn !" txtTen.SetFocus checkForm = False ElseIf txtCMTND.Text = "" Then MsgBox "B¹n ch­a nhËp sè chøng minh th­ nh©n d©n cho nh©n viªn !" txtCMTND.SetFocus checkForm = False ElseIf txtHoKhau.Text = "" Then MsgBox "B¹n ch­a nhËp hé khÈu cho nh©n viªn !" txtHoKhau.SetFocus checkForm = False ElseIf txtNguyenQuan.Text = "" Then MsgBox "B¹n ch­a nhËp nguyªn qu¸n cho nh©n viªn !" txtNguyenQuan.SetFocus checkForm = False ElseIf txtSoDT.Text = "" Then MsgBox "B¹n ch­a nhËp Sè ®iÖn tho¹i cho nh©n viªn !" txtSoDT.SetFocus checkForm = False ElseIf txtTaiKhoan.Text = "" Then MsgBox "B¹n ch­a nhËp Sè tµi kho¶n cho nh©n viªn !" txtTaiKhoan.SetFocus checkForm = False ElseIf IsNumeric(txtSoDT.Text) = False Then ElseIf IsNumeric(txtTaiKhoan.Text) = False Then MsgBox "B¹n ®· nhËp sai kiÓu d÷ liÖu, b¹n ph¶i nhËp sè cho tr­êng d÷ liÖu sè tµi kho¶n !" txtTaiKhoan.SetFocus checkForm = False ElseIf IsNumeric(txtCMTND.Text) = False Then MsgBox "B¹n ®· nhËp sai kiÓu d÷ liÖu, b¹n ph¶i nhËp sè cho tr­êng d÷ liÖu sè chøng minh th­ nh©n d©n !" txtCMTND.SetFocus checkForm = False Else checkForm = True End If End Function Private Sub cmdSua_Click() If adoNhanVien.Recordset.EOF = False And adoNhanVien.Recordset.BOF = False Then edit = True hien txtMaNV.Enabled = False txtTenDem.SetFocus trangThai Else MsgBox "B¹n ch­a chän b¶n ghi ®Ó söa !" End If End Sub Private Sub resetForm() txtMaNV.Text = "" txtTenDem.Text = "" txtTen.Text = "" txtCMTND.Text = "" txtHoKhau.Text = "" txtNguyenQuan.Text = "" txtSoDT.Text = "" txtTaiKhoan.Text = "" Check1.Value = 0 optSex1.Value = True OptTrue.Value = True 'DTPicker2.Enabled = True If txtMaNV.Enabled = True Then txtMaNV.SetFocus End If End Sub Private Sub setValue() If adoNhanVien.Recordset.EOF = False And adoNhanVien.Recordset.BOF = False Then txtMaNV.Text = adoNhanVien.Recordset(0) txtTenDem.Text = adoNhanVien.Recordset(1) txtTen.Text = adoNhanVien.Recordset(2) DTPicker1.Value = adoNhanVien.Recordset(3) txtSoDT.Text = adoNhanVien.Recordset(4) OptTrue.Value = adoNhanVien.Recordset(5) optSex1.Value = adoNhanVien.Recordset(6) txtNguyenQuan.Text = adoNhanVien.Recordset(7) txtHoKhau.Text = adoNhanVien.Recordset(8) 'Check1.Value = adoNhanVien.Recordset(8) If adoNhanVien.Recordset(9) = 0 Then Check1.Value = 0 Else: Check1.Value = 1 End If txtCMTND.Text = adoNhanVien.Recordset(10) DTPicker2.Value = adoNhanVien.Recordset(11) txtTaiKhoan.Text = adoNhanVien.Recordset(12) Else resetForm End If End Sub Private Sub dgrHSNhanVien_RowColChange(LastRow As Variant, ByVal LastCol As Integer) If edit = False And add = False Then setValue End If End Sub Private Sub Form_Load() adoNhanVien.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\DataBase\NhanSu.mdb;Persist Security Info=False" adoNhanVien.RecordSource="SELECTHoSoNV.MaNV,HoSoNV.HoDem,HoSoNV.Ten, HoSoNV.NgaySinh,HoSoNV.SoDT,HoSoNV.CoDong,HoSoNV.GioiTinh,HoSoNV.NguyenQuan,HoSoNV.NoiDangKyHKTT,HoSoNV.DangVien,HoSoNV.SoCMND,HoSoNV.NgayCap,HoSoNV.SoTK,iif(HoSoNV.GioiTinh=true,'Nam','Nu') as GioiTinhText,iif(HoSoNV.CoDong=true,'Thanh vien co dong','Thanh vien ben ngoai') as CoDongText,iif(HoSoNV.DangVien,'La dang vien','Khong phai la dang vien') as DangVienText FROM HoSoNV ORDER BY HoSoNV.Ten;" Set dgrHSNhanVien.DataSource = adoNhanVien optSex1.Value = True OptTrue.Value = True edit = False add = False an End Sub Private Sub trangThai() If add = False Then If edit = False Then cmdMoi.Enabled = True cmdSua.Enabled = True cmdXoa.Enabled = True cmdLuu.Enabled = False cmdHuy.Enabled = False Else cmdMoi.Enabled = False cmdSua.Enabled = False cmdXoa.Enabled = False cmdLuu.Enabled = True cmdHuy.Enabled = True End If Else If edit = False Then cmdMoi.Enabled = False cmdSua.Enabled = False cmdXoa.Enabled = False cmdLuu.Enabled = True cmdHuy.Enabled = True Else add = False edit = False cmdMoi.Enabled = True cmdSua.Enabled = True cmdXoa.Enabled = True cmdLuu.Enabled = False cmdHuy.Enabled = False End If End If End Sub Code quản lý hợp đồng nhân viên Private edit As Boolean Private add As Boolean Function chonMaHD(ByVal LoaiHD As String) As String Dim ma As String If rs.State = 1 Then rs.Close End If rs.Open "Select * from HopDong where LoaiHD ='" & LoaiHD & "'order by MaHD" If rs.EOF Then chonMaHD = LoaiHD & "001" rs.Close Exit Function End If rs.MoveLast ma = rs.Fields("MaHD") rs.Close ma = Right(ma, 3) ma = CDbl(ma) ma = ma + 1 ma = CStr(ma) Select Case Len(ma) Case 1: ma = LoaiHD & "00" & ma Case 2: ma = LoaiHD & "0" & ma Case 3: ma = LoaiHD & ma End Select chonMaHD = ma End Function Function TimLoaiHD(ByVal Chuoi As String) As String Dim a As Integer a = InStr(Chuoi, "-") TimLoaiHD = Left(Chuoi, a - 1) End Function Function TimNhanVien(ByVal Ten As String) As String Dim a As Integer a = InStr(Ten, "-") TimNhanVien = Left(Ten, a - 1) End Function Private Sub Combo1_LostFocus() If Trim(Combo1.Text) "" Then setValue1 (TimNhanVien(Combo1.Text)) End If End Sub Private Sub combo2_LostFocus() If (Trim(combo2.Text) "" And Trim(Combo1.Text) "") Then txtMaNV = (TimNhanVien(Combo1.Text)) txtMaHD = chonMaHD(TimLoaiHD(combo2)) End If End Sub Private Sub cmdMoi_Click() Frame1.Enabled = True Frame2.Enabled = True add = True 'hien an resetForm trangThai Combo1.SetFocus End Sub Private Sub an() DTPicker1.Enabled = False txtNguyenQuan.Enabled = False txtHoKhau.Enabled = False txtMaHD.Enabled = False txtMaNV.Enabled = False End Sub Private Sub hien() combo2.Enabled = True Combo1.Enabled = True txtGhiChu.Enabled = True End Sub Private Sub CmdThoat_Click() Unload Me End Sub Private Sub cmdHuy_Click() edit = False add = False Frame1.Enabled = False Frame2.Enabled = False 'an trangThai resetForm End Sub Private Sub CmdLuu_Click() Dim sql As String If add = True Then If checkForm = True Then If rs.State = 1 Then rs.Close End If rs.Open "SELECT CTHopDong.MaNV, CTHopDong.MaHD, HopDong.LoaiHD, CTHopDong.NgayKy, CTHopDong.NgayKT FROM HopDong INNER JOIN CTHopDong ON HopDong.MaHD = CTHopDong.MaHD Where (CTHopDong.MaNV) ='" & TimNhanVien(Combo1) & "' ORDER BY CTHopDong.NgayKy DESC;" If Not rs.EOF Then rs.MoveFirst If rs.Fields("LoaiHD") = "A" Then MsgBox "Nhan vien bien che, khong can lap hop dong moi", , "Thong bao" add = False Frame1.Enabled = False Frame2.Enabled = False trangThai resetForm Exit Sub End If If (Trim(rs.Fields("NgayKT")) <= Now Or Trim(rs.Fields("NgayKT")) = "1/1/1601") Then MsgBox " Nh©n viªn ch­a chÊm døt hîp ®ång tr­íc, B¹n kh«ng thÓ lËp hîp ®ång ", , "thong bao" add = False Frame1.Enabled = False Frame2.Enabled = False trangThai resetForm Exit Sub Else cn.Execute "Insert into HopDong(MaHD,LoaiHD,GhiChu) values('" & txtMaHD.Text & "','" & TimLoaiHD(combo2) & "','" & txtGhiChu.Text & "')" cn.Execute "Insert into CTHopDong (MaNV,MaHD,NgayKy,NgayKT) values('" & txtMaNV.Text & "','" & txtMaHD.Text & "','" & FormatDateTime(DTPStart, vbShortDate) & "','" & FormatDateTime(DTPEnd, vbShortDate) & "')" MsgBox "B¹n ®· thªm vµo danh môc thµnh c«ng!" AdoCTHopDong.Refresh add = False Frame1.Enabled = False Frame2.Enabled = False trangThai resetForm Exit Sub End If End If cn.Execute "Insert into HopDong(MaHD,LoaiHD,GhiChu) values('" & txtMaHD.Text & "','" & TimLoaiHD(combo2) & "','" & txtGhiChu.Text & "')" cn.Execute "Insert into CTHopDong (MaNV,MaHD,NgayKy,NgayKT) values('" & txtMaNV.Text & "','" & txtMaHD.Text & "','" & FormatDateTime(DTPStart, vbShortDate) & "','" & FormatDateTime(DTPEnd, vbShortDate) & "')" MsgBox "B¹n ®· thªm vµo danh môc thµnh c«ng!" AdoCTHopDong.Refresh add = False Frame1.Enabled = False Frame2.Enabled = False trangThai resetForm End If End If If edit = True Then If checkForm = True Then If rs.State = 1 Then rs.Close End If rs.Open "SELECT CTHopDong.MaNV, CTHopDong.MaHD, HopDong.LoaiHD, CTHopDong.NgayKy, CTHopDong.NgayKT FROM HopDong INNER JOIN CTHopDong ON HopDong.MaHD = CTHopDong.MaHD Where (CTHopDong.MaNV) ='" & TimNhanVien(Combo1) & "' ORDER BY CTHopDong.NgayKy;" If Not rs.EOF Then rs.MoveFirst If rs.Fields("LoaiHD") = "A" Then MsgBox "Nh©n viªn nµy thuéc biªn chÕ, kh«ng ®­îc söa hîp ®ång ", , "Th«ng b¸o" edit = False Frame1.Enabled = False Frame2.Enabled = False trangThai resetForm Exit Sub End If Else cn.Execute "update HopDong set HopDong.MaHD='" & txtMaHD.Text & "', HopDong.LoaiHD='" & TimLoaiHD(combo2) & "', HopDong.GhiChu='" & txtGhiChu.Text & "' where MaHD='" & rs.Fields("MaHD") & "'" cn.Execute "UPDATE CTHopDong SET MaHD= '" & txtMaHD.Text & "', NgayKy = '" & FormatDateTime(DTPStart, vbShortDate) & "', NgayKT = '" & FormatDateTime(DTPEnd, vbShortDate) & "' where MaHD='" & rs.Fields("MaHD") & "'" MsgBox "B¹n ®· söa thµnh c«ng!" AdoCTHopDong.Refresh edit = False Frame1.Enabled = False Frame2.Enabled = False trangThai resetForm Exit Sub End If cn.Execute "update HopDong set HopDong.MaHD='" & txtMaHD.Text & "', HopDong.LoaiHD='" & TimLoaiHD(combo2) & "', HopDong.GhiChu='" & txtGhiChu.Text & "' where MaHD='" & rs.Fields("MaHD") & "'" cn.Execute "UPDATE CTHopDong SET MaHD= '" & txtMaHD.Text & "', NgayKy = '" & FormatDateTime(DTPStart, vbShortDate) & "', NgayKT = '" & FormatDateTime(DTPEnd, vbShortDate) & "' where MaHD='" & rs.Fields("MaHD") & "'" MsgBox "B¹n ®· söa thµnh c«ng!" AdoCTHopDong.Refresh edit = False Frame1.Enabled = False Frame2.Enabled = False trangThai resetForm End If End If End Sub Private Function checkForm() As Boolean If Combo1.Text = "" Then MsgBox "B¹n ch­a nhËp nhan vien !" Combo1.SetFocus checkForm = False Else checkForm = True End If End Function Private Sub cmdSua_Click() If AdoCTHopDong.Recordset.EOF = False And AdoCTHopDong.Recordset.BOF = False Then edit = True Frame1.Enabled = False Frame2.Enabled = True trangThai combo2.SetFocus Else MsgBox "B¹n ch­a chän b¶n ghi ®Ó söa !" End If End Sub Private Sub setValue() If AdoCTHopDong.Recordset.EOF = False And AdoCTHopDong.Recordset.BOF = False Then If rs.State = 1 Then rs.Close End If rs.Open " SELECT * From HoSoNV WHERE maNV='" & AdoCTHopDong.Recordset.Fields("MaNV") & "'" If Not rs.EOF Then rs.MoveFirst Combo1.Text = rs.Fields("MaNV") & "-" & rs.Fields("TenNV") txtMaNV.Text = rs.Fields("MaNV") txtNguyenQuan.Text = rs.Fields("NguyenQuan") txtHoKhau.Text = rs.Fields("NoiDangKyHKTT") DTPicker1.Value = rs.Fields("NgaySinh") End If If rs.State = 1 Then rs.Close End If rs.Open " SELECT HopDong.MaHD, HopDong.LoaiHD, HopDong.GhiChu From HopDong Where HopDong.MaHD='" & AdoCTHopDong.Recordset.Fields("MaHD") & "'" If Not rs.EOF Then rs.MoveFirst combo2.Text = rs.Fields("LoaiHD") & "-" & rs.Fields("GhiChu") txtMaHD.Text = rs.Fields("MaHD") txtGhiChu.Text = rs.Fields("GhiChu") End If If rs.State = 1 Then rs.Close End If If Trim(AdoCTHopDong.Recordset.Fields("NgayKy")) = "" Then ChkStart.Value = 0 DTPStart.Value = FormatDateTime("1/1/1601", vbShortDate) Else ChkStart.Value = 1 DTPStart.Value = AdoCTHopDong.Recordset.Fields("NgayKy") End If If Trim(AdoCTHopDong.Recordset.Fields("NgayKT")) = "" Then ChkStart.Value = 0 DTPEnd.Value = FormatDateTime("1/1/1601", vbShortDate) Else ChkStart.Value = 1 DTPEnd.Value = AdoCTHopDong.Recordset.Fields("NgayKT") End If Else resetForm End If End Sub Private Sub dgrCTHopDong_RowColChange(LastRow As Variant, ByVal LastCol As Integer) If edit = False And add = False Then setValue End If End Sub Private Sub Form_Load() AdoCTHopDong.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\DataBase\NhanSu.mdb;Persist Security Info=False" AdoCTHopDong.RecordSource = "select * from CTHopDong" Set DgrCTHopDong.DataSource = AdoCTHopDong Frame1.Enabled = False Frame2.Enabled = False resetForm edit = False add = False Call NapLHD Call napTen End Sub Sub NapLHD() If rs.State = 1 Then rs.Close End If rs.Open "SELECT LoaiHopDong.LoaiHD, LoaiHopDong.TenLoaiHD FROM LoaiHopDong order by LoaiHopDong.LoaiHD;" combo2.Clear combo2.AddItem "" If Not rs.EOF Then rs.MoveFirst Do While Not rs.EOF combo2.AddItem rs.Fields("LoaiHD") & "-" & rs.Fields("TenLoaiHD") rs.MoveNext Loop End If combo2.Refresh End Sub Sub napTen() If rs.State = 1 Then rs.Close End If rs.Open "SELECT * From HoSoNV ORDER BY HoSoNV.MaNV;" Combo1.Clear Combo1.AddItem "" If Not rs.EOF Then rs.MoveFirst Do While Not rs.EOF Combo1.AddItem rs.Fields("MaNV") & "-" & rs.Fields("TenNV") rs.MoveNext Loop End If If rs.State = 1 Then rs.Close End If Combo1.Refresh End Sub Private Sub setValue1(txt As String) If rs.State = 1 Then rs.Close End If rs.Open "SELECT * From HoSoNV WHERE MaNV= '" & txt & "'", cn, adOpenStatic, adLockOptimistic If rs.RecordCount > 0 Then rs.MoveFirst DTPicker1.Value = rs.Fields("NgaySinh") txtNguyenQuan.Text = rs.Fields("NguyenQuan") txtHoKhau.Text = rs.Fields("NoiDangKyHKTT") Else DTPicker1.Value = Now txtNguyenQuan.Text = "" txtHoKhau.Text = "" End If If rs.State = 1 Then rs.Close End If End Sub Private Sub cmdXoa_Click() Dim TraLoi As Integer If txtMaHD.Text = "" Then MsgBox " Ban ch­a chän hîp ®ång cÇn xo¸", , "Th«ng b¸o" Exit Sub End If TraLoi = MsgBox("B¹n cã muèn xo¸ hîp ®ång nµy kh«ng?", vbYesNo + vbQuestion, "Xo¸ hîp ®ång") If TraLoi = vbNo Then Exit Sub End If ' KiÓm tra If rs.State = 1 Then rs.Close End If rs.Open " SELECT Count(*) From CTHopDong WHERE (CTHopDong.MaHD)='" & txtMaHD & "'" rs.MoveFirst If rs.Fields(0) 0 Then MsgBox " hîp ®ång nµy ®· bÞ rµng buéc, b¹n kh«ng thÓ xo¸!", vbOKOnly + vbInformation, "Th«ng b¸o" Exit Sub End If If rs.State = 1 Then rs.Close End If Dim sql As String sql = " delete * from HopDong where MaHD='" & txtMaHD & "'" cn.Execute sql MsgBox "§· xo¸", , " th«ng b¸o " AdoHD.Refresh End Sub Private Sub resetForm() txtMaNV.Text = "" txtMaHD.Text = "" txtNguyenQuan.Text = "" txtHoKhau.Text = "" txtGhiChu.Text = "" Combo1.Text = Combo1.List(0) combo2.Text = Combo1.List(0) ChkStart.Value = 0 Call chkStart_click ChkEnd.Value = 0 Call chkEnd_click If Combo1.Enabled = True Then Combo1.SetFocus End If End Sub Private Sub chkStart_click() If ChkStart.Value = 1 Then DTPStart.Value = FormatDateTime(Now, vbShortDate) Else DTPStart.Value = FormatDateTime("1/1/1601", vbShortDate) End If End Sub Private Sub chkEnd_click() If ChkEnd.Value = 1 Then DTPEnd.Value = FormatDateTime(Now, vbShortDate) Else DTPEnd.Value = FormatDateTime("1/1/1601", vbShortDate) End If End Sub Private Sub trangThai() If add = False Then If edit = False Then cmdMoi.Enabled = True cmdSua.Enabled = True cmdXoa.Enabled = True cmdLuu.Enabled = False cmdHuy.Enabled = False Else cmdMoi.Enabled = False cmdSua.Enabled = False cmdXoa.Enabled = False cmdLuu.Enabled = True cmdHuy.Enabled = True End If Else If edit = False Then cmdMoi.Enabled = False cmdSua.Enabled = False cmdXoa.Enabled = False cmdLuu.Enabled = True cmdHuy.Enabled = True Else add = False edit = False cmdMoi.Enabled = True cmdSua.Enabled = True cmdXoa.Enabled = True cmdLuu.Enabled = False cmdHuy.Enabled = False End If End If End Sub Code form Quản lý điều động nhân viên Private edit As Boolean Private add As Boolean Function chonMaCT() As String Dim ma As String If rs.State = 1 Then rs.Close End If rs.Open "Select * from DieuDong order by MaCongTac" If rs.EOF Then chonMaCT = "001" rs.Close Exit Function End If rs.MoveLast ma = rs.Fields("MaCongTac") rs.Close ma = Right(ma, 3) ma = CDbl(ma) ma = ma + 1 ma = CStr(ma) Select Case Len(ma) Case 1: ma = "00" & ma Case 2: ma = "0" & ma Case 3: ma = ma End Select chonMaCT = ma End Function Function TimChucVu(ByVal Chuoi As String) As String Dim a As Integer a = InStr(Chuoi, "-") TimChucVu = Left(Chuoi, a - 1) End Function Function TimNhanVien(ByVal Ten As String) As String Dim a As Integer a = InStr(Ten, "-") TimNhanVien = Left(Ten, a - 1) End Function Function TimPhongBan(ByVal PB As String) As String Dim a As Integer a = InStr(PB, "-") TimPhongBan = Left(PB, a - 1) End Function Private Sub cmdxuatbaocao_Click() If rs.State = 1 Then rs.Close End If Dim sql As String sql = "SELECT CTDieuDong.MaNV, HoSoNV.TenNV, CTDieuDong.MaCongTac, CTDieuDong.NgayBoNhiem, PhongBan.TenPB, ChucVu.TenCV FROM PhongBan INNER JOIN (HoSoNV INNER JOIN (ChucVu INNER JOIN CTDieuDong ON ChucVu.MaCV = CTDieuDong.MaCV) ON HoSoNV.MaNV = CTDieuDong.MaNV) ON PhongBan.MaPB = CTDieuDong.MaPB WHERE (((CTDieuDong.MaNV)='" & txtMaNV.Text & "') AND ((CTDieuDong.MaCongTac)='" & txtMaCT.Text & "'));" rptBCDieuDong.ReportFileName = App.Path & "\reports\BCQuyetDinhNS.rpt" rptBCDieuDong.SetTablePrivateData 0, 3, rs If rs.EOF = True Then MsgBox " Kh«ng t×m thÊy b¶n ghi nh­ ý b¹n" MsgBox " B¸o c¸o tr¾ng kh«ng ®­îc hiÓn thÞ" Else rptBCDieuDong.MarginLeft = 0 rptBCDieuDong.MarginRight = 0 rptBCDieuDong.MarginTop = 0 rptBCDieuDong.MarginBottom = 0 rptBCDieuDong.WindowState = crptMaximized rptBCDieuDong.PrintReport End If If rs.State = 1 Then rs.Close End If End Sub Private Sub Combo1_LostFocus() If Combo1.Text "" Then setValue1 (TimNhanVien(Combo1.Text)) If rs.State = 1 Then rs.Close End If rs.Open "select * from CTDieuDong where CTDieuDong.MaNV ='" & TimNhanVien(Combo1) & "'" If Not rs.EOF Then rs.MoveFirst If rs.Fields("NgayMienNhiem") = "1/1/1601" Then MsgBox "Nh©n viªn ch­a kÕt thóc quyÕt ®Þnh nh©n sù tr­íc, B¹n kh«ng thÓ ®iÒu ®éng nh©n viªn nµy", , "Thong bao" add = False Frame1.Enabled = False Frame2.Enabled = False trangThai resetForm Exit Sub End If End If If rs.State = 1 Then rs.Close End If txtMaNV = (TimNhanVien(Combo1.Text)) End If End Sub Private Sub cmdMoi_Click() Frame1.Enabled = True Frame2.Enabled = True add = True 'hien an resetForm trangThai Combo1.SetFocus txtMaCT.Text = chonMaCT End Sub Private Sub an() DTPicker1.Enabled = False txtNguyenQuan.Enabled = False txtHoKhau.Enabled = False txtMaCT.Enabled = False txtMaNV.Enabled = False End Sub Private Sub hien() combo2.Enabled = True Combo3.Enabled = True Combo1.Enabled = True txtGhiChu.Enabled = True End Sub Private Sub CmdThoat_Click() Unload Me End Sub Private Sub cmdHuy_Click() edit = False add = False Frame1.Enabled = False Frame2.Enabled = False 'an trangThai resetForm End Sub Private Sub CmdLuu_Click() Dim sql As String If add = True Then If checkForm = True Then If rs.State = 1 Then rs.Close End If rs.Open"SELECTCTHopDong.MaNV,CTHopDong.MaHD,HopDong.LoaiHD, CTHopDong.NgayKy,CTHopDong.NgayKT FROM HopDong INNER JOIN CTHopDong ON HopDong.MaHD = CTHopDong.MaHD Where (CTHopDong.MaNV) ='" & TimNhanVien(Combo1) & "' ORDER BY CTHopDong.NgayKy;" If Not rs.EOF Then rs.MoveFirst If rs.Fields("LoaiHD") = "A" Then MsgBox "Nhan vien bien che, b¹n cã thÓ ®iÒu ®éng", , "Thong bao" cn.Execute "Insert into DieuDong(MaCongTac,GhiChu) values('" & txtMaCT.Text & "','" & txtGhiChu.Text & "')" cn.Execute"InsertintoCTDieuDong(MaNV,MaCongTac,NgayBoNhiem,NgayMienNhiem,MaPB,MaCV) values('" & txtMaNV.Text & "','" & txtMaCT.Text & "','" & FormatDateTime(DTPStart, vbShortDate) & "','" & FormatDateTime(DTPEnd, vbShortDate) & "','" & TimPhongBan(combo2) & "','" & TimChucVu(Combo3) & "')" MsgBox "B¹n ®· thªm vµo danh môc thµnh c«ng!" adoQDNS.Refresh add = False Frame1.Enabled = False Frame2.Enabled = False trangThai resetForm Exit Sub End If If (Trim(rs.Fields("NgayKT")) >= Now And Trim(rs.Fields("NgayKT")) "1/1/1601") Then MsgBox " Nh©n viªn hÕt thêi h¹n hîp ®ång, b¹n kh«ng thÓ ®iÒu ®éng nh©n viªn nµy", , "thong bao" add = False Frame1.Enabled = False Frame2.Enabled = False trangThai resetForm Exit Sub Else cn.Execute"Insert into DieuDong(MaCongTac,GhiChu) values('" & txtMaCT.Text & "','" & txtGhiChu.Text & "')" cn.Execute"Insert into CTDieuDong (MaNV,MaCongTac,NgayBoNhiem,NgayMienNhiem,MaPB,MaCV) values('" & txtMaNV.Text & "','" & txtMaCT.Text & "','" & FormatDateTime(DTPStart, vbShortDate) & "','" & FormatDateTime(DTPEnd, vbShortDate) & "','" & TimPhongBan(combo2) & "','" & TimChucVu(Combo3) & "')" MsgBox "B¹n ®· thªm vµo danh môc thµnh c«ng!" adoQDNS.Refresh add = False Frame1.Enabled = False Frame2.Enabled = False trangThai resetForm Exit Sub End If End If MsgBox " Nh©n viªn ch­a ký kÕt hîp ®ång lao ®éng, b¹n ph¶i ký hîp ®ång lao ®éng tr­íc", , "Th«ng b¸o" add = False Frame1.Enabled = False Frame2.Enabled = False trangThai resetForm End If End If If edit = True Then If checkForm = True Then If rs.State = 1 Then rs.Close End If rs.Open "SELECT HoSoNV.MaNV, HoSoNV.TenNV, CTHopDong.MaHD, CTHopDong.NgayKy, CTHopDong.NgayKT, HopDong.LoaiHD, CTDieuDong.MaCongTac FROM HopDong INNER JOIN ((HoSoNV INNER JOIN CTDieuDong ON HoSoNV.MaNV = CTDieuDong.MaNV) INNER JOIN CTHopDong ON HoSoNV.MaNV = CTHopDong.MaNV) ON HopDong.MaHD = CTHopDong.MaHD Where (CTHopDong.MaNV) ='" & TimNhanVien(Combo1) & "' ORDER BY CTHopDong.NgayKy;" '" If rs.EOF Then rs.MoveFirst If rs.Fields("LoaiHD") = "A" Then MsgBox "Nh©n viªn nµy thuéc biªn chÕ, b¹n ®­îc phÐp ®iÒu ®éng", , "Th«ng b¸o" cn.Execute "update DieuDong set DieuDong.MaCongTac='" & txtMaCT.Text & "', DieuDong.GhiChu='" & txtGhiChu.Text & "' where MaCongTac='" & rs.Fields("MaCongTac") & "'" cn.Execute "UPDATE CTDieuDong SET MaCT= '" & txtMaCT.Text & "', NgayBoNhiem = '" & FormatDateTime(DTPStart, vbShortDate) & "', NgayMienNhiem = '" & FormatDateTime(DTPEnd, vbShortDate) & "', MaPB= '" & TimPhongBan(combo2) & "',MaCV= '" & TimChucVu(Combo3) & "' where MaHD='" & rs.Fields("MaHD") & "'" MsgBox "B¹n ®· söa thµnh c«ng!" adoQDNS.Refresh edit = False Frame1.Enabled = False Frame2.Enabled = False trangThai resetForm Exit Sub End If Else cn.Execute "update DieuDong set DieuDong.MaCongTac='" & txtMaCT.Text & "', DieuDong.GhiChu='" & txtGhiChu.Text & "' where MaCongTac='" & rs.Fields("MaCongTac") & "'" cn.Execute "UPDATE CTDieuDong SET NgayBoNhiem = '" & FormatDateTime(DTPStart, vbShortDate) & "', NgayMienNhiem = '" & FormatDateTime(DTPEnd, vbShortDate) & "', MaPB= '" & TimPhongBan(combo2) & "',MaCV= '" & TimChucVu(Combo3) & "' where MaCongTac='" & rs.Fields("MaCongTac") & "'" MsgBox "B¹n ®· söa thµnh c«ng!" adoQDNS.Refresh edit = False Frame1.Enabled = False Frame2.Enabled = False trangThai resetForm Exit Sub End If cn.Execute "update DieuDong set DieuDong.MaCongTac='" & txtMaCT.Text & "', DieuDong.GhiChu='" & txtGhiChu.Text & "' where MaCongTac='" & rs.Fields("MaCongTac") & "'" cn.Execute "UPDATE CTDieuDong SET NgayBoNhiem = '" & FormatDateTime(DTPStart, vbShortDate) & "', NgayMienNhiem = '" & FormatDateTime(DTPEnd, vbShortDate) & "', MaPB= '" & TimPhongBan(combo2) & "',MaCV= '" & TimChucVu(Combo3) & "' where MaCongTac='" & rs.Fields("MaCongTac") & "'" MsgBox "B¹n ®· söa thµnh c«ng!" adoQDNS.Refresh edit = False Frame1.Enabled = False Frame2.Enabled = False trangThai resetForm End If End If End Sub Private Function checkForm() As Boolean If Combo1.Text = "" Then MsgBox "B¹n ch­a nhËp nhan vien !" Combo1.SetFocus checkForm = False Else checkForm = True End If End Function Private Sub cmdSua_Click() If adoQDNS.Recordset.EOF = False And adoQDNS.Recordset.BOF = False Then edit = True Frame1.Enabled = False Frame2.Enabled = True trangThai combo2.SetFocus Else MsgBox "B¹n ch­a chän b¶n ghi ®Ó söa !" End If End Sub Private Sub setValue() If adoQDNS.Recordset.EOF = False And adoQDNS.Recordset.BOF = False Then If rs.State = 1 Then rs.Close End If rs.Open " SELECT * From HoSoNV WHERE maNV='" & adoQDNS.Recordset.Fields("MaNV") & "'" If Not rs.EOF Then rs.MoveFirst Combo1.Text = rs.Fields("MaNV") & "-" & rs.Fields("TenNV") txtMaNV.Text = rs.Fields("MaNV") txtNguyenQuan.Text = rs.Fields("NguyenQuan") txtHoKhau.Text = rs.Fields("NoiDangKyHKTT") DTPicker1.Value = rs.Fields("NgaySinh") End If If rs.State = 1 Then rs.Close End If rs.Open " SELECT * From PhongBan Where PhongBan.MaPB='" & adoQDNS.Recordset.Fields("MaPB") & "'" If Not rs.EOF Then rs.MoveFirst combo2.Text = rs.Fields("MaPB") & "-" & rs.Fields("TenPB") 'txtMaHD.Text = rs.Fields("MaHD") 'txtGhiChu.Text = rs.Fields("GhiChu") End If If rs.State = 1 Then rs.Close End If rs.Open " SELECT * From ChucVu Where ChucVu.MaCV='" & adoQDNS.Recordset.Fields("MaCV") & "'" If Not rs.EOF Then rs.MoveFirst Combo3.Text = rs.Fields("MaCV") & "-" & rs.Fields("TenCV") 'txtMaHD.Text = rs.Fields("MaHD") 'txtGhiChu.Text = rs.Fields("GhiChu") End If If rs.State = 1 Then rs.Close End If rs.Open " SELECT DieuDong.MaCongTac, DieuDong.GhiChu FROM DieuDong where DieuDong.MaCongTac = '" & adoQDNS.Recordset.Fields("MaCongTac") & "'" If Not rs.EOF Then rs.MoveFirst 'Combo3.Text = rs.Fields("MaCV") & "-" & rs.Fields("TenCV") 'txtMaHD.Text = rs.Fields("MaHD") txtMaCT.Text = rs.Fields("MaCongTac") txtGhiChu.Text = rs.Fields("GhiChu") End If If rs.State = 1 Then rs.Close End If If Trim(adoQDNS.Recordset.Fields("NgayBoNhiem")) = "" Then ChkStart.Value = 0 DTPStart.Value = FormatDateTime("1/1/1601", vbShortDate) Else ChkStart.Value = 1 DTPStart.Value = adoQDNS.Recordset.Fields("NgayBoNhiem") End If If Trim(adoQDNS.Recordset.Fields("NgayMienNhiem")) = "" Then ChkStart.Value = 0 DTPEnd.Value = FormatDateTime("1/1/1601", vbShortDate) Else ChkStart.Value = 1 DTPEnd.Value = adoQDNS.Recordset.Fields("NgayMienNhiem") End If Else resetForm End If End Sub Private Sub dgrQDNS_RowColChange(LastRow As Variant, ByVal LastCol As Integer) If edit = False And add = False Then setValue End If End Sub Private Sub Form_Load() adoQDNS.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\DataBase\NhanSu.mdb;Persist Security Info=False" adoQDNS.RecordSource = "select * from CTDieuDong" Set DgrQDNS.DataSource = adoQDNS Frame1.Enabled = False Frame2.Enabled = False resetForm edit = False add = False Call napTen Call napPhongBan Call napChucVu End Sub Sub napTen() If rs.State = 1 Then rs.Close End If rs.Open "SELECT * From HoSoNV ORDER BY HoSoNV.MaNV;" Combo1.Clear Combo1.AddItem "" If Not rs.EOF Then rs.MoveFirst Do While Not rs.EOF Combo1.AddItem rs.Fields("MaNV") & "-" & rs.Fields("TenNV") rs.MoveNext Loop End If If rs.State = 1 Then rs.Close End If Combo1.Refresh End Sub Sub napPhongBan() If rs.State = 1 Then rs.Close End If rs.Open "SELECT * From PhongBan ORDER BY PhongBan.MaPB;" combo2.Clear combo2.AddItem "" If Not rs.EOF Then rs.MoveFirst Do While Not rs.EOF combo2.AddItem rs.Fields("MaPB") & "-" & rs.Fields("TenPB") rs.MoveNext Loop End If If rs.State = 1 Then rs.Close End If combo2.Refresh End Sub Sub napChucVu() If rs.State = 1 Then rs.Close End If rs.Open "SELECT * From ChucVu ORDER BY ChucVu.MaCV;" Combo3.Clear Combo3.AddItem "" If Not rs.EOF Then rs.MoveFirst Do While Not rs.EOF Combo3.AddItem rs.Fields("MaCV") & "-" & rs.Fields("TenCV") rs.MoveNext Loop End If If rs.State = 1 Then rs.Close End If Combo3.Refresh End Sub Private Sub setValue1(txt As String) If rs.State = 1 Then rs.Close End If rs.Open "SELECT * From HoSoNV WHERE MaNV= '" & txt & "'", cn, adOpenStatic, adLockOptimistic If rs.RecordCount > 0 Then rs.MoveFirst DTPicker1.Value = rs.Fields("NgaySinh") txtNguyenQuan.Text = rs.Fields("NguyenQuan") txtHoKhau.Text = rs.Fields("NoiDangKyHKTT") Else DTPicker1.Value = Now txtNguyenQuan.Text = "" txtHoKhau.Text = "" End If If rs.State = 1 Then rs.Close End If End Sub Private Sub resetForm() txtMaNV.Text = "" txtMaCT.Text = "" txtNguyenQuan.Text = "" txtHoKhau.Text = "" txtGhiChu.Text = "" Combo1.Text = Combo1.List(0) combo2.Text = combo2.List(0) Combo3.Text = Combo3.List(0) ChkStart.Value = 0 Call chkStart_click ChkEnd.Value = 0 Call chkEnd_click If Combo1.Enabled = True Then Combo1.SetFocus End If End Sub Private Sub chkStart_click() If ChkStart.Value = 1 Then DTPStart.Value = FormatDateTime(Now, vbShortDate) Else DTPStart.Value = FormatDateTime("1/1/1601", vbShortDate) End If End Sub Private Sub chkEnd_click() If ChkEnd.Value = 1 Then DTPEnd.Value = FormatDateTime(Now, vbShortDate) Else DTPEnd.Value = FormatDateTime("1/1/1601", vbShortDate) End If End Sub Private Sub trangThai() If add = False Then If edit = False Then cmdMoi.Enabled = True cmdSua.Enabled = True cmdLuu.Enabled = False cmdHuy.Enabled = False cmdxuatbaocao = False Else cmdMoi.Enabled = False cmdSua.Enabled = False cmdLuu.Enabled = True cmdHuy.Enabled = True cmdxuatbaocao = False End If Else If edit = False Then cmdMoi.Enabled = False cmdSua.Enabled = False cmdLuu.Enabled = True cmdHuy.Enabled = True cmdxuatbaocao = False Else add = False edit = False cmdMoi.Enabled = True cmdSua.Enabled = True cmdLuu.Enabled = False cmdHuy.Enabled = False cmdxuatbaocao = False End If End If Code Tính lương nhân viên theo tháng Private edit As Boolean Private add As Boolean Private Sub cmdMoi_Click() If Trim(txtGTDanhGia) = "" Then If (DTPicker1.Day >= "19") And (DTPicker1.Day < "31") Then add = True hien trangThai DTPicker1.Value = Now Else MsgBox "B¹n kh«ng thÓ cËp nhËt phiÕu ®¸nh gi¸ vµo ngµy nµy", , "Th«ng b¸o" add = False an trangThai Exit Sub End If txtGTDanhGia.SetFocus Else MsgBox " Nh©n viªn nµy ®· ®­îc cËp nhËt ®¸nh gi¸ cña tr­ëng phßng", , "Th«ng b¸o" End If End Sub Private Sub an() dptNgayLap.Enabled = False txtNguoiLap.Enabled = False Frame2.Enabled = False Frame1.Enabled = False Frame4.Enabled = False End Sub Private Sub hien() Frame4.Enabled = True DTPicker1.Enabled = False End Sub Private Sub CmdThoat_Click() Unload Me End Sub Private Sub cmdHuy_Click() edit = False add = False an trangThai resetForm End Sub Private Sub CmdLuu_Click() If add = True Then If checkForm2 = True Then cn.Execute "insert into DanhGia (MaNV,ThangDG,GiaTri,TrangThai) values('" & adoNhanVien.Recordset.Fields("MaNV") & "','" & txtKTThang.Text & "','" & txtGTDanhGia.Text & "','" & Check1.Value & "')" adoNhanVien.Refresh add = False an trangThai End If End If If edit = True Then If checkForm2 = True Then cn.Execute "update DanhGia set DanhGia.GiaTri= '" & txtGTDanhGia.Text & "', DanhGia.TrangThai= '" & Check1.Value & "' where DanhGia.MaNV='" & adoNhanVien.Recordset.Fields("MaNV") & "'" adoNhanVien.Refresh edit = False an trangThai End If End If End Sub Private Sub cmdSua_Click() If adoNhanVien.Recordset.EOF = False And adoNhanVien.Recordset.BOF = False Then edit = True If checkForm1 = True Then hien trangThai Else MsgBox "Nh©n viªn nµy ®· ®­îc tÝnh l­¬ng råi,b¹n kh«ng thÓ tÝnh l­¬ng 2 lÇn", , "Th«ng b¸o" edit = False an trangThai Exit Sub End If Else MsgBox "B¹n ch­a chän b¶n ghi ®Ó söa !" End If End Sub Private Function checkForm2() If txtGTDanhGia.Text = "" Then MsgBox "B¹n ph¶i nhËp gi¸ trÞ ®¸nh gi¸ cña tr­ëng phßng", , "Th«ng b¸o" checkForm2 = False ElseIf IsNumeric(txtGTDanhGia.Text) = False Then MsgBox "B¹n phai nhap so", , "Th«ng b¸o" checkForm2 = False Else checkForm2 = True End If End Function Private Function checkForm() As Boolean If txtGTDanhGia.Text = "" Then MsgBox "Nh©n viªn nµy ch­a ®­îc tÝnh l­¬ng trong th¸ng" checkForm = True ElseIf Check1.Value = 0 Then MsgBox "Nh©n viªn nµy ch­a ®­îc tr¶ l­¬ng trong th¸ng" checkForm = True Else checkForm = False End If End Function Private Function checkForm1() As Boolean If Check1.Value = 0 Then MsgBox "Nh©n viªn nµy ch­a ®­îc tr¶ l­¬ng trong th¸ng, b¹n cã thÓ söa ®æi ®¸nh gi¸", , "Th«ng b¸o" checkForm1 = True Else checkForm1 = False End If End Function Private Sub resetForm() DTPicker1.Value = Now txtGTDanhGia.Text = "" Check1.Value = 0 If txtGTDanhGia.Enabled = True Then txtGTDanhGia.SetFocus End If End Sub Private Sub setValue() If adoNhanVien.Recordset.EOF = False And adoNhanVien.Recordset.BOF = False Then If rs.State = 1 Then rs.Close End If rs.Open"SELECT top1 CTBangLuong.MaNV,CTBangLuong.NgayLap, CTBangLuong.NguoiLap,CTBangLuong.HSLCoBan,CTBangLuong.HSLPhuCapCV, CTBangLuong.HSLPhuCapTN,CTBangLuong.MaLCB,LCB.MucLCB,CTBangLuong.MaHS,HeSo.TenHS,HeSo.MucLuongNS FROM LCB INNER JOIN (HeSo INNER JOIN CTBangLuong ON HeSo.MaHS=CTBangLuong.MaHS) ON LCB.MaLCB=CTBangLuong.MaLCB WHERE (((CTBangLuong.MaNV)='" & adoNhanVien.Recordset.Fields("MaNV") & "')) order by CTBangLuong.NgayLap DESC;" If Not rs.EOF Then rs.MoveFirst dptNgayLap.Value = rs.Fields("NgayLap") txtNguoiLap.Text = rs.Fields("NguoiLap") txtHSLCB.Text = rs.Fields("HSLCoBan") txtHSPCCV.Text = rs.Fields("HSLPhuCapCV") txtHSPCTN.Text = rs.Fields("HSLPhuCapTN") cboLCB.Text = rs.Fields("MucLCB") cboMaHS.Text = rs.Fields("MaHS") txtTenHS.Text = rs.Fields("TenHS") txtMucLNS.Text = rs.Fields("MucLuongNS") Else MsgBox " Nh©n viªn ph¶i cËp nhËt vµo b¶ng l­¬ng tr­íc", , "Th«ng b¸o" dptNgayLap.Value = Now txtNguoiLap.Text = "" txtHSLCB.Text = "" txtHSPCCV.Text = "" txtHSPCTN.Text = "" cboLCB.Text = "" cboMaHS.Text = "" txtTenHS.Text = "" txtMucLNS.Text = "" add = False edit = False trangThai End If If rs.State = 1 Then rs.Close End If rs.Open"SELECTtop1CTBangLuong.MaNV,CTBangLuong.NgayLap, CTBangLuong.NguoiLap,CTBangLuong.HSLCoBan,CTBangLuong.HSLPhuCapCV, CTBangLuong.HSLPhuCapTN,CTBangLuong.MaLCB,CTBangLuong.MaHS,HeSo.MucLuongNS,LCB.MucLCB,(CTBangLuong.HSLCoBan+CTBangLuong.HSLPhuCapCV+CTBangLuong.HSLPhuCapTN)*LCB.MucLCB+HeSo.MucLuongNS AS TongLuong FROM LCB INNER JOIN (HeSo INNER JOIN CTBangLuong ON HeSo.MaHS = CTBangLuong.MaHS) ON LCB.MaLCB = CTBangLuong.MaLCB WHERE (((CTBangLuong.MaNV)='" & adoNhanVien.Recordset.Fields("MaNV") & "'))order by CTBangLuong.NgayLap DESC;" txtluong.Text = rs.Fields("TongLuong") If rs.State = 1 Then rs.Close End If rs.Open"SelectDanhGia.MaNV,DanhGia.ThangDG,DanhGia.GiaTri,DanhGia.TrangThai from DanhGia WHERE (((DanhGia.MaNV)='" & adoNhanVien.Recordset.Fields("MaNV") & "' and DanhGia.ThangDG= '" & txtKTThang & "' )); " If Not rs.EOF Then rs.MoveFirst DTPicker1.Value = Now txtGTDanhGia.Text = rs.Fields("GiaTri") If rs.Fields("TrangThai") = 0 Then Check1.Value = 0 Else Check1.Value = 1 End If If IsNull(rs(2)) = False Then txtThucLinh.Text = TinhThanhTien Else txtThucLinh.Text = "" End If Else DTPicker1.Value = Now txtGTDanhGia.Text = "" Check1.Value = 0 End If If rs.State = 1 Then rs.Close End If Else resetForm End If End Sub Private Sub dgrNhanVien_RowColChange(LastRow As Variant, ByVal LastCol As Integer) If edit = False And add = False Then setValue End If End Sub Private Sub Form_Load() adoNhanVien.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\DataBase\NhanSu.mdb;Persist Security Info=False" Call napPhongBan Frame3.Enabled = False txtluong.Enabled = False txtThucLinh.Enabled = False edit = False add = False an trangThai End Sub Private Sub trangThai() If add = False Then If edit = False Then cmdMoi.Enabled = True cmdSua.Enabled = True cmdLuu.Enabled = False cmdHuy.Enabled = False Else cmdMoi.Enabled = False cmdSua.Enabled = False cmdLuu.Enabled = True cmdHuy.Enabled = True End If Else If edit = False Then cmdMoi.Enabled = False cmdSua.Enabled = False cmdLuu.Enabled = True cmdHuy.Enabled = True Else add = False edit = False cmdMoi.Enabled = True cmdSua.Enabled = True cmdLuu.Enabled = False cmdHuy.Enabled = False End If End If End Sub Function TimPhongBan(ByVal PB As String) As String Dim a As Integer a = InStr(PB, "-") TimPhongBan = Left(PB, a - 1) End Function Sub napPhongBan() If rs.State = 1 Then rs.Close End If rs.Open "SELECT * From PhongBan ORDER BY PhongBan.MaPB;" cboPhongBan.Clear cboPhongBan.AddItem "" If Not rs.EOF Then rs.MoveFirst Do While Not rs.EOF cboPhongBan.AddItem rs.Fields("MaPB") & "-" & rs.Fields("TenPB") rs.MoveNext Loop End If If rs.State = 1 Then rs.Close End If cboPhongBan.Refresh End Sub Private Sub setValue1() adoNhanVien.RecordSource = "SELECT PhongBan.MaPB, PhongBan.TenPB, CTDieuDong.MaNV,CTDieuDong.MaCV,CTDieuDong.NgayBoNhiem,CTDieuDong.NgayMienNhiem FROM PhongBan INNER JOIN CTDieuDong ON PhongBan.MaPB=CTDieuDong.MaPB WHERE CTDieuDong.NgayMienNhiem=DateValue('01/01/1601') and PhongBan.MaPB = '" & TimPhongBan(cboPhongBan) & "'" Set dgrNhanVien.DataSource = adoNhanVien Frame3.Enabled = True End Sub Private Sub cboPhongBan_LostFocus() If Trim(cboPhongBan.Text) "" Then setValue1 adoNhanVien.Refresh End If End Sub Private Function TinhThanhTien() As Double TinhThanhTien = txtHSLCB.Text * (cboLCB.Text) + txtHSPCCV.Text * (cboLCB.Text) + txtHSPCTN.Text * (cboLCB.Text) + txtMucLNS * txtGTDanhGia End Function Code báo cao hợp đồng tuyển dụng Option Explicit Private Sub cmdtaomoi_Click() Call Reset End Sub Private Sub CmdThoat_Click() If rs.State = 1 Then rs.Close End If cboNV.Text = "" cboLoaiHD.Text = "" Unload Me End Sub Private Sub HienThiHangTon1() Dim dieukienThoigian As String Dim dieukienTieuthuc As String Dim dieukienTimkiem As String Dim sql As String sql = "SELECT HoSoNV.MaNV, HoSoNV.HoDem+' '+HoSoNV.Ten AS TenNV, CTHopDong.MaHD,HopDong.LoaiHD,CTHopDong.NgayKy,IIf(CTHopDong.NgayKT=DateValue('1/1/1601'),'Ch­a KT HD',CTHopDong.NgayKT) AS NgayKT, HoSoNV.Ten FROM HopDong INNER JOIN (HoSoNV INNER JOIN CTHopDong ON HoSoNV.MaNV = CTHopDong.MaNV) ON HopDong.MaHD = CTHopDong.MaHD " If (optNH.Value) Then 'Tim then nhân viên' If optallnhom.Value = True Then sql = sql & " ORDER BY HoSoNV.Ten;" End If If (opt1nhom.Value) Then If (Trim(cboNV.Text)) = "" Then MsgBox "Bạn chưa chọn nhân viên !" cboNV.SetFocus Exit Sub End If sql = sql & " where ((HoSoNV.MaNV)= '" & TimNV(cboNV) & "') ORDER BY HoSoNV.Ten;" End If ElseIf (optHSX.Value) Then 'Tim theo hang san xuat' If optallhang.Value = True Then sql = sql & " ORDER BY HoSoNV.Ten; " End If If (optchonhang.Value) Then If (Trim(cboLoaiHD.Text)) = "" Then MsgBox "Bạn chưa chọn loại hợp đồng !" cboLoaiHD.SetFocus Exit Sub End If sql = sql & " where ((HopDong.LoaiHD)= '" & TimLoaiHD(cboLoaiHD) & "') ORDER BY HoSoNV.Ten;" End If End If If rs.State = 1 Then rs.Close End If rs.Open sql, cn If optNH.Value = True Then If optallnhom.Value = True Then rptBCDieuDong.ReportFileName = App.Path & "\reports\BCHopDongNV.rpt" ElseIf opt1nhom.Value = True Then rptBCDieuDong.ReportFileName = App.Path & "\reports\BCHopDongNV1.rpt" End If ElseIf optHSX.Value = True Then rptBCDieuDong.ReportFileName = App.Path & "\reports\BCHopDongNhom.rpt" End If rptBCDieuDong.SetTablePrivateData 0, 3, rs If rs.EOF = True Then MsgBox " Kh«ng t×m thÊy b¶n ghi nh­ ý b¹n" MsgBox " B¸o c¸o tr¾ng kh«ng ®­îc hiÓn thÞ" Else rptBCDieuDong.MarginLeft = 0 rptBCDieuDong.MarginRight = 0 rptBCDieuDong.MarginTop = 0 rptBCDieuDong.MarginBottom = 0 rptBCDieuDong.WindowState = crptMaximized rptBCDieuDong.PrintReport End If If rs.State = 1 Then rs.Close End If End Sub Private Sub HienThiHangTon2() Dim sql As String sql = "SELECT HoSoNV.MaNV, HoSoNV.HoDem+' '+HoSoNV.Ten AS TenNV, CTHopDong.MaHD,HopDong.LoaiHD,CTHopDong.NgayKy,IIf(CTHopDong.NgayKT=DateValue('1/1/1601'),'Ch­a KT HD',CTHopDong.NgayKT) AS NgayKT,HoSoNV.Ten FROM HopDong INNER JOIN (HoSoNV INNER JOIN CTHopDong ON HoSoNV.MaNV = CTHopDong.MaNV) ON HopDong.MaHD = CTHopDong.MaHD WHERE (CTHopDong.NgayKy) < DateValue('" & dtpNgayBaoCao.Month & "/" & dtpNgayBaoCao.Day & "/" & dtpNgayBaoCao.Year & "')" If (optNH.Value) Then 'Tim theo chuc vu' If optallnhom.Value = True Then sql = sql & " ORDER BY HoSoNV.Ten;" End If If (opt1nhom.Value) Then If (Trim(cboNV.Text)) = "" Then MsgBox "B¹n ch­a chän nh©n viªn !" cboNV.SetFocus Exit Sub End If sql = sql & " and ((HoSoNV.MaNV)= '" & TimNV(cboNV) & "') ORDER BY HoSoNV.Ten;" End If ElseIf (optHSX.Value) Then If optallhang.Value = True Then sql = sql & " ORDER BY HoSoNV.Ten; " End If 'Tim theo hang phong ban' If (optchonhang.Value) Then If (Trim(cboLoaiHD)) = "" Then MsgBox "B¹n ch­a chän lo¹i hîp ®ång !" cboLoaiHD.SetFocus Exit Sub End If sql = sql & " and ((HopDong.LoaiHD)= '" & TimLoaiHD(cboLoaiHD) & "') ORDER BY HoSoNV.Ten;" End If End If If rs.State = 1 Then rs.Close End If rs.Open sql, cn If optNH.Value = True Then If optallnhom.Value = True Then rptBCDieuDong.ReportFileName = App.Path & "\reports\BCHopDongNV.rpt" ElseIf opt1nhom.Value = True Then rptBCDieuDong.ReportFileName = App.Path & "\reports\BCHopDongNV1.rpt" End If ElseIf optHSX.Value = True Then rptBCDieuDong.ReportFileName = App.Path & "\reports\BCHopDongNhom.rpt" End If rptBCDieuDong.SetTablePrivateData 0, 3, rs If rs.EOF = True Then MsgBox " Kh«ng t×m thÊy b¶n ghi nh­ ý b¹n" MsgBox " B¸o c¸o tr¾ng kh«ng ®­îc hiÓn thÞ" Else rptBCDieuDong.MarginLeft = 0 rptBCDieuDong.MarginRight = 0 rptBCDieuDong.MarginTop = 0 rptBCDieuDong.MarginBottom = 0 rptBCDieuDong.WindowState = crptMaximized rptBCDieuDong.PrintReport End If If rs.State = 1 Then rs.Close End If End Sub Private Sub cmdxuatbaocao_Click() If (optall.Value) Then Call HienThiHangTon1 End If If (optThoiGian.Value) Then Call HienThiHangTon2 End If End Sub Private Sub Form_Load() Call napNV Call napLoaiHD Call Reset End Sub Private Sub Reset() optNH.Enabled = True optNH.Value = False optallnhom.Enabled = False optallnhom.Value = False opt1nhom.Enabled = False opt1nhom.Value = False cboNV.Enabled = False optHSX.Enabled = True optHSX.Value = False optallhang.Enabled = False optchonhang.Enabled = False optallhang.Value = False optchonhang.Value = False cboLoaiHD.Enabled = False optall.Enabled = True optall.Value = False optThoiGian.Enabled = True optThoiGian.Value = False End Sub Private Sub optAll_Click() optThoiGian.Enabled = False End Sub Private Sub optThoiGian_Click() optall.Enabled = False End Sub Private Sub disableTheoNhomHang() optNH.Enabled = False optallnhom.Enabled = False opt1nhom.Enabled = False cboNV.Enabled = False End Sub Private Sub disableTheoHangSanXuat() optHSX.Enabled = False optallhang.Enabled = False optchonhang.Enabled = False cboLoaiHD.Enabled = False End Sub Private Sub optNH_Click() optallnhom.Enabled = True opt1nhom.Enabled = True cboNV.Enabled = True optallnhom.SetFocus Call disableTheoHangSanXuat End Sub Private Sub opthsx_Click() optallhang.Enabled = True optchonhang.Enabled = True cboLoaiHD.Enabled = True optallhang.SetFocus Call disableTheoNhomHang End Sub Function TimLoaiHD(ByVal LoaiHD As String) As String Dim a As Integer a = InStr(LoaiHD, "-") TimLoaiHD = Left(LoaiHD, a - 1) End Function Sub napLoaiHD() If rs.State = 1 Then rs.Close End If rs.Open "SELECT * From HopDong ORDER BY HopDong.MaHD;" cboLoaiHD.Clear cboLoaiHD.AddItem "" If Not rs.EOF Then rs.MoveFirst Do While Not rs.EOF cboLoaiHD.AddItem rs.Fields("LoaiHD") & "-" & rs.Fields("GhiChu") rs.MoveNext Loop End If If rs.State = 1 Then rs.Close End If cboLoaiHD.Refresh End Sub Function TimNV(ByVal NV As String) As String Dim a As Integer a = InStr(NV, "-") TimNV = Left(NV, a - 1) End Function Sub napNV() If rs.State = 1 Then rs.Close End If rs.Open "SELECT HoSoNV.MaNV, HoSoNV.HoDem+' '+HoSoNV.Ten AS TenNV, HoSoNV.NgaySinh, HoSoNV.SoDT, HoSoNV.CoDong, HoSoNV.GioiTinh, HoSoNV.NguyenQuan, HoSoNV.NoiDangKyHKTT, HoSoNV.DangVien, HoSoNV.SoCMND, HoSoNV.NgayCap, HoSoNV.SoTK From HoSoNV ORDER BY HoSoNV.Ten;" cboNV.Clear cboNV.AddItem "" If Not rs.EOF Then rs.MoveFirst Do While Not rs.EOF cboNV.AddItem rs.Fields("MaNV") & "-" & rs.Fields("TenNV") rs.MoveNext Loop End If If rs.State = 1 Then rs.Close End If End Sub MỤC LỤC DANH MỤC HÌNH VẼ, BẢNG BIỂU ĐẠI HỌC KINH TẾ QUỐC DÂN KHOA TIN HỌC KINH TẾ CHUYÊN ĐỀ TỐT NGHIỆP Tên đề tài : Xây dựng hệ thống thông tin quản lý nhân sự tại Công ty cổ phần xây dựng Vinaconex 1 Họ và tên sinh viên : Vương Ngọc Quỳnh Chuyên ngành : Tin học kinh tế Lớp : Tin A Khóa : 47 Hệ : Chính quy Giảng viên hướng dẫn: TS.Trần Thị Song Minh HÀ NỘI, NĂM 2009 DANH MỤC HÌNH VẼ, BẢNG BIỂU Hình 1.1. Sơ đồ cơ cấu tổ chức của công ty 5 Bảng 2.1 Phân loại hệ thống thông tin theo lĩnh vực và các mức ra quyết định 15 Bảng 3.1. Mức lương năng suất lao động 36 Hình 3.1 Sơ đồ luồng thông tin quản lý hồ sơ nhân viên 37 Hình 3.2 Sơ đồ luồng thông tin quản lý lương 38 Hình 3.3 Sơ đồ BFD 39 Hình 3.4 Sơ đồ DFD mức ngữ cảnh 40 Hình 3.5 Sơ đồ DFD mức 0 41 Hình 3.6 Sơ đồ DFD mức 1 của tiến trình quản lý hồ sơ nhân viên 42 Hình 3.7 Sơ đồ DFD mức 1 của tiến trình quản lý lương 43 Hình 3.8 Sơ đồ DFD mức 1 của tiến trình thống kê báo cáo 44 Hình 3.9. Mô hình quan hệ thực thể ERD 46 Hình 3.10. Mối quan hệ giữa các bảng 51 Hình 3.11 Quá trình chuẩn hoá dữ liệu 58 Bảng 3.2 Bảng hồ sơ nhân viên 59 Bảng 3.3 Bảng chức vụ 59 Bảng 3.4 Bảng bằng cấp nhân viên 60 Bảng 3.5 Bảng hợp đồng 60 Bảng 3.6 Bảng lương cơ bản 60 Bảng 3.7 Bảng phòng ban 61 Bảng 3.8 Bảng chi tiết quyết định nhân sự 61 Bảng 3.9 Bảng chi tiết bằng cấp nhân viên 62 Bảng 3.10 Bảng phiếu lương 62 Bảng 3.11 Bảng chi tiết hợp đồng 63 Bảng 3.12 Bảng mức lương năng suất 63 Bảng 3.13 Bảng quyết định nhân sự 63 Bảng 3.14 Bảng đánh giá 64 Hình 3.12. Sơ đồ cấu trúc dữ liệu 64 Hình 3.13. Sơ đồ khối thuật đăng nhập vào chương trình 65 Hình 3.14. Sơ đồ khối thuật toán tính lương nhân viên 66 Hình 3.15. Sơ đồ khối thuật toán lập quyết định điều động nhân sự 67 Hình 3.16. Sơ đồ khối thuật toán lập hợp đồng cho nhân viên 68 Hình 3.17. Sơ đồ khối thuật toán Lập báo cáo 69 Hình 3.18. Giao diện form đăng nhập 70 Hình 3.19.Giao diện hệ thống 71 Hình 3.20. Giao diện giới thiệu phần mềm 72 Hình 3.21. Giao diện đổi mật khẩu 73 Hình 3.22. Form danh mục chức vụ 74 Hình 3.23. Form danh mục phòng ban 75 Hình 3.24. Form danh mục lương cơ bản 76 Hình 3.25. Danh mục lương năng suất 77 Hình 3.26. Form cập nhật chi tiết chuyên môn 78 Hình 3.27. Form cập nhật chuyên môn 79 Hình 3.28. Form quản lý hợp đồng 80 Hình 3.29. Form quản lý điều động nội bộ 81 Hình 3.30. Form quản lý hệ số lương 83 Hình 3.31. Form quản lý lương theo tháng 84 Hình 3.32. Form tra cứu nhân viên theo bằng cấp 85 Hình 3.33. Form tra cứu quyết định nhân sự 86 Hình 3.34. Form tra cứu hợp đồng lao động 87 Hình 3.35. Form báo cáo lương 88 Hình 3.36. Bảng lương nhân viên theo phòng ban 89 Hình 3.37. Bảng lương chi tiết từng nhân viên 90 Hình 3.38. Form báo cáo hợp đồng tuyển dụng 91 Hình 3.39. Báo cáo hợp đồng theo loại hợp đồng 92 Hình 3.40. Báo cáo hợp đồng cho nhân viên 93 Hình 3.41. Form báo cáo trình độ nhân viên 94 Hình 3.42. Báo cáo thống kê trình độ nhân viên 95 Hình 3.43. Form báo cáo điều động nhân sự 96 Hình 3.44. Báo cáo điều động nhân viên theo nhóm phòng ban 97 Hình 3.45. Báo cáo điều động nhân viên theo nhóm chức vụ 98 Hình 3.46. Mẫu quyết định điều động nhân viên 99

Các file đính kèm theo tài liệu này:

  • docXây dựng hệ thống thông tin quản lý nhân sự tại công ty cổ phần xây dựng Vinaconex 1.DOC
Luận văn liên quan