Đồ án Tin học hoá việc quản lý nhân sự của Chi cục Dự trữ Sóc Sơn

Mục đích của đồ án này là tin học hoá việc quản lý nhân sự của Chi cục Dự trữ Sóc Sơn, thực hiện tự động hoá một số công việc thủ công. Khi đưa chương trình vào ứng dụng phần thao tác của người sử dụng chỉ đơn giản là số liệu các thông tin gốc của đối tượng cần quản lý. Hệ thống tự động hoá xử lý theo các yêu cầu, hệ thống con cho phép in các báo cáo, các danh sách thống kê, đảm bảo cung cấp thông tin chính xác, kịp thời và trung thực phục vụ cho công tác quản lý và chỉ đạo. Là một đề tài nghiên cứu có ứng dụng thực tế, kinh nghiệm nghiên cứu chuyên môn chưa nhiều, hơn nữa trong một thời gian ngắn vừa nghiên cứu, vừa viết chương trình, vì vậy chương trình không tránh khỏi những mặt hạn chế và thiếu xót. Xin kính mong được sự chỉ bảo và góp ý giúp tôi hoàn thành đồ án này. Một lần nữa tôi xin chân thành cảm ơn thày giáo Hồ Văn Hương, cảm ơn các thầy, các cô đã hướng dẫn trực tiếp tôi hoàn thành đồ án này, tôi cũng xin chân thành cảm ơn thầy giáo phản biện và các thầy cô, bạn bè đồng nghiệp đã giúp đỡ tôi hoàn thành bản đồ án này./.

doc94 trang | Chia sẻ: oanh_nt | Lượt xem: 1207 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Đồ án Tin học hoá việc quản lý nhân sự của Chi cục Dự trữ Sóc Sơn, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
quan hệ ( Relation Database Management System ) dùng trong văn phòng ( nằm trong bộ Microsft Professional Word, Exccel, Power Point ) do đó Microsft đặc biệt chú trọng đến người sử dụng cuối (end user) hơn là nhà phát triển. Điều này làm cho công cụ hỗ trợ thiết kế ( giao diện thiết kế, các Wizard cho phép tự động hoá các quá trình thủ công trong quá trình thiết kế form, table, query) của Access tỏ ra rất mạnh, hơn hẳn Visual Basis. Chẳng hạn nhiều lập trình viên kinh nghiệm khi viết các câu lệnh SQL trong Visual Basis thường dùng kềm bộ thiết kế Query trong Access để sinh ra trong câu lệnh SQL một cách dễ dàng. Access Basic có những khác biệt nhất định so với Visual Basis. Chỉ đến phiên bản Access 7.0. Visual Basis về sau và Access mới dùng chung ngôn ngữ lập trình mà Microsft gọi là VBA - Visual Basis for Application. Ta thấy Access và Visual Basis khác nhau ở cách chế tạo ra các ứng dụng so với các công cụ thiết kế khác nhau nhưng thành phần xử lí CSDL thì có nhiều điểm tương đồng vì cùng sử dụng Jet Engine. Visual Basis cho phép biện dịch các ứng dụng thành tập tin EXE, trong khi Access ta phỉ phân phối luôn cả tài nguyên thiết kế. Khái ngườiệm CSDL trong Access bao gồm cả phần dữ liệu (các bảng) và phần ứng dụng ( query, form, table, report, macro, module ), trong khi đối với các hệ khác, CSDL chỉ bao gồm phần dữ liệu. Chiến lược bảo mật tài nguyên thiết kế phải được đặt lên hàn đầu khi chọn Access làm công cụ phát triển ứng dụng. Hệ thống giao diện hỗ trợ thiết kế ( đặc biệt trong Access ) cũng khá rắc rối khiến người chưa có kinh nghiệm hay lẫn lộn giữa các thức dành cho người dùng cuối và những thứ dành cho người lập trình, thứ chỉ dùng cho thiết kế và thứ có thể mang vào ứng dụng. Chương III Thiết kế Cơ sở dữ liệu I. Thông tin vào ra của hệ thống Qua tìm hiểu lưu trữ HSCB của phòng tổ chức trong cơ quan và căn cứ vào các thông tin lưu trữ trong sổ lý lịch HSCB ta tạm chia hai loại thông tin như sau: T.tin vào HT T.tin ra khỏi hệ thống HT Quản lý cán bộ 1.1. Thông tin vào hệ thống - Thông tin về hồ sơ cá nhân (Các CB mới được chuyển đến hay mới được biên chế), nó bao gồm tất cả các trường được lưu trữ trong sổ hồ sơ lý lịch cán bộ, khi nhập HS thì cán bộ quản lý phải nhập toàn bộ các thông tin liên quan đến cán bộ trong sổ lý lịch cán bộ vào máy tính. - Thông tin thay đổi về cá nhân hàng năm như: lên lương, lên chức vụ, Đảng, Đoàn...hàng năm CBTC yêu cầu những công chức trong cơ quan khai thêm phần bổ sung lý lịch cá nhân, đây là việc làm bắt buộc mà các CB về quản lý nhân sự phải cập nhật những thông tin thay đổi đó vào trong sổ lý lịch CB. - Thông tin về học tập, bằng cấp: hàng năm cơ quan thường cử CB đi học ở các trường ĐH và các lớp bồi dưỡng nghiệp vụ của ngành, số CB đã hoàn thành nhiệm vụ về tiếp tục công tác trong cơ quan. - Thông tin khen thưởng kỷ luật: đây là những thông tin có thể xảy ra hàng năm đối với CBCC vì vậy nó cũng được coi là thông tin vào của hệ thống. - Thông tin về cán bộ thuyên chuyển công tác: Cán bộ trong các đơn vị có thể chuyển qua các phòng ban khác nhưng vẫn nằm trong cơ quan, để xử lý việc thay đổi này bằng cách ta chỉ thay đổi mã phòng hay mã ban còn các thông tin khác vẫn giữ nguyên. - Thông tin về cán bộ bị chết đột xuất, hay thôi việc đây là phần thay đổi mà không dự đoán trước được, việc này thường ít xảy ra nhưng chúng ta cũng cần phải tính đến. 1.2. Thông tin ra khỏi hệ thống Trích yếu lý lịch Các bảng thống kê theo yêu cầu của lãnh đạo Tìm kiếm thông tin về một cá nhân nào đó Thống kê theo dõi nhân sự toàn cơ quan Thống kê về tình hình học vấn Danh sách đề bạt bổ nhiệm Thống kê chức vụ Thống kê trình độ chính trị Thống kê trình độ ngoại ngữ Thống kê phòng, ban Danh sách CB chuyển công tác Dach sách CB lên lương Danh sách CB nghỉ hưu Danh sách CB đi học Thống kê khen thưởng kỷ luật. II. Thiết kế cơ sở dữ liệu cho hệ thống quản lý cán bộ Sự thay đổi thông tin vào đều ảnh hưởng tới thông tin ra khỏi hệ thống. Mọi sự thay đổi tạo nên luồng dữ liệu mang tính tự nhiên chịu sự ảnh hưởng của hệ thống DL và như vậy để xây dựng được chương trình ta có thể chia thông tin thành những tệp chính gồm: các tập tin dùng để lưu giữ thông tin và tập tin thống kê định kỳ, tìm kiếm theo yêu cầu nào đó của người quản lý. Trong hệ thống quản lý thông tin vấn đề quan tâm là thông tin của hệ thống được lấy ở đâu, việc khai thác DL như thế nào? người sử dụng khai thác chương trình như: nhập, sửa, thêm bớt DL do vậy khi thiết kế File CSDL, chúng ta cần quan tâm đến DL nào cần lưu trữ, kiểu DL được lưu trữ, số bộ nhớ giành cho nó để đỡ lãng phí bộ nhớ. Việc tách thông tin làm cho CSDL gọn nhẹ hơn, đồng thời việc tổ chức lưu trữ thông tin khoa học hơn dẫn đến công việc tìm kiếm thông tin sẽ nhanh hơn, làm giảm bộ nhớ và tần số truy cập. Hơn nữa lưu trữ khoa học sẽ đỡ thông tin chồng chéo nhau, thông tin không được chuẩn hoá dẫn đến dư thừa thông tin và tìm kiếm sẽ khó khăn và thiếu chính xác... Từ những nhận định trên ta thiết kế các trường DL tương ứng với các kiểu DL như sau: - Mã nhân viên: Tên trường là MANV có kiểu DL là Text độ rộng là 10. - Tên phòng ban: Tên trường là: TENPHONG có kiểu DL là Text độ rộng là 20. - Chức vụ: Tên trường là CV có kiểu DL là Text độ rộng là 20. - Họ và tên: Tên trường là HOTEN có kiểu DL là Text, độ rộng là 30. - Ngày sinh: Tên trường là NSINH có kiểu DL là Date có độ rộng là 10. - Nơi sinh (nơi mình sinh ra): Tên trường là NOISINH có kiểu DL là Text có độ rộng là 30. - Quê quán (nơi sinh của bố mẹ đẻ): Để phù hợp dùng kiểu DL Text có độ rộng là 30, tên trường là QUEQUAN - Giới tính: Tên trường là GIOITINH, có kiểu DL là Text có độ rộng là 3. - Nơi thường trú: Tên trường là NOITT, có kiểu DL là Text có độ rộng là 30. - Địa chỉ liên lạc: Tên trường là DIACHI, có kiểu DL là Text độ rộng là 30. - Điện thoại: Tên trường là ĐT, có kiểu DL là Text độ rộng là 10. - Dân tộc: Tên trường là DANTOC, có kiểu DL là Text độ rộng 10 (kinh, tày nùng...). - Trình độ học vấn: Tên trường là TRINHDOHV, có kiểu DL là Text, độ rộng 30 (12/12, C/môn KT, Kỹ sư, giáo sư...). - Tôn giáo: Tên trường là TONGIAO, có kiểu DL là Text, độ rộng 15 (phật giáo, hồi giáo, cao đài, hoà hảo...). - Số chứng minh nhân dân: Tên trường SOCMND, có kiểu DL là Text, độ rộng 13. - Ngày cấp: Tên trường là NGAYCAP, có kiểu DL Date, độ rộng 10. - Nơi cấp: Tên trường là NOICAP, có kiểu DL là Text, độ rộng 30 (CA tỉnh hoặc TP trực thuộc TW....) - Thành phần gia đình: Bần nông, CB, tiểu tư sản...có kiểu DL Text độ rộng 20, tên trường là THANHPHANGĐ. - Trình độ chính trị: Sơ cấp, trung cao cấp...tên trường là TRINHDOCT, có kiểu DL Text độ rộng 15. - Trình độ ngoại ngữ: ĐH Anh ngữ, Pháp ngữ, Trung ngữ, có kiểu DL là Text, độ rộng là 43, tên trường là TRINHĐÔNN - Ngày vào ngành: Tên trường là NGAYVAON có kiểu DL là Date, động rộng 10. - Ngày vào ĐCSVN: Tên trường là NGAYVAOĐ kiểu DL là Date, có độ rộng là 40. - Chức vụ: Tên trường là CHUCVU, có kiểu DL Text, độ rộng là 20 (chức vụ đảng, đoàn thể, như: giám đốc, trưởng phòng, bí thư...). - Bậc lương (hệ số lương, mức bậc lương): Có kiểu DL NUMBER, độ rộng là 8, trường DL là BACLUONG - Khen thưởng (năm khen thưởng, nội dung khen thưởng, cấp quyết định): Tên trường là KHENTHUONG, kiểu DL là Text, độ rộng 30. - Kỷ luật (tháng, năm, hình thức kỷ luật, cấp quyết định): Tên trường KYLUAT, kiểu dữ liệu là Text, độ rộng. 1.TĐNN. MDB (trình độ ngoại ngữ). Do số ngoại ngữ hạn chế nên ta dùng độ rộng của trường này là 2 và nó có thể lưu trữ tối đa là 100 tên ngoại ngữ khác nhau, tên trường ngoại ngữ như: tiếng Anh, tiếng Pháp, tiếng Đức, tiếng Trung Quốc... và trường này có độ rộng là 15. STT Tên trường Kiểu DL Độ rộng Null Giải thích 1 MaNN Text 2 No Mã ngoại ngữ 2 TĐNN Text 15 No Tên ngoại ngữ 3 GC Text 255 yes Ghi chú 2.TĐHV.MDB (Trình độ học vấn) Tương tự như File TĐNN.MDB, ta cũng thiết kế File CSDL này có hai trường. STT Tên trường Kiểu DL Độ rộng Giải thích 1 MaHV Text 2 Mã học vấn 2 TĐHV Text 15 Bằng cấp mã CB đạt được 3 GC Text 255 Ghi chú 3.CHUCVU.MDB (Chức vụ). File này chứa danh sách các chức vụ tương đương của CB, gồm có giá trị như: Giám đốc, phó giám đốc, trưởng, phó phòng, cán bộ, có 2 trường là: Mã và tên chức vụ kiểu DL là Text, độ rộng là 20. STT Tên trường Kiểu DL Độ rộng Giải thích 1 MaCV Text 2 Mã chức vụ 2 CHUCVU Text 20 Chức vụ 3 GC Text 255 Ghi chú 4.PHONG.MDB (Phòng). File này gồm danh sách các phòng trong cơ quan gồm mã nhân viên và tên phòng, có 2 trường, mã có độ rộng là 2 phòng có độ rộng là 40, có kiểu DL là Text. STT Tên trường Kiểu DL Độ rộng Giải thích 1 MaP Text 2 Mã phòng 2 PHONG Text 40 Tên phòng 3 GC Text 255 Ghi chú 5.DT.MDB (Dân tộc) Tương tự như File TĐNN.MDB, ta cũng thiết kế File CSDL này có hai trường. STT Tên trường Kiểu DL Độ rộng Giải thích 1 MaDT Text 2 Mã dân tộc 2 TDT Text 15 Tên dân tộc 3 GC Text 255 Ghi chú 6.CT.MDB (Chính trị) Tương tự như File TĐNN.MDB, ta cũng thiết kế File CSDL này có hai trường. STT Tên trường Kiểu DL Độ rộng Giải thích 1 MaCT Text 2 Mã chính trị 2 TCT Text 30 Tên chính trị 3 GC Text 255 Ghi chú 7.HOSOCB.MDB ( Hồ sơ cán bộ). File HOSOCB (Hồ sơ cán bộ) là File chính của hệ thống quản lý CB, trong hồ sơ chúng ta lưu trữ tất cả các thông tin liên quan đến CB. Do đó nó khá lớn và cồng kềnh nên ta phải lược bớt sao cho thông tinh lưu trữ vừa đủ nhưng không thiếu và các thông tin phải được chuẩn hoá hay được thay thế bằng các mã để cho DL càng gọn nhẹ. STT Tên trường Kiểu DL Độ rộng Giải thích 1 Manv Text 10 Mã nhân viên 2 TenPB Text 20 Tên phòng ban 3 MaCV Text 2 Mã Chức vụ 4 Hoten Text 30 Họ tên 5 Ngaysinh Date 10 Ngày sinh 6 Noisinh Text 30 NơI sinh 7 Quequan Text 30 Quê quán 8 Gioitinh Text 3 Giới tính 9 Noithuongtru Text 30 NơI thường trú 10 Điachi Text 30 Địa chỉ liên lạc 11 Tel Text 10 Điện thoại 12 MaDT Text 2 Mã Dân tộc 13 MaTDHV Text 2 Mã Trình độ học vấn 14 Tongiao Text 15 Tôn giáo 15 So CMND Text 15 Số chứng minh nhân dân 16 Ngaycap Date 10 Ngày cấp 17 Noicap Text 30 Nơi cấp 18 Thanhphangđ Text 10 Thành phần gia đình 19 Trinhdoct Text 15 Trình độ chính trị 20 MaNN Text 2 Mã Trình độ ngoại ngữ 21 Ngayvn Date 10 Ngày vào ngành 22 Ngayvao ĐCSVN Date 10 Ngày vào Đảng CSVN 23 Chuvu Text 20 Chức vụ hiện tại 24 Bacluong Text 8 Bậc lương 25 Khenthuong Text 30 Khen thưởng 26 Kyluat Text 20 Kỷ luật 27 Namnghihưu Text 10 Năm nghỉ hưu 28 MaCT Text 2 Mã Chính trị 3.2. Biểu đồ thực thể liên kết 3.4. Thiết kế modul chương trình Chương trình quản lý cán bộ bao gồm nhiều chức năng riêng biệt như đã được mưu tả trong biểu đồ chức năng của hệ thống, như vậy khi thiết kế chương trình quản lý cán bộ ta thiết kế từng modul cho mỗi chức năng tương ứng, như vậy khi chương trình lỗi sẽ dễ phát hiện và sửa chữa, mỗi modul chính ta lại chia tiếp thành modul con, cứ như vậy cho đến khi không chia được nữa thì dừng. Chương 4 phân tích và thiết kế Hệ thống I. Mục đích Phân tích là công việc đầu tiên không thể thiếu được trong quá trình xây dựng hệ quản trị trên máy tính. Không thể đưa tin học hóa trong vấn đề quản lý mà không qua giai đoạn phân tích. Hiệu quả đem lại của hệ thống phụ thuộc vào độ nông sâu của kết quả phân tích ban đầu Mục đích của nó là xác định xem bộ phận nào của hệ thống nên xử lý bằng máy tính, và bộ phận nào đó con người thực hiện. Tổng quan về các công tác quản lý ở trên, ta thấy rằng chương trình quản lý nhân sự khi chưa sử dụng máy tính, các công cụ như thêm nhân viên, thêm nhân viên… đều do con người làm, nên việc nhập thêm, lưu trữ và tìm kiếm rất khó khăn vì số lượng Tính toán rất lớn. Sơ đồ chức năng của hệ thống quản lý cán bộ Quản lý CB Cập nhật Tra cứu Báo cáo Hồ sơ Họ và tên Danh sách CB phòng Danh mục phòng ban Chức vụ Danh sách CB lên lương Danh mục chức vụ Tra cứu theo yêu cầu Danh sách CB nghỉ hưu In CB chuyển CT Danh mục trình độ Thay đổi nhân sự Thoát II. Sơ đồ luồng dữ liệu Để xác định được yêu cầu của công việc thì người ta phải phân tích sơ đồ luồng dữ liệu, sơ đồ luồng dữ liệu nêu ra một mô hình về hệ thống thông tin chuyển vận qua các quá trình hoặc các chức năng khác nhau. Điều quan trọng là phải có sẵn các thông tin vào và biết được yêu cầu của thông tin ra trước khi cho thực hiện một quá trình. Các thành phần của biểu đồ luồng dữ liệu ã Các chức năng xử lý: Là các chức năng dùng để chỉ ra một chức năng hay một quá trình. Chức năng quan trọng trong mô hình luồng dữ liệu là biến đổi thông tin từ đầu vào theo một cách nào đó. ã Tác nhân ngoài: Là một người, một nhóm người ở bên ngoài lĩnh vực nghiên cứu của hệ thống, nhưng có trao đổi thông tin về hệ thống. ã Tác nhân trong: Là một chức năng hoặc một quá trình ở bên trong hệ thống được mô tả ở trang khác của biểu đồ, nhưng có trao đổi thông tin với hệ thống. ã Luồng dữ liệu: Là luồng thông tin vào ra của một quá trình hoặc một chức năng xử lý, mũi tên chỉ ra hướng của luồng thông tin. ã Kho dữ liệu: Là luồng thông tin lưu trữ trong một khoảng thời gian để một hoặc nhiều chức năng truy nhập vào, chúng có thể là các tệp dữ liệu được lưu trong máy tính. 1. Biểu đồ luồng DL mức ngữ cảnh Báo cáo Ban tổ chức CB TT thay đổi NS Hệ thống quản lý cán bộ T.tin tra cứu T.tin về CB Cán bộ Biểu đồ mức ngữ cảnh cho chúng ta thấy cái nhìn khái quát của hệ thống. Đây là giai đoạn hoạch định ban đầu của quá trình phân tích được dùng để vạch phạm vi hoạt động của hệ thống, nó bao gồm các thành phần như sau: - Tác nhân ngoài hệ thống. - Hệ thống * Tác nhân ngoài "Cán bộ" của hệ thống nhân sự, cung cấp cho ta những thông tin trong hồ sơ cán bộ, thông tin này được cập nhật vào hệ thống lưu trữ và xử lý DL. * Tác nhân ngoài "Phòng tổ chức" đưa vào những thông tin yêu cầu đối với hệ thống như: in danh sách những cán bộ, thống kê những cán bộ có độ tuổi < 40, trả lại những thống kê, báo cáo theo yêu cầu của cấp trên. 2. Biểu đồ luồng DL chức năng của hệ thống mức đỉnh. Phòng tổ chức Cán bộ 1. Nhập dữ liệu 3. Báo cáo Hồ sơ Thay đổi nhân sự Báo cáo Hồ sơ Dữ liệu đã xử lý 2. Tra cứu yêu cầu TT sau tra cứu Cho ta thấy được các chức năng chính của hệ thống, gồm phần DL tra cứu, thống kê theo định kỳ. Chức năng nhập DL làm nhiệm vụ nhập các thông tin về CB vào File HOSOCB, có kiểm tra DL trước khi nhập và nhập các danh mục phụ trợ như: danh sách phòng, đơn vị, chức vụ..., chức năng này rất quan trọng vì DL có chính xác hay không, cách lưu trữ thông tin có khoa học hay không đều ảnh hưởng rất lớn đến quá trình khai thác thông tin sau này. Chức năng tra cứu: Dùng để phụ cho việc tra cứu tìm kiếm do lãnh đạo yêu cầu. Thông tin phục vụ cho việc tra cứu gồm các File CSDL mà hệ thống đang lưu trữ mà các yêu cầu mà người sử dụng đưa vào hệ thống.Chức năng nhập danh sách báo cáo thông thường được chia làm 2 loại: loại thứ nhất là chế độ thống kê thường xuyên có thể bất cứ lúc nào mà lãnh đạo yêu cầu, loại này thông tin thường phong phú vì có sự kết hợp giữa thông tin lưu trữ và thông tin yêu cầu. Loại thứ hai là thống kê theo định kỳ, tháng, quý, năm nó mang tính ổn định. Biểu đồ dòng dữ liệu mức 1 chức năng nhập Ban tổ chức cán bộ Hồ sơ cán bộ 1.1 Nhập, sửa dữ liệu 1.2 danh mục chức vụ Danh mục Hồ sơ cán bộ T.tin về cán bộ Yêu cầu sửa đổi Dữ liệu Dữ liệu Dữ liệu 1.3 danh mục PB Dữ liệu T.tin T.tin 1.4 danh mục TĐ Dữ liệu T.tin Sơ đồ dòng dữ liệu mức 2 chức năng tra cứu Ban tổ chức CB Tra cứu theo tên Tra cứu theo yêu cầu Hồ sơ Trả lời Tra cứu theo CV Trả lời Yêu cầu Trả lời Dữ liệu Dữ liệu Yêu cầu Yêu cầu Biểu đồ dòng dữ liệu mức 3 chức năng báo cáo DS cán bộ lên lương DS cán bộ đơn vị TK theo chức vụ In CB chuyển c.tác DS cán bộ lên lương DS cán bộ của đơn vị T. kê theo chức vụ In CB chuyển đổi Phòng tổ chức cán bộ DL đã qua xử lý DL đã qua xử lý DL đã qua xử lý Hồ sơ cán bộ Yêu cầu Yêu cầu DL đã qua xử lý Hồ sơ cán bộ Hồ sơ cán bộ Chương V Các form chính và code chương trình I . Một số form chính của chương trình 1. Form thông tin về cá nhân Hình 2: Giao diện form-thông tin từng cá nhân 2. Form thông tin về trình độ học vấn Hình 3: Giao diện form-thống kê về trình độ học vấn 3. Form thông tin về cán bộ đi học Hình 4: Giao diện form-danh sách cán bộ đi học 4 Form danh sách cán bộ lên lương Hình 5: Giao diện form-danh sách cán bộ lên lương 5. Form danh sách cán bộ nghỉ hưu Hình 6: Giao diện form-danh sách cán bộ nghỉ hưu II. Một số Code của chương trình Option Explicit Dim nut As Integer Private Sub CboChucvu_GotFocus() CboChucvu.SelStart = 0 CboChucvu.SelLength = Len(CboChucvu.Text) End Sub Private Sub CboHovaten_Click(Area As Integer) AdoDihoc.Recordset.MoveFirst Do Until AdoDihoc.Recordset.EOF If AdoDihoc.Recordset.Fields(0).Value = CboHovaten.BoundText Then CboMahoso.Text = AdoDihoc.Recordset.Fields(0).Value TxtNgaysinh.Text = AdoDihoc.Recordset.Fields(2).Value CboPhong.Text = AdoDihoc.Recordset.Fields("Phòng").Value CboChucvu.Text = AdoDihoc.Recordset.Fields("Chức vụ").Value TxtKhenthuong.Text = AdoDihoc.Recordset.Fields("Khen thưởng").Value TxtKyluat.Text = AdoDihoc.Recordset.Fields("Kỷ luật").Value Exit Do End If AdoDihoc.Recordset.MoveNext Loop End Sub Private Sub CboHovaten_GotFocus() CboHovaten.SelStart = 0 CboHovaten.SelLength = Len(CboHovaten.Text) End Sub Private Sub CboMahoso_Click(Area As Integer) AdoDihoc.Recordset.MoveFirst Do Until AdoDihoc.Recordset.EOF If AdoDihoc.Recordset.Fields(0).Value = CboMahoso.BoundText Then CboHovaten.Text = AdoDihoc.Recordset.Fields(1).Value TxtNgaysinh.Text = AdoDihoc.Recordset.Fields(2).Value CboPhong.Text = AdoDihoc.Recordset.Fields("Phòng").Value CboChucvu.Text = AdoDihoc.Recordset.Fields("Chức vụ").Value TxtKhenthuong.Text = AdoDihoc.Recordset.Fields("Khen thưởng").Value TxtKyluat.Text = AdoDihoc.Recordset.Fields("Kỷ luật").Value Exit Do End If AdoDihoc.Recordset.MoveNext Loop End Sub Private Sub CboMahoso_GotFocus() CboMahoso.SelStart = 0 CboMahoso.SelLength = Len(CboMahoso.Text) End Sub Private Sub CboPhong_GotFocus() CboPhong.SelStart = 0 CboPhong.SelLength = Len(CboPhong.Text) End Sub Private Sub CmdCapnhat_Click() Dim db As Database Dim rs As Recordset Set db = OpenDatabase(App.Path & "\nhansu.mdb") Set rs = db.OpenRecordset("Dihoc") Select Case nut Case 1: On Error GoTo loi1: If (IsNull(TxtNganhhoc.Text)) Or (IsNull(TxtTruonghoc.Text)) Then MsgBox "Dữ liệu bạn đưa vào bị sai", vbOKOnly + vbCritical, "Kiểm tra" CboMahoso.SetFocus Exit Sub End If rs.AddNew rs.Fields(0).Value = UCase(CboMahoso.Text) rs.Fields(1).Value = CboHovaten.Text rs.Fields(2).Value = TxtNgaysinh.Text rs.Fields(3).Value = CboPhong.Text rs.Fields(4).Value = CboChucvu.Text rs.Fields(5).Value = TxtKhenthuong.Text rs.Fields(6).Value = TxtKyluat.Text rs.Fields(7).Value = TxtNganhhoc.Text rs.Fields(8).Value = TxtTruonghoc.Text rs.Fields(9).Value = TxtNgayth.Text rs.Update Data1.Refresh Data1.Recordset.MoveLast Call Capnhat Exit Sub loi1: MsgBox "Dữ liệu bạn đưa vào bị sai", vbOKOnly + vbCritical, "Kiểm tra" CboMahoso.SetFocus Case 2: On Error GoTo loi2: rs.MoveFirst Do Until rs.EOF If rs.Fields(0).Value = CboMahoso.Text Then rs.Delete End If rs.MoveNext Loop Data1.Refresh Call Capnhat Exit Sub loi2: MsgBox "Dữ liệu bạn đưa vào bị sai", vbOKOnly + vbCritical, "Kiểm tra" CboMahoso.SetFocus Case Else: MsgBox "Bạn chưa chọn trạng thái hoạt động của hệ thống", vbOKOnly + vbInformation, "Thông báo" End Select End Sub Private Sub CmdDuyet_Click(Index As Integer) Select Case Index Case 0 Data1.Recordset.MoveFirst Case 1 Data1.Recordset.MovePrevious If Data1.Recordset.BOF Then Data1.Recordset.MoveFirst End If Case 2 Data1.Recordset.MoveNext If Data1.Recordset.EOF Then Data1.Recordset.MoveLast End If Case 3 Data1.Recordset.MoveLast End Select Call Capnhat End Sub Private Sub CmdIn_Click() RptDihoc.Label7.Caption = RptDihoc.Label7.Caption & Mid(TxtNgayth.Text, 7, 4) RptDihoc.Show End Sub Private Sub CmdThem_Click() CboMahoso.Enabled = True CboHovaten.Enabled = True TxtNgaysinh.Enabled = True CboPhong.Enabled = True CboChucvu.Enabled = True TxtKhenthuong.Enabled = True TxtKyluat.Enabled = True TxtNganhhoc.Enabled = True TxtTruonghoc.Enabled = True MDIHethong.StatusBar1.Panels(2).Text = "Thêm dữ liệu" CboMahoso.SetFocus nut = 1 End Sub Private Sub CmdThoat_Click() Unload Me End Sub Private Sub CmdThoat_LostFocus() CboMahoso.SetFocus End Sub Private Sub CmdXoa_Click() CboMahoso.Enabled = True CboHovaten.Enabled = False TxtNgaysinh.Enabled = False CboPhong.Enabled = False CboChucvu.Enabled = False TxtKhenthuong.Enabled = False TxtKyluat.Enabled = False TxtNganhhoc.Enabled = False TxtTruonghoc.Enabled = False MDIHethong.StatusBar1.Panels(2).Text = "Xoá dữ liệu" CboMahoso.SetFocus nut = 2 End Sub Private Sub Form_Load() Dim s As String AdoDihoc.ConnectionString = "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data Source=" & App.Path & "\nhansu.mdb" AdoDihoc.RecordSource = "Select * from QHoso" AdoDihoc.Refresh AdoPhong.ConnectionString = "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data Source=" & App.Path & "\nhansu.mdb" AdoPhong.RecordSource = "Select * from QPhong" AdoPhong.Refresh AdoChucvu.ConnectionString = "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data Source=" & App.Path & "\nhansu.mdb" AdoChucvu.RecordSource = "Select * from QChucvu" AdoChucvu.Refresh Data1.DatabaseName = App.Path & "\nhansu.mdb" Data1.RecordSource = "QDihoc" Data1.Refresh Call Capnhat MDIHethong.StatusBar1.Panels(2).Text = "Danh sách cán bộ đi học" On Error GoTo loi CboMahoso.Text = Data1.Recordset.Fields(0).Value CboHovaten.Text = Data1.Recordset.Fields(1).Value If Not IsNull(Data1.Recordset.Fields(2).Value) Then TxtNgaysinh.Text = Data1.Recordset.Fields(2).Value End If CboPhong.Text = Data1.Recordset.Fields(3).Value CboChucvu.Text = Data1.Recordset.Fields(4).Value TxtKhenthuong.Text = Data1.Recordset.Fields(5).Value TxtKyluat.Text = Data1.Recordset.Fields(6).Value TxtNganhhoc.Text = Data1.Recordset.Fields(7).Value TxtTruonghoc.Text = Data1.Recordset.Fields(8).Value If Not IsNull(Data1.Recordset.Fields(9).Value) Then TxtNgayth.Text = Data1.Recordset.Fields(9).Value End If loi: End Sub Private Sub Form_Unload(Cancel As Integer) MDIHethong.StatusBar1.Panels(2).Text = "" End Sub Private Sub GrdHoso_Click() On Error GoTo loi CboMahoso.Text = Data1.Recordset.Fields(0).Value CboHovaten.Text = Data1.Recordset.Fields(1).Value If Not IsNull(Data1.Recordset.Fields(2).Value) Then TxtNgaysinh.Value = Data1.Recordset.Fields(2).Value End If CboPhong.Text = Data1.Recordset.Fields(3).Value CboChucvu.Text = Data1.Recordset.Fields(4).Value TxtKhenthuong.Text = Data1.Recordset.Fields(5).Value TxtKyluat.Text = Data1.Recordset.Fields(6).Value TxtNganhhoc.Text = Data1.Recordset.Fields(7).Value TxtTruonghoc.Text = Data1.Recordset.Fields(8).Value If Not IsNull(Data1.Recordset.Fields(9).Value) Then TxtNgayth.Value = Data1.Recordset.Fields(9).Value End If loi: End Sub Private Sub TxtKhenthuong_GotFocus() TxtKhenthuong.SelStart = 0 TxtKhenthuong.SelLength = Len(TxtKhenthuong.Text) End Sub Private Sub TxtKyluat_GotFocus() TxtKyluat.SelStart = 0 TxtKyluat.SelLength = Len(TxtKyluat.Text) End Sub Private Sub TxtNganhhoc_GotFocus() TxtNganhhoc.SelStart = 0 TxtNganhhoc.SelLength = Len(TxtNganhhoc.Text) End Sub Private Sub TxtNgaysinh_GotFocus() TxtNgaysinh.SelStart = 0 TxtNgaysinh.SelLength = Len(TxtNgaysinh.Text) End Sub Private Sub TxtNgayth_GotFocus() TxtNgayth.SelStart = 0 TxtNgayth.SelLength = Len(TxtNgayth.Text) End Sub Private Sub TxtTruonghoc_GotFocus() TxtTruonghoc.SelStart = 0 TxtTruonghoc.SelLength = Len(TxtTruonghoc.Text) End Sub Sub Capnhat() On Error GoTo loi CboMahoso.Text = Data1.Recordset.Fields(0).Value CboHovaten.Text = Data1.Recordset.Fields(1).Value If Not IsNull(Data1.Recordset.Fields(2).Value) Then TxtNgaysinh.Value = Data1.Recordset.Fields(2).Value End If CboPhong.Text = Data1.Recordset.Fields(3).Value CboChucvu.Text = Data1.Recordset.Fields(4).Value TxtKhenthuong.Text = Data1.Recordset.Fields(5).Value TxtKyluat.Text = Data1.Recordset.Fields(6).Value TxtNganhhoc.Text = Data1.Recordset.Fields(7).Value TxtTruonghoc.Text = Data1.Recordset.Fields(8).Value If Not IsNull(Data1.Recordset.Fields(9).Value) Then TxtNgayth.Value = Data1.Recordset.Fields(9).Value End If loi: End Sub Option Explicit Dim nut As Integer Private Sub CmdCapnhat_Click() Dim db As Database Dim rs As Recordset Set db = OpenDatabase(App.Path & "\nhansu.mdb") Set rs = db.OpenRecordset("donvi") Select Case nut Case 1: On Error GoTo loi1 rs.AddNew rs.Fields(0).Value = UCase(Txtmadonvi.Text) rs.Fields(1).Value = Txtdonvi.Text rs.Fields(2).Value = Txtghichu.Text rs.Update Data1.Refresh Data1.Recordset.MoveLast Call Capnhat Exit Sub loi1: MsgBox "Dữa liệu bạn nhập vào bị sai", vbOKOnly + vbCritical, "Kiểm tra" Case 2: On Error GoTo loi2 rs.MoveFirst Do Until rs.EOF If rs.Fields(0).Value = Txtmadonvi.Text Then rs.Delete End If rs.MoveNext Loop Data1.Refresh Call Capnhat Exit Sub loi2: MsgBox "Dữa liệu bạn nhập vào bị sai", vbOKOnly + vbCritical, "Kiểm tra" Case 3: On Error GoTo loi3 rs.MoveFirst Do Until rs.EOF If rs.Fields(0).Value = Txtmadonvi.Text Then rs.Edit rs.Fields(1).Value = Txtdonvi.Text rs.Fields(2).Value = Txtghichu.Text rs.Update End If rs.MoveNext Loop Data1.Refresh Call Capnhat Exit Sub loi3: MsgBox "Dữa liệu bạn nhập vào bị sai", vbOKOnly + vbCritical, "Kiểm tra" Case Else MsgBox "Bạn chưa chọn trạng thái hoạt động", vbOKOnly + vbCritical, "Kiểm tra" End Select End Sub Private Sub CmdDuyet_Click(Index As Integer) Select Case Index Case 0 Data1.Recordset.MoveFirst Case 1 Data1.Recordset.MovePrevious If Data1.Recordset.BOF Then Data1.Recordset.MoveFirst End If Case 2 Data1.Recordset.MoveNext If Data1.Recordset.EOF Then Data1.Recordset.MoveLast End If Case 3 Data1.Recordset.MoveLast End Select Call Capnhat End Sub Private Sub CmdSua_Click() Txtmadonvi.Enabled = True Txtdonvi.Enabled = True Txtghichu.Enabled = True nut = 3 MDIHethong.StatusBar1.Panels(2).Text = "Sửa dữ liệu" End Sub Private Sub CmdThem_Click() Txtmadonvi.Enabled = True Txtdonvi.Enabled = True Txtghichu.Enabled = True nut = 1 MDIHethong.StatusBar1.Panels(2).Text = "Thêm dữ liệu" End Sub Private Sub CmdThoat_Click() Unload Me End Sub Private Sub CmdThoat_LostFocus() Txtmadonvi.SetFocus End Sub Private Sub CmdXoa_Click() Txtmadonvi.Enabled = True Txtdonvi.Enabled = False Txtghichu.Enabled = False nut = 2 MDIHethong.StatusBar1.Panels(2).Text = "Xoá dữ liệu" End Sub Private Sub DBGrid1_Click() On Error GoTo loi Txtmadonvi.Text = Data1.Recordset.Fields(0).Value Txtdonvi.Text = Data1.Recordset.Fields(1).Value Txtghichu.Text = Data1.Recordset.Fields(2).Value loi: End Sub Private Sub Form_Load() Data1.DatabaseName = App.Path & "\nhansu.mdb" Data1.RecordSource = "qdonvi" Data1.Refresh Call Capnhat DBGrid1.Columns(1).Width = 2000 DBGrid1.Columns(2).Width = 3000 End Sub Private Sub Form_Unload(Cancel As Integer) MDIHethong.StatusBar1.Panels(2).Text = "" End Sub Private Sub Txtdonvi_GotFocus() Txtdonvi.SelStart = 0 Txtdonvi.SelLength = Len(Txtdonvi.Text) End Sub Private Sub Txtghichu_GotFocus() Txtghichu.SelStart = 0 Txtghichu.SelLength = Len(Txtghichu.Text) End Sub Private Sub Txtmadonvi_GotFocus() Txtmadonvi.SelStart = 0 Txtmadonvi.SelLength = Len(Txtmadonvi.Text) End Sub Sub Capnhat() On Error GoTo loi Txtmadonvi.Text = Data1.Recordset.Fields(0).Value Txtdonvi.Text = Data1.Recordset.Fields(1).Value Txtghichu.Text = Data1.Recordset.Fields(2).Value loi: End Sub Option Explicit Dim nut As Integer Private Sub CboChinhtri_GotFocus() CboChinhtri.SelStart = 0 CboChinhtri.SelLength = Len(CboChinhtri.Text) End Sub Private Sub CboChucvu_GotFocus() CboChucvu.SelStart = 0 CboChucvu.SelLength = Len(CboChucvu.Text) End Sub Private Sub CboChucvuht_GotFocus() CboChucvuht.SelStart = 0 CboChucvuht.SelLength = Len(CboChucvuht.Text) End Sub Private Sub CboDantoc_GotFocus() CboDantoc.SelStart = 0 CboDantoc.SelLength = Len(CboDantoc.Text) End Sub 'Private Sub CboDonvi_Click(Area As Integer) 'CboDonvi.SelStart = 0 'CboDonvi.SelLength = Len(CboDonvi.Text) 'End Sub Private Sub CboHocvan_GotFocus() CboHocvan.SelStart = 0 CboHocvan.SelLength = Len(CboHocvan.Text) End Sub Private Sub CboNgoaingu_GotFocus() CboNgoaingu.SelStart = 0 CboNgoaingu.SelLength = Len(CboNgoaingu.Text) End Sub Private Sub CboPhong_GotFocus() CboPhong.SelStart = 0 CboPhong.SelLength = Len(CboPhong.Text) End Sub Private Sub CmdCapnhat_Click() Dim db As Database Dim rs As Recordset Set db = OpenDatabase(App.Path & "\nhansu.mdb") Set rs = db.OpenRecordset("hoso") Select Case nut Case 1: On Error GoTo loi1 rs.AddNew rs.Fields(0).Value = UCase(Txtmahoso.Text) rs.Fields(1).Value = Txthovaten.Text rs.Fields(2).Value = TxtNgaysinh.Text rs.Fields(3).Value = ChkGioitinh.Value rs.Fields(4).Value = Txtnoisinh.Text rs.Fields(5).Value = TxtQue.Text rs.Fields(6).Value = TxtNoithuongtru.Text rs.Fields(7).Value = TxtDiachi.Text rs.Fields(8).Value = TxtSDT.Text rs.Fields(9).Value = CboDantoc.BoundText rs.Fields(10).Value = CboHocvan.BoundText rs.Fields(11).Value = TxtTongiao.Text rs.Fields(12).Value = TxtSoCMND.Text rs.Fields(13).Value = TxtNgaycap.Text rs.Fields(14).Value = TxtNoicap.Text rs.Fields(15).Value = TxtThanhphangd.Text rs.Fields(16).Value = CboChinhtri.BoundText rs.Fields(17).Value = CboNgoaingu.BoundText rs.Fields(18).Value = TxtNgayvaonganh.Text If TxtNgayvaodang.Text "__/__/____" Then rs.Fields(19).Value = TxtNgayvaodang.Text End If rs.Fields(20).Value = CboPhong.BoundText rs.Fields(21).Value = CboChucvu.BoundText rs.Fields(22).Value = CboChucvuht.BoundText rs.Fields(23).Value = TxtBacluong.Text rs.Fields(24).Value = TxtKhenthuong.Text rs.Fields(25).Value = TxtKyluat.Text 'rs.Fields(26).Value = CboDonvi.BoundText rs.Fields(26).Value = Val(TxtNamnghihuu.Text) rs.Update Data1.Refresh Data1.Recordset.MoveLast Call Capnhat Exit Sub loi1: MsgBox "Dữa liệu bạn nhập vào bị sai", vbOKOnly + vbCritical, "Kiểm tra" Case 2: On Error GoTo loi2 rs.MoveFirst Do Until rs.EOF If rs.Fields(0).Value = Txtmahoso.Text Then rs.Delete End If rs.MoveNext Loop Data1.Refresh Call Capnhat Exit Sub loi2: MsgBox "Dữa liệu bạn nhập vào bị sai", vbOKOnly + vbCritical, "Kiểm tra" Case 3: On Error GoTo loi3 rs.MoveFirst Do Until rs.EOF If rs.Fields(0).Value = Txtmahoso.Text Then rs.Edit rs.Fields(1).Value = Txthovaten.Text rs.Fields(2).Value = TxtNgaysinh.Text rs.Fields(3).Value = ChkGioitinh.Value rs.Fields(4).Value = Txtnoisinh.Text rs.Fields(5).Value = TxtQue.Text rs.Fields(6).Value = TxtNoithuongtru.Text rs.Fields(7).Value = TxtDiachi.Text rs.Fields(8).Value = TxtSDT.Text rs.Fields(9).Value = CboDantoc.BoundText rs.Fields(10).Value = CboHocvan.BoundText rs.Fields(11).Value = TxtTongiao.Text rs.Fields(12).Value = TxtSoCMND.Text rs.Fields(13).Value = TxtNgaycap.Text rs.Fields(14).Value = TxtNoicap.Text rs.Fields(15).Value = TxtThanhphangd.Text rs.Fields(16).Value = CboChinhtri.BoundText rs.Fields(17).Value = CboNgoaingu.BoundText rs.Fields(18).Value = TxtNgayvaonganh.Text If TxtNgayvaodang.Text "__/__/____" Then rs.Fields(19).Value = TxtNgayvaodang.Text End If rs.Fields(20).Value = CboPhong.BoundText rs.Fields(21).Value = CboChucvu.BoundText rs.Fields(22).Value = CboChucvuht.BoundText rs.Fields(23).Value = TxtBacluong.Text rs.Fields(24).Value = TxtKhenthuong.Text rs.Fields(25).Value = TxtKyluat.Text 'rs.Fields(26).Value = CboDonvi.BoundText rs.Fields(26).Value = Val(TxtNamnghihuu.Text) rs.Update End If rs.MoveNext Loop Data1.Refresh Call Capnhat Exit Sub loi3: MsgBox "Dữa liệu bạn nhập vào bị sai", vbOKOnly + vbCritical, "Kiểm tra" Case Else MsgBox "Bạn chưa chọn trạng thái hoạt động", vbOKOnly + vbCritical, "Kiểm tra" End Select End Sub Private Sub CmdDuyet_Click(Index As Integer) Select Case Index Case 0 Data1.Recordset.MoveFirst Case 1 Data1.Recordset.MovePrevious If Data1.Recordset.BOF Then Data1.Recordset.MoveFirst End If Case 2 Data1.Recordset.MoveNext If Data1.Recordset.EOF Then Data1.Recordset.MoveLast End If Case 3 Data1.Recordset.MoveLast End Select Call Capnhat End Sub Private Sub CmdIn_Click() 'rpt Dim db As Database Dim rs As Recordset Dim rs1 As Recordset Dim s As String s = "Delete * from Hoso1" Set db = OpenDatabase(App.Path & "\nhansu.mdb") Set rs = db.OpenRecordset("QHoso") Set rs1 = db.OpenRecordset("Hoso1") db.Execute s rs.MoveFirst Do Until rs.EOF rs1.AddNew rs1.Fields(0).Value = rs.Fields("Họ và tên").Value rs1.Fields(1).Value = Year(rs.Fields("Ngày sinh").Value) rs1.Fields(2).Value = rs.Fields("Quê").Value rs1.Fields(3).Value = rs.Fields("Nơi thường trú").Value If rs.Fields("Giới tính").Value = 1 Then rs1.Fields(4).Value = "Nam" Else rs1.Fields(4).Value = "Nữ" End If rs1.Fields(5).Value = rs.Fields("Chức vụ").Value rs1.Fields(6).Value = rs.Fields("Học vấn").Value rs1.Update rs.MoveNext Loop RptNhansu.Show End Sub Private Sub CmdSua_Click() Call Capnhat Txtmahoso.Enabled = True Txthovaten.Enabled = True TxtNgaysinh.Enabled = True ChkGioitinh.Enabled = True Txtnoisinh.Enabled = True TxtQue.Enabled = True TxtNoithuongtru.Enabled = True TxtDiachi.Enabled = True TxtSDT.Enabled = True CboDantoc.Enabled = True CboHocvan.Enabled = True TxtTongiao.Enabled = True TxtSoCMND.Enabled = True TxtNgaycap.Enabled = True TxtNoicap.Enabled = True TxtThanhphangd.Enabled = True CboChinhtri.Enabled = True CboNgoaingu.Enabled = True TxtNgayvaonganh.Enabled = True TxtNgayvaodang.Enabled = True CboPhong.Enabled = True CboChucvu.Enabled = True CboChucvuht.Enabled = True TxtBacluong.Enabled = True TxtKhenthuong.Enabled = True TxtKyluat.Enabled = True 'CboDonvi.Enabled = True TxtNamnghihuu.Enabled = True nut = 3 MDIHethong.StatusBar1.Panels(2).Text = "Sửa dữ liệu" Txtmahoso.SetFocus End Sub Private Sub CmdThem_Click() Call Capnhat Txtmahoso.Enabled = True Txthovaten.Enabled = True TxtNgaysinh.Enabled = True ChkGioitinh.Enabled = True Txtnoisinh.Enabled = True TxtQue.Enabled = True TxtNoithuongtru.Enabled = True TxtDiachi.Enabled = True TxtSDT.Enabled = True CboDantoc.Enabled = True CboHocvan.Enabled = True TxtTongiao.Enabled = True TxtSoCMND.Enabled = True TxtNgaycap.Enabled = True TxtNoicap.Enabled = True TxtThanhphangd.Enabled = True CboChinhtri.Enabled = True CboNgoaingu.Enabled = True TxtNgayvaonganh.Enabled = True TxtNgayvaodang.Enabled = True CboPhong.Enabled = True CboChucvu.Enabled = True CboChucvuht.Enabled = True TxtBacluong.Enabled = True TxtKhenthuong.Enabled = True TxtKyluat.Enabled = True 'CboDonvi.Enabled = True TxtNamnghihuu.Enabled = True nut = 1 MDIHethong.StatusBar1.Panels(2).Text = "Thêm dữ liệu" Txtmahoso.SetFocus End Sub Private Sub CmdThoat_Click() Unload Me End Sub Private Sub CmdThoat_LostFocus() Txtmahoso.SetFocus End Sub Private Sub CmdXoa_Click() 'Call Capnhat Txtmahoso.Enabled = True Txthovaten.Enabled = False TxtNgaysinh.Enabled = False ChkGioitinh.Enabled = False Txtnoisinh.Enabled = False TxtQue.Enabled = False TxtNoithuongtru.Enabled = False TxtDiachi.Enabled = False TxtSDT.Enabled = False CboDantoc.Enabled = False CboHocvan.Enabled = False TxtTongiao.Enabled = False TxtSoCMND.Enabled = False TxtNgaycap.Enabled = False TxtNoicap.Enabled = False TxtThanhphangd.Enabled = False CboChinhtri.Enabled = False CboNgoaingu.Enabled = False TxtNgayvaonganh.Enabled = False TxtNgayvaodang.Enabled = False CboPhong.Enabled = False CboChucvu.Enabled = False CboChucvuht.Enabled = False TxtBacluong.Enabled = False TxtKhenthuong.Enabled = False TxtKyluat.Enabled = False 'CboDonvi.Enabled = False TxtNamnghihuu.Enabled = False nut = 2 MDIHethong.StatusBar1.Panels(2).Text = "Xoá dữ liệu" Txtmahoso.SetFocus End Sub Private Sub DBGrid1_Click() On Error GoTo loi Txtmahoso.Text = Data1.Recordset.Fields(0).Value Txthovaten.Text = Data1.Recordset.Fields(1).Value TxtNgaysinh.Value = Data1.Recordset.Fields(2).Value ChkGioitinh.Value = Data1.Recordset.Fields(3).Value Txtnoisinh.Text = Data1.Recordset.Fields(4).Value TxtQue.Text = Data1.Recordset.Fields(5).Value TxtNoithuongtru.Text = Data1.Recordset.Fields(6).Value TxtDiachi.Text = Data1.Recordset.Fields(7).Value TxtSDT.Text = Data1.Recordset.Fields(8).Value CboDantoc.Text = Data1.Recordset.Fields(9).Value CboHocvan.Text = Data1.Recordset.Fields(10).Value TxtTongiao.Text = Data1.Recordset.Fields(11).Value TxtSoCMND.Text = Data1.Recordset.Fields(12).Value TxtNgaycap.Value = Data1.Recordset.Fields(13).Value TxtNoicap.Text = Data1.Recordset.Fields(14).Value TxtThanhphangd.Text = Data1.Recordset.Fields(15).Value CboChinhtri.Text = Data1.Recordset.Fields(16).Value CboNgoaingu.Text = Data1.Recordset.Fields(17).Value TxtNgayvaonganh.Text = Data1.Recordset.Fields(18).Value If Not IsNull(Data1.Recordset.Fields(19).Value) Then TxtNgayvaodang.Text = Data1.Recordset.Fields(19).Value Else TxtNgayvaodang.Text = "__/__/____" End If CboPhong.Text = Data1.Recordset.Fields(20).Value CboChucvu.Text = Data1.Recordset.Fields(21).Value CboChucvuht.Text = Data1.Recordset.Fields(22).Value TxtBacluong.Text = Val(Data1.Recordset.Fields(23).Value) TxtKhenthuong.Text = Data1.Recordset.Fields(24).Value TxtKyluat.Text = Data1.Recordset.Fields(25).Value 'CboDonvi.Text = Data1.Recordset.Fields(26).Value TxtNamnghihuu.Value = Data1.Recordset.Fields(26).Value loi: End Sub Private Sub Form_Load() Data1.DatabaseName = App.Path & "\nhansu.mdb" Data1.RecordSource = "qhoso" Data1.Refresh Call Capnhat Adochinhtri.ConnectionString = "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data Source=" & App.Path & "\nhansu.mdb" Adochinhtri.RecordSource = "select * from qchinhtri" Adochinhtri.Refresh AdoChucvu.ConnectionString = "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data Source=" & App.Path & "\nhansu.mdb" AdoChucvu.RecordSource = "select * from qchucvu" AdoChucvu.Refresh AdoDantoc.ConnectionString = "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data Source=" & App.Path & "\nhansu.mdb" AdoDantoc.RecordSource = "select * from qdantoc" AdoDantoc.Refresh AdoDonvi.ConnectionString = "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data Source=" & App.Path & "\nhansu.mdb" AdoDonvi.RecordSource = "Select * from QDonvi" AdoDonvi.Refresh AdoHocvan.ConnectionString = "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data Source=" & App.Path & "\nhansu.mdb" AdoHocvan.RecordSource = "Select * from qhocvan" AdoHocvan.Refresh AdoNgoaingu.ConnectionString = "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data Source=" & App.Path & "\nhansu.mdb" AdoNgoaingu.RecordSource = "select * from qngoaingu" AdoNgoaingu.Refresh AdoPhong.ConnectionString = "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data Source=" & App.Path & "\nhansu.mdb" AdoPhong.RecordSource = "select * from qphong" AdoPhong.Refresh End Sub Private Sub Form_Unload(Cancel As Integer) MDIHethong.StatusBar1.Panels(2).Text = "" End Sub Private Sub TxtBacluong_GotFocus() TxtBacluong.SelStart = 0 TxtBacluong.SelLength = Len(TxtBacluong.Text) End Sub Private Sub TxtDiachi_GotFocus() TxtDiachi.SelStart = 0 TxtDiachi.SelLength = Len(TxtDiachi.Text) End Sub Private Sub TxtKhenthuong_GotFocus() TxtKhenthuong.SelStart = 0 TxtKhenthuong.SelLength = Len(TxtKhenthuong.Text) End Sub Private Sub TxtKyluat_GotFocus() TxtKyluat.SelStart = 0 TxtKyluat.SelLength = Len(TxtKyluat.Text) End Sub Private Sub TxtNamnghihuu_GotFocus() TxtNamnghihuu.SelStart = 0 TxtNamnghihuu.SelLength = Len(TxtNamnghihuu.Text) End Sub Private Sub TxtNgaycap_GotFocus() TxtNgaycap.SelStart = 0 TxtNgaycap.SelLength = Len(TxtNgaycap.Text) End Sub Private Sub TxtNgaysinh_GotFocus() TxtNgaysinh.SelStart = 0 TxtNgaysinh.SelLength = Len(TxtNgaysinh.Text) End Sub Private Sub Txthovaten_GotFocus() Txthovaten.SelStart = 0 Txthovaten.SelLength = Len(Txthovaten.Text) End Sub Private Sub Txtmahoso_GotFocus() Txtmahoso.SelStart = 0 Txtmahoso.SelLength = Len(Txtmahoso.Text) End Sub Private Sub TxtNgayvaodang_GotFocus() TxtNgayvaodang.SelStart = 0 TxtNgayvaodang.SelLength = Len(TxtNgayvaodang.Text) End Sub Private Sub TxtNgayvaonganh_GotFocus() TxtNgayvaonganh.SelStart = 0 TxtNgayvaonganh.SelLength = Len(TxtNgayvaonganh.Text) End Sub Private Sub TxtNoicap_GotFocus() TxtNoicap.SelStart = 0 TxtNoicap.SelLength = Len(TxtNoicap.Text) End Sub Private Sub Txtnoisinh_GotFocus() Txtnoisinh.SelStart = 0 Txtnoisinh.SelLength = Len(Txtnoisinh.Text) End Sub Private Sub TxtNoithuongtru_GotFocus() TxtNoithuongtru.SelStart = 0 TxtNoithuongtru.SelLength = Len(TxtNoithuongtru.Text) End Sub Private Sub TxtQue_GotFocus() TxtQue.SelStart = 0 TxtQue.SelLength = Len(TxtQue.Text) End Sub Private Sub TxtSDT_GotFocus() TxtSDT.SelStart = 0 TxtSDT.SelLength = Len(TxtSDT.Text) End Sub Private Sub TxtSoCMND_GotFocus() TxtSoCMND.SelStart = 0 TxtSoCMND.SelLength = Len(TxtSoCMND.Text) End Sub Private Sub TxtThanhphangd_GotFocus() TxtThanhphangd.SelStart = 0 TxtThanhphangd.SelLength = Len(TxtThanhphangd.Text) End Sub Private Sub TxtTongiao_GotFocus() TxtTongiao.SelStart = 0 TxtTongiao.SelLength = Len(TxtTongiao.Text) End Sub Sub Capnhat() On Error GoTo loi Txtmahoso.Text = Data1.Recordset.Fields(0).Value Txthovaten.Text = Data1.Recordset.Fields(1).Value TxtNgaysinh.Value = Data1.Recordset.Fields(2).Value ChkGioitinh.Value = Data1.Recordset.Fields(3).Value Txtnoisinh.Text = Data1.Recordset.Fields(4).Value TxtQue.Text = Data1.Recordset.Fields(5).Value TxtNoithuongtru.Text = Data1.Recordset.Fields(6).Value TxtDiachi.Text = Data1.Recordset.Fields(7).Value TxtSDT.Text = Data1.Recordset.Fields(8).Value CboDantoc.Text = Data1.Recordset.Fields(9).Value CboDantoc.Refresh CboHocvan.Text = Data1.Recordset.Fields(10).Value TxtTongiao.Text = Data1.Recordset.Fields(11).Value TxtSoCMND.Text = Data1.Recordset.Fields(12).Value TxtNgaycap.Value = Data1.Recordset.Fields(13).Value TxtNoicap.Text = Data1.Recordset.Fields(14).Value TxtThanhphangd.Text = Data1.Recordset.Fields(15).Value CboChinhtri.Text = Data1.Recordset.Fields(16).Value CboNgoaingu.Text = Data1.Recordset.Fields(17).Value TxtNgayvaonganh.Text = Data1.Recordset.Fields(18).Value If Not IsNull(Data1.Recordset.Fields(19).Value) Then TxtNgayvaodang.Text = Data1.Recordset.Fields(19).Value Else TxtNgayvaodang.Text = "__/__/____" End If CboPhong.Text = Data1.Recordset.Fields(20).Value CboChucvu.Text = Data1.Recordset.Fields(21).Value CboChucvuht.Text = Data1.Recordset.Fields(22).Value TxtBacluong.Text = Val(Data1.Recordset.Fields(23).Value) TxtKhenthuong.Text = Data1.Recordset.Fields(24).Value TxtKyluat.Text = Data1.Recordset.Fields(25).Value TxtNamnghihuu.Value = Data1.Recordset.Fields(26).Value loi: End Sub Option Explicit Dim nut As Integer Private Sub CmdCapnhat_Click() Dim db As Database Dim rs As Recordset Set db = OpenDatabase(App.Path & "\nhansu.mdb") Set rs = db.OpenRecordset("hocvan") Select Case nut Case 1: On Error GoTo loi1 rs.AddNew rs.Fields(0).Value = UCase(Txtmahocvan.Text) rs.Fields(1).Value = Txthocvan.Text rs.Fields(2).Value = Txtghichu.Text rs.Update Data1.Refresh Data1.Recordset.MoveLast Call Capnhat Exit Sub loi1: MsgBox "Dữa liệu bạn nhập vào bị sai", vbOKOnly + vbCritical, "Kiểm tra" Case 2: On Error GoTo loi2 rs.MoveFirst Do Until rs.EOF If rs.Fields(0).Value = Txtmahocvan.Text Then rs.Delete End If rs.MoveNext Loop Data1.Refresh Call Capnhat Exit Sub loi2: MsgBox "Dữa liệu bạn nhập vào bị sai", vbOKOnly + vbCritical, "Kiểm tra" Case 3: On Error GoTo loi3 rs.MoveFirst Do Until rs.EOF If rs.Fields(0).Value = Txtmahocvan.Text Then rs.Edit rs.Fields(1).Value = Txthocvan.Text rs.Fields(2).Value = Txtghichu.Text rs.Update End If rs.MoveNext Loop Data1.Refresh Call Capnhat Exit Sub loi3: MsgBox "Dữa liệu bạn nhập vào bị sai", vbOKOnly + vbCritical, "Kiểm tra" Case Else MsgBox "Bạn chưa chọn trạng thái hoạt động", vbOKOnly + vbCritical, "Kiểm tra" End Select End Sub Private Sub CmdDuyet_Click(Index As Integer) Select Case Index Case 0 Data1.Recordset.MoveFirst Case 1 Data1.Recordset.MovePrevious If Data1.Recordset.BOF Then Data1.Recordset.MoveFirst End If Case 2 Data1.Recordset.MoveNext If Data1.Recordset.EOF Then Data1.Recordset.MoveLast End If Case 3 Data1.Recordset.MoveLast End Select Call Capnhat End Sub Private Sub CmdSua_Click() Txtmahocvan.Enabled = True Txthocvan.Enabled = True Txtghichu.Enabled = True nut = 3 MDIHethong.StatusBar1.Panels(2).Text = "Sửa dữ liệu" End Sub Private Sub CmdThem_Click() Txtmahocvan.Enabled = True Txthocvan.Enabled = True Txtghichu.Enabled = True nut = 1 MDIHethong.StatusBar1.Panels(2).Text = "Thêm dữ liệu" End Sub Private Sub CmdThoat_Click() Unload Me End Sub Private Sub CmdThoat_LostFocus() Txtmahocvan.SetFocus End Sub Private Sub CmdXoa_Click() Txtmahocvan.Enabled = True Txthocvan.Enabled = False Txtghichu.Enabled = False nut = 2 MDIHethong.StatusBar1.Panels(2).Text = "Xoá dữ liệu" End Sub Private Sub DBGrid1_Click() On Error GoTo loi Txtmahocvan.Text = Data1.Recordset.Fields(0).Value Txthocvan.Text = Data1.Recordset.Fields(1).Value Txtghichu.Text = Data1.Recordset.Fields(2).Value loi: End Sub Private Sub Form_Load() Data1.DatabaseName = App.Path & "\nhansu.mdb" Data1.RecordSource = "qhocvan" Data1.Refresh Call Capnhat DBGrid1.Columns(1).Width = 2000 DBGrid1.Columns(2).Width = 3000 End Sub Private Sub Form_Unload(Cancel As Integer) MDIHethong.StatusBar1.Panels(2).Text = "" End Sub Private Sub Txthocvan_GotFocus() Txthocvan.SelStart = 0 Txthocvan.SelLength = Len(Txthocvan.Text) End Sub Private Sub Txtghichu_GotFocus() Txtghichu.SelStart = 0 Txtghichu.SelLength = Len(Txtghichu.Text) End Sub Private Sub Txtmahocvan_GotFocus() Txtmahocvan.SelStart = 0 Txtmahocvan.SelLength = Len(Txtmahocvan.Text) End Sub Sub Capnhat() On Error GoTo loi Txtmahocvan.Text = Data1.Recordset.Fields(0).Value Txthocvan.Text = Data1.Recordset.Fields(1).Value Txtghichu.Text = Data1.Recordset.Fields(2).Value loi: End Sub TàI liệu tham khảo 1. Microsof ViSual BaSic 6.0 & Lập trình cơ sở dữ liệu -Nguyễn Thị Ngọc Mai - Nhà xuất bản giáo dục. 2. Cơ sở dữ liệu kiến thức và thực hành-Vũ Đức Thi - NXB thống kê 3. Phân tích và thiết kế hệ thống tin học - Nhà xuất bản giao thông vận tải Kết luận Mục đích của đồ án này là tin học hoá việc quản lý nhân sự của Chi cục Dự trữ Sóc Sơn, thực hiện tự động hoá một số công việc thủ công. Khi đưa chương trình vào ứng dụng phần thao tác của người sử dụng chỉ đơn giản là số liệu các thông tin gốc của đối tượng cần quản lý. Hệ thống tự động hoá xử lý theo các yêu cầu, hệ thống con cho phép in các báo cáo, các danh sách thống kê, đảm bảo cung cấp thông tin chính xác, kịp thời và trung thực phục vụ cho công tác quản lý và chỉ đạo. Là một đề tài nghiên cứu có ứng dụng thực tế, kinh nghiệm nghiên cứu chuyên môn chưa nhiều, hơn nữa trong một thời gian ngắn vừa nghiên cứu, vừa viết chương trình, vì vậy chương trình không tránh khỏi những mặt hạn chế và thiếu xót. Xin kính mong được sự chỉ bảo và góp ý giúp tôi hoàn thành đồ án này. Một lần nữa tôi xin chân thành cảm ơn thày giáo Hồ Văn Hương, cảm ơn các thầy, các cô đã hướng dẫn trực tiếp tôi hoàn thành đồ án này, tôi cũng xin chân thành cảm ơn thầy giáo phản biện và các thầy cô, bạn bè đồng nghiệp đã giúp đỡ tôi hoàn thành bản đồ án này./. Mục lục Tên mục trang. *lời cảm ơn 1 *đặt vấn đề 2 chương I :khảo sát hệ thống hiện tạI +Hệ thống tổ chức cán bộ và hoạt đọng của cơ quan 3 +Cách thức tổ chức và lưu trữ thông tinhiện tại 6 +Danh sách cán bộ công chức năm 2003 10 +Danh sách cán bộ nâng lương năm 2003 12 +Danh sách đảng viên năm 2003 12 +Danh sách theo trình độ nhân viên 13 chương II : tin ứng dụng của tin học quản lý +Một số khái niệm cơ bản về quản lý và ứng dụng tin học trong công tác quản lý 15 +Giới thiệu về mic rosoft access 20 +Ngôn ngữ vi sua basic 6.0 27 +Mối liên hệ giữa access và visual basic 31 chương III : thiết kế cơ sở dữ liệu. +Thông tin vào ra của hệ thống 33 +Thiết kế cơ sở dữ liệu cho hệ thống quản lý cán bộ 35 chương IV : phân tích và thiết kế hệ thống . +Mục đích 42 +Sơ đồ chức năng của hệ thống quản lý cán bộ 43 +Sơ đồ luồng dữ liệu 44 chương v : các form chính và các code chương trình. +Một số form chính của chương trình 51 +Một số code của chương trình 51 *tàI liệu tham khảo 81 *kếtluận 82 *mục lục 83 *nhần xét của giáo viên 85

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

  • docN0090.doc
Tài liệu liên quan