Đề 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

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

doc106 trang | Chia sẻ: lvcdongnoi | Lượt xem: 2833 | Lượt tải: 2download
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:

  • docXâ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
Luận văn liên quan