LỜI MỞ ĐẦU
Ngày nay đã có nhiều tiến bộ mạnh mẽ về công nghệ thông tin, từ một tiềm năng thông tin đã có trở thành một tài nguyên thực sự tạo ra sự thay đổi lớn trong lĩnh vực sản xuất, kiến trúc thượng tầng, cơ sở hạ tầng và các cách thức quản lý trong các lĩnh vực xã hội. Những năm gần đây công nghệ thông tin nước ta cũng đã có những bước phát triển trên mọi lĩnh vực cuộc sống cũng như trong các lĩnh vực quản lý khác. Một trong những ứng dụng quan trọng đó là việc sử dụng hệ thống máy tính vào công tác quản lý và điều hành công việc. Việc làm kế toán trên máy tính luôn là mối quan tâm hàng đầu của các doanh nghiệp nói chung và Công ty TNHH Tư Vấn Thiết Kế Giao Thông Ngọc Việt nói riêng.
Hiện nay, có rất nhiều doanh nghiệp đi sâu vào khai thác các phần mềm ứng dụng cho quản lý, bên cạnh đó cũng xuất hiện nhiều doanh nghiệp cung cấp các phần mềm ứng dụng tiện ích. Việc quản lý của từng doanh nghiệp là khác nhau nên việc cạnh tranh hết sức gay gắt, Công ty TNHH Tư Vấn Thiết Kế Giao Thông Ngọc Việt cũng đang hoà mình vào tiến trình phát triển chung đó. Tuy mới được thành lập nhưng công ty đã được nhiều người biết đến,là đối tác tin cậy của các công ty trong và ngoài tỉnh Lào Cai.Với quy mô, tính phức tạp của công việc ngày càng cao nên việc xây dựng một hệ thống thông tin quản lý không chỉ là một công việc lập trình đơn giản mà phải xây dựng một cách có hệ thống. Các giai đoạn phân tích thiết kế phải được tiến hành một cách tỷ mỷ và chính xác. Đặc biệt cần độ chính xác trong việc hoạch định tài chính của công ty và mức thu nhập của công ty, đó cũng chính là vấn đề cần quan tâm đối với người làm kế toán trong doanh nghiệp cũng như trong các công ty lớn nhỏ nói riêng.
Có rất nhiều doanh nghiệp sử dụng phần mềm kế toán để làm kế toán trên máy tính thay cho việc làm kế toán thủ công như trước đây. Do cách thức tổ chức hoạt động và nhu cầu quản lý mỗi doanh nghiệp là khác nhau nên nhu cầu công tác kế toán của họ cũng khác nhau rõ rệt. Công ty TNHH Tư Vấn Thiết Kế Giao Thông Ngọc Việt là một công ty có khả năng tư vấn và thiêt kế các công trình giao thông nên việc cập nhật lưu trữ, in ấn dữ liệu và thông tin về công ty là nhu cầu cấp thiết. Trong công tác kế toán có vai trò đặc biệt quan trọng.
Nhận thấy sự cần thiết đó, trong thời gian thực tập tại Công ty TNHH Tư vấn Thiết Kế Giao thông Ngọc Việt với sự giúp đỡ tận tình của nhân viên kế toán trong Công ty, cùng với sự giúp đỡ và hướng dẫn nhiệt tình của Thầy giáo Đỗ Minh Nam, em đã có điều kiện để thực hiện việc tìm hiểu công tác kế toán tiền lương tại công ty .Xuất phát từ nhu cầu đó em chọn đề tài “Xây dựng phần mềm kế toán quản lý tiền lương ” cho báo cáo tốt nghiệp của mình với Hệ quản trị Cơ sở dữ liệu Access, lập trình bằng ngôn ngữ Visual Basic 6.0 là mục tiêu đi sâu nghiên cứu và tìm hiểu công tác quản lý tiền lương tại Công ty TNHH Tư Vấn Thiết Kế Giao thông Ngọc Việt.
Với báo cáo tốt nghiệp này em đã cố gắng để hoàn thành một cách tốt nhất.Tuy nhiên với khả năng và trình độ có hạn nên không thể tránh khỏi những sai xót.Em rất mong được tiếp thu ý kiến đóng góp của thầy cô và bạn bè để em có điều kiện bổ sung kiến thức nhằm phục vụ tốt hơn nữa cho công tác thực tế sau này.
KẾ TOÁN TIỀN LƯƠNG VÀ CÁC KHOẢN TRÍCH THEO LƯƠNG
* Nội dung của báo cáo này gồm 4 chương:
* CHƯƠNG I : Giới thiệu cơ sở thực tập lựa chọn và giới hạn đề tài
* CHƯƠNG II : Thực tế công tác kế toán tiền lương và các khoản trích theo lương tại công ty TNHH Tư Vấn Thiết Kế Giao Thông Ngọc Việt. Phân tích hệ thông thông tin xây dựng chương trình trên hệ quản trị cơ sở dữ liệu SQL server 2005
* CHƯƠNG III : Thiết kế giao diện và xây dựng chương trình trên ngôn ngữ lập trình visualbasic 6.0
106 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 2991 | Lượt tải: 2
Bạn đang xem trước 20 trang tài liệu Đề tài Xây dựng phần mềm kế toán quản lý tiền lương tại công ty TNHH tư vấn thiết kế giao thông Ngọc Việt, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
i dung của hạch toán lao động là hạch toán số lượng lao động, thời gian lao động và kết quả lao động.
+ Hạch toán số lượng lao động: Số lượng lao động trong doanh nghiệp thường có sự biến động tăng giảm trong từng đơn vị, bộ phận cũng như phạm vi toàn doanh nghiệp. Sự biến động trong doanh nghiệp có ảnh hưởng đến cơ cấu lao động, chất lượng lao động và do đó làm ảnh hưởng đến việc thực hiện sản xuất kinh doanh của doanh nghiệp.
Để phản ánh số lượng lao động hiện có và theo dõi sự biến động lao động trong từng đơn vị, bộ phận doanh nghiệp sử dụng “Sổ danh sách lao động”. Cơ sở để ghi vào sổ là các chứng từ ban đầu về tuyển dụng, các quyết định thuyên chuyển công tác, nâng bậc, thôi việc, hưu trí… Việc ghi chép vào “Sổ danh sách lao động” phải đầy đủ, kịp thời làm cơ sở cho việc lập báo cáo về lao động và phân tích tình hình biến động về lao động trong doanh nghiệp hàng tháng, quý, năm theo yêu cầu quản lý lao động của doanh nghiệp và của cơ quan quản lý cấp trên.
+ Hạch toán sử dụng thời gian lao động:
Thời gian lao động của nhân viên cũng có ý nghĩa quan trọng trong việc thực hiện nhiệm vụ SXKD của doanh nghiệp. Để phản ánh kịp thời, chính
xác tình hình sử dụng thời gian lao động, kiểm tra việc chấp hành kỷ luật lao
động của CNV trong doanh nghiệp, kế toán sử dụng “Bảng chấm công”.
Bảng chấm công được lập hàng tháng cho từng tổ, phòng, ban,…và do người phụ trách bộ phận hoặc người được ủy quyền căn cứ vào tình hình thực tế của bộ phận mình để chấm công cho từng người trong ngày theo các ký hiệu quy định trong chứng từ. Cuối tháng người chấm công và phụ trách bộ phận ký vào Bảng chấm công và chuyển bảng chấm công cùng các chứng từ có liên quan (Phiếu nghỉ hưởng BHXH, Phiếu báo làm thêm giờ, Phiếu điều tra tai nạn lao động…) về bộ phận kế toán kiểm tra, đối chiếu quy ra công để tính lương và BHXH.
Bảng chấm công nhằm theo dõi ngày công thực tế làm việc, nghỉ việc, ngừng việc, nghỉ BHXH,… để có căn cứ tính trả lương, BHXH trả thay lương cho từng người và quản lý lao động trong đơn vị, vì vậy Bảng chấm công phải được treo công khai tại nơi làm việc để công nhân viên có thể thực hiện kiểm tra, giám sát việc chấm công hàng ngày, tham gia ý kiến vào công tác quản lý và sử dụng thời gian lao động
Bảng chấm công là tài liệu quan trọng để tổng hợp, đánh giá phân tích tình hình sử dụng thời gian lao động, là cơ sở để kế toán tính toán kết quả lao động và tiền lương cho công nhân viên.
+ Hạch toán kết quả lao động:
Kết quả lao động của công nhân viên trong doanh nghiệp chịu ảnh hưởng của nhiều nhân tố: thời gian lao động, trình độ thành thạo, tinh thần thái độ, phương tiện sử dụng,…Khi đánh giá, phân tích kết quả lao động của công nhân viên phải xem xét một cách đầy đủ các nhân tố trên.
Kết quả lao động của công nhân viên trong doanh nghiệp được phản ánh vào các chứng từ: Phiếu xác nhận sản phẩm hoặc công việc hoàn thành, Hợp đồng giao khoán.
Tùy theo loại hình, đặc điểm sản xuất, nhiệm vụ sản xuất kinh doanh mà doanh nghiệp sẽ chọn sử dụng chứng từ thích hợp để phản ánh kịp thời, đầy đủ, chính xác kết quả lao động.
Căn cứ chứng từ hạch toán kết quả lao động kế toán lập Sổ tổng hợp kết quả lao động nhằm tổng hợp kết quả lao động của từng cá nhân, bộ phận và toàn đơn vị làm cơ sở cho việc tính toán năng suất lao động và tính tiền lương theo sản phẩm cho công nhân viên.
2.3.2 Tính và thanh toán lương, trợ cấp bảo hiểm xã hội:
Hàng tháng, trên cơ sở tài liệu hạch toán về thời gian lao động và kết quả lao động cũng như chế độ, chính sách về lao động - tiền lương và bảo hiểm xã hội mà Nhà nước ban hành, kế toán tiến hành tính tiền lương và trợ cấp bảo hiểm xã hội phải trả cho công nhân viên. Sau khi có kết quả tính toán tiền lương phải trả cho từng người, được tổng hợp theo từng bộ phận và phản ánh vào “Bảng thanh toán tiền lương” lập cho bộ phận đó.
Trường hợp CNV được hưởng trợ cấp BHXH, thì căn cứ vào số ngày thực tế nghỉ việc được hưởng trợ cấp BHXH phản ánh trên các chứng từ hạch toán lao động liên quan như: “Phiếu nghỉ hưởng BHXH”, “Biên bản điều tra tai nạn lao động”… để tính toán lập “Bảng thanh toán bảo hiểm xã hội”. Bảng thanh toán BHXH được lập cho từng đơn vị sử dụng lao động hoặc lập chung cho toàn doanh nghiệp căn cứ vào kết quả tính trợ cấp BHXH của từng người.
Bảng thanh toán tiền lương của các bộ phận trong doanh nghiệp là cơ sở để chi trả, thanh toán lương cho người lao động, và là cơ sở để kế toán tổng hợp, phân bổ tiền lương và tính trích bảo hiểm xã hội, bảo hiểm y tế và kinh phí công đoàn - Lập Bảng phân bổ tiền lương và bảo hiểm xã hội.
Việc trả lương cho CNV trong doanh nghiệp thường được tiến hành 2 lần trong tháng, lần đầu doanh nghiệp tạm ứng lương cho CNV theo tỷ lệ nhất định căn cứ vào lương cấp bậc. Sau khi tính lương và các khoản phải trả khác cho CNV trong tháng doanh nghiệp tiến hành thanh toán số tiền CNV còn được lĩnh trong tháng đó sau khi trừ các khoản khấu trừ vào lương như BHXH, BHYT và các khoản khác.
Các khoản phải nộp về BHXH, BHYT và KPCĐ, hàng tháng hoặc quý doanh nghiệp có thể lập ủy nhiệm chi để chuyển tiền hoặc chi tiền mặt để nộp cho cơ quan quản lý theo quy định.
Đối với CNV nghỉ phép hàng năm, theo chế độ quy định thì công nhân trong quá trình nghỉ phép đó vẫn được hưởng lương đầy đủ như thời gian đi làm việc. Tiền lương nghỉ phép phải được tính vào CPSX một cách hợp lý vì nó ảnh hưởng đến giá thành sản phẩm. Trong trường hợp doanh nghiệp không bố trí được cho CN nghỉ phép đều đặn trong năm, để đảm bảo cho giá thành không bị đột biến, tiền lương nghỉ phép của CN được tính vào CPSX thông qua phương pháp trích trước theo kế hoạch. Cuối năm sẽ tiến hành điều chỉnh số trích trước theo kế hoạch cho phù hợp với số thực tế tiền lương nghỉ phép để phản ánh đúng số thực tế chi phí tiền lương vào chi phí sản xuất. Trích trước lương nghỉ phép chỉ thực hiện đối với công nhân trực tiếp sản xuất
2.4 Hạch Toán Tổng Hợp Tiền Lương Và Các Khoản Trích Theo Lương:
2.4.1 Tài khoản kế toán sử dụng trong kế toán tiền lương, BHXH, BHYT, KPCĐ
Để phản ánh tình hình thanh toán các khoản tiền lương, BHXH, BHYT, KPCĐ kế toán sử dụng các tài khoản 334 – “Phải trả công nhân viên” và tài khoản 338 – “Phải trả, phải nộp khác”
Tài khoản 334 – “Phải trả công nhân viên”
Tài khoản này dùng để phản ánh các khoản phải trả và tình hình thanh toán các khoản phải trả cho CNV của doanh nghiệp về tiền lương, tiền công, tiền thưởng, BHXH và các khoản phải trả khác thuộc về thu nhập của CNV.
Tài khoản 338 – “Phải trả, phải nộp khác”
Tài khoản này dùng để phản ánh tình hình thanh toán về các khoản phải trả, phải nộp khác ngoài nội dung đã phản ánh ở các tài khoản khác.
Hàng tháng, kế toán tiến hành tổng hợp tiền lương phải trả công nhân viên trong kỳ theo từng đối tượng sử dụng lao động (bộ phận sản xuất, loại sản phẩm,…) và tính, trích BHXH, BHYT, KPCĐ theo quy định trên cơ sở tổng hợp tiền lương phải trả và các tỷ lệ trích BHXH, BHYT, KPCĐ được thực hiện trên “Bảng phân bổ tiền lương và bảo hiểm xã hội”.
Bảng phân bổ tiền lương và bảo hiểm xã hội dùng để tập hợp và phân bổ tiền lương thực tế phải trả (gồm lương chính, lương phụ và các khoản khác), BHXH, BHYT và KPCĐ phải trích nộp trong tháng cho các đối tượng sử dụng lao động (ghi Có TK 334, 335, TK 338 (3382, 3383, 3384)
Số liệu của Bảng phân bổ tiền lương và BHXH được sử dụng để ghi vào sổ tổng hợp và các Sổ kế toán chi tiết có liên quan, đồng thời được sử dụng để tính giá thành thực tế sản phẩm lao vụ, dịch vụ hoàn thành.
2.4.2 Phương pháp hạch toán tổng hợp tiền lương, bảo hiểm xã hội, bảo hiểm y tế và kinh phí công đoàn:
_ Hàng tháng, tính tiền lương, tiền công và những khoản phụ cấp theo quy định phải trả cho công nhân viên, ghi:
Nợ TK 622 – Lương công nhân trực tiếp sản xuất Nợ TK 627 – Lương công nhân quản lý sản xuất Nợ TK 641 – Lương nhân viên bán hàng
Nợ TK 642 – Lương nhân viên quản lý doanh nghiệp
Có TK 334 - Tổng số lương phải trả
_ Tính tiền thưởng phải trả cho công nhân viên, ghi: Nợ TK 431 - Quỹ khen thưởng, phúc lợi (4311)
Có TK 334 - Phải trả công nhân viên
_ Tính số BHXH (ốm đau, thai sản, tai nạn…) phải trả cho CNV, ghi: Nợ TK 338 - Phải trả, phải nộp khác (3383)
Có TK 334 - Phải trả công nhân viên
_Bảo hiểm xã hội, bảo hiểm y tế trừ vào lương của công nhân viên, ghi:
Nợ TK 334 - Phải trả công nhân viên
Có TK 338 - Phải trả, phải nộp
_ Tính thuế thu nhập của CNV, người lao động phải nộp Nhà nước, ghi: Nợ TK 334 - Phải trả công nhân viên
Có TK 333 - Thuế và các khoản phải nộp Nhà nước (3388)
_ Khi thanh toán tiền lương, BHXH và các khoản phải trả khác cho CNV:
Nợ TK 334 - Phải trả công nhân viên
Có TK 111 - Tiền mặt, hoặc
Có TK 112 - Tiền gửi ngân hàng
_ Hàng tháng trích BHXH, BHYT và KPCĐ theo tỷ lệ quy định, ghi: Nợ TK 622 : 19% × lương công nhân trực tiếp sản xuất
Nợ TK 627 : 19% × lương nhân viên quản lý phân xưởng
Nợ TK 641 : 19% × lương nhân viên bán hàng
Nợ TK 642 : 19% × lương nhân viên quản lý doanh nghiệp
Nợ TK 334 : 6% × tổng lương phải trả
Có TK 338 : 25% × tổng lương
_ Nộp BHXH, BHYT và KPCĐ cho cơ quan quản lý quỹ, ghi: Nợ TK 338 - Phải trả, phải nộp khác (3382, 3383, 3384)
Có TK 111, 112
_ Chi bảo hiểm xã hội và kinh phí công đoàn tại đơn vị, ghi: Nợ TK 338 - Phải trả, phải nộp khác (3382, 3383)
Có TK 111 - Tiền mặt
Có TK 112 - Tiền gửi ngân hàng
_ Số bảo hiểm xã hội được cơ quan bảo hiểm xã hội cấp, ghi:
Nợ TK 111, 112
Có TK 338 - Phải trả, phải nộp khác (3383)
2.4.3 Sơ đồ tài khoản:
SƠ ĐỒ TỔNG HỢP TÀI KHOẢN 334 TK 622, 627, 641,
TK 141, 138, 338
TK 334
642, 241
(4) Các khoản khấu trừ
vào lương
TK 111
(5) Ứng trước & thanh toán các khoản cho CNV
TK 333 (3338)
(6) Tính thuế thu nhập CNV
phải nộp Nhà Nước
(1) Tiền lương, tiền công phụ cấp ăn giữa ca…
tính cho các đối tượng chi phí SXKD
TK 338 (3383)
(2) BHXH phải trả thay lương
TK 431 (4311)
(3) Tiền thưởng phải trả từ
quỹ khen thưởng
TK 334
SƠ ĐỒ TỔNG HỢP TÀI KHOẢN 338
TK 338
TK 622, 627, 641,
642, 241
(4) BHXH phải nộp trả thay lương cho CNV
TK 111, 112
(1) Trích BHXH, BHYT, KPCĐ tính vào chi phí SXKD
TK 334
(5) Nộp (chi) BHXH, BHYT,
KPCĐ theo quy định
(2) Khấu trừ lương tiền nộp hộ
BHXH, BHYT, cho CNV
TK 111, 112
(3) Nhập khoản hoàn trả của cơ quan BHXH về khoản DN đã chi
2.4.4 Ví dụ tổng hợp:
Đây chỉ là ví dụ để hiểu thêm về nghiệp vụ của kế toán tiền lương và các khoản trích theo lương, không liên quan đến công ty TNHH Tư Vấn Và Thiết Kế Giao Thông Ngọc Việt
Lấy tài liệu kế toán trong một doanh nghiệp thuộc ngành sản xuất công nghiệp. Trong tháng 3/2000 có các chứng từ, tài liệu có liên quan đến kế toán tiền lương và các khoản trích theo lương như sau (đơn vị tính 1,000đ)
1. Phiếu chi số 200 ngày 8/3/2000… kèm theo giấy báo Nợ Ngân hàng số 128 ngày 8/3/2000… Rút tiền gửi Ngân hàng về quỹ tiền mặt để tạm ứng lương kỳ 1 cho công nhân 100,000
2. Bảng tổng hợp thanh toán tiền lương tháng 3/2000 tổng hợp tiền lương phải trả cho CBCNV ở các bộ phận như sau:
- Lương công nhân sản xuất 120,000 trong đó có tiền lương nghỉ phép 1,000
- Lương nhân viên phân xưởng 5,000
- Lương nhân viên bán hàng 1,000
- Lương nhân viên quản lý 14,000, trong đó tiền lương nghỉ phép 200
3. Trích trước lúc nghỉ phép của công nhân sản xuất theo tỷ lệ 2%
(119,000 × 2% = 2,380)
4. Trích BHXH (15%), BHYT (2%), kinh phí công đoàn (2%) vào chi phí sản xuất và khấu trừ lương tiền nộp hộ BHXH (5%), BHYT (1%).
* Căn cứ vào các chứng từ và tài liệu trên, kế toán lập định khoản kế toán để ghi sổ kế toán trong tháng 3/2000 như sau:
1) Nợ TK 111 (1111) 100,000
Có TK 112 (1121) 100,000
2) Nợ TK 622
119,000
Nợ TK 627 (6271)
5,000
Nợ TK 641 (6411)
1,000
Nợ TK 642 (6421)
14,000
Nợ TK 335
1,000
Có TK 334
140,000
3) Nợ TK 622 2,380
Có TK 335 2,380
4) Nợ TK 622 22,800 (120,000 × 19%) Nợ TK 627 (6271) 950 (5,000 × 19%) Nợ TK 641 (6411) 190 (1,000 × 19%) Nợ TK 642 (6421) 2,660 (14,000 × 19%) Nợ TK 334 8,400 (140,000 × 6%)
Có TK 338 35,000 (140,000 × 25%) Chi tiết 3382 2,800 (140,000 × 2%)
3383 28,000 (140,000 × 20%)
3384 4,200 (140,000 × 3%)
* Tóm lại, mục đích của việc phân tích công tác hạch toán kế toán chi phí lương và các khoản trích theo lương tại công ty là để thấy được tình hình thực tế của công ty về công tác quản lý lao động, việc phân bổ và sử dụng lao động đã đạt hiệu quả chưa, các chế độ tiền lương, chế độ sử dụng quỹ BHXH, BHYT, KPCĐ có phù hợp với chính sách chế độ về lao động, tiền lương, BHXH, BHYT, KPCĐ mà Nhà nước đã ban hành. Đồng thời đánh giá công tác quản lý tiền lương của công ty, từ đó có phương pháp tính toán phù hợp đảm bảo nâng cao năng suất lao động hoàn thành vượt mức kế hoạch mà công ty đề ra.
2.5 Phân tích hệ thốngvề sử lí
2.5.1 Biểu đồ phân cấp chức năng
Báo Cáo
Quản Lí Ngươi Sư Dụng
Hệ Thống Kế Toán Tiền Lương
Cập Nhật
cập nhật hồ sơ nv
bảng lương theo phòng ban
cập nhật chi tiết lương
bảng lương tháng
Nhập ghi xoá sửa phân quyền người sử dụng
2.5.2 Biểu đồ mức ngữ cảnh
Bộ phận quản lý nhân sự
Ban giám đốc
Kế toán viên
Hệ Thống Xử Lý Thông Tin Kế Toán Tiền Lương
Gửi hscnv, chi tiết công& lương
Báo cáo lương, chi tiết lương
Yêu cầu t.tin cnv
Thông tin cnv
Yêu cầu báo cáo
Báo cáo
Yêu cầu hscnv, công
Lương,chi tết lương
Yêu cầu lương
chi tiết lương
Công nhân viên
Tìm kiếm
Thông tin tìm kiếm
Yêu cầu báo cáo
2.5.3 Biểu đồ mức đỉnh
Quản lí người
sử dụng
Nhân viên kế toán
Cập nhật chi tiết lương
Chi tiết lương
Hồ sơ nhân viên
Cập nhật hồ sơ nhân viên
In
Báo
cáo
Yêu
Cầu
Báo
cáo
Quyền quản trị hệ thống
Quản lí phân quyền
Người sủ dụng
Tên, mật khẩu, quyền sd
Báo cáo
Cập nhật
Nhà quản lí
2.5.4 . Biểu đồ luồng dữ liệu mức dưới đỉnh tương ứng mức phân rã chức cập nhật
Thêm, sửa, xoá hsnv
Bảng lương
Hồ sơ nhân viên
Cập nhật Hsnv
Thêm, sửa, xoá bảng lương
Cập nhật bảng lương
Nhân viên kế toán
2.5.5 . Biểu đồ luồng dữ liệu mức dưới đỉnh tương ứng mức phân rã chức năng báo cáo
Yêu cầu báo cáo
Báo cáo bảng lương tháng
Nhân viên kế toán
Báo cáo theo chức vụ
Trả về báo cáo
Yêu cầu báo cáo
Trả về báo cáo
2.6 Xây Dựng Các bảng dữ liệu
* Bảng tb HSNV(Hồ sơ Nhân Viên)
Field
DaTa TyPe
Description
MaNV
Nchar
Mã Nhân Viên
TenNV
Nchar
Tên Nhân Viên
NgaySinh
Smalldatetime
Ngày sinh
ChucVu
Nchar
Chức Vụ
MaPB
Nchar
Mã Phòng Ban
SoTaiKhoan
Numeric(18,0)
Số Tài Khoản
QueQuan
Nchar
Quê Quán
ChoOHienTai
Nchar
Chỗ Ở Hiện Tại
GioiTinh
Nchar
Giới Tính
* Bảng tb BangLuong(Bảng Lương)
Field
DaTa TyPe
Description
Nam
int
Năm
Thang
int
Tháng
MaNV
Nchar
Mã Nhân Viên
LuongCoBan
Numeric(10,2)
Lương Cơ Bản
HeSoLuong
Numeric(4,2)
Hệ Số Lương
HeSoTrachNhiem
Numeric(4,2)
Hệ Số Trách Nhiệm
PhuCap
Numeric(10,2)
Phụ Cấp
Thuong
Numeric(10,2)
Thưởng
Phat
Numeric(10,2)
Phạt
* tbPhongBan(Phòng Ban)
Field
DaTa TyPe
Description
MaPB
Nchar
Mã Phòng Ban
TenPB
Nchar
Tên Phòng Ban
* tb Users (Người sử dụng)
Field
DaTa TyPe
Description
UserID
int
Pass
Nchar
Mật Khẩu
UserName
Nchar
Tên Người Sử Dụng
FullName
Nchar
Tên Đầy Đủ
* tb Module ( Chức Năng Chương Trình)
Field
DaTa TyPe
Description
ModuleName
Nchar
Chức Năng Chương Trình
Description
Nchar
Mô Tả
* tb Permisson (Phân Quyền)
Field
DaTa TyPe
Description
UserID
int
ID Người Sử Dụng
ModuleName
Nchar
Chức Năng Chương Trìch
Permisson
Nchar
Quyền(N,F)
2.7 Vào Dữ Liệu Mẫu Cho Các Bảng
* Bảng Hồ Sơ Nhân Viên
MaNV
Ten NV
Ngay Sinh
ChucVu
MaPB
KT01
Ninh Ngọc Hiếu
12/05/1982
Trưởng Phòng
PKT
KT02
Đoàn Văn Quyền
14/03/1985
Nhân Viên
PKT
KT03
Đào Đình Dũng
15/05/1985
Nhân Viên
PKT
HC01
Nguyễn Văn Thăng
27/12/1984
Nhân Viên
PHC
HC02
Nguyễn Ngọc Khuê
16/08/1982
Trưởng Phòng
PHC
HC03
Đặng Đình Phong
12/07/1978
Nhân Viên
PHC
KD01
Nguyễn Ngọc Hùng
26/09/1985
Trưởng Phòng
PKD
KD02
Đỗ Thị Thu
22/05/1986
Nhân Viên
PKD
KD03
Phạm Văn Bình
18/09/1984
Nhân Viên
PKD
SoTaiKhoan
QueQuan
ChoOHienTai
GioiTinh
02564982145
Bắc Ninh
Lào Cai
Nam
54863254189
Bắc Giang
Lào Cai
Nam
01002032158
Ninh Bình
Lào Cai
Nam
45002361208
Hòa Bình
Lào Cai
Nam
12846952478
Nam Định
Lào Cai
Nam
45896478156
Thái Bình
Lào Cai
Nam
16886400640
Hà Nội
Lào Cai
Nữ
77612576175
Thanh Hóa
Lào Cai
Nam
* Bảng Chi Tiết Lương
Năm
Tháng
MaNV
Lương Cơ Bản
Hệ Số Lương
Hệ Số Trách Nhiệm
Phụ Cấp
Thưởng
Phạt
2009
1
KT01
640.000
4.5
1
1.000.000
2.000.000
0
2009
2
KT02
640.000
4
0.5
800.000
1.000.000
0
2009
1
KT03
640.000
3.5
0.5
600.000
1.000.000
0
2009
2
HC01
640.000
3
0.5
700.000
1.000.000
0
2009
1
HC02
640.000
4
1
1.000.000
2.000.000
0
2009
2
HC03
640.000
5
0.5
900.000
1.000.000
0
2009
1
KD01
640.000
4.5
0.5
700.000
1.000.000
0
2009
3
KD02
640.000
4
1
1.000.000
2.000.000
0
* Bảng Phòng Ban
MaPB
TenPB
PKT
Phòng Kế Toán
PHC
Phòng Hành Chính
PKD
Phòng Kinh Doanh
* Bảng TB Users.
TbUsers
UserID
Pass
UserName
FullName
1
Namdominh
Namdm
Đỗ Minh Nam
2
Anhdungdt
Daodinhdung
Đào Đình Dũng
3
Saomai
Saomai
Sao Mai
4
Dangphong
Dangphong
Đặng Văn Phong
* Bảng tbModule
tbModule
ModuleName
Description
CNHSNV
Cập Nhập Hồ Sơ Nhân Viên
CNBLNV
Cập Nhập Bảng Lương Nhân Viên
CNPB
Cập Nhật Phòng Ban
CNNSD
Cập Nhật Người Sử Dụng
CNPQ
Cập Nhật Phân Quyền
CNCN
Cập Nhập Chức Năng
* Bảng tbPermisson
tbPermisson
UserID
ModuleName
Permisson
1
CNHSNV
F
1
CNBLNV
F
1
CNPB
F
1
CNNSD
F
1
CNPQ
F
1
CNCN
F
2
CNHSNV
F
2
CNBLNV
N
2
CNPB
N
2
CNNSD
F
2
CNPQ
F
2
CNCN
N
3
CNHSNV
F
3
CNBLNV
F
3
CNPB
N
3
CNNSD
N
3
CNPQ
F
3
CNCN
N
CHƯƠNG III :
THIẾT KẾ GIAO DIỆN VÀ XÂY DỰNG CHƯƠNG TRÌNH TRÊN NGÔN NGỮ LẬP TRÌNH VISUAL BASIC 6.0
3.1 Thiết kế cơ sở dữ liệu
3.1.1 Xây dựng cơ sở dữ liệu (DATABASE) trên hệ quản trị cơ sở dữ liệu sql server 2005
3 .1.1.1Giới thiệu về hệ quản trị csdl sql 2005
SQL Server 2005 là một hệ thống quản lý cơ sở dữ liệu (Relational Database Management System (RDBMS) ) sử dụng Transact-SQL để trao đổi dữ liệu giữa Client computer và SQL Server computer. Một RDBMS bao gồm databases, database engine và các ứng dụng dùng để quản lý dữ liệu và các bộ phận khác nhau trong RDBMS.
SQL Server 2005 được tối ưu để có thể chạy trên môi trường cơ sở dữ liệu rất lớn (Very Large Database Environment) lên đến Tera-Byte và có thể phục vụ cùng lúc cho hàng ngàn user. SQL Server 2005 có thể kết hợp "ăn ý" với các server khác như Microsoft Internet Information Server (IIS), E-Commerce Server, Proxy Server....
SQL Server có 7 editions:
Enterprise : Chứa đầy đủ các đặc trưng của SQL Server và có thể chạy tốt trên hệ thống lên đến 32 CPUs và 64 GB RAM. Thêm vào đó nó có các dịch vụ giúp cho việc phân tích dữ liệu rất hiệu quả (Analysis Services)
Standard : Rất thích hợp cho các công ty vừa và nhỏ vì giá thành rẻ hơn nhiều so với Enterprise Edition, nhưng lại bị giới hạn một số chức năng cao cấp (advanced features) khác, edition này có thể chạy tốt trên hệ thống lên đến 4 CPU và 2 GB RAM.
Personal: được tối ưu hóa để chạy trên PC nên có thể cài đặt trên hầu hết các phiên bản windows kể cả Windows 98.
Developer : Có đầy đủ các tính năng của Enterprise Edition nhưng được chế tạo đặc biệt như giới hạn số lượng người kết nối vào Server cùng một lúc.... Ðây là edition mà các bạn muốn học SQL Server cần có. Chúng ta sẽ dùng edition này trong suốt khóa học. Edition này có thể cài trên Windows 2005 Professional hay Win NT Workstation.
Desktop Engine (MSDE): Ðây chỉ là một engine chạy trên desktop và không có user interface (giao diện). Thích hợp cho việc triển khai ứng dụng ở máy client. Kích thước database bị giới hạn khoảng 2 GB.
Win CE : Dùng cho các ứng dụng chạy trên Windows CE
Trial: Có các tính năng của Enterprise Edition, download free, nhưng giới hạn thời gian sử dụng.
3.1.1.2. Các thành phần quan trọng trong SQL Server 2000
SQL Server 2000 được cấu tạo bởi nhiều thành phần như Relational Database Engine, Analysis Service và English Query.... Các thành phần này khi phối hợp với nhau tạo thành một giải pháp hoàn chỉnh giúp cho việc lưu trữ và phân tích dữ liệu một cách dễ dàng.
3.1.1.2.1. Relational Database Engine - Cái lõi của SQL Server:
Ðây là một engine có khả năng chứa data ở các quy mô khác nhau dưới dạng table và support tất cả các kiểu kết nối (data connection) thông dụng của Microsoft như ActiveX Data Objects (ADO), OLE DB, and Open Database Connectivity (ODBC). Ngoài ra nó còn có khả năng tự điều chỉnh (tune up) ví dụ như sử dụng thêm các tài nguyên (resource) của máy khi cần và trả lại tài nguyên cho hệ điều hành khi một user log off.
3.1.12.2. Replication - Cơ chế tạo bản sao (Replica):
Giả sử bạn có một database dùng để chứa dữ liệu được các ứng dụng thường xuyên cập nhật. Một ngày đẹp trời bạn muốn có một cái database giống y hệt như thế trên một server khác để chạy báo cáo (report database) (cách làm này thường dùng để tránh ảnh hưởng đến performance của server chính). Vấn đề là report server của bạn cũng cần phải được cập nhật thường xuyên để đảm bảo tính chính xác của các báo cáo. Bạn không thể dùng cơ chế back up and restore trong trường hợp này. Thế thì bạn phải làm sao? Lúc đó cơ chế replication của SQL Server sẽ được sử dụng để bảo đảm cho dữ liệu ở 2 database được đồng bộ (synchronized). Replication sẽ được bàn kỹ trong bài 12
3.1.1.2.3. Data Transformation Service (DTS) - Một dịch vụ chuyển dịch data vô cùng hiệu quả
Nếu bạn làm việc trong một công ty lớn trong đó data được chứa trong nhiều nơi khác nhau và ở các dạng khác nhau cụ thể như chứa trong Oracle, DB2 (của IBM), SQL Server, Microsoft Access....Bạn chắc chắn sẽ có nhu cầu di chuyển data giữa các server này (migrate hay transfer) và không chỉ di chuyển bạn còn muốn định dạng (format) nó trước khi lưu vào database khác, khi đó bạn sẽ thấy DTS giúp bạn giải quyết công việc trên dễ dàng như thế nào. DTS sẽ được bàn kỹ trong bài 8.
3.1.1.2.4. Analysis Service - Một dịch vụ phân tích dữ liệu rất hay của Microsoft
Dữ liệu (Data) chứa trong database sẽ chẳng có ý nghĩa gì nhiều nếu như bạn không thể lấy được những thông tin (Information) bổ ích từ đó. Do đó Microsoft cung cấp cho bạn một công cụ rất mạnh giúp cho việc phân tích dữ liệu trở nên dễ dàng và hiệu quả bằng cách dùng khái niệm hình khối nhiều chiều (multi-dimension cubes) và kỹ thuật "đào mỏ dữ liệu" (data mining) sẽ được chúng tôi giới thiệu trong bài 13.
3.1.1.2.5. English Query - Một dịch vụ mà người Việt Nam chắc là ít muốn dùng :-) (?)
Ðây là một dịch vụ giúp cho việc query data bằng tiếng Anh "trơn" (plain English).
3.1.12.6. Meta Data Service:
Dịch vụ này giúp cho việc chứa đựng và "xào nấu" Meta data dễ dàng hơn. Thế thì Meta Data là cái gì vậy? Meta data là những thông tin mô tả về cấu trúc của data trong database như data thuộc loại nào String hay Integer..., một cột nào đó có phải là Primary key hay không....Bởi vì những thông tin này cũng được chứa trong database nên cũng là một dạng data nhưng để phân biệt với data "chính thống" người ta gọi nó là Meta Data. Phần này chắc là bạn phải xem thêm trong một thành phần khác của SQL Server sắp giới thiệu sau đây là SQL Server Books Online vì không có bài nào trong loạt bài này nói rõ về dịch vụ này cả.
3.1.1.2.7. SQL Server Books Online - Quyển Kinh Thánh không thể thiếu:
Cho dù bạn có đọc các sách khác nhau dạy về SQL server thì bạn cũng sẽ thấy books online này rất hữu dụng và không thể thiếu được( cho nên Microsoft mới hào phóng đính kèm theo SQL Server).
3.1.1.2.8. SQL Server Tools - Ðây là một bộ đồ nghề của người quản trị cơ sở dữ liệu (DBA )
Ái chà nếu kể chi tiết ra thì hơi nhiều đấy cho nên bạn cần đọc thêm trong books online. Ở đây người viết chỉ kể ra một vài công cụ thông dụng mà thôi.
Ðầu tiên phải kể đến Enterprise Manager. Ðây là một công cụ cho ta thấy toàn cảnh hệ thống cơ sở dữ liệu một cách rất trực quan. Nó rất hữu ích đặc biệt cho người mới học và không thông thạo lắm về SQL.
Kế đến là Query Analyzer. Ðối với một DBA giỏi thì hầu như chỉ cần công cụ này là có thể quản lý cả một hệ thống database mà không cần đến những thứ khác. Ðây là một môi trường làm việc khá tốt vì ta có thể đánh bất kỳ câu lệnh SQL nào và chạy ngay lập tức đặc biệt là nó giúp cho ta debug mấy cái stored procedure dễ dàng.
Công cụ thứ ba cần phải kể đến là SQL Profiler. Nó có khả năng "chụp" (capture) tất cả các sự kiện hay hoạt động diễn ra trên một SQL server và lưu lại dưới dạng text file rất hữu dụng trong việc kiểm soát hoạt động của SQL Server.
Ngoài một số công cụ trực quan như trên chúng ta cũng thường hay dùng osql và bcp (bulk copy) trong command prompt.
3.1.1.3: Giới Thiệu Sơ Lược Về Transact SQL (T-SQL)
Transact-SQL là ngôn ngữ SQL mở rộng dựa trên SQL chuẩn của ISO (International Organization for Standardization) và ANSI (American National Standards Institute) được sử dụng trong SQL Server khác với P-SQL (Procedural-SQL) dùng trong Oracle.
Trong bài này chúng ta sẽ tìm hiểu sơ qua về T-SQL. Chúng được chia làm 3 nhóm:
3.1.1.3.1. Data Definition Language (DDL):
Ðây là những lệnh dùng để quản lý các thuộc tính của một database như định nghĩa các hàng hoặc cột của một table, hay vị trí data file của một database...thường có dạng
Create object_Name
Alter object_Name
Drop object_Name
Trong đó object_Name có thể là một table, view, stored procedure, indexes...
Ví dụ:
Lệnh Create sau sẽ tạo ra một table tên Importers với 3 cột CompanyID,CompanyName,Contact
USE Northwind
CREATE TABLE Importers(
CompanyID int NOT NULL,
CompanyName varchar(40) NOT NULL,
Contact varchar(40) NOT NULL
)
Lệnh Alter sau đây cho phép ta thay đổi định nghĩa của một table như thêm(hay bớt) một cột hay một Constraint...Trong ví dụ này ta sẽ thêm cột ContactTitle vào table Importers
USE Northwind
ALTER TABLE Importers
ADD ContactTitle varchar(20) NULL
Lệnh Drop sau đây sẽ hoàn toàn xóa table khỏi database nghĩa là cả định nghĩa của table và data bên trong table đều biến mất (khác với lệnh Delete chỉ xóa data nhưng table vẫn tồn tại).
USE Northwind
DROP TABLE Importers
3.1.1.3.2. Data Control Language (DCL):
Ðây là những lệnh quản lý các quyền truy cập lên từng object (table, view, stored procedure...). Thường có dạng sau:
Grant
Revoke
Deny
Ví dụ:
Lệnh sau sẽ cho phép user trong Public Role được quyền Select đối với table Customer trong database Northwind (Role là một khái niệm giống như Windows Group sẽ được bàn kỹ trong phần Security)
USE Northwind
GRANT SELECT
ON Customers
TO PUBLIC
Lệnh sau sẽ từ chối quyền Select đối với table Customer trong database Northwind của các user trong Public Role
USE Northwind
DENY SELECT
ON Customers
TO PUBLIC
Lệnh sau sẽ xóa bỏ tác dụng của các quyền được cho phép hay từ chối trước đó
USE Northwind
REVOKE SELECT
ON Customers
TO PUBLIC
3.1.1.3.3. Manipulation Language (DML):
Ðây là những lệnh phổ biến dùng để xử lý data như Select, Update, Insert, Delete
Ví dụ:
Select
USE Northwind
SELECT CustomerID, CompanyName, ContactName
FROM Customers
WHERE (CustomerID = 'alfki' OR CustomerID = 'anatr')
ORDER BY ContactName
Insert
USE Northwind
INSERT INTO Territories
VALUES (98101, 'Seattle', 2)
Update
USE Northwind
UPDATE Territories
SET TerritoryDescription = 'Downtown Seattle'
WHERE TerritoryID = 98101
Delete
USE Northwind
DELETE FROM Territories
WHERE TerritoryID = 98101
Vì phần này khá căn bản nên chúng tôi thiết nghĩ không cần giải thích nhiều. Chú ý trong lệnh Delete bạn có thể có chữ From hay không đều được.
Nhưng mà chúng ta sẽ chạy thử các ví dụ trên ở đâu?
Ðể chạy các câu lệnh thí dụ ở trên bạn cần sử dụng và làm quen với Query Analyser
Cú Pháp Của T-SQL:
Phần này chúng ta sẽ bàn về các thành phần tạo nên cú pháp của T-SQL
Identifiers
Ðây chính là tên của các database object. Nó dùng để xác định một object. (Chú ý khi nói đến Object trong SQL Server là chúng ta muốn đề cập đến table, view, stored procedure, index.....Vì hầu như mọi thứ trong SQL Server đều được thiết kế theo kiểu hướng đối tượng (object-oriented)). Trong ví dụ sau TableX, KeyCol, Description là những identifiers
CREATE TABLE TableX
(KeyCol INT PRIMARY KEY, Description NVARCHAR(80))
Có hai loại Identifiers một loại thông thường (Regular Identifier) và một loại gọi là Delimited Identifier, loại này cần có dấu "" hay dấu [] để ngăn cách. Loại Delimited được dùng đối với các chữ trùng với từ khóa của SQL Server (reserved keyword) hay các chữ có khoảng trống.
Ví dụ:
SELECT * FROM [My Table]
WHERE [Order] = 10
Trong ví dụ trên chữ Order trùng với keyword Order nên cần đặt trong dấu ngoặc vuông [].
Variables (Biến)
Biến trong T-SQL cũng có chức năng tương tự như trong các ngôn ngữ lập trình khác nghĩa là cần khai báo trước loại dữ liệu trước khi sử dụng. Biến được bắt đầu bằng dấu @ (Ðối với các global variable thì có hai dấu @@)
Ví dụ:
USE Northwind
DECLARE @EmpIDVar INT
SET @EmpIDVar = 3
SELECT * FROM Employees
WHERE EmployeeID = @EmpIDVar + 1
Functions (Hàm)
Có 2 loại hàm một loại là built-in và một loại user-defined
Các hàm Built-In được chia làm 3 nhóm:
Rowset Functions : Loại này thường trả về một object và được đối xử như một table. Ví dụ như hàm OPENQUERY sẽ trả về một recordset và có thể đứng vị trí của một table trong câu lệnh Select.
Aggregate Functions : Loại này làm việc trên một số giá trị và trả về một giá trị đơn hay là các giá trị tổng. Ví dụ như hàm AVG sẽ trả về giá trị trung bình của một cột.
Scalar Functions : Loại này làm việc trên một giá trị đơn và trả về một giá trị đơn. Trong loại này lại chia làm nhiều loại nhỏ như các hàm về toán học, về thời gian, xử lý kiểu dữ liệu String....Ví dụ như hàm MONTH('2002-09-30') sẽ trả về tháng 9.
Các hàm User-Defined (được tạo ra bởi câu lệnh CREATE FUNCTION và phần body thường được gói trong cặp lệnh BEGIN...END) cũng được chia làm các nhóm như sau:
Scalar Functions : Loại này cũng trả về một giá trị đơn bằng câu lệnh RETURNS.
Table Functions : Loại này trả về một table
Data Type (Loại Dữ Liệu)
Các loại dữ liệu trong SQL Server sẽ được bàn kỹ trong các bài sau
Expressions
Các Expressions có dạng Identifier + Operators (như +,-,*,/,=...) + Value
Các thành phần Control-Of Flow
Như BEGIN...END, BREAK, CONTINUE, GOTO, IF...ELSE, RETURN, WHILE.... Xin xem thêm Books Online để biết thêm về các thành phần này.
Comments (Chú Thích)
T-SQL dùng dấu -- để đánh dấu phần chú thích cho câu lệnh đơn và dùng /*...*/ để chú thích cho một nhóm
Thực Thi Các Câu Lệnh SQL
Thực thi một câu lệnh đơn:
Một câu lệnh SQL được phân ra thành các thành phần cú pháp như trên bởi một parser, sau đó SQL Optimizer (một bộ phận quan trọng của SQL Server) sẽ phân tích và tìm cách thực thi (Execute Plan) tối ưu nhất ví dụ như cách nào nhanh và tốn ít tài nguyên của máy nhất... và sau đó SQL Server Engine sẽ thực thi và trả về kết quả.
Thực Thi một nhóm lệnh (Batches)
Khi thực thi một nhóm lệnh SQL Server sẽ phân tích và tìm biện pháp tối ưu cho các câu lệnh như một câu lệnh đơn và chứa execution plan đã được biên dịch (compiled) trong bộ nhớ sau đó nếu nhóm lệnh trên được gọi lại lần nữa thì SQL Server không cần biên dịch mà có thể thực thi ngay điều này giúp cho một batch chạy nhanh hơn.
Lệnh GO
Lệnh này chỉ dùng để gởi một tín hiệu cho SQL Server biết đã kết thúc một batch job và yêu cầu thực thi. Nó vốn không phải là một lệnh trong T-SQL.
3.1.2 Xây dựng các bảng cơ sở dữ liệu trên sql 2005
* Bảng hồ sơ nhân viên
* Bảng lương
* Bảng phòng ban
* Bảng tbUserID
* Bảng tbPermisson
* Bảng tbModule
3.1.3 Relationships
* Như chúng ta đã biết đối với hệ quản trị csdl acces chúng ta vẽ mô hình quan hệ Relationships theo cách thủ công kéo thả từ cac bảng, nhưng đối sql 2005 đã hỗ trợ Relationships bằng cách dùng khoá.
Hình ảnh minh hoạ cách dùng Relationships bằng khoá
* Design một bảng lên ví dụ Bảng tbHSNV ấn vào biểu t ượng Relationships
* Hiện một from f oreign key Relationships
* Chọn Tables And columns specification
* Hiện from
* Tiếp đó chọn khoá chính và khoá ngoại
* Chú ý để Relationships có thể tự động insert và update lên các bảng cần chon vào :
* Phần Insert And Update specification mục
* Delete Rule chon cascade
* Update Rule chon cascade
Thế là ta đã có Relationships của bảng (FK_tbBangLuong_tbHSNV) các bảng khác làm tương tự
3.1.4. Viết thủ tục.
SQL Server 2005 cho phép người dùng viết sẵn các thủ tục (Procedure) như thêm, sửa, xoá dữ liệu trong các bảng để người dung chỉ việc gọi thủ tục đó mỗi khi cần dung đến.
Cấu trúc của một thủ tục:
[Biến truyền vào 1], [Biến truyền vào 2],…
Khi người dùng cần gọi thủ tục nào thì chỉ cần gọi thủ tục đó bằng câu lệnh EXEC [Biến truyền vào 1], [Biến truyền vào 2],….
Sau đây là Code một số thủ tục:
* Procedure thêm, sửa, xoá dữ liệu trong bảng tbHSNV
USE [CSDL]
GO
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER Proc [dbo].[ttHSNV]
@_DuaVao char(1)='',
@_MaNV nchar(10)='',
@_TenNV nchar(20)='',
@_NgaySinh smalldatetime = '01/01/1990',
@_ChucVu nchar(20)='',
@_MaPB nchar(10)='',
@_SoTaiKhoan numeric(18,0) = 0,
@_QueQua nchar(50)='',
@_ChoOHienTai nchar(50)='',
@_GioiTinh nchar(10)= ''
AS
BEGIN
IF @_DuaVao='N'
BEGIN
insert into tbHSNV (manv,tennv,ngaysinh,chucvu,MaPB,sotaikhoan,quequan,choohientai,GioiTinh)
values (@_MaNV,@_TenNV,@_NgaySinh,@_ChucVu,@_MaPB,@_SoTaiKhoan ,@_QueQua,@_ChoOHienTai,@_GioiTinh)
END
If @_DuaVao='S'
BEGIN
update tbHSNV
set MaNV=@_MaNV,TenNV=@_TenNV,NgaySinh=@_NgaySinh,ChucVu=@_ChucVu,MaPB=@_MaPB,SoTaiKhoan=@_SoTaiKhoan,QueQuan=@_QueQua,ChoOHienTai=@_ChoOHienTai,GioiTinh = @_GioiTinh
where MaNV=@_MaNV
END
IF @_DuaVao='X'
delete from tbHSNV
where MaNV=@_MaNV
END
3.1.1.4.1 Các thủ tục báo cáo:
Việc tạo các báo cáo trong SQL Server 2005 tương đối thuận tiện bằng cách truy vấn tạo ra các bảng tự định nghĩa. Sau đó dùng câu truy vấn để SELECT dữ liệu từ các bảng tạm đó và công việc còn lại là đưa dữ liệu sang Report.
Ví dụ Code viết cho báo cáo bảng lương tháng
ALTER proc [dbo].[BT]
@_DuaVao char(1)=''
As
IF @_DuaVao='N'
SELECT a.MaNV AS MANV,a.TenNV AS TenNV,a.ChucVu AS ChucVu,b.LuongCoBan AS LuongCoBan,b.HeSoLuong AS heSoluong,b.HeSoTrachNhiem as HeSoTrachNhiem,
b.PhuCap AS PhuCap,b.Thuong AS Thuong,b.Phat AS Phat,(luongCoBan *(HesoLuong+HeSoTrachNhiem))*0.5 AS BHXH,(luongCoBan * (HesoLuong+HeSoTrachNhiem))*0.1 AS BHYT,
(luongCoBan * (HesoLuong+HeSoTrachNhiem))*0 AS KPCD,
CASE
WHEN
(((luongCoBan*(HesoLuong+HeSoTrachNhiem))+PhuCap+Thuong+phat))>5000000
THEN
((luongCoBan*(HesoLuong+HeSoTrachNhiem))+(PhuCap+Thuong+phat))*0.5
Else ((luongCoBan*(HesoLuong+HeSoTrachNhiem))+(PhuCap+Thuong+phat))*0 END AS TTNCN,
((luongCoBan *(HesoLuong+HeSoTrachNhiem))+(PhuCap+Thuong+phat)) AS ThucLinh
into tbBT
FROM tbHSNV a,tbBangLuong b
IF @_DuaVao='X'
DROP TABLE TBBT
3.2 Xây dựng giao diện.
Ý tưởng: Thiết kế chương trình với giao diện giản dị, thân thiện,có thể thêm chỉnh sửa xoá . Sau đây là hình minh hoạ một số Form điển hình.
-Form Đăng nhập (frmbaomat): Kiểm tra tên NSD và mật khẩu, nếu chính xác thì cho phép đăng nhập hệ thống và phân quyền, nếu không chính xác thỉ thông báo và không cho đăng nhập vào hệ thống:
-Form Bảng lương (frmBangLuong) lưu chi tiết các thuộc tính của từng nhân viên
-Form Hồ Sơ Nhân Viên (frmHSNV) lưu tất các các thông tin về nhân viên trong công ty
- FROM (frmHSNV)
3.3. Viết Code:
-Ý tưởng: Viết sẵn các thủ tục, hàm dùng chung, khai báo “Public”các biến dùng chung, nhiều lần trên các Module.bas để khi viết Code cho các form ta chỉ việc gọi chúng. Ví dụ Code viết trên from frmHSNV
* Khai báo cáo biến dùng chung trên Module.bas khi nào cần lấy thì chỉ việc gọi ra
B/ Các thủ tục và hàm trongModule.bas
* Option Explicit
Public conn As New ADODB.Connection
Public rsKQ As New ADODB.Recordset
Public Flag As String
Public giUserID%
Public gsQLNSD$, gsCNHSNV$, gsCNBL$
Public gsCNPB$, gsCNNSD$, gsCNPQ$, gsCNCNCT$
Public gsReport$
* Thủ tục kết nối dữ liệu và đóng kết nối
Public Sub Connection(M_severname As String, M_Database As String)
Dim strconn As String
strconn = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;"
strconn = strconn & "Initial Catalog=" & "CSDL" & ";Data Source=" & "LAPNT"
conn.Open strconn
End Sub
Public Sub CloseConnection()
conn.Close
Set conn = Nothing
End Sub
* Hàm lấy mẩu tin recordset và đóng
Public Function GetRS(strTables, strFields, strCondition, strSort) As ADODB.Recordset
strSQL = "SELECT " & strFields & " FROM " & strTables
If Trim(strCondition) "" Then
strSQL = strSQL & " WHERE " & strCondition
End If
If Trim(strSort) "" Then
strSQL = strSQL & " ORDER BY " & strSort
End If
RS.Open strSQL, Conn
Set GetRS = RS
End Function
Public Sub CloseRecordset()
rsKQ.Close
Set rsKQ = Nothing
End Sub
* Thủ tục tự động khoá /mở các điều khiển nhập dữ liệu từ bàn phím hay chuột với tham số vFlag tuỳ chọn
Public Sub lockthecontrols(blocked As Boolean, Optional vflag As String)
Dim i%
With Screen.ActiveForm
For i = 0 To .Controls.Count - 1
If (.Controls(i).Tag = 1) Then
If (TypeOf .Controls(i) Is TextBox) Then
If (blocked) Then
.Controls(i).Enabled = False
.Controls(i).BackColor = vbWhite
Else
.Controls(i).Enabled = True
.Controls(i).BackColor = &HFFC0C0
End If
If vflag = "X" Then
.Controls(i) = ""
End If
End If
If (TypeOf .Controls(i) Is VSFlexGrid) Then
If (blocked) Then
.Controls(i).Editable = flexEDNone
.Controls(i).Editable = vbWhite
Else
.Controls(i).Editable = flexEDKbdMouse
.Controls(i).Editable = vbYellow
End If
End If
End If
Next i
End With
End Sub
A / Viết code một from tiêu biểu
*** FROM (frmHSNV)
* Private Sub Form_Activate()
Call lockthecontrols(True)
vsf.Editable = flexEDNone
cmd(0).SetFocus
vsftrue
lstManv.Visible = False
cmdManv.Visible = False
lstmapb.Visible = False
cmdmapb.Visible = False
End Sub
* Private Sub Form_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
SendKeys "{Tab}"
End If
End Sub
Private Sub lstmanv_Click()
txt(0) = lstManv.Text
End Sub
* Private Sub cmdmanv_Click()
If lstManv.Visible = False Then
lstManv.Visible = True
lstManv.SetFocus
Else
lstManv.Visible = False
End If
End Sub
Private Sub vsftrue()
vsf.Cols = 9
vsf.FixedCols = 0
vsf.Rows = 17
vsf.FixedRows = 1
vsf.ColWidth(0) = 1500
vsf.ColWidth(1) = 1500
vsf.ColWidth(2) = 1000
vsf.ColWidth(3) = 1200
vsf.ColWidth(4) = 1400
vsf.ColWidth(5) = 1200
vsf.ColWidth(6) = 1500
vsf.ColWidth(7) = 1500
vsf.ColWidth(8) = 500
vsf.ExtendLastCol = True
vsf.Cell(flexcpText, 0, 0) = "M· nh©n viªn"
vsf.Cell(flexcpText, 0, 1) = "Tªn nh©n viªn"
vsf.Cell(flexcpText, 0, 2) = "Ngµy sinh"
vsf.Cell(flexcpText, 0, 3) = "Chøc vô"
vsf.Cell(flexcpText, 0, 4) = "M· Phßng Ban"
vsf.Cell(flexcpText, 0, 5) = "Sè tµi kho¶n"
vsf.Cell(flexcpText, 0, 6) = "Quª qu¸n"
vsf.Cell(flexcpText, 0, 7) = "Chç ¬ hiªn t¹i"
vsf.Cell(flexcpText, 0, 8) = "GiíitÝnh"
vsf.Cell(flexcpBackColor, 0, 0, 0, 8) = &H80000013
vsf.Cell(flexcpForeColor, 0, 0, 0, 8) = vbBlue
vsf.Cell(flexcpFontBold, 0, 0, 0, 8) = True
vsf.Cell(flexcpAlignment, 0, 0, 0, 6) = flexAlignLeftCenter
vsf.Cell(flexcpAlignment, 0, 0, 0, 8) = flexAlignLeftCenter
vsf.Cell(flexcpAlignment, 0, 4, 0, 8) = flexAlignRightCenter
vsf.BackColorSel = vbBlue
vsf.SelectionMode = flexSelectionByRow
vsf.ColAlignment(0) = flexAlignCenterCenter
vsf.ColAlignment(1) = flexAlignCenterCenter
vsf.ColAlignment(2) = flexAlignCenterCenter
vsf.ColAlignment(3) = flexAlignCenterCenter
vsf.ColAlignment(4) = flexAlignCenterCenter
vsf.ColAlignment(5) = flexAlignCenterCenter
vsf.ColAlignment(6) = flexAlignCenterCenter
vsf.ColAlignment(7) = flexAlignCenterCenter
vsf.ColAlignment(8) = flexAlignCenterCenter
End Sub
* Private Sub lstmanv_DblClick()
Call lockthecontrols(False)
lstManv.Visible = False
vsf.Editable = flexEDKbdMouse
lstManv.Visible = False
Dim strFields$, i%
strFields = "manv,tennv,ngaysinh,chucvu,MaPB,sotaikhoan,quequan,choohientai,gioitinh"
'vsf.Clear
Call Connection("USER\SQLEXPRESS", "CSDL")
Set rsKQ = GetRs("tbHSNV", strFields, "", "")
i = 0
Do Until rsKQ.EOF
i = i + 1
vsf.TextMatrix(i, 0) = rsKQ("manv")
vsf.TextMatrix(i, 1) = rsKQ("tennv")
vsf.TextMatrix(i, 2) = rsKQ("ngaysinh")
vsf.TextMatrix(i, 3) = rsKQ("chucvu")
vsf.TextMatrix(i, 4) = rsKQ("MaPB")
vsf.TextMatrix(i, 5) = rsKQ("sotaikhoan")
vsf.TextMatrix(i, 6) = rsKQ("quequan")
vsf.TextMatrix(i, 7) = rsKQ("choohientai")
vsf.TextMatrix(i, 8) = rsKQ("gioitinh")
rsKQ.MoveNext
Loop
CloseRecordset
CloseConnection
txt(0).Enabled = False
cmdManv.Visible = False
lstManv.Visible = False
vsf.SetFocus
End Sub
* Private Sub lstmanv_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
lstManv.Visible = False
lstManv.Visible = False
Dim strFields$, i%
strFields = "manv,tennv,ngaysinh,chucvu,MaPB,sotaikhoan,quequan,choohientai,gioitinh"
'vsf.Clear
Call Connection("USER\SQLEXPRESS", "CSDL")
Set rsKQ = GetRs("tbHSNV", strFields, "", "")
i = 0
Do Until rsKQ.EOF
i = i + 1
vsf.TextMatrix(i, 0) = rsKQ("manv")
vsf.TextMatrix(i, 1) = rsKQ("tennv")
vsf.TextMatrix(i, 2) = rsKQ("ngaysinh")
vsf.TextMatrix(i, 3) = rsKQ("chucvu")
vsf.TextMatrix(i, 4) = rsKQ("MaPB")
vsf.TextMatrix(i, 5) = rsKQ("sotaikhoan")
vsf.TextMatrix(i, 6) = rsKQ("quequan")
vsf.TextMatrix(i, 7) = rsKQ("choohientai")
vsf.TextMatrix(i, 8) = rsKQ("gioitinh")
rsKQ.MoveNext
Loop
CloseRecordset
CloseConnection
Call lockthecontrols(False)
txt(0).Enabled = False
cmdManv.Visible = False
lstManv.Visible = False
vsf.Editable = flexEDKbdMouse
vsf.SetFocus
End If
End Sub
* Private Sub lstmapb_DblClick()
txt(4) = lstmapb.Text
txt(5).SetFocus
lstmapb.Visible = False
End Sub
* Private Sub lstMaPB_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
txt(4) = lstmapb.Text
txt(5).SetFocus
lstmapb.Visible = False
End If
End Sub
Private Sub vsf_Click()
Dim i%
For i = 0 To 8
txt(i) = vsf.TextMatrix(vsf.Row, i)
Next i
End Sub
* Private Sub vsf_AfterEdit(ByVal Row As Long, ByVal Col As Long)
If vsf.Col < vsf.Cols - 2 Then
vsf.Col = vsf.Col + 1
ElseIf vsf.Row < vsf.Rows - 2 Then
vsf.Row = vsf.Row + 1
vsf.Col = 0
End If
End Sub
* Private Sub cmd_Click(Index As Integer)
Select Case Index
Case 0 'nut nhap
cmdmapb.Visible = True
Call lockthecontrols(False, "X")
Flag = "N"
txt(0).SetFocus
vsf.Editable = flexEDKbdMouse
Case 1 'nut ghi
'GHI MOI
Dim strexecute As String
If Flag = "N" Then
Call Connection("USER\SQLEXPRESS", "CSDL")
strexecute = "execute ttHSNV" + "'N','" & txt(0) & "','" & txt(1) & "','" & txt(2) & "','" & txt(3) & "','" & txt(4) & "'," & txt(5) & ",'" & txt(6) & "','" & txt(7) & "','" & txt(8) & "'"
conn.Execute strexecute
CloseConnection
cmd(0).SetFocus
Call lockthecontrols(True)
End If
'GHI SUA
If Flag = "S" Then
'vsf.Clear
Call Connection("USER\SQLEXPRESS", "CSDL")
strexecute = "execute ttHSNV" + "'S','" & txt(0) & "','" & txt(1) & "','" & txt(2) & "','" & txt(3) & "','" & txt(4) & "'," & txt(5) & ",'" & txt(6) & "','" & txt(7) & "','" & txt(8) & "'"
conn.Execute strexecute
CloseConnection
cmd(0).SetFocus
Call lockthecontrols(True)
End If
'GHI XOA
If Flag = "X" Then
'vsf.Clear
Call Connection("USER\SQLEXPRESS", "CSDL")
strexecute = "execute ttHSNV " + "'X','" & txt(0) & "'"
conn.Execute strexecute
CloseConnection
cmd(0).SetFocus
Call lockthecontrols(True)
End If
Case 2 'nut sua
Call Connection("USER\SQLEXPRESS", "CSDL")
Flag = "S"
Set rsKQ = GetRs("tbhsnv", "MaNV", "", "")
lstManv.Clear
Do Until rsKQ.EOF
lstManv.AddItem rsKQ("MaNV")
rsKQ.MoveNext
Loop
CloseRecordset
CloseConnection
cmdManv.Visible = True
cmdManv.SetFocus
Case 3
' nut xoa
Call Connection("USER\SQLEXPRESS", "CSDL")
Flag = "X"
Set rsKQ = GetRs("tbhsnv", "MaNV", "", "")
lstManv.Clear
Do Until rsKQ.EOF
lstManv.AddItem rsKQ("MaNV")
rsKQ.MoveNext
Loop
CloseRecordset
CloseConnection
cmdManv.Visible = True
cmdManv.SetFocus
Case 4
Unload Me
End Select
End Sub
Private Sub txt_Validate(Index As Integer, Cancel As Boolean)
Select Case Index
* Private Sub cmdmaPB_Click()
Call Connection("LAPNT", "CSDL")
Set rsKQ = GetRs("tbPhongBan", "MaPB", "", "")
lstmapb.Clear
Do Until rsKQ.EOF
lstmapb.AddItem rsKQ("MaPB")
rsKQ.MoveNext
Loop
CloseRecordset
CloseConnection
cmdmapb.Visible = True
'lstmanv.SetFocus
If lstmapb.Visible = False Then
lstmapb.Visible = True
lstmapb.SetFocus
Else
lstmapb.Visible = False
End If
End Sub
Case 0
If txt(0) "" Then
txt(1).SetFocus
Else
Cancel = True
End If
Case 1
If txt(1) "" Then
txt(2).SetFocus
Else
Cancel = True
End If
Case 2
If txt(2) "" Then
If Not IsDate(txt(2)) Then
txt(2) = ""
Cancel = True
Else
txt(2) = Format(txt(2), "mm/dd/yyyy")
txt(3).SetFocus
End If
Else
Cancel = True
End If
Case 3
If txt(3) "" Then
txt(4).SetFocus
Else
Cancel = True
End If
Case 4
If txt(4) "" Then
txt(5).SetFocus
Else
Cancel = True
End If
Case 5
If IsNumeric(txt(5)) Then
txt(6).SetFocus
Else
txt(5) = ""
Cancel = True
End If
Case 6
If txt(6) "" Then
txt(7).SetFocus
Else
Cancel = True
End If
Case 7
If txt(7) "" Then
txt(8).SetFocus
Else
Cancel = True
End If
Case 8
If txt(8) "" Then
cmd(1).SetFocus
Else
Cancel = True
End If
End Select
End Sub
3.4. CÀI ĐẶT VÀ SỬ DỤNG CHƯƠNG TRÌNH.
3.4.1. Cài đặt chương trình.
- Chương trình sử dụng cơ sở dữ liệu SQL Server 2005 nên bắt buộc phải cài SQL Server 2005 trên máy tính. Sau đó chạy file Setup.exe trong đĩa CD-Rom DEMO để cài chương trình theo hướng dẫn cụ thể.
3.4.2. Sử dụng chương trình.
- Chương trình được thiết kế giúp người dùng dễ dàng sử dụng với hệ thống Menu và form Main.
- Người quản lí có quyền quản lý NSD để thêm, sửa, xoá, phân quyền cho những người sử dụng khác
- Trên các form hiển thị dữ liệu, người dùng có thể chọn thêm sửa xoá bằng cách sau:
+ Dùng các nút thêm, sửa, xoá trên form.
3.4.3 Ưu Điểm
- Thiết kế giao diện người dùng trên ngôn ngữ lập trình Visual Basic 6.0 với ý tưởng kiểm soát tốt cách hiển thị của các giao diện làm việc: Người dùng chỉ có thể chuyển sang giao diện làm việc khác khi quay về giao diện chính của chương trình.
- Cơ sở dữ liệu của chương trình được xây dựng trên hệ quản trị cơ sở dữ liệu SQL Server 2005 làm việc tốt trên môi trường mạng với khối lượng dữ liệu lớn.
- Quy trình làm việc với phần mềm sát với công việc thực tế của kế toán vật tư và giúp giảm bớt sức lao động cho con người.
3.4.4. NHƯỢC ĐIỂM.
- Vì thời gian thực tập ngắn nên chương trình được thiết kế vẫn chưa đáp ứng được hết các yêu cầu của công tác kế tiền lương. Không kiểm soát các chứng từ gốc, chưa làm được tất cả các báo cáo của kế toán vật tư.
- Ngôn ngữ lập trình Visual Basic 6.0 là ngôn ngữ hỗ trợ không nhiều về kế toán và môi trường mạng như các ngôn ngữ C# hay VB.NET nên chương trình được thiết kế chưa thể đạt được tính chuyên nghiệp cao.
- Chương trình còn ứng dụng ít.
3.4.5. ĐỊNH HƯỚNG PHÁT TRIỂN.
Vì công tác kế toán nói chung và kế toán tiền lương em sẽ cố gắng hoàn thiên chương trình của em trở thành một phần mềm kế toán chuyên nghiệp là có cơ sở thực tế. Trong tương lai em sẽ cố gắng học hỏi thêm các kiến thức về kế
- Sát với thực tế hơn, đáp ứng được yêu cầu ngày càng cao của công tác kế toán.
- Chuyển đối từ ngôn ngữ lập trình Visual Basic sang ngôn ngữ lập trình cấp cao hơn như C# hay VB.NET.
- Sau khi đã thiết kế “hoàn thiện” chương trình kế toán vật tư, em sẽ tiếp tục tìm hiểu và mở rộng chương trình của mình với các phân hệ kế toán khác như kế toán tiền lương, kế toán tiền mặt, kế toán chi phí và giá thành sản phẩm, kế toán tài sản cố định, hạch toán sản phẩm tiêu thụ và xác định kết quả kinh doanh.
PHẦN KẾT LUẬN
Qua hơn 02 tháng thực tập tại công ty TNHH T vÊn vµ thiÕt kÕ giao th«ng Ngäc ViÖt em đã cố gắng hết sức để học hỏi các kiến thức mới chưa được học ở trường để áp dụng vào đề tài. Tuy nhiên vì thời gian hơn 02 tháng thực tập là khoảng thời gian không dài cho một lượng kiến thức mới rất lớn. Càng học và tiếp xúc thực tế em càng nhận thấy những kiến thức hiểu biết của mình còn quá ít. Em đã cố gắng hết sức mình để hoàn thành tốt nhất đề tài thực tập của mình.
Em xin chân thành cảm ơn các thầy cô giáo của trường Cao đẳng Tài Chính Quản Tri Kinh Doanh đã mang đến cho em những kiến thức chuyên môn quý giá. Em xin chân thành cảm ơn sự tận tình giúp đỡ, dẫn dắt của thầy giáo §ç Minh Nam Em đã cố gắng áp dụng một cách tốt nhất những kiến thức lập trình thầy giáo đã truyền đạt cho em nhưng chắc chắn vẫn còn nhiều lỗi. Em mong nhận được sự đánh giá nhận xét của thầy.
Em xin cảm ơn công ty TNHH T vÊn vµ thiÕt kÕ giao th«ng Ngäc ViÖt đã tạo điều kiện giúp đỡ cho em hoàn thành chuyên đề thực tập kế toán tiền Lương. Em xin cảm ơn các anh chị trong công ty đã giúp đỡ tận tình và hướng dẫn em về hệ quản trị cơ sở dữ liệu SQL Server 2005 và các kiến thức chuyên ngành.
Em xin chân thành cảm ơn!
NHẬN XÉT VÀ CHO ĐIỂM CỦA GIÁO VIÊN HƯỚNG DẪN
………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………
Các file đính kèm theo tài liệu này:
- Xây dựng phần mềm kế toán quản lý tiền lương tại Công ty TNHH Tư Vấn Thiết Kế Giao thông Ngọc Việt.doc