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./.
                
              
                                            
                                
            
 
            
                
94 trang | 
Chia sẻ: oanh_nt | Lượt xem: 1442 | Lượt tải: 1
              
            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:
N0090.doc