Quản lý chi ngân sách

Tài liệu Quản lý chi ngân sách: ... Ebook Quản lý chi ngân sách

doc103 trang | Chia sẻ: huyen82 | Lượt xem: 1725 | Lượt tải: 0download
Tóm tắt tài liệu Quản lý chi ngân sách, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Lêi c¶m ¬n ________________ Tr­íc tiªn, em xin göi lêi c¶m ¬n tíi c¸c thÇy c« gi¸o Khoa Tin Häc Kinh TÕ – Tr­êng §¹i Häc Kinh TÕ Quèc D©n – nh÷ng ng­êi ®· nhiÖt t×nh d¹y dç, d×u d¾t vµ trang bÞ cho chóng em mét l­îng kiÕn thøc nÒn t¶ng vÒ Kinh tÕ vµ Tin häc trong 4 n¨m häc võa qua. Em xin bµy tá lßng c¶m ¬n tíi ThÇy gi¸o h­íng dÉn Th.S TrÇn C«ng UÈn và ThÇy gi¸o Phïng TiÕn H¶i ®· tËn t×nh chØ b¶o, gãp ý cho em trong suèt qu¸ tr×nh lµm luËn v¨n tèt nghiÖp nµy. Em xin ch©n thµnh c¶m ¬n Ban l·nh ®¹o cïng toµn thÓ c¸c anh chÞ lËp tr×nh viªn ë trung t©m phÇn mÒm vµ gi¶i ph¸p SDS thuéc c«ng ty MITEC, ®Æc biÖt em xin tá lßng biÕt ¬n tíi anh NguyÔn H¶i S¬n vµ anh Lª ThÕ B¶o ®· t¹o ®iÒu kiÖn gióp ®ì, h­íng dÉn, triÓn khai ®Ò tµi trong thêi gian thùc tËp t¹i trung t©m. Vµ cuèi cïng, xin ®­îc c¶m ¬n ®Õn gia ®×nh, b¹n bÌ vµ tËp thÓ líp Tin häc 41B – nh÷ng ng­êi ®· ®éng viªn, gióp ®ì, ®ãng gãp ý kiÕn ®Ó hoµn thµnh bµi luËn v¨n nµy. MÆc dï ®· cã nhiÒu cè g¾ng nh­ng do h¹n chÕ vÒ thêi gian vµ kinh nghiÖm nªn bµi luËn v¨n cña em kh«ng tr¸nh khái nh÷ng thiÕu sãt vÒ mÆt kü thuËt, mü thuËt. Do vËy, em rÊt mong nhËn ®­îc nh÷ng ý kiÕn ®ãng gãp, chØ b¶o ch©n thµnh cña c¸c ThÇy C«, c¸c Anh chÞ ®ång nghiÖp vµ B¹n bÌ víi mong muèn rót ra nh÷ng kinh nghiÖm cho b¶n th©n vµ ®Ó ®Ò tµi cña em ®­îc hoµn thiÖn h¬n n÷a trong t­¬ng lai. Hµ néi, th¸ng 05 n¨m 2003. Sinh viªn NguyÔn M¹nh TiÕn Môc lôc CH¦¥NG I GiíI THIÖU tæng quan n¬i thùc tËp c«ng ty øng dông tiÕn bé khoa häc vµ c«ng nghÖ MITEC I – Giíi thiÖu C«ng ty øng dông tiÕn bé khoa häc vµ c«ng nghÖ MITEC Tæng quan S¬ ®å tæ chøc Chøc n¨ng vµ nhiÖm vô LÜnh vùc ho¹t ®éng 4.1. ThiÕt kÕ, cung cÊp, cµi ®Æt vµ tÝch hîp hÖ thèng 4.2. ChuyÓn giao c«ng nghÖ 4.3. Ph¸t triÓn phÇn mÒm 4.4. §µo t¹o Nh÷ng thµnh tùu ®· ®¹t ®­îc 5.1. S¶n phÈm 5.1.1. PhÇn cøng 5.1.2. PhÇn mÒm 5.2. Kinh nghiÖm 5.3. Quan hÖ quèc tÕ II - H­íng ®Ò tµi nghiªn cøu Ch­¬ng ii c¬ së ph­¬ng ph¸p luËn cña ®Ò tµi I – HÖ thèng th«ng tin Mét sè kh¸i niÖm c¬ b¶n Vai trß cña HÖ thèng th«ng tin C¸c giai ®o¹n ®Ó x©y dùng mét hÖ thèng th«ng tin II – Ph©n tÝch & thiÕt kÕ hÖ thèng th«ng tin Môc ®Ých, yªu cÇu cña viÖc ph©n tÝch thiÕt kÕ hÖ thèng Giíi thiÖu mét sè ph­¬ng ph¸p ph©n tÝch thiÕt kÕ Lý do lùa chän ph­¬ng ph¸p ph©n tÝch vµ thiÕt kÕ cÊu tróc Kh¶o s¸t thùc tÕ Ph©n tÝch nghiÖp vô ThiÕt kÕ c¬ së d÷ liÖu III – Lùa chän c¸c c«ng cô lËp tr×nh: HÖ ®iÒu hµnh HÖ qu¶n trÞ c¬ së d÷ liÖu Ng«n ng÷ lËp tr×nh ph¸t triÓn ThiÕt kÕ b¸o c¸o Ch­¬ng iii x©y dùng ch­¬ng tr×nh qu¶n lý chi ng©n s¸ch I – Ph©n tÝch hÖ thèng Kh¶o s¸t vµ m« t¶ nghiÖp vô 2. S¬ ®å dßng d÷ liÖu 2.1. S¬ ®å møc khung c¶nh 2.2. S¬ ®å luång d÷ liÖu II – ThiÕt kÕ d÷ liÖu Tõ ®iÓn d÷ liÖu hÖ thèng M« h×nh quan hÖ thùc thÓ III – Mét sè l­u ®å thuËt to¸n sö dông trong ch­¬ng tr×nh. IV – Giíi thiÖu ch­¬ng tr×nh qu¶n lý chi ng©n s¸ch. Giíi thiÖu ch­¬ng tr×nh Yªu cÇu ®èi víi ch­¬ng tr×nh H­íng dÉn sö dông §¨ng nhËp ch­¬ng tr×nh Qu¶n lý hÖ thèng CËp nhËt c¸c ho¹t ®éng nghiÖp vô C¸c danh môc B¸o c¸o C¸c c«ng cô hç trî Trî gióp KÕt luËn Tµi liÖu tham kh¶o PHô LôC CH¦¥NG I GiíI THIÖU tæng quan n¬i thùc tËp C¤NG TY øng dông tiÕn bé khoa häc vµ c«ng nghÖ I – CÔNG TY ỨNG DỤNG TIẾN BỘ KHOA HỌC VÀ CÔNG NGHỆ 1. Tổng quan về MITEC: Công ty ứng dụng Tiến bộ Khoa học và Công nghệ có tên giao dịch trong tiếng anh: Moste’s Innovation Technology Corporation (gọi tắt là: MITEC), là một doanh nghiệp nhà nước được thành lập từ năm 1991 thuộc Viện nghiên cứu Công nghệ Quốc gia và nay trực thuộc Bộ Khoa học và Công nghệ. Năm 1991: là Liên hiệp Xí nghiệp sản xuất Công nghệ Vi điện tử - MITEC trực thuộc Viện nghiên cứu Vi điện tử - Viện Nghiên cứu Công nghệ Quốc gia. Năm 1992: chuyển thành Công ty Vi điện tử - MITEC trực thuộc Viện Nghiên cứu Công nghệ Quốc gia. Năm 1995: chuyển thành Công ty Vi điện tử - MITEC trực thuộc Bộ Khoa học Công nghệ và Môi trường. Năm 1996 đến nay: đổi tên thành Công ty Ứng dụng Tiến bộ Khoa học và Công nghệ MITEC trực thuộc Bộ KHCN & MT ( nay là Bộ khoa học và Công nghệ). MITEC là công ty hoạt động trong lĩnh vực Công nghệ thông tin tại Việt Nam, chuyên thiết kế và thương mại hoá các sản phẩm mới về Công nghệ tin học, thực hiện triển khai các hoạt động chuyển giao công nghệ và dịch vụ khoa học công nghệ ( như đào tạo, tư vấn, cung cấp thông tin,…) và là nhà phân phối sản phẩm chính thức của nhiều hãng nổi tiếng trên Thế giới (đặc biệt là hãng Fujitsu - Nhật bản). MITEC có trụ sở chính tại: 37 Trần Quốc Toản – Hoàn Kiếm – Hà Nội, Công ty có đội ngũ cán bộ, kỹ sư hùng hậu trên 70 người với trình độ cao, giàu kinh nghiệm và tâm huyết với nghề đã và đang xây dựng để MITEC trở thành một thương hiệu tin cậy trong làng Công nghệ thông tin tại Việt Nam. 2. Sơ đồ tổ chức: Để quản lý hiệu quả các lĩnh vực hoạt động trong công ty, MITEC đã phân chia thành các phòng ban và trung tâm có chức năng chuyên biệt nhau, mỗi bộ phận có trách nhiệm đảm nhận một nhiệm vụ riêng để cùng nhau chèo lái con tàu MITEC. SƠ ĐỒ TỔ CHỨC MITEC Ban giám đốc Phòng tổ chức hành chính Phòng Kế toán Các Trung tâm Văn phòng ĐD Miền Nam Trung tâm ứng dụng công nghệ tin học (CAPITEC) Trung tâm phát triển phần mềm và giải pháp (SDS) Trung tâm tư vấn chuyển giao công nghệ và môi trường Đôi nét giới thiệu các trung tâm của MITEC: · Trung tâm phát triển phần mềm và giải pháp – SDS ( Center for Software Development and Solution): Tổ chức triển khai và cung cấp giải pháp cho các dự án phần mềm tin học. Đội ngũ của Trung tâm là các lập trình viên chuyên nghiệp với gần 20 người và trong thời gian vừa qua em đã được tiếp nhận vào thực tập tại đây. · Trung tâm ứng dụng công nghệ tin học – CAPITEC (Center for Application Informatic Technology): Tổ chức triển khai, tư vấn, thiết kế và cung cấp các giải pháp về phần cứng, cơ sở hạ tầng cho công nghệ thông tin. · Trung tâm tư vấn chuyển giao công nghệ và môi trường (Department of Technology Transfer and Enviroment Consultation): Triển khai các hoạt động chuyển giao công nghệ và các dịch vụ khoa học công nghệ. 3. Chức năng và nhiệm vụ của MITEC: · Nghiên cứu, chuyển giao và ứng dụng các sản phẩm mới về công nghệ Tin Học. · Triển khai các hoạt động chuyển giao công nghệ và dịch vụ khoa học công nghệ. · Liên doanh, liên kết với các công ty trong và ngoài nước thực hiện các dự án lớn và xây dựng các cơ sở sản xuất tại Việt Nam. · Là nhà phân phối và bảo hành kỹ thuật cho các sản phẩm công nghệ cao của các tập đoàn lớn trên thế giới. 4. Lĩnh vực hoạt động: 4.1. Thiết kế, cung cấp, cài đặt và tích hợp hệ thống: Thiết kế và lắp đặt mạng LAN, WAN, VPN network. Thiết kế mạng có tính sẵn sàng cao, tốc độ, tính bảo mật, quản trị dễ dàng với giá cả hợp lý. Thiết lập mạng xí nghiệp, thư điện tử truy cập hệ thống qua proxy server. (dễ điều khiển, tính bảo mật cao, dùng chung modem và đường điện thoại nhằm giảm chi phí Internet). Tin học hoá hệ thống kinh doanh, nâng cao khả năng hoạt động và hiệu quả trong công việc với hệ thống phần mềm làm việc theo nhóm TeamWare và Microsoft Back Office. Tích hợp hệ thống thư điện tử văn phòng, quản lý tài liệu và các cơ sở tri thức. Tích hợp hệ thống MRP cho quản lý sản xuất, kế hoạch sản xuất  (các mô hình client - server, n-tiers hay thin client). Phát triển các ứng dụng B2C, B2B  và tích hợp các ứng này với hệ thống hỗ trợ khách hàng như hỗ trợ bán hàng, đăng ký khách sạn, đặt vé máy bay... Chuyển đổi các loại dữ liệu sang đa phương tiện internet nhằm hiển thị và tìm kiếm văn bản. Nghiên cứu và phát triển giải pháp thin client cho toàn bộ các ứng dụng client -server đang tồn tại. 4.2 Chuyển giao công nghệ: Cung cấp thiết bị: Công nghiệp điện năng, Phân phối điện, Truyền thông, Thử nghiệm, Đo lường, Kiểm tra kích cỡ thiết bị, Các hệ thống quan sát thời tiết tự động, Nghiên cứu, Đào tạo cơ khí, Y tế và chăm sóc sức khoẻ, Công cụ và thiết bị xây dựng, Thiết bị y tế & phòng thí nghiệm và môi trường, Thiết bị công nghiệp công nghệ cao, Thiết bị kiểm tra không có tính phá huỷ, Quản lý nước, Hệ thống tưới và chống ngập. Tư vấn: Tư vấn triển khai và quản lý dự án, Tư vấn đầu tư, Hợp tác lao động nước ngoài, Tư vấn môi trường và giải pháp bảo vệ môi trường, Hệ thống chống lãng phí. 4.3 Phát triển phần mềm: MITEC có đội ngũ kỹ sư phần mềm có chuyên môn cao, năng động, sáng tạo được đào tạo chính qui trong và ngoài nước cùng với các nhà quản lý dự án giàu kinh nghiệm. Các lĩnh vực phát triển phần mềm của MITEC: Tài chính: Ngân hàng, kế toán, thuế,… Bán hàng: quản lý xuất nhập, quản lý mua bán. Phát triển Internet: các giải pháp về thương mại điện tử. Lĩnh vực khác: Workflows, hiện đại hoá kinh doanh và phát triển các ứng dụng theo yêu cầu. Các nền ứng dụng: Windows 95 / 98 / NT / 2000. Unix ( Solaris, Unixware, Linux ) Các kỹ thuật và công nghệ: C, C++, Visual C++ Visual Basic Java PL/SQL Developer/2000 HTML, XML, SGML, VRML, WebCGI,… COM/DCOM, CORBA, ActiveX, MFC,… ODBC, JDBC, OLEDB,… Các công cụ phát triển: Microsoft Transaction Server Oracle Application Server Microsoft SQL Server Oracle Database Server Foxpro Microsoft Access 4.4 Đào tạo: MITEC cung cấp dịch vụ đào tạo trên diện rộng thông qua các buổi seminar, thông qua hình thức chuyển giao công nghệ, đào tạo trực tuyến. Chương trình giảng dạy bao gồm: - Đào tạo về hệ thống tin học ngân hàng hiện đại. - Đào tạo sử dụng các sản phẩm phần mềm của MITEC. - Đào tạo về lập trình Client Server và n-tiers. - Đào tạo về thiết kế và phát triển các ứng dụng Internet. 5. Những thành tựu đã đạt được: 5.1. Sản phẩm: 5.1.1. Phần cứng: Cung cấp các sản phẩm của chính hãng Fujitsu tại Việt Nam như: Các sản phẩm PC, Notebook, Unix Server: Fujitsu - DeskPower Fujitsu - LifeBook Fujitsu - Primergy Fujitsu - PrimePower Các sản phẩm OEM: Fujitsu – Scanner Fujitsu – Printer Fujitsu – MO Các thiết bị văn phòng: Fujitsu - LCD Projector Fujitsu - Plasma Display /Vision 5.1.2. Phần mềm: Những phần mềm sau đã hoàn thành và được đưa vào ứng dụng trong thực tế. Về Web & Interner: Phần mềm đấu thầu tín phiếu kho bạc Xây dựng các Website thương mại. Phần mềm thư viện điện tử ELIB 2.0 Về Management Software: Hệ thống đặt chỗ bán vé tàu địa phương Phần mềm quản lý nhân sự - MHRMSoft 2.0 Phần mềm quản lý lương - PAYROLL 2.5 Phần mềm kế toán doanh nghiệp – ACCSoft 4.5 Phần mềm kế toán hành chính sự nghiệp – ACCSoft 4.5 Phần mềm chấm công – TIME ATTENDANCE 2.0 5.2. Kinh nghiệm: Từ năm 1993 đến nay, MITEC là nhà cung cấp và bảo hành hệ thống tin học cho Ngân hàng nhà nước Việt Nam kể từ Trung ương đến địa phương. MITEC là công ty đầu tiên xây dựng các hệ thống máy rút tiền tự động ATM tại các ngân hàng VIETCOM BANK, HONGKONG BANK, ANZ BANK và CITI BANK. MITEC đã thiết kế, xây dựng các hệ thống thông tin cho các nhà máy: HONDA Vietnam, FUJITSU, OHMI Vietnam, PENTAX Vietnam, SHOWPLAS..., Trường cao đẳng Công nghiệp 4, Trường cao đẳng Công nghiệp 1, Trung tâm Tin học khu công nghệ cao Hoà Lạc, ... MITEC đã cung cấp các sản phẩm tin học cũng như các hệ thống thông tin cho các cơ quan và tổ chức nước ngoài như: dự án JICA, văn phòng NTT, văn phòng JT, UNDP, UNPA, EC... MITEC đã cung cấp các thiết bị tin học, xây dựng hệ thống mạng thông tin phục vụ các dự án thuộc Tổng công ty Bưu chinh viễn thông VNPT và Tổng cục thống kê. MITEC cũng triển khai các hệ thống CLUSTERING tại Cục Công nghệ Tin học ngân hàng, Ngân hàng Công thương Việt Nam, Tổng công ty Bưu chính viễn thông (VNPT). Cung cấp và chuyển giao các hệ thống máy chủ UNIX-SPARC cho Bưu điện Hà Nội. 5.3. Quan hệ quốc tế: Từ năm 1995, MITEC được uỷ quyền là Nhà Phân phối và Cung cấp các dịch vụ sau bán hàng, Hỗ trợ và Bảo hành Bảo trì cho các sản phẩm tin học của FUJITSU tại Việt Nam. (Bao gồm các sản phẩm PC, Notebook, IA Server, UNIX Server, các sản phẩm OEM như Scaner, MO, Printer, các thiết bj văn phòng như màn hình PLASMA 42"/51"/60", máy chiếu LCD...). MITEC cũng cùng FUJITSU tham gia các dự án về Công nghệ thông tin tại Việt Nam. MITEC là đại lý phân phối và hỗ trợ kỹ thuật các sản phẩm CLUSTER của tập đoàn VERITAS. MITEC đã ký liên minh với ORACLE Việt Nam về việc phân phối và hỗ trợ kỹ thuật sản phẩm ORACLE tại Việt Nam. MITEC là đối tác của tập đoàn AT&T (nay là NCR) cho các hệ thống chuyển mạch lớn và các giải pháp về hệ thống máy rút tiền tự động - ATM. MITEC cũng có quan hệ thương mại và kỹ thuật với nhiều công ty lớn trên thế giới như FUJI XEROX, MITSUI, SUN. ____________________ II - Giới thiệu đề tài nghiên cứu: 1. Lý do lựa chọn đề tài: Ngày nay, trên thế giới cũng như ở nước ta, Tin học là một ngành mũi nhọn đã và đang thâm nhập vào mọi lĩnh vực của đời sống kinh tế xã hội và đặc biệt là trong công tác quản lý. Sự góp mặt của Tin học trong công tác quản lý đã làm nhẹ đi sự tham gia của con người, đảm bảo thông tin quản lý chính xác để đem lại hiệu quả kinh tế cũng như tiết kiệm được thời gian, công sức so với việc làm quản lý thủ công trên giấy tờ như trước đây. Điều dễ nhận thấy là nó giảm được không gian lưu trữ, tránh được sự thất lạc, mất mát dữ liệu mà nó còn có khả năng tự động hóa hệ thống, cụ thể hoá các lượng thông tin theo nhu cầu của con người. Khả năng của tin học và máy tính là vô hạn, sự kết hợp giữa máy tính và các phần mềm hệ thống giúp chúng ta xây dựng các chương trình ứng dụng theo những gì mà ta mong muốn. Thông qua tìm hiểu việc sử dụng ngân sách tại một số cơ quan nhà nước thì hiện tại đa số các cơ quan này còn sử dụng hình thức quản lý chi tiêu ngân sách thủ công trên giấy tờ hoặc sử dụng chương trình bảng tính Excel để thực hiện việc tính toán và quản lý công việc chi tiêu ngân sách tại đơn vị mình. Việc quản lý như vậy sẽ mất rất nhiều công sức, thời gian và nhiều khi còn bị nhầm lẫn. Nhận thấy vấn đề đó có thể giải quyết được bằng cách viết một chương trình nhằm tự động tự hoá khâu tính toán để làm giảm bớt những vất vả của người làm tài chính tại các cơ quan sử dụng ngân sách đã nói ở trên. Em quyết định lựa chọn đề tài: “Khảo sát, Phân tích thiết kế và Xây dựng chương trình quản lý chi ngân sách”. Kí hiệu viết tắt của chương trình: QLCNS v1.0 Cùng thời gian này, em - một sinh viên Khoa Tin học kinh tế được công ty MITEC tiếp nhận vào thực tập tại trung tâm phần mềm và giải pháp SDS. Tại đây em được giám đốc trung tâm - Anh Nguyễn Hải Sơn đã tạo mọi điều kiện thuận lợi để em hoàn thành đề tài này. 2. Bài toán đặt ra: Bài toán đặt ra tại đơn vị sử dụng ngân sách của nhà nước (cấp quận, huyện), đầu năm phòng tài chính (quận, huyện) sẽ có thông báo về tình hình cung cấp tài chính cho đơn vị theo từng giai đoạn, đơn vị hàng tháng đến lĩnh tiền từ kho bạc nhà nước theo kế hoạch mà phòng tài chính đã định cho các loại khoản mục nào, đến cuối mỗi tháng / quí / năm thì đơn vị sẽ phải nộp các báo cáo tổng kết về tình hình chi tiêu ngân sách mà đơn vị đã sử dụng cho kho bạc quản lý đơn vị mình. Ngoài các vấn đề cơ bản trên, chương trình phải tự động hoá việc tổng hợp, tính toán các số liệu theo loại, khoản, mục và tiểu mục để có thể đưa ra các báo cáo một cách khoa học về tình hình tài chính tại đơn vị một cách chính xác và kịp thời. 3. Yêu cầu đối với bài toán: - Chương trình phải thực hiện được các chức năng sau đây: + Chức năng tạo mới / lựa chọn năm làm việc + Chức năng cập nhật, định nghĩa các loại, khoản, mục, tiểu mục ngân sách + Chức năng cập nhật số dư + Thông báo hạn mức kinh phí + Chức năng cập nhật các chứng từ nhập / chi ngân sách + Chức năng tìm kiếm danh mục, chứng từ + Chức năng lên báo cáo theo tháng / quí / năm + Các tiện ích hỗ trợ: tham số hệ thống, sao lưu, phục hồi dữ liệu, dọn dẹp số liệu. + Hướng dẫn sử dụng chương trình - Yêu cầu giao diện chương trình phải thân thiện, dễ sử dụng, phù hợp với người dùng. ____________________ Ch­¬ng ii c¬ së ph­¬ng ph¸p luËn cña ®Ò tµi I – Hệ thống thông tin: 1. Một số khái niệm cơ bản: Dữ liệu và thông tin là hai khái niệm khác nhau nhưng đôi khi lại bị hiểu nhầm lẫn lộn. Ta sẽ tìm hiểu sơ qua một chút về những khái niệm cơ bản này. 1.1. Dữ liệu là gì ? Dữ liệu là các số liệu hoặc tài liệu cho trước chưa được xử lý hay nó được ví như những nguyên liệu thô của thông tin. 1.2. Thông tin là gì? Thông tin là dữ liệu đã được xử lý thành dạng dễ hiểu, tiện dùng và có ý nghĩa đối với người nhận tin trong việc ra quyết định. Hay thông tin của quá trình xử lý này có thể trở thành dữ liệu của quá trình xử lý khác. Từ hai định nghĩa trên ta thấy rằng, mối quan hệ giữa dữ liệu và thông tin cũng giống như mối quan hệ giữa nguyên liệu và thành phẩm. Thành phẩm của quá trình sản xuất này cũng có thể là nguyên liệu đầu vào của quá trình sản xuất bước kế tiếp hay nó sẽ là một sản phẩm. 1.3. Khái niệm hệ thống thông tin: Hệ thống thông tin là một tập hợp các đối tượng và thiết bị thực hiện hoạt động thu nhập, lưu trữ, xử lý và phân phối thông tin trong một tập hợp các ràng buộc để hỗ trợ cho việc ra quyết định, lập kế hoạch, phân tích tình hình và kiểm soát các hoạt động của tổ chức. Các bộ phận cấu thành của hệ thống thông tin được thể hiện trong sơ đồ sau đây: Kho dữ liệu (Storage) Thu Thập (Collect) Xử lý & Lưu trữ (Process & keep) Phân phát (Distribute) Nguồn (Sources) Đích (Destination) Hệ thống thông tin trong sơ đồ trên có thể hoàn thành thủ công hay dựa trên máy tính. Ngoài máy tính điện tử còn có các nhân tố khác như con người, các qui trình xử lý, các phương tiện thông tin liên lạc, các thủ tục, dữ liệu và thiết bị tin học hoặc không tin học để xử lý, quản lý và sử dụng thông tin. Đầu vào của hệ thống được lấy từ các Nguồn và được xử lý bởi hệ thống sử dụng nó cùng với các dữ liệu đã được lưu trữ từ trước. Kết quả của quá trình xử lý được chuyển đến các Đích hoặc cập nhật vào Kho lưu trữ dữ liệu. 2. Vai trò của hệ thống thông tin: Ngay nay, công việc quản lý đối với những nhà lãnh đạo là cần phải đưa ra những quyết định kịp thời nhằm đạt được các mục tiêu quản lý đã đề ra của tổ chức. Trên thực tế, các tổ chức ngày càng nhận thấy rằng thông tin là một trong những nguồn tài nguyên quí báu của họ, do vậy họ cần phải có biện pháp quản lý chặt chẽ và sử dụng chúng một cách có khoa học & hiệu quả. Vấn đề về thông tin trong các hệ thống thông tin thư viện cũng không nằm ngoài các qui luật đó, nó cung cấp các thông tin để giúp các nhà quản lý thư viện ra quyết định cấp phát, phân bổ sách cho các bộ phận một cách kịp thời, hợp lý như nên nhập thêm bao nhiêu sách mới; hay huỷ bỏ những cuốn sách đã quá cũ; cung cấp tình trạng các độc giả đang mượn sách như thế nào, cuốn sách này do ai đang mượn và khi nào thì trả, … Quản lý có hiệu quả một tổ chức dựa vào phần lớn là chất lượng thông tin do các hệ thống thông tin chính thức sản sinh ra. Dễ thấy rằng từ sự hoạt động kém của một hệ thống thông tin sẽ là nguồn gốc gây ra những hậu quả xấu nghiêm trọng. Do vậy, việc đánh giá một hệ thống thông tin thường được nhìn nhận thông qua chất lượng của hệ thống thông tin mà nó cung cấp. Các tiêu chuẩn đánh giá chất lượng thông tin phải thoả mãn các tính chất: Độ tin cậy. Tính đầy đủ. Tính thích hợp và dễ hiểu. Tính được bảo vệ. Tính kịp thời. Như vậy, vai trò của hệ thống thông tin có một ý nghĩa hết sức quan trọng đối với những nhà quản lý trong việc đưa ra các quyết định đúng đắn để đảm bảo cho toàn bộ hệ thống thông tin thư viện nói riêng và hệ thống thông tin nói chung được hoạt động tốt. 3. Các giai đoạn để xây dựng một hệ thống thông tin: Để phát triển một hệ thống thông tin phải trải qua nhiều giai đoạn, mỗi giai đoạn gồm có nhiều công đoạn. Cuối mỗi giai đoạn phải đi kèm với quyết định có tiếp tục xây dựng hệ thống thông tin của tổ chức nữa hay không, và mỗi quyết định này được dựa trên những kết quả báo cáo của mỗi giai đoạn cung cấp. Thông thường để phát triển một hệ thống thông tin phải trải qua 6 giai đoạn dưới đây: 3.2 3.6 3.5 3.4 3.3 3.1 Khảo sát hệ thống Thử nghiệm Bàn giao & bảo trì Xây dựng chương trình Phân tích hệ thống Thiết kế hệ thống 3.1. Khảo sát hệ thống: Giai đoạn này tiến hành khảo sát hiện trạng, tìm hiểu qui trình hệ thống hiện thời để đưa ra các giải pháp. 3.2. Phân tích hệ thống: Giai đoạn này tiến hành phân tích sâu hơn các chức năng, các dữ liệu của hoạt động cũ để đưa ra mô tả hoạt động mới (thiết kế logic) dựa trên các mục tiêu, các yêu cầu nghiệp vụ đã được xác định trong hồ sơ khảo sát. Phân tích viên phản ánh chúng thông qua các công cụ như mô hình chức năng, mô hình dữ liệu, …. Các mô hình này giúp cho các bộ phận thiết kế, bộ phận xây dựng và thử nghiệm hệ thống nắm bắt được các yêu cầu của hệ thống một cách dễ dàng. Giai đoạn này được đánh giá là quan trọng nhất vì nó quyết định chất lượng hệ thống. 3.3. Thiết kế hệ thống: Giai đoạn này tiến hành thiết kế tổng thể, phát triển các bước phân tích ở giai đoạn trước thành các mô hình (vật lý, logic). Đồng thời tiến hành thiết kế giao diện cho người sử dụng. Kết thúc giai đoạn này sẽ cho ta kết quả là hồ sơ thiết kế. 3.4. Xây dựng chương trình: Giai đoạn này tiến hành thiết kế chi tiết, các nhà lập trình sử dụng một hoặc nhiều công cụ lập trình để mã hoá các module chương trình ( thiết kế cơ sở dữ liệu, thủ công, chương trình). Việc lựa chọn công cụ nào còn phụ thuộc vào qui mô và yêu cầu của hệ thống. 3.5. Thử nghiệm: Giai đoạn này tiến hành đưa chương trình vào kiểm tra bằng các bộ số liệu thực tế để xem hệ thống có đáp ứng được những yêu cầu đặt ra hay không. Chương trình sẽ được chỉnh sửa để khắc phục những lỗi phát hiện trong giai đoạn này. 3.6. Bàn giao & kiểm thử hệ thống: Giai đoạn này gồm 2 bước, trong đó: Bước 1: tiến hành bàn giao, nghiệm thu chương trình và các tài liệu mô tả hướng dẫn sử dụng, tiến hành đào tạo nhân lực sử dụng hệ thống. Bước 2: tiến hành bảo trì hệ thống khi hệ thống gặp sự cố hay có những yêu cầu mới phát sinh như nâng cấp hoặc sửa đổi hệ thống để phù hợp với tình hình phát triển của tổ chức. Ngoài các bước xây dựng trên đây, để có một hệ thống thông tin hoạt động hiệu quả là một trong những công việc của bất kỳ một nhà quản lý hiện đại nào. Họ cũng cần phải xem xét cả cơ sở kỹ thuật cho hệ thống thông tin như lựa chọn phương pháp nào để tiến hành phân tích, thiết kế và cài đặt cho hệ thống. II – Phân tích và thiết kế hệ thống thông tin: 1. Mục đích, yêu cầu của việc phân tích thiết kế hệ thống: · Mục đích của phân tích hệ thống: Nhằm hiểu rõ hệ thống thông tin hiện có. Xác định các nguyên nhân, vấn đề ràng buộc thực sự của hệ thống thông tin. Đề xuất đưa ra các yếu tố của giải pháp. Xây dựng mục tiêu cụ thể mà hệ thống thông tin mới cần phải đạt được. · Các yêu cầu khi thiết kế hệ thống thông tin: Đáp ứng tốt nhất các yêu cầu quản lý hiện tại. Lưu trữ đầy đủ các thông tin. Các thông tin phải đảm bảo về độ chính xác. Đảm bảo tính chặt chẽ, không dư thừa thông tin và tra cứu tìm kiếm nhanh. Chú ý yêu cầu mở rộng trong tương lai. Xây dựng bộ mã chuẩn cho các đối tượng quản lý. 2. Giới thiệu một số phương pháp phân tích thiết kế: Phân tích thiết kế hệ thống thông tin là phương pháp luận để xây dựng và phát triển hệ thống thông tin bao gồm các lý thuyết, mô hình, phương pháp và các công cụ sử dụng trong quá trình phân tích và thiết kế hệ thống. Có nhiều phương pháp phân tích khác nhau, ở đây chúng ta tóm lược một vài phương pháp quan trọng để làm cơ sở cho sự so sánh và đối chiếu. 2.1. Phương pháp MERISE ( Methode pour Rassembler les Idcés Sans Effort – Phương pháp để tập hợp các ý tưởng không cần cố gắng): Phương pháp MERISE có nguồn gốc từ Pháp, ra đời từ những năm cuối thập niên 70. Nó là kết quả nghiên cứu của nhiều tập thể nghiện cứu tin học nhằm đáp ứng các chờ đợi của người sử dụng. Phương pháp này đã ý thức được về sự lạc hậu của các phương pháp phân tích cổ điển trước đó. · Ý tưởng cơ bản của phương pháp này xuất phát từ 3 mặt cơ bản sau: + Mặt thứ nhất: Quan tâm đến chu kỳ sống của hệ thống thông tin, trải qua nhiều giai đoạn: Thai nghén à Quan niệm à Quản trị à Chết. Chu kỳ sống này đối với hệ thống tổ chức lớn có thể kéo dài từ 10 – 15 năm. + Mặt thứ hai: Đề cập tới chu kỳ đặc tả của hệ thống thông tin còn được gọi là chu kỳ trừu tượng. Hệ thống thông tin tựu trung lại như một thể thống nhất được miêu tả bởi nhiều tầng: “ Bộ nhớ ” của Hệ thống thông tin được mô tả trên bình diện quan niệm, tiếp đó là trên bình diện logic và cuối cùng là trên bình diện vật lý. “Qui trình xử lý ” được mô tả trên bình diện quan niệm, kế tiếp là trên bình diện tổ chức và cuối cùng là trên bình diện tác nghiệp. Mỗi tầng được mô tả dưới dạng mô hình tập trung tập hợp các thông số chính xác. Theo đó khi những thông số của tầng dưới tăng trưởng, tầng đang mô tả không biến đổi và nó chỉ thay đổi khi các tham số của mình thay đổi. Mỗi mô hình được mô tả thông qua một hình thức dựa trên các nguyên tắc, nguyên lý xác định. Có những qui tắc chuyển cho phép chuyển từ mô hình này sang mô hình khác một cách tự động nhiều hay ít. + Mặt thứ ba: Mặt này có liên quan đến chu kỳ của các quyết định cần phải đưa ra trong suốt chu kỳ sống của sản phẩm. Những quyết định có liên quan đến nội dung của những mô hình khác nhau của chu kỳ trừu tượng, đến các hình thái của quan niệm và liên quan đến sự phát triển của hệ thống. · Đặc trưng cơ bản của phương pháp này là: Nhìn toàn cục. Tách rời các dữ liệu và xử lý. Tiếp vận theo mức. Điều đó được thể hiện qua việc nhận thức và xây dựng các loại mô hình trong quá trình phân tích và thiết kế bằng bảng sau: Mức Dữ liệu Xử lý Quan niệm Mô hình quan niệm dữ liệu Mô hình quan niệm xử lý Tổ chức Mô hình logic dữ liệu Mô hình tổ chức xử lý Kỹ thuật Mô hình vật lý dữ liệu Mô hình tác vụ xử lý Ưu điểm của phương pháp MERISE là có cơ sở khoa học vững chắc. Hiện tại nó là một trong những phương pháp phân tích được dùng nhiều ở Pháp và các nước Châu Âu khi phải phân tích và thiết kế các hệ thống lớn. Bên cạnh đó, nó cũng có nhược điểm là cồng kềnh nên để giải quyết các hệ thống nhỏ người ta ít dùng phương pháp này vì sợ mất nhiều thời gian và làm cho hệ thống nặng nề không đáng có. 2.2. Phương pháp MCX ( Methode de Xavier Castellani): Phương pháp này có nguồn gốc từ Pháp, do giáo sư của viện tin học IIE (Institut Informatique d` Entreris) sáng tạo ra. MCX khá thông dụng và thỏa mãn các điều kiện của các phương pháp phân tích thế hệ thứ hai. Một số nét cơ bản về MCX: - Cho phép xây dựng một mô hình tổng quát, chính xác và biểu diễn hệ thống thông tin hoặc các phân hệ thông tin. - Cho phép phân tích, kiểm soát được dữ liệu, quá trình xử lý và truyền thông các Hệ thống thông tin. - Cho phép biểu diễn các xử lý với các lưu đồ và các chương trình, soạn thảo bởi một ngôn ngữ giải thuật dùng ở các mức khác nhau. - Cho phép lượng hoá các xử lý. · Phương pháp MCX đưa ra các giai đoạn cơ bản của quá trình phân tích: - Phân tích mức vĩ mô - Phân tích sơ bộ - Phân tích quan niệm - Phân tích chức năng - Phân tích cấu trúc Phương pháp này khá hữu hiệu và thích hợp với việc thực hành. Tuy nhiên còn hơi rườm rà. 2.3. Phương pháp GALACSI (Groupe d’ Animation et de Liaison pour I’ Analyse et la Conception de Système d’ Information): Phương pháp này cũng có nguồn gốc từ Pháp, do một nhóm các giáo sư của các học viện công nghệ IUT (Institut Unversiture de Technologic) và MIAGE (Maitrise de Methodes Informatiques Applyquees à la Gestion). Phương pháp này chính thức ra đời vào năm 1982. Nội dung cơ bản của GALACSI trình bày một tập hợp các công cụ và nguyên liệu để tiến hành các giai đoạn cơ bản của quá trình phân tích: · Nghiên cứu các hệ thống tổ chức và hệ thống thông tin tương ứng: - Nghiên cứu hiện trạng - Nghiên cứu khả thi · Phân tích chức năng: - Mô hình dữ liệu - Mô hình xử lý · Phân tích cấu trúc: - Tổ chức dữ liệu ở mức logic và vật lý. - Tổ chức xử lý theo lô, theo thời gian thực. - Môi trường tiếp nhận: máy vi tính, mạng máy tính, ngôn ngữ và các phần mềm chuyên dụng. - Giao diện người – máy. · Lập trình: Giải thuật, ngôn ngữ lập trình, kiến trúc các môi trường đặc thù. Phương pháp này có nhược điểm là chưa được thử nghiệm nhiều trong thực tế mà mới chỉ dùng để giảng dạy trong nhiều học viện (IUT). 2.4. Phương pháp SADT (Structured Analysis and Design Technique – Hay còn gọi là phương pháp kỹ thuật phân tích và thiết kế cấu trúc): SADT có nguồn gốc từ Mỹ. Ý tưởng cơ bản của nó là: phân rã một hệ thống lớn thành các phân hệ nhỏ và đơn giản. · Phương pháp này được xây dựng dựa trên 7 nguyên lý sau đây: Sử dụng một mô hình. Phân tích đi xuống (top down). Dùng một mô hình chức năng và một mô hình quan niệm. Thể hiện tính đối ngẫu của hệ thống. Sử dụng các biểu diễn dưới dạng đồ hoạ. Phối hợp hoạt động của nhóm. Ưu tiên tuyệt đối cho hồ sơ viết. · SADT được định nghĩa là phương pháp sử dụng các kỹ thuật: Biểu đồ luồng dữ liệu (DFD: Data Flow Diagram). Từ điển hệ thống (Data Dictionary). Anh ngữ có cấu trúc (Structured English). Bảng quyết định. Cây quyết định. Phương pháp này có nhiều ưu điểm như dựa vào nguyên lý phân tích cấu trúc, thiết kế theo lối phân cấp, dựa trên các lưu đồ chức năng, tạo được các liên hệ “ Một cha nhiều con ” và bảo đảm từ một dữ liệu vào sản xuất nhiều dữ liệu ra. Nhưng nó cũng có nhược điểm là không bao gồm toàn bộ tiến trình phân tích và nếu không thận trọng có thể đưa tiến trình trùng lặp thông tin. Phương pháp SADT này được sử dụng khá phổ biến hiện nay trên thế giới do tính logic của nó và trong phần phân tích hệ thống của bài luận này sẽ áp dụng phương pháp SADT vào việc phân tích và thiết kế cho hệ thống thông tin lưu thông trong thư viện. 3. Lý do lựa chọn phương pháp phân tích và thiết kế cấu trúc (SADT): Mục đích chính xác của dự án phát triển một hệ thống thông tin là có được một sản phẩm đáp ứng nhu cầu của người sử dụng, mà nó được hoà hợp vào trong các hoạt động của tổ chức, chính xác về mặt kỹ thuật, tuân thủ các giới hạn về tài chính và thời gian định trước. Không nhất thiết phải theo đuổi một phương pháp để phát triển một Hệ thống thông tin, tuy nhiên nếu không có phương pháp ta có nguy cơ không đạt được những mục tiêu đặt ra. Vì sao lại như vậy? Bởi một hệ thống thông tin là một đối tượng phức tạp, nó vận động trong một môi trường cũng rất phức tạp. Để làm chủ sự phức tạp đó, các phân tích viên cần phải có một phương pháp tiến hành nghiêm túc. Hiện nay có rất nhiều phương pháp phân tích và thiết kế hệ thống thông tin quản lý trong đó phương pháp Phân tích thiết kế hiện đại có cấu trúc là phương pháp được sử dụng phổ biến hiện nay để phát triển hệ thống thông tin. Do vậy trong bài luận văn ._.này, em lựa chọn phương pháp Phân tích và thiết kế hệ thống thông tin có cấu trúc. Phương pháp này bao gồm các công việc: Khảo sát, Phân tích, Thiết kế, Xây dựng và Cài đặt chương trình. Các công cụ sử dụng trong phương pháp này gồm có: Sơ đồ dòng dữ liệu, mô hình thực thể, mô hình quan hệ, sơ đồ chức năng phân cấp, lịch sử sự tồn tại của thực thể, từ điển dữ liệu hệ thống và các ngôn ngữ có cấu trúc. Phân tích hệ thống có cấu trúc là cách tiếp cận hiện đại tới vấn đề phân tích và thiết kế hệ thống máy tính nghiệp vụ, gồm một nhóm các công cụ và kỹ thuật được tích hợp với nhau qua cấu trúc của các giai đoạn phân tích thiết kế. Nhiệm vụ của người phân tích là nắm bắt được những ràng buộc mà người sử dụng áp đặt lên hệ thống để từ đó xây dựng lên một hệ thống thông tin đạt chất lượng. Việc sử dụng các công cụ để mô tả hệ thống chính là thể hiện mục đích của việc phân tích: - Tìm ra ngôn ngữ chung giữa người sử dụng và phân tích viên hệ thống để thể hiện đầy đủ các yêu cầu của hệ thống (ngôn ngữ giữa người sử dụng và phân tích viên). - Thể hiện hệ thống dưới dạng ngôn ngữ gần gũi với tư duy tin học cho giai đoạn lập trình, cài đặt ( ngôn ngữ chung giữa phân tích viên và lập trình viên). Trên cơ sở đó, ta có thể rút ra được các bước cơ bản để phân tích và thiết kế hệ thống gồm có: Khảo sát thực tế à Phân tích nghiệp vụ à Thiết kế cơ sở dữ liệu. 4. Khảo sát thực tế: Khảo sát thực tế nghĩa là nghiên cứu hệ thống đang tồn tại, đội ngũ phân tích phải tiến hành tìm hiểu đầy đủ về hệ thống thông tin mà họ đang làm việc. Họ phải hiểu lý do tồn tại của nó, các mối liên hệ của nó với các hệ thống khác trong tổ chức, các bộ phận cấu thành, các phương thức xử lý, những kiểu dữ liệu, khối lượng dữ liệu mà nó xử lý và nhiều thứ khác. Đồng thời họ phải xác định những vấn đề có liên quan tới hệ thống và nguyên nhân của chúng. Nhiệm vụ của giai đoạn này là mô tả, thu thập thông tin của các bộ phận, hoạt động trong hệ thống hiện tại cùng các vấn đề có liên quan. Các phân tích viên phải thu thập thông tin đi từ cái chung đến cái riêng theo trình tự: Các bộ phận chính của hệ thống à hoạt động chung của chúng à lý do tồn tại à những người sử dụng chính à đầu vào chính à đầu ra chính à xử lý chính. Kết quả thu được của giai đoạn này là hiểu và nắm rõ các hoạt động chung của hệ thống, dữ liệu vào, thông tin ra, phương thức xử lý, cơ sở dữ liệu. 5. Phân tích nghiệp vụ: Sau giai đoạn khảo sát, các kỹ thuật viên lựa chọn, xác định một lời giải và phát triển lời giải đó dựa trên cơ sở của các xử lý trên máy tính điện tử. Phân tích nghiệp vụ có thể chia ra làm 2 phần: Phân tích chức năng nghiệp vụ Phân tích các yêu cầu thông tin (phân tích dữ liệu) 5.1. Phân tích chức năng nghiệp vụ: Thứ nhất, ta xây dựng sơ đồ chức năng - BFD (Business Function Diagram): nó thực hiện việc phân rã đơn giản các chức năng của hệ thống trong miền khảo sát. Sơ đồ chính của BFD là sơ đồ phân cấp chức năng của hệ thống và mỗi chức năng được ghi trong một số khung và nếu cần sẽ được chia ra thành các chức năng con, số mức chia ra phụ thuộc vào kích cỡ và độ phức tạp của hệ thống. Sơ đồ BFD được biểu diễn dưới dạng hình cây, tại mỗi nút là một hình chữ nhật thể hiện một hoặc một nhóm chức năng cụ thể. Sơ đồ chức năng là công cụ khá hữu hiệu thể hiện cho người đọc một bức tranh tổng thể về các chức năng mà hệ thống thông tin có thể thực hiện được. Mục đích của sơ đồ chức năng: xác định phạm vi của hệ thống cần phân tích, các chức năng được xác định ở đây sẽ được dùng nhiều trong các mô hình sau này. Thứ hai, ta xây dựng sơ đồ dòng dữ liệu – DFD ( Data Flow Diagram): sơ đồ này cung cấp chi tiết hơn về các thông tin cần cho việc thực hiện các chức năng ở BFD. Nó chính là mô hình cân xứng của hệ thống cho cả dữ liệu và chức năng. Nó chỉ ra cách thông tin được vận chuyển từ chức năng này sang một chức năng khác trong hệ thống như thế nào. Mục đích của DFD là công cụ chính được sử dụng để hỗ trợ cho các nhà phân tích trong việc thể hiện thiết kế hệ thống: - DFD dùng để giúp xác định các yêu cầu của người sử dụng. - DFD được dùng trong thiết kế để vạch kế hoạch, phương án cho các nhà phân tích, người xem khi thiết kế hệ thống mới. - DFD thể hiện sự đơn giản và dễ hiểu của nó đối với nhà phân tích và người sử dụng. Một số ký pháp cơ bản dùng trong DFD gồm có: thực thể, dòng dữ liệu, tiến trình xử lý và kho dữ liệu được kí hiệu như sau Tên thực thể Thực thể: được kí hiệu bằng hình chữ nhật và nó biểu diễn thông tin đầu vào hoặc đầu ra dưới dạng vật lý. Tên dòng dữ liệu Dòng dữ liệu: thể hiện việc chuyển thông tin vào/ra khỏi một tiến trình. Nó được chỉ ra trên sơ đồ bằng một đường kẻ có mũi tên chỉ hướng của dòng thông tin. Tên tiến trình Tiến trình xử lý: thực hiện biến đổi, xử lý thông tin đầu vào để tạo ra thông tin mới. Tên tệp dữ liệu Kho dữ liệu: hay chính là tệp dữ liệu để lưu trữ các thông tin cần thiết, nó được kí hiệu bởi 2 dòng kẻ ngang song song. Các mức của sơ đồ luồng dữ liệu - DFD: Sơ đồ mức ngữ cảnh: thể hiện khái quát nội dung chính của hệ thống, có thể bỏ qua các kho dữ liệu, xử lý cập nhật để tăng tính sáng sủa của mức ngữ cảnh. Sơ đồ mức phân rã: thể hiện mức chi tiết của hệ thống, thương thì các nhà phân tích sử dụng kỹ thuật phân rã tiếp theo của sơ đồ mức ngữ cảnh. 5.2. Phân tích dữ liệu: Những nhà quản lý luôn cần phải lưu trữ và xử lý các dữ liệu phục vụ cho công việc quản lý của mình. Ví dụ như trong chương trình quản lý chi ngân sách này ta cần phải lưu các thông tin như danh mục ngân sách, ngân sách thực lĩnh, số dư (nếu có), kế hoạch hạn mức vốn, … và đó chính là dữ liệu. Những dữ liệu này có ý nghĩa quan trọng khác nhau đối với mỗi tổ chức khác nhau bởi do phạm vi, văn hoá và lĩnh vực hoạt động của các tổ chức là khác nhau. Nên việc phân tích dữ liệu được thiết lập để tiến hành định nghĩa các đơn vị thông tin cơ sở (thực thể) có ích cho hệ thống và xác định mối quan hệ liên kết giữa chúng là rất cần thiết. Ngày nay con người sử dụng các máy tính và các hệ quản trị cơ sở dữ liệu để giao tác với các dữ liệu trong cơ sở dữ liệu. Hệ quản trị cơ sở dữ liệu là một phần mềm ứng dụng giúp chúng ta tạo ra, lưu trữ, quản trị và tìm kiếm dữ liệu từ một hoặc một số cơ sở dữ liệu. Trên thị trường hiện nay có rất nhiều hệ quản trị cơ sở dữ liệu khác nhau như: Micrsoft Access, Foxpro, Visual Foxpro, SQL Server, Oracle; mỗi hệ quản trị cơ sở dữ liệu có những ưu nhược điểm riêng và mỗi cái lại phù hợp với qui mô và yêu cầu của từng hệ thống thông tin quản lý khác nhau. Ta sẽ tìm hiểu một số khái niệm cơ bản về cơ sở dữ liệu như: cơ sở dữ liệu, kho dữ liệu, bảng dữ liệu, bản ghi, trường dữ liệu, thực thể, mô hình quan hệ, thuộc tính. Cơ sở dữ liệu: là một tập hợp các bảng có liên quan với nhau được lưu trữ trên các thiết bị hiện đại nhằm cung cấp các thông tin cho người sử dụng. Kho dữ liệu: đó là một nơi cất giữ dữ liệu có tổ chức để có thể tìm kiếm được nhanh chóng những dữ liệu cần thiết. Bảng dữ liệu: là tập hợp các bản ghi lưu trữ thông tin về các thực thể. Bản ghi (dòng): là tập hợp giá trị của các trường dữ liệu của một thực thể. Trường dữ liệu (cột): lưu trữ thông tin về từng thực thể theo một bộ thuộc tính. Thực thể: là một đối tượng mà tổ chức muốn lưu trữ thông tin về nó. Ví dụ: Thực thể là đối tượng có dạng vật chất: vât tư, máy móc, khách hàng, ... hay một số thực thể chỉ là khái niệm / quan niệm: tài khoản, dự án, … Mô hình quan hệ: là bản khắc họa cơ sở dữ liệu của hệ thống, nó chỉ ra các thực thể và các thuộc tính của mỗi thực thể cũng như mối liên kết giữa các thực thể của nó. Thuộc tính: dùng để mô tả các đặc trưng của một thực thể hoặc một quan hệ. Có 3 loại thuộc tính: Thuộc tính định danh: là thuộc tính dùng để xác định duy nhất mỗi lần xuất hiện của thực thể. Ví dụ: mã chương trong danh mục ngân sách được xác định là duy nhất. Thuộc tính mô tả: dùng để mô tả thực thể. Ví dụ: tên cơ quan / đơn vị, địa chỉ, số điện thoại, tài khoản, mã số, …. Thuộc tính kết nối: dùng để chỉ ra quan hệ giữa một thực thể đã có với một thực thể khác trong bảng khác. Ví dụ: có hai thực thể là danh mục loại và phiếu chi, khi có yêu cầu chi thì mã loại trong bảng Loại trỏ tới bảng phiếu chi. · Các giai đoạn xây dựng mô hình dữ liệu: Xác định các thực thể của CSDL. Xác định các mối quan hệ giữa các thực thể trong CSDL. 5.2.1.Các bước xác định các thực thể của CSDL: Mục đích của công việc này phải đưa ra các bảng dữ liệu để lưu trữ các thông tin của hệ thống, tổ chức. Các bước tiến hành: Bước 1: xác định các thông tin vào / ra mà ta cần phải thu thập. Bước 2: Liệt kê toàn bộ danh sách thuộc tính theo những thông tin đầu vào và các thông tin đầu ra. Bước 3: Thực hiện công việc chuẩn hoá. Chuẩn hoá thường được thực hiện thông qua 3 bước sau: Chuẩn hoá mức 1: + qui định rằng trong mỗi danh sách không được chứa những thuộc tính lặp. Thuộc tính lặp là những thuộc tính có thể nhận nhiều giá trị dữ liệu. Ví dụ: trong thư viện cùng một lúc mượn vài cuốn tài liệu thì mã tài liệu, tên tài liệu chính là thuộc tính lặp vì trong phiếu mượn tài liệu có thể ghi nhiều mã tài liệu, tên tài liệu. + Nếu có thuộc tính lặp thì phải tách nó ra thành các danh sách con, gắn thêm cho nó một tên, tìm cho nó một thuộc tính định danh riêng và thêm thuộc tính định danh của danh sách gốc. Ví dụ: Phiếu mượn tài liệu: Số phiếu mượn, Số thẻ bạn đọc, Tên độc giả, Ngày mượn, Người cho mượn. Tài liệu mượn: Số phiếu mượn, Mã tài liệu, Nhan đề, Tác giả, Hình thức mượn, Hạn trả. Chuẩn hoá mức 2: + Qui định trong một danh sách các thuộc tính phải phụ thuộc hàm vào toàn bộ khoá chứ không chỉ phụ thuộc vào một phần của khoá. Mà nếu tồn tại như vậy thì phải tách những thuộc tính phụ thuộc đó thành một danh sách con mới. + Lấy bộ phận khoá đó làm khoá cho danh sách. Đặt cho danh sách mới này một tên riêng cho phù hợp với nội dung của các thuộc tính trong danh sách. Ví dụ: Phiếu mượn tài liệu: Số phiếu mượn, Số thẻ bạn đọc, Tên độc giả, Ngày mượn, Người cho mượn. Tài liệu mượn: Số phiếu mượn, Mã tài liệu, Hình thức mượn, Hạn trả, Tài liệu: Mã tài liệu, Tên tài liệu, Tên tác giả. Chuẩn hoá mức 3: + Qui định rằng trong một danh sách không có sự phụ thuộc bắc cầu giữa các thuộc tính. Nếu tồn tại thì phải tách chúng ra và xác định khoá, tên cho mỗi danh sách mới đó. Ví dụ: Phiếu mượn tài liệu: Số phiếu mượn, Số thẻ bạn đọc, Ngày mượn, Người cho mượn. Bạn đọc: Số thẻ bạn đọc, Tên bạn đọc, Nghề nghiệp, …. Tài liệu mượn: Số phiếu mượn, Mã tài liệu, Hình thức mượn, Hạn trả. Tài liệu: Mã tài liệu, Tên tài liệu, Tên tác giả, … 5.2.2. Xác định mối quan hệ giữa các thực thể: Sau khi đã xác định các thực thể (bảng), thuộc tính, khoá chính, khoá ngoại lai thì các nhà thiết kế phải tìm ra mối quan hệ giữa chúng để sau này có thể đáp ứng các thông tin một cách nhanh nhất cho người sử dụng. Các quan hệ thường được sử dụng trong mô hình dữ liệu: + Quan hệ một - một thể hiện được sự đồng nhất thành một thực thể mang các thuộc tính của cả hai thực thể ban đầu. + Quan hệ nhiều - nhiều thể hiện mối quan hệ chưa được chuẩn hoá nên sẽ được chuyển thành các quan hệ một - nhiều thông qua các thực thể trung gian. + Quan hệ một - nhiều có một tệp thể hiện kiểu thực thể đó. Khoá của bảng là thuộc tính định danh của thực thể. 6. Thiết kế cơ sở dữ liệu: Sau khi đã có được các tài liệu trên đây, các thiết kế viên sẽ phải duyệt lại mô hình dữ liệu để khắc phục, phát hiện những khiếm khuyết của mô hình để còn tiến hành chỉnh sửa, nếu không cẩn thận ở bước kiểm tra này sẽ thì công việc chỉnh sửa sẽ rất phức tạp khi mà cơ sở dữ liệu đã chứa nhiều dữ liệu. Tạo lập cơ sở dữ liệu là công việc mà người thiết kế phải phiên dịch mô hình dữ liệu thành cơ sở dữ liệu bằng cách dùng một hệ quản trị cơ sở dữ liệu để quản lý các thông tin của tổ chức. Ứng với mỗi hệ quản trị cơ sở dữ liệu khác nhau sẽ có những công cụ, điểm mạnh, điểm cần tránh và những đối tượng dữ liệu khác nhau do vậy người quản trị cơ sở dữ liệu phải có kinh nghiệm và kiến thức chuyên môn vững chắc về hệ quản trị cơ sở dữ liệu được lựa chọn áp dụng trong tổ chức. III - Lựa chọn các công cụ lập trình: Đối với qui mô bài toán mô tả như trên thì ta có thể lựa chọn công cụ thực hiện như sau: - Phát triển chương trình trên môi trường Hệ điều hành Windows 2000 Server - Hệ quản trị Cơ sở dữ liệu Microsoft Access 2000 - Ngôn ngữ lập trình phát triển Visual Basic 6.0 - Thiết kế Báo cáo sử dụng bộ Crystal Report của hãng Seagate 1. Hệ điều hành: Trong quá trình xây dựng, phát triển và đóng gói hoàn chỉnh một sản phẩm phần mềm, một yếu tố quan trọng có ảnh hưởng không nhỏ tới khả năng vận hành, tính thích ứng của sản phẩm đó là hệ điều hành. Hệ điều hành đóng vai trò cung cấp môi trường, quản lý tài nguyên, quản lý CSDL, quản lý các mạng LAN, WAN và cung cấp các dịch vụ như chia sẻ tệp, máy in, các dịch vụ mạng như FTP, TELNET, RLOGIN, SNMP, ROUTER ... phục vụ quá trình phát triển, thử nghiệm các chức năng của sản phẩm phần mềm và tạo ra môi trường phát triển phần mềm theo nhóm. Vấn đề đặt ra ở đây là lựa chọn hệ điều hành nào trong số rất nhiều hệ điều hành đang có mặt trên thị trường hiện nay của nhiều nhà sản xuất khác nhau như: WINDOW NT, 2000, 9x, Me, XP (của hãng MICROSOFT), UNIX – Solaris (SUN), LINUX (REDHAT), ... Trước đây hệ điều hành của hãng MICROSOFT (Windows NT) còn thiếu các công cụ quản lý, an ninh đảm bảo cho hệ thống khi phát triển và chạy trên mạng. Tuy nhiên với sự phát triển nhanh chóng của HĐH Windows NT 4.0 (đặc biệt là phiên bản HĐH mạng mới ra đời WINDOWS 2000 SERVER) cùng với các HĐH truyền thống của MICROSOFT cho máy trạm như: Windows 3.1, 9x, Me, XP đã thuyết phục bất cứ nhà sản xuất phần mềm ứng dụng nào trên thế giới coi dùng giải pháp HĐH của MICROSOFT như là sự lựa chọn đầu tiên của mình. Mặc dù vậy, theo các nhà phân tích thị trường thì việc phát triển các ứng dụng cao cấp có phạm vi hoạt động rộng (ngân hàng, tài chính, ...) HĐH UNIX vẫn chiếm ưu thế với các đặc điểm: độ ổn định cao, khả năng mở rộng rất dễ dàng (hỗ trợ 12-16 CPU, hoặc lớn hơn). Để phù hợp với mục tiêu thiết lập môi trường dùng để phát triển, xây dựng sản phẩm phần mềm có độ ổn định cao, hỗ trợ nhiều công cụ phát triển và mức độ chi phí phù hợp. Em lựa chọn môi trường Hệ Điều Hành MICROSOFT WINDOWS 2000 SERVER 2. Hệ quản trị cơ sở dữ liệu: Có rất nhiều hệ quản trị đang được sử dụng ở nước ta như Foxpro, Access, SQL Server, Oracle. Mỗi hệ quản trị đều có những điểm mạnh riêng có của nó nên việc lựa chọn hệ quản trị nào để phù hợp với mục đích của chúng ta là một điều rất quan trọng. Với các ứng dụng lớn và đòi hỏi tính bảo mật cao chúng ta có thể sử dụng Oracle hay SQL Server và các ứng dụng nhỏ hơn chúng ta có thể sử dụng Visual Foxpro hay Microsoft Access. Nhận thấy đây là một chương trình vừa phải và làm sao càng dễ sử dụng đối với người dùng càng tốt nên em quyết định lựa chọn hệ quản trị cơ sở dữ liệu Microsoft Access bởi vì khi triển khai ứng dụng sẽ rất dễ cài đặt và nó có thể kết nối được với Visual Basic - một ngôn ngữ lập trình ứng dụng rất phổ biến hiện nay. Sự kết hợp giữa VB6 với Access có ưu điểm khi cài đặt ứng dụng không nhất thiết phải cài đặt Microsoft Access, mà cơ sở dữ liệu của Access chỉ có một mdb file duy nhất nên có thể tránh được những thất lạc không đáng có về file cơ sở dữ liệu như Foxpro vì trong Foxpro mỗi một thực thể (bảng) là một file riêng rẽ nên khả năng bị thất lạc hoặc lỗi sẽ cao hơn. 3. Ngôn ngữ lập trình phát triển: Microsoft Visual Basic là một trong các ngôn ngữ lập trình của hãng phần mềm máy tính nổi tiếng thế giới MICROSOFT. Với giao diện và cách thức lập trình đơn giản cùng với các công cụ được tích hợp vào từ nhiều nhà phát triển thứ 3, cho phép dễ dàng xây dựng các chương trình, có giao diện thân thiện với người dùng và có khả năng kết nối với nhiều hệ CSDL như: ORACLE, SQL Server, SysBase, Access,… Với VB hầu như ta có thể làm đủ mọi chuyện trong MSWindows vì VB6 không yểm trợ tính Thừa kế (Inheritance) và Ða dạng (Polymorphism) của phương pháp thiết kế hướng đối tượng nhưng nói chung ta vẫn thừa hưởng những lợi ích của phương pháp thiết kế hướng đối tượng khi dùng các Components và Collection. Dầu bị giới hạn như vậy nhưng ta vẫn viết được các Class, ActiveX trong VB6. Do đó VB6 vẫn thích hợp cho việc phát triển những dự án tin học dù lớn hay nhỏ. 4. Thiết kế báo cáo: Trong chương trình này em lựa chọn bộ công cụ Crystal Report (CR) của hãng Seagate để thiết kế các báo đầu ra, CR cho phép chúng ta có thể xuất các thông tin liên quan đến dữ liệu lên Web hay xuất các báo cáo được kết hợp trong chương trình mà chúng ta viết trong VB, Visual C, Java, asp,… Có thể nói CR rất mạnh và dễ dàng trong việc hỗ trợ các nhà phát triển xuất ra các báo cáo theo yêu cầu của bài toán. Trong CR, em được biết (Report Designer Component) RDC là một giải pháp hữu hiệu trong việc tạo các báo cáo đối với những nhà phát triển VB. RDC chính là một đối tượng mà thể hiện sức mạnh của CR và được nhúng vào trong VB. Với RDC có thể tạo báo cáo rất hiệu quả và linh hoạt trong việc kết nối tới dữ liệu và tích hợp báo cáo trong ứng dụng. Nó có rất nhiều thuộc tính, phương thức và sự kiện mà người làm VB có thể dùng code của VB hay các cú pháp của CR để xử lý tạo ra các báo cáo. RDC được xây dựng dựa trên công nghệ COM nên việc nhúng vào VB và sử dụng nó thì không có gì khó khăn đối với những người đã từng làm việc với VB. _____________________ Ch­¬ng iii x©y dùng ch­¬ng tr×nh qu¶n lý Chi NG¢N S¸CH I – PHÂN TÍCH HỆ THỐNG 1. Khảo sát và mô tả nghiệp vụ: 1.1. Sơ đồ chức năng tổng quát: Chương trình quản lý chi ngân sách Quản lý hệ thống Danh mục ngân sách Quản lý số dư ngân sách (nếu có) Thông báo hạn mức vốn Phát sinh nhập, chi ngân sách Thống kê, báo cáo Tìm kiếm và các tiện ích hỗ trợ khác 1.2. Sơ đồ phân rã chức năng: Quản lý hệ thống Cập nhật các thông tin đơn vị Cập nhật và lựa chọn năm làm việc Chế độ bảo mật an toàn chương trình Quản lý số dư ngân sách (nếu có) Cập nhật các số dư (nếu có cho lần sử dụng đầu tiên) Danh mục ngân sách Định nghĩa các danh mục Loại Định nghĩa danh mục Chương Định nghĩa các danh mục Khoản Định nghĩa các danh mục Mục Định nghĩa các danh mục Tiểu mục Thông báo hạn mức vốn Cập nhật các kế hoạch hạn mức vốn (từ phòng tài chính) Phát sinh nhập, chi ngân sách Cập nhật các phát sinh nhập ngân sách (từ kho bạc) Cập nhật các phát sinh chi ngân sách Thống kê, báo cáo Bảng kê chứng từ thanh toán (tạm ứng) Giấy đề nghị thanh toán tạm ứng Bảng kê chứng từ thanh toán Báo cáo hoạt động chi chi tiết Báo cáo hoạt động chi tổng hợp (từ 1 tới 12 tháng) Tìm kiếm và các tiện ích Tìm kiếm, tra cứu danh mục ngân sách nhà nước Tìm kiếm các chứng từ liên quan Sao lưu, phục hồi cơ sở dữ liệu Dọn dẹp số liệu Hướng dẫn sử dụng 1.3. Quy định chung về hệ thống mục lục ngân sách nhà nước: Để tạo điều kiện cho các đơn vị dự toán Trung ương, địa phương, các doanh nghiệp thuộc các thành phần kinh tế và các cơ quan Tài chính, cơ quan Kho bạc nhà nước, cơ quan thu các cấp thống nhất hạch toán, kế toán và quyết toán số thu, chi ngân sách nhà nước theo đúng Mục lục ngân sách, Bộ Tài chính hướng dẫn thực hiện Mục lục ngân sách nhà nước như sau: 1.3.1. Chương: Thể hiện tên đơn vị đứng đầu thuộc các cấp quản lý ( hay còn gọi là đơn vị cấp I ). Số thu, chi phát sinh của các đơn vị trực thuộc đơn vị cấp I đều được hạch toán, kế toán và quyết toán vào mã số chương của đơn vị cấp I. Trong Chương có quy định một số Chương đặc biệt để theo dõi và hạch toán số thu, chi ngân sách nhà nước của các khu vực kinh tế, các thành phần kinh tế, các khoản thu không xác định được chủ sở hữu là ai; các quan hệ thanh toán của ngân sách các cấp cho những nhiệm vụ chung không thể hạch toán vào Chương của đơn vị nào và các khoản thanh toán chuyển giao giữa các cấp ngân sách. Chương A: quy định để hạch toán số thu, chi ngân sách nhà nước của các đơn vị thuộc Trung ương quản lý. Chương B: quy định để hạch toán số thu, chi ngân sách nhà nước của các đơn vị chính quyền cấp tỉnh quản lý. Chương C: quy định để hạch toán số thu, chi ngân sách nhà nước của các đơn vị thuộc chính quyền cấp huyện quản lý. Chương D: quy định để hạch toán các khoản thu, chi ngân sách nhà nước của các đơn vị thuộc chính quyền cấp xã quản lý. Trích một số Mã số danh mục Chương của mục lục ngân sách nhà nước. Mã số CHƯƠNG A (Các đơn vị thuộc TW) CHƯƠNG B (Các đơn vị thuộc cấp tỉnh) CHƯƠNG C (thuộc cấp huyện) CHƯƠNG D (thuộc cấp xã) 1 2 3 4 5 001 Văn phòng chủ tịch nước 002 Hoạt động của quốc hội Hội đồng nhân dân 003 Tòa án nhân dân tối cao 004 Viện kiểm sát nhân dân tối cao 005 Văn phòng chính phủ Văn phòng UBND 009 Bộ công an 010 Bộ quốc phòng Sở ngoại vụ 013 Bộ kế hoạch và đầu tư Sở kế hoạch và đầu tư 014 Bộ tư pháp Sở tư pháp 016 Bộ công nghiệp Sở công nghiệp 018 Bộ tài chính Sở tài chính - vật giá 022 Bộ Giáo dục và Đào tạo Sở Giáo dục và Đào tạo … ….. ….. Ghi chú: Các cơ quan chuyên môn thuộc cấp huyện (Chương C) và cấp xã (Chương D) do Sở Tài chính - Vật giá quy định. Ví dụ: Chương 018A là “Bộ Tài chính”; Chương 018B là “Sở tài chính - vật giá”; Chương 018C là “Phòng Tài chính”; Chương 018D là “Ban Tài chính xã". 1.3.2. Loại - Khoản: Là hình thức phân loại ngân sách nhà nước theo ngành kinh tế quốc dân. Loại: quy định để hạch toán ngành kinh tế quốc dân cấp I được ban hành theo Nghị định số 73/CP ngày 27/10/1993 của Chính phủ (có 20 ngành kinh tế quốc dân cấp I ). Khoản: quy định để hạch toán ngành kinh tế quốc dân cấp II, cấp III và cấp IV ban hành theo Quyết định số 143/TCKT-PPQD ngày 22/12/1993 của Tổng cục Thống kê. Nhưng do yêu cầu quản lý và theo dõi số chi của ngân sách nhà nước cho các chương trình mục tiêu. Bộ tài chính quy định một số Khoản có tính chất đặc thù trong các Loại để hạch toán và quyết toán số chi của ngân sách nhà nước cho các chương trình, mục tiêu; Chương trình mục tiêu của Loại nào thì mở Khoản cho Loại đó để hạch toán. Trích một số Mã danh mục Loại - Khoản của Mục lục ngân sách nhà nước L K Tên gọi Ghi chú 1 2 3 4 02 THỦY SẢN 01 Đánh bắt thuỷ sản và hoạt động dịch vụ có liên quan Bao gồm đánh bắt thuỷ hải sản trong tất cả các loại nguồn nước, chế biến thuỷ sản ngay trên tàu… 02 Ươm, nuôi trồng, bảo vệ thuỷ sản và hoạt động dịch vụ có liên quan Phản ánh cả hoạt động sự nghiệp kinh tế: khuyến ngư, điều tra, khoanh nuôi, bảo vệ nguồn lợi thuỷ sản … 99 Chương trình mục tiêu khác 14 GIÁO DỤC VÀ ĐÀO TẠO 01 Giáo dục mầm non Bao gồm hoạt động nhà trẻ, mẫu giáo. 02 Giáo dục tiểu học Bao gồm cả các trường dạy trẻ có khuyết tật. 03 Giáo dục phổ thông trung học cơ sở 04 Giáo dục trung học phổ thông Bao gồm cả trung học chuyên ban 09 Đào tạo sau đại học Gồm: Đào tạo cao học, các loại đào tạo khác trên đại học 14 Dự án củng cố và phát huy kết quả phổ cập giáo dục tiểu học và xoá mù chữ, thực hiện phổ cập giáo dục trung học cơ sở. Từ khoản 14 đến khoản 26: dùng để phản ánh các khoản chi của chương trình, mục tiêu quốc gia về giáo dục. 26 Dự án đào tạo cán bộ tin học và đưa tin học vào nhà trường 99 Chương trình, mục tiêu khác … … … … 1.3.3. Mục và Tiểu mục: Là hình thức phân loại theo nội dung kinh tế, căn cứ vào nội dung kinh tế ở cấp đô thấp hơn để phục vụ cho công tác lập và phân bổ dự toán ngân sách; cấp phát, quản lý và kiểm soát các khoản thu, chi của ngân sách; kế toán và quyết toán ngân sách nhà nước. Việc qui định mã Mục liên tục nhằm mục đích phục vụ cho việc ứng dụng tin học trong công tác lập, chấp hành, kế toán và quyết toán ngân sách. Vì vậy, khi hạch toán, kế toán số thu, chi ngân sách nhà nước chỉ cần hạch toán chính xác đến Mục là có kết quả số thu, chi ngân sách nhà nước. Trong Mục có Tiểu mục; tuỳ thuộc vào nội dung của Mục mà quy định số lượng Tiểu mục trong Mục cho phù hợp. Chú ý: các cơ quan, đơn vị Trung ương và địa phương, cơ quan Tài chính, cơ quan kho bạc nhà nước và cơ quan thu các cấp không được tự ý mở thêm các Chương, Loại, Khoản, Mục và Tiểu mục khi chưa có ý kiến của Bộ Tài chính. Trích một số Mã số danh mục của Mục và Tiểu mục trong phần chi của mục lục ngân sách nhà nước: Mục 100 Tiền lương Tiểu mục 01 Lương ngạch bậc theo quỹ lương được duyệt 02 Lương tập sự 03 Lương hợp đồng dài hạn 04 Lương cán bộ công nhân viên dôi ra ngoài biên chế 99 Lương khác Mục 101 Tiền công Tiểu mục 01 Tiền công hợp đồng theo vụ, việc 99 Khác Mục 103 Học bổng học sinh, sinh viên Tiểu mục 01 Học sinh trường năng khiếu 02 Học sinh dân tộc nội trú 03 Học sinh, sinh viên các trường phổ thông, đào tạo khác trong nước 04 Học sinh, sinh viên đi học nước ngoài 05 Sinh hoạt phí cán bộ đi học 99 Khác Mục 134 Chi khác Tiểu mục 01 Chênh lệch tỷ giá ngoại tệ ngân sách nhà nước 03 Chi bầu cử quốc hội và HĐND các cấp 04 Chi kỷ niệm các ngày lễ lớn 05 Chi khắc phục hậu quả thiên tai cho các đơn vị dự toán và cho các doanh nghiệp nhà nước. 11 Chi hỗ trợ khác 14 Chi tiếp khách 99 Chi các khoản khác … … … 1.4. Qui trình nghiệp vụ: - Đầu quí 4 mỗi năm thì các cơ quan, đơn vị sử dụng ngân sách phải nộp bản dự toán ngân sách xin kinh phí phục vụ cho những hoạt động của đơn vị mình trong năm kế tiếp lên cơ quan tài chính. Sau đó cơ quan tài chính sẽ xem xét và duyệt các yêu cầu trong bản dự toán đó à rồi cơ quan tài chính lên kế hoạch cấp phát vốn cho cơ quan, đơn vị sử dụng ngân sách. - Đồng thời, sau khi đã có các quyết định kế hoạch vốn cơ quan tài chính phải thông báo cho Kho bạc nhà nước để họ biết được kế hoạch cấp phát vốn cho các đơn vị sử dụng ngân sách theo đúng kế hoạch đã định. - Các đơn vị sử dụng ngân sách nhà nước thường tiêu hết số dư của các khoản mục khi hết năm mà nếu có còn số dư thì số dư đó sẽ bị tịch thu vào công quỹ nhà nước vì không sử dụng hết nên khi bắt đầu một năm mới thì tất cả các loại, khoản, muc đều xuất phát điểm từ con số 0 do vậy ta (hầu như) không cần phải tính đến chuyện kết chuyển số dư từ năm này sang năm khác. - Tất cả các khoản chi tại đơn vị sử dụng ngân sách đều phải nằm trong phạm vi của kế hoạch vốn đã được lên kế hoạch bởi cơ quan Tài chính. - Các đơn vị sử dụng ngân sách cứ đúng theo kế hoạch của cơ quan tài chính mà đến kho bạc lĩnh tiền về và đồng thời cuối mỗi tháng hoặc quí thì đơn vị phải báo cáo tình hình chi tài chính với cơ quan quản lý tài chính để còn có những xử lý kịp thời. 2. Sơ đồ dòng dữ liệu: 2.1.Sơ đồ mức khung cảnh: Giấy đề nghị thanh toán ứng vốn Tiền lĩnh báo cáo chi Xem xét và báo cáo thống kê nhập dữ liệu Thông báo hạn mức & kế hoạch vốn Cơ quan tài chính Kho bạc nhà nước Hệ thống thông tin quản lý chi ngân sách Người quản lý 2.2. Sơ đồ luồng dữ liệu: Cơ quan tài chính Kho bạc nhà nước quản lý Đối tác của đơn vị Người quản lý Báo cáo Thống kê, báo cáo NS theo kế hoạch Nhập ngân sách Chi ngân sách Hệ thống tài khoản Số dư Thông báo vốn Phát ngân sách Tạo lập hệ thống Chi NS II - Thiết kế dữ liệu: 1. Từ điển hệ thống: Sau khi tìm hiểu, phân tích và chuẩn hoá kỹ càng, ta xác định được tất cả có 11 thực thể (bảng) được định nghĩa như sau: 1.1. Bảng chương (CHUONG): Bảng này định nghĩa mã – kí hiệu của bộ, ngành mà đơn vị mình trực thuộc. Stt Tên trường Khoá Kiểu dữ liệu Điều kiện Chú thích 1 Chuong_ID Khoá chính Text (4) Không rỗng Kí hiệu Mã chương NS 2 TenChuong Text (100) Không rỗng Mô tả Tên chương NS 3 GhiChu Text (100) Ghi chú nếu có 1.2. Bảng Loại (LOAI): Bảng này định nghĩa các loại ngân sách mà đơn vị sử dụng. Stt Tên trường Khoá Kiểu dữ liệu Điều kiện Chú thích 1 Loai_ID Khoá chính Text (2) Không rỗng Kí hiệu Mã loại NS 2 TenLoai Text (100) Không rỗng Mô tả Tên loại NS 3 Chuong_ID Ngoại lai Text (4) Không rỗng Kí hiệu Mã chương NS 4 GhiChu Text (100) Ghi chú nếu có 1.3. Bảng Khoản (KHOAN): bảng này định nghĩa các khoản ngân sách mà đơn vị sử dụng. Stt Tên trường Khoá Kiểu dữ liệu Điều kiện Chú thích 1 Khoan_ID Khoá chính Text (2) Không rỗng Kí hiệu Mã khoản NS 2 TenKhoan Text (100) Không rỗng Mô tả Tên khoản NS 3 Loai_ID Ngoại lai Text (2) Không rỗng Kí hiệu Mã loại NS 4 GhiChu Text (100) Ghi chú nếu có 1.4. Bảng Mục (MUC): bảng này định nghĩa các mục ngân sách mà đơn vị sử dụng. Stt Tên trường Khoá Kiểu dữ liệu Điều kiện Chú thích 1 Muc_ID Khoá chính Text (3) Không rỗng Kí hiệu mục NS 2 TenMuc Text (100) Không rỗng Mô tả tên mục NS 3 Khoan_ID Ngoại lai Text (2) Không rỗng Kí hiệu Mã khoản NS 4 GhiChu Text (100) Ghi chú nếu có 1.5. Bảng Tiểu mục (TIEUMUC): bảng này định nghĩa các tiểu mục ngân sách mà đơn vị sử dụng. Stt Tên trường Khoá Kiểu dữ liệu Điều kiện Chú thích 1 TieuMuc_ID Khoá chính Text (3) Không rỗng Kí hiệu mục NS 2 TenTieuMuc Text (100) Không rỗng Mô tả tên mục NS 3 Muc_ID Ngoại lai Text (3) Không rỗng Kí hiệu mã mục NS 4 GhiChu Text (100) Ghi chú nếu có 1.6. Bảng Thông báo ngân sách (THONGBAONS): bảng này được sử dụng để nhập các lần thông báo về hạn mức kinh phí của cơ quan tài chính cấp cho đơn vị. Việc thông báo hạn mức ở đây chi tiết đến Loại nào, khoản nào và mục nào mà không chi tiết cụ thể cho tiểu mục nào cả. Stt Tên trường Khoá Kiểu dữ liệu Điều kiện Chú thích 1 Auto_ID Khoá chính AutoNumber Không rỗng Xác định duy nhất 2 Loai_ID Ngoại lai Text (2) Không rỗng Kí hiệu Loại NS 3 Khoan_ID Ngoại lai Text (2) Không rỗng Kí hiệu Khoản NS 4 Muc_ID Ngoại lai Text (3) Không rỗng Kí hiệu mục NS 5 SoTien Double Số tiền > 0 Số tiền thông báo 6 NgayThang DateTime Không rỗng Tháng được cấp NS 1.7. Bảng Số dư lần đầu (SODU): bảng này chứa các số dư nếu có của các loại, khoản, mục khi chương trình được đưa vào sử dụng lần đầu tiên. Stt Tên trường Khoá Kiểu dữ liệu Điều kiện Chú thích 1 Auto_ID Khoá chính AutoNumber Không rỗng Xác định duy nhất 2 Loai_ID Ngoại lai Text (2) Không rỗng Kí hiệu Loại NS 3 Khoan_ID Ngoại lai Text (2) Không rỗng Kí hiệu Khoản NS 4 Muc_ID Ngoại lai Text (3) Không rỗng Kí hiệu mụ._. !giamdoc G_ChuTaiKhoan = !chutk End With rs.Close Set rs = Nothing End Sub Thủ tục xử lý cắt số hiệu chứng từ: Function CatSoCT(str As String) Dim vt As String vt = Mid(str, 3, 1) If vt = "0" Then CatSoCT = Right(str, 2) Else CatSoCT = Right(str, 3) End If End Function Mã nguồn của FormLogIn: Option Explicit Private Timthay As Boolean Dim rsUser As New ADODB.Recordset Dim Conn As ADODB.Connection Private Sub cmdCancel_Click() Timthay = False ' Dim TL As Integer ' TL = MsgBox("Bạn không muốn làm việc với chương trình? ", vbYesNo + vbQuestion) ' If TL = 6 Then End ' Else ' Exit Sub ' Me.txtUser.SetFocus ' End If End Sub Private Sub cmdOK_Click() Timthay = False With rsUser .MoveFirst Do While Not .EOF And Not Timthay If Trim(txtPass) = Trim(!Password) And Trim(txtUser) = Trim(!UserName) Then Timthay = True Else Timthay = False End If .MoveNext Loop End With If Timthay Then Unload Me FrmMain.Show Else MsgBox " Nhập sai tên đăng nhập hoặc mật khẩu !", vbInformation, "Cảnh báo đăng nhập QLCTNS" Me.txtPass.Text = "" Me.txtUser.Text = "" Me.txtUser.SetFocus End If End Sub Private Sub Command1_Click() frmHelpLogin.Show End Sub Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeyEscape Then Unload Me End If End Sub Private Sub Form_Load() Set Conn = New ADODB.Connection Conn.Open StrConn & App.Path & "\DataBase.mdb" rsUser.Open "thongsohethong", Conn, adOpenDynamic, adLockOptimistic End Sub Private Sub Form_Unload(Cancel As Integer) rsUser.Close Set rsUser = Nothing Conn.Close Set Conn = Nothing End Sub Mã nguồn của Frm_TieuMuc: Dim rs As ADODB.Recordset Dim F As Integer Dim o_TieuMuc, O_Muc, o_tenTM As String Private Sub CboMame_Click() txtTieuMuc.Text = CboMame.Text txtTieuMuc.SetFocus txtTieuMuc.SelStart = 3 End Sub Private Sub CboMame_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeyEscape Then Unload Me End If End Sub Private Sub cmdAdd_Click() F = 1 Me.CboMame.Enabled = True Me.txtTieuMuc.Enabled = True Me.TxtTenTieumuc.Enabled = True CboMame.Text = "" txtTieuMuc.Text = "" TxtTenTieumuc.Text = "" CboMame.SetFocus cmdDel.Enabled = True cmdSave.Enabled = True End Sub Private Sub cmdAdd_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeyEscape Then Unload Me End If End Sub Private Sub cmdDel_Click() On Error Resume Next Dim tb As Integer tb = MsgBox("Bạn thực sự muốn xoá thông tin về tiểu mục" & TxtTenTieumuc.Text & " ? ", vbQuestion + vbYesNo) If tb = 6 Then With rs .Delete .MovePrevious If .EOF Then .MoveLast If .BOF Then .MoveFirst End With End If If rs.BOF = True And rs.EOF = True Then Me.TxtTenTieumuc.Text = "" Me.txtTieuMuc.Text = "" End If Me.Refresh Display LoadListView End Sub Private Sub cmdfirst_Click() rs.MoveFirst Display LoadListView End Sub Private Sub DisplayRecord(rs As ADODB.Recordset) On Error Resume Next LvwTM.ListItems.Clear Dim Item As ListItem Dim i As Integer i = 1 rs.MoveFirst Do While Not rs.EOF With rs Set Item = LvwTM.ListItems.Add(i, , !TieuMuc) Item.SubItems(1) = !tentieumuc .MoveNext End With i = i + 1 Loop End Sub Private Sub cmdDel_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeyEscape Then Unload Me End If End Sub Private Sub CmdFind_Click() Dim MaMe, TieuMuc, StrSQL As String Dim rs1 As New ADODB.Recordset MaMe = Trim(CboMame) TieuMuc = Trim(TxtFind) If MaMe = "" And TieuMuc = "" Then MsgBox "Bạn phải chọn tiêu thức tìm kiếm. Chọn mã mẹ nếu bạn muốn tìm kiếm theo mã mẹ, Gõ vào tiểu mục nếu bạn muốn tìm kiếm theo tiểu mục" Exit Sub CboMame.SetFocus End If If MaMe "" And TieuMuc = "" Then StrSQL = "Select tieumuc, TenTieuMuc from tieumuc where tieumuc.Muc='" & MaMe & "';" ElseIf MaMe = "" And TieuMuc "" Then StrSQL = "Select tieumuc, TenTieuMuc from tieumuc where tieumuc='" & TieuMuc & "';" ElseIf MaMe "" And TieuMuc "" Then StrSQL = "Select tieumuc, TenTieuMuc from tieumuc where tieuMuc='" & TieuMuc & "';" End If rs1.Open StrSQL, Conn, adOpenForwardOnly, adLockReadOnly DisplayRecord rs1 rs1.Close Set rs1 = Nothing End Sub Private Sub CmdFind_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeyEscape Then Unload Me End If End Sub Private Sub cmdFist_Click() rs.MoveFirst Display LoadListView End Sub Private Sub cmdFist_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeyEscape Then Unload Me End If End Sub Private Sub cmdLast_Click() rs.MoveLast Display LoadListView End Sub Private Sub CmdLast_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeyEscape Then Unload Me End If End Sub Private Sub Cmdmody_Click() F = 2 Me.CboMame.Enabled = True Me.txtTieuMuc.Enabled = True Me.TxtTenTieumuc.Enabled = True txtTieuMuc.SetFocus cmdDel.Enabled = True cmdSave.Enabled = True o_TieuMuc = LvwTM.SelectedItem.Text O_Muc = Left(LvwTM.SelectedItem.Text, 3) o_tenTM = LvwTM.SelectedItem.SubItems(1) End Sub Private Sub Cmdmody_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeyEscape Then Unload Me End If End Sub Private Sub cmdnext_Click() With rs .MoveNext If .EOF Then MsgBox "Bản ghi cuối cùng, không thể di chuyển tiếp được", vbCritical .MoveLast End If End With Display LoadListView End Sub Private Sub CmdNext_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeyEscape Then Unload Me End If End Sub Private Sub cmdprev_Click() With rs .MovePrevious If .BOF Then MsgBox "Bản ghi đầu tiên, không thể di chuyển tiếp được", vbCritical .MoveFirst End If End With Display LoadListView End Sub Private Sub cmdPrev_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeyEscape Then Unload Me End If End Sub Private Sub CmdSave_Click() On Error GoTo BL If CboMame.Text = "" Then MsgBox "Chưa cho biết mã mẹ của tiểu mục ", vbCritical CboMame.SetFocus Exit Sub End If If txtTieuMuc.Text = "" Then MsgBox "Chưa nhập mã tiểu mục của Mục lục Ngân sách", vbCritical txtTieuMuc.SetFocus Exit Sub End If If TxtTenTieumuc.Text = "" Then MsgBox "Chưa nhập tên của tiểu mục ", vbCritical TxtTenTieumuc.SetFocus Exit Sub End If On Error GoTo ErrHdl If F = 1 Then With rs .AddNew !TieuMuc = Trim(txtTieuMuc.Text) !muc = Trim(CboMame.Text) !tentieumuc = Trim(TxtTenTieumuc.Text) .Update End With ElseIf F = 2 Then Dim StrSQL As String Dim cmd As New ADODB.Command StrSQL = "UPDATE TieuMuc SET tieuMuc='" & txtTieuMuc & "',TentieuMuc='" & TxtTenTieumuc & "' WHERE tieumuc='" & o_TieuMuc & "' AND tentieumuc='" & o_tenTM & "';" cmd.ActiveConnection = Conn cmd.CommandText = StrSQL cmd.Execute Set cmd = Nothing End If cmdSave.Enabled = False Me.CboMame.Enabled = False Me.txtTieuMuc.Enabled = False Me.TxtTenTieumuc.Enabled = False Display LoadListView BL: ErrHdl: If Err.Number = -2147217887 Then MsgBox "Mục lục đã có, nhập lại !" Me.txtTieuMuc.SetFocus Exit Sub End If End Sub Private Sub cmdSave_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeyEscape Then Unload Me End If End Sub Private Sub Command1_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeyEscape Then Unload Me End If End Sub Private Sub Form_Activate() F = 0 End Sub Private Sub Form_Load() Set rs = New ADODB.Recordset rs.Open "tieumuc", Conn, adOpenDynamic, adLockOptimistic, adCmdTable Me.Move (Screen.Width - Me.Width) \ 2, (Screen.Height - Me.Height) \ 6 Display LoadCboMame LoadListView cmdSave.Enabled = False Me.CboMame.Enabled = False Me.txtTieuMuc.Enabled = False Me.TxtTenTieumuc.Enabled = False End Sub Private Sub Display() On Error Resume Next With rs CboMame.Text = !muc txtTieuMuc.Text = !TieuMuc TxtTenTieumuc.Text = !tentieumuc End With Me.CboMame.Enabled = False Me.txtTieuMuc.Enabled = False Me.TxtTenTieumuc.Enabled = False End Sub Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) rs.Close Set rs = Nothing End Sub Private Sub Command1_Click() Unload Me End Sub Private Sub LoadListView() On Error Resume Next LvwTM.ListItems.Clear Dim rsLvw As New ADODB.Recordset Dim i As Integer Dim Item As Variant rsLvw.Open "tieumuc", Conn, adOpenForwardOnly, adLockReadOnly i = 1 rsLvw.MoveFirst Do While Not rsLvw.EOF Set Item = LvwTM.ListItems.Add(i, , rsLvw!TieuMuc) Item.SubItems(1) = rsLvw!tentieumuc rsLvw.MoveNext i = i + 1 Loop rsLvw.Close Set rsLvw = Nothing End Sub Private Sub Form_Unload(Cancel As Integer) FrmMain.MnuCap2.Enabled = True End Sub Private Sub LvwTM_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeyEscape Then Unload Me End If If KeyCode = 38 Or KeyCode = 40 Then CboMame.Text = Left(LvwTM.SelectedItem.Text, 3) txtTieuMuc = LvwTM.SelectedItem.Text TxtTenTieumuc = LvwTM.SelectedItem.SubItems(1) End If Me.Refresh End Sub Private Sub LvwTM_KeyUp(KeyCode As Integer, Shift As Integer) If KeyCode = 38 Or KeyCode = 40 Then CboMame.Text = Left(LvwTM.SelectedItem.Text, 3) txtTieuMuc = LvwTM.SelectedItem.Text TxtTenTieumuc = LvwTM.SelectedItem.SubItems(1) End If Me.Refresh End Sub Private Sub LvwTM_Click() F = 2 Dim Item As Variant Dim i As Integer For i = 1 To Me.LvwTM.ListItems.count If LvwTM.ListItems(i).Selected = True Then Item = LvwTM.ListItems(i).index With Me Me.CboMame = Left(LvwTM.ListItems(Item), 3) Me.txtTieuMuc = LvwTM.ListItems(Item) Me.TxtTenTieumuc = LvwTM.ListItems(Item).SubItems(1) o_TieuMuc = LvwTM.SelectedItem.Text O_Muc = Left(LvwTM.SelectedItem.Text, 3) o_tenTM = LvwTM.SelectedItem.SubItems(1) txtTieuMuc.Enabled = True TxtTenTieumuc.Enabled = True txtTieuMuc.SetFocus cmdDel.Enabled = True cmdSave.Enabled = True End With End If Next End Sub Private Sub LoadCboMame() Dim rsTemp As New ADODB.Recordset rsTemp.Open "select * from muc order by Muc", Conn, adOpenForwardOnly, adLockReadOnly With rsTemp .MoveFirst Do While Not .EOF Me.CboMame.AddItem !muc .MoveNext Loop .Close End With Set rsTemp = Nothing End Sub Private Sub TxtFind_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeyEscape Then Unload Me End If End Sub Private Sub TxtFind_KeyPress(KeyAscii As Integer) If Chr(KeyAscii) = vbBack Then Exit Sub If Not IsNumeric(Chr(KeyAscii)) Then KeyAscii = 0 End If End Sub Private Sub TxtTenTieumuc_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeyEscape Then Unload Me End If End Sub Private Sub txtTieuMuc_KeyDown(KeyCode As Integer, Shift As Integer) If KeyCode = vbKeyEscape Then Unload Me End If End Sub Private Sub txtTieuMuc_KeyPress(KeyAscii As Integer) If Chr(KeyAscii) = vbBack Then Exit Sub If Not IsNumeric(Chr(KeyAscii)) Then KeyAscii = 0 End If End Sub Mã nguồn của báo cáo tổng hợp chi: Option Explicit Dim VarReport4 As New CrRptBaoCaoChiTongHop Dim cmd As ADODB.Command Dim cmd1 As Command Dim cmd2 As Command Dim cmd3 As Command Dim cmd4 As Command Dim cmd5 As Command Dim cmdbangtonghop As Command Dim cmdADO As ADODB.Command 'Dim conn As New ADODB.Connection 'Dim VarThang11 As String Dim VarThang22 As String Dim VarYear As String Private Sub CRViewer1_CloseButtonClicked(UseDefault As Boolean) End Sub Private Sub Form_Load() Dim StrSQL As String 'SLieu cu: 'VarThang2 = G_ThangBC ' "3" 'VarThang1 = "( Cint(varthang2)-1 )" 'VarYear = G_CurrentYear ' "2003" ' Du lieu dung de kiem tra truy van: VarThang22 = G_ThangBC ' "3" 'VarThang11 = "( Cint(varthang22)-1 )" VarYear = G_CurrentYear ' "2003" Dim VarThang2 As Integer Dim VarThang1 As Integer VarThang2 = CInt(VarThang22) VarThang1 = VarThang2 - 1 ' CInt(VarThang11) ' Tao mot Instance for Command Object: ' SQL Statements defined following: '************************ SQL Bang Tam LKM (Bang nay se duoc lay lam goc) Set cmd = New ADODB.Command Set cmd.ActiveConnection = Conn Dim CreateLKM As String Dim InsertLKM As String CreateLKM = " CREATE TABLE LKM (Ma Text(7)) " InsertLKM = " INSERT INTO LKM ( Ma) " & _ " SELECT loai.loai & khoan.khoan & muc.muc " & _ " From loai, khoan, muc " & _ " ORDER BY loai.loai & khoan.khoan & muc.muc;" 'Dim DropLKM As String 'DropLKM = " DROP TABLE LKM" ' **** START: '**** SQL Ton Dau Ki: --> CO BIEN DINH KEM: chu y : (VarThang-1) ******* ‘********************************************************************* ' TonDauKi thang n = LuyKeNhap thang (n-1 ) - LuyKeXuat thang(n-1) ' Xu ly Luy Ke Xuat toi Thang N-1: Set cmd1 = New ADODB.Command Set cmd1.ActiveConnection = Conn Dim CreateLuyKeXuat2 As String Dim InsertLuyKeXuat2 As String CreateLuyKeXuat2 = " CREATE TABLE LuyKeXuat2 (Ma Text(7) , SoTien Double)" cmd1.CommandText = CreateLuyKeXuat2 cmd1.Execute cmd1.Cancel InsertLuyKeXuat2 = " INSERT INTO LuyKeXuat2 ( Ma, SoTien) " & _ " SELECT [chungtuchichitiet].[loai] & [chungtuchichitiet].[khoan] & [chungtuchichitiet].[muc], sum([chungtuchichitiet].[sotien]) " & _ " FROM Chungtuchi INNER JOIN ChungTuChiChiTiet ON [ChungTuChi].[SoCT]=[ChungTuChiChiTiet].[SoCT] " & _ " WHERE ( cint(Month([chungtuchi].[Ngayct]))<= " & VarThang1 & ") And (Year([chungtuchi].[NgayCT])='" & VarYear & "') " & _ " GROUP BY [chungtuchichitiet].[loai] & [chungtuchichitiet].[khoan] & [chungtuchichitiet].[muc]; " cmd1.CommandText = InsertLuyKeXuat2 cmd1.Execute cmd1.Cancel cmd1.CommandText = " select * From LuyKeXuat2 Order by ma" cmd1.Execute cmd1.Cancel 'Dim DropLuyKeXuat2 As String 'DropLuyKeXuat2 = " DROP TABLE LuyKeXuat2 " ' Xu ly Luy Ke Nhap Toi Thang N-1: Dim CreateLuyKeNhapChuaCoSoDu2 As String Dim InsertLuyKeNhapChuaCoSoDu2 As String CreateLuyKeNhapChuaCoSoDu2 = " CREATE TABLE LuyKeNhapChuaCoSoDu2 ( Ma Text(7), SoTien Double)" cmd1.CommandText = CreateLuyKeNhapChuaCoSoDu2 cmd1.Execute cmd1.Cancel InsertLuyKeNhapChuaCoSoDu2 = " INSERT INTO LuyKeNhapChuaCoSoDu2 ( Ma, SoTien)" & _ " SELECT A.loai & [khoan] & [muc] , sum(A.sotien) " & _ " FROM NhapNS AS A " & _ " Where ( cint ( Month(A.ngaythang)) <= " & VarThang1 & " ) And (Year(A.ngaythang) = '" & VarYear & "') " & _ " GROUP BY A.loai & [khoan] & [muc] " & _ " ORDER BY A.loai & [khoan] & [muc]; " cmd1.CommandText = InsertLuyKeNhapChuaCoSoDu2 cmd1.Execute cmd1.Cancel cmd1.CommandText = " select * from luykenhapchuacosodu2 " cmd1.Execute cmd1.Cancel 'Dim DropLuyKeNhapChuaCoSoDu2 As String 'DropLuyKeNhapChuaCoSoDu2 = " DROP TABLE LuyKeNhapChuaCoSoDu2 " '************ VUA SUA XONG LOI CHO NAY: ' Tao bang SoDu 2: Dim CreateSoDu2 As String CreateSoDu2 = " CREATE TABLE SoDu2 ( Nam Text(4), Loai Text(2), Khoan Text(2), Muc Text(3), TonDau Double)" cmd1.CommandText = CreateSoDu2 cmd1.Execute cmd1.CommandText = " INSERT INTO SoDu2 (Nam,Loai,Khoan,Muc,TonDau) " & _ " SELECT nam,loai,khoan,muc,tondau FROM SODU WHERE Nam= '" & VarYear & "'" cmd1.Execute cmd1.Cancel cmd1.CommandText = " SELECT * FROM SoDu2 Order By Loai,Khoan,muc" cmd1.Execute cmd1.Cancel '**************** KET THUC CHO VUA SUA ! 'Su dung Query QryLKM: 'Create LuyKeNhap . LuyKeNhap co cau truc: ' Ma (text), TonDau (Double), NhapTrongNam( Double) Dim CreateLuyKeNhap2 As String Dim InsertLuyKeNhap2 As String CreateLuyKeNhap2 = " CREATE TABLE LuyKeNhap2 ( Ma Text(7), TonDauNam Double , NhapTrongNam Double)" cmd1.CommandText = CreateLuyKeNhap2 cmd1.Execute cmd1.Cancel InsertLuyKeNhap2 = " INSERT INTO LuyKeNhap2 (Ma, TonDauNam,NhapTrongNam) " & _ " SELECT QRYLKM.MA, IIF( ISNULL(A.TONDAU),0,A.TONDAU), IIF(ISNULL(B.SOTIEN),0,B.SOTIEN) " & _ " FROM SODU2 AS A RIGHT JOIN ( QryLKM LEFT JOIN LUYKENHAPCHUACOSODU2 AS B ON QRYLKM.MA = B.MA) ON QRYLKM.MA=A.LOAI & KHOAN & MUC " & _ " ORDER BY QRYLKM.MA" 'DANG SUA: '" WHERE A.NAM='" & VarYear & "' " & cmd1.CommandText = InsertLuyKeNhap2 cmd1.Execute cmd1.Cancel cmd1.CommandText = " SELECT * FROM LuyKeNhap2 ORDER BY Ma " cmd1.Execute cmd1.Cancel 'Dim DropLuyKeNhap2 As String 'DropLuyKeNhap2 = " DROP TABLE LuyKeNhap2 " ' LuyKeNhapOK2: includes 2 fields : Ma & SoTien Dim CreateLuyKeNhapOK2 As String Dim InsertLuyKeNhapOK2 As String CreateLuyKeNhapOK2 = " CREATE TABLE LuyKeNhapOK2 (Ma Text(7), SoTien Double)" cmd1.CommandText = CreateLuyKeNhapOK2 cmd1.Execute cmd1.Cancel InsertLuyKeNhapOK2 = " INSERT INTO LuyKeNhapOK2 ( Ma, SoTien)" & _ " SELECT Ma, TonDauNam + NhapTrongNam FROM LuyKeNhap2 " cmd1.CommandText = InsertLuyKeNhapOK2 cmd1.Execute cmd1.Cancel cmd1.CommandText = " Select * FROM luykenhapok2" cmd1.Execute cmd1.Cancel 'Dim DropLuyKeNhapOK2 As String 'DropLuyKeNhapOK2 = "DROP TABLE LuyKeNhapOK2 " ' TonDauKi Dim CreateTonDauKi As String Dim InsertTonDauKi As String CreateTonDauKi = " CREATE TABLE TonDauKi ( Ma Text(7), SoTien Double)" cmd1.CommandText = CreateTonDauKi cmd1.Execute cmd1.Cancel InsertTonDauKi = " INSERT INTO TonDauKi (Ma, SoTien) " & _ " SELECT A.Ma , A.SoTien - IIF ( ISNULL ( B.SoTien),0,B.SoTien)" & _ " From LuyKeNhapOK2 as A Left Join LuyKeXuat2 as B ON A.Ma = B.Ma" cmd1.CommandText = InsertTonDauKi cmd1.Execute cmd1.Cancel cmd1.CommandText = " select * FROM TonDauKi" cmd1.Execute cmd1.Cancel ' Dim DropTonDauKi As String 'DropTonDauKi = " DROP TABLE TonDauKi" ' SELECT a.ma, a.expr1001 - IIf(IsNull(b.expr1001),0,b.expr1001) 'FROM baocao2_luykenhap_better AS a LEFT JOIN baocao2_luykexuat AS b ON a.ma=b.expr1000; '************************ SQL Nhap Trong Ki: -->CO BIEN DINH KEM ************************************************************************ Set cmd2 = New Command Set cmd2.ActiveConnection = Conn Dim CreateNhapTrongKy As String Dim InsertNhapTrongKy As String CreateNhapTrongKy = " CREATE TABLE NhapTrongKy ( Ma Text(7), SoTien Double) " cmd2.CommandText = CreateNhapTrongKy cmd2.Execute cmd2.Cancel InsertNhapTrongKy = " INSERT INTO NhapTrongKy ( Ma,SoTien) " & _ " SELECT [loai] & [khoan] & [muc], sum([sotien]) FROM NhapNS " & _ " WHERE ( cint(Month(ngaythang))=" & VarThang2 & " ) And (Year(ngaythang)='" & VarYear & "') " & _ " GROUP BY [loai] & [khoan] & [muc];" cmd2.CommandText = InsertNhapTrongKy cmd2.Execute cmd2.Cancel cmd2.CommandText = " select * FROM NhapTrongKy" cmd2.Execute cmd2.Cancel 'Dim InsertNhapTrongKy As String 'DropNhapTrongKy = " DROP TABLE NhapTrongKy " '************************ SQL Luy Ke Nhap: --> CO BIEN DINH KEM Set cmd4 = New ADODB.Command Set cmd4.ActiveConnection = Conn Dim CreateLuyKeNhapChuaCoSoDu As String Dim InsertLuyKeNhapChuaCoSoDu As String CreateLuyKeNhapChuaCoSoDu = " CREATE TABLE LuyKeNhapChuaCoSoDu ( Ma Text(7), SoTien Double)" cmd4.CommandText = CreateLuyKeNhapChuaCoSoDu cmd4.Execute cmd4.Cancel InsertLuyKeNhapChuaCoSoDu = " INSERT INTO LuyKeNhapChuaCoSoDu ( Ma, SoTien)" & _ " SELECT A.loai & [khoan] & [muc] , sum(A.sotien) " & _ " FROM NhapNS AS A " & _ " Where (cint(Month(A.ngaythang)) <= " & VarThang2 & " ) And (Year(A.ngaythang) = '" & VarYear & "') " & _ " GROUP BY A.loai & [khoan] & [muc] " & _ " ORDER BY A.loai & [khoan] & [muc]; " cmd4.CommandText = InsertLuyKeNhapChuaCoSoDu cmd4.Execute cmd4.Cancel cmd4.CommandText = " select * FROM LuyKeNhapChuaCoSoDu " cmd4.Execute cmd4.Cancel 'Dim DropLuyKeNhapChuaCoSoDu As String 'DropLuyKeNhapChuaCoSoDu = " DROP TABLE LuyKeNhapChuaCoSoDu " 'Dang sua cho Luy Ke Nhap ====> Tao bang so du 4: cmd4.CommandText = " CREATE TABLE SoDu4 (Nam Text(4), Loai Text(2), Khoan Text(2), Muc Text(3), TonDau Double)" cmd4.Execute cmd4.Cancel cmd4.CommandText = " Insert into SoDu4 (Nam, loai, khoan, muc, tondau) " & _ " SELECT Nam,loai,khoan,muc,tondau FROM SoDu WHERE Nam = '" & VarYear & "' " cmd4.Execute cmd4.Cancel cmd4.CommandText = " Select * FROM SoDu4 ORDER BY Loai, khoan,muc" cmd4.Execute cmd4.Cancel '' Ket thuc sua luy ke nhap 'Su dung Query QryLKM: 'Create LuyKeNhap . LuyKeNhap co cau truc: ' Ma (text), TonDau (Double), NhapTrongNam( Double) Dim CreateLuyKeNhap As String Dim InsertLuyKeNhap As String CreateLuyKeNhap = " CREATE TABLE LuyKeNhap ( Ma Text(7), TonDauNam Double , NhapTrongNam Double)" cmd4.CommandText = CreateLuyKeNhap cmd4.Execute cmd4.Cancel InsertLuyKeNhap = " INSERT INTO LuyKeNhap (Ma, TonDauNam,NhapTrongNam) " & _ " SELECT QRYLKM.MA, IIF( ISNULL(A.TONDAU),0,A.TONDAU), IIF(ISNULL(B.SOTIEN),0,B.SOTIEN) " & _ " FROM SODU4 AS A RIGHT JOIN ( QryLKM LEFT JOIN LUYKENHAPCHUACOSODU AS B ON QRYLKM.MA = B.MA) ON QRYLKM.MA=A.LOAI & KHOAN & MUC " & _ " ORDER BY QRYLKM.MA" 'DANG SUA: ==> " WHERE A.NAM='" & VarYear & "' " & cmd4.CommandText = InsertLuyKeNhap cmd4.Execute cmd4.Cancel cmd4.CommandText = "select * FROM LuyKeNhap" cmd4.Execute cmd4.Cancel 'Dim DropLuyKeNhap As String 'DropLuyKeNhap = " DROP TABLE LuyKeNhap " ' LuyKeNhapOK: includes 2 fields : Ma & SoTien Dim CreateLuyKeNhapOK As String Dim InsertLuyKeNhapOK As String CreateLuyKeNhapOK = " CREATE TABLE LuyKeNhapOK (Ma Text(7), SoTien Double)" cmd4.CommandText = CreateLuyKeNhapOK cmd4.Execute cmd4.Cancel InsertLuyKeNhapOK = " INSERT INTO LuyKeNhapOK ( Ma, SoTien)" & _ " SELECT Ma, TonDauNam + NhapTrongNam FROM LuyKeNhap " cmd4.CommandText = InsertLuyKeNhapOK cmd4.Execute cmd4.Cancel cmd4.CommandText = " select * FROM LuyKeNhapOK" cmd4.Execute cmd4.Cancel 'Dim DropLuyKeNhapOK As String 'DropLuyKeNhapOK = "DROP TABLE LuyKeNhapOK " '************************ SQL Xuat Trong Ky --> CO BIEN DINH KEM Set cmd3 = New Command Set cmd3.ActiveConnection = Conn Dim CreateXuatTrongKy As String Dim InsertXuatTrongKy As String CreateXuatTrongKy = " CREATE TABLE XuatTrongKy ( Ma Text(7), SoTien Double)" cmd3.CommandText = CreateXuatTrongKy cmd3.Execute cmd3.Cancel InsertXuatTrongKy = " INSERT INTO XuatTrongKy ( Ma, SoTien) " & _ " SELECT chungtuchichitiet.loai & chungtuchichitiet.khoan & chungtuchichitiet.muc , sum( chungtuchichitiet.sotien) " & _ " FROM Chungtuchi INNER JOIN ChungTuChiChiTiet ON ChungTuChi.SoCT = ChungTuChiChiTiet.SoCT " & _ " WHERE (cint(Month(chungtuchi.Ngayct))= " & VarThang2 & " ) AND (Year(chungtuchi.NgayCT)='" & VarYear & "') " & _ " GROUP BY chungtuchichitiet.loai & chungtuchichitiet.khoan & chungtuchichitiet.muc; " cmd3.CommandText = InsertXuatTrongKy cmd3.Execute cmd3.Cancel cmd3.CommandText = " SELECT * FROM XuatTrongKy " cmd3.Execute cmd3.Cancel 'Dim DropXuatTrongKy As String 'DropXuatTrongKy = " DROP TABLE XuatTrongKy " '************************ SQL Luy Ke Xuat : --> CO BIEN DINH KEM Set cmd5 = New ADODB.Command Set cmd5.ActiveConnection = Conn Dim CreateLuyKeXuat As String Dim InsertLuyKeXuat As String CreateLuyKeXuat = " CREATE TABLE LuyKeXuat (Ma Text(7) , SoTien Double)" cmd5.CommandText = CreateLuyKeXuat cmd5.Execute cmd5.Cancel InsertLuyKeXuat = " INSERT INTO LuyKeXuat ( Ma, SoTien) " & _ " SELECT [chungtuchichitiet].[loai] & [chungtuchichitiet].[khoan] & [chungtuchichitiet].[muc], sum([chungtuchichitiet].[sotien]) " & _ " FROM Chungtuchi INNER JOIN ChungTuChiChiTiet ON [ChungTuChi].[SoCT]=[ChungTuChiChiTiet].[SoCT] " & _ " WHERE (cint(Month([chungtuchi].[Ngayct]))<=" & VarThang2 & ") And (Year([chungtuchi].[NgayCT])='" & VarYear & "') " & _ " GROUP BY [chungtuchichitiet].[loai] & [chungtuchichitiet].[khoan] & [chungtuchichitiet].[muc]; " cmd5.CommandText = InsertLuyKeXuat cmd5.Execute cmd5.Cancel cmd5.CommandText = " select * FROM LuyKeXuat " cmd5.Execute '************************** Bang Tong Hop : ****************************** Set cmdbangtonghop = New ADODB.Command Set cmdbangtonghop.ActiveConnection = Conn Dim CreateBangTongHop As String CreateBangTongHop = " CREATE TABLE BangTongHop ( Ma Text(7),TonDauKi Double, NhapTrongKy Double,LuyKeNhap Double,XuatTrongKi Double,LuyKeXuat Double )" cmdbangtonghop.CommandText = CreateBangTongHop cmdbangtonghop.Execute cmdbangtonghop.Cancel Dim InsertBangTongHop As String 'InsertBangTongHop = " Insert INTO BangTongHop(Ma,TonDauKi,NhapTrongKy,LuyKeNhap,XuatTrongKi,LuyKeXuat ) " & _ ' " SELECT qryLKM.Ma as Ma, IIF ( ISNULL(TonDauKi.SoTien),0,TonDauKi.SoTien) as TonDauKi,IIF( ISNull (NhapTrongKy.SoTien), 0, NhapTrongKy.SoTien) as NhapTrongKy, LuyKeNhap.TonDauNam + LuyKeNhap.NhapTrongNam as LuyKeNhap,IIF ( ISNULL(XuatTrongKy.SoTien),0,XuatTrongKy.SoTien) as XuatTrongKi,IIF ( ISNULL (LuyKeXuat.SoTien),0,LuyKeXuat.SoTien) as LuyKeXuat " & _ ' " From LuyKeXuat Right Join (XuatTrongKy Right Join (LuyKeNhap Right Join (NhapTrongKy Right Join ( QryLKM Left Join TonDauKi ON QryLKM.Ma =TonDauKi.Ma ) " & _ '"ON NhapTrongKy.Ma = QryLKM.Ma) ON LuyKeNhap.Ma = QryLKM.Ma) ON XuatTrongKy.Ma = QryLKM.Ma) ON LuyKeXuat.Ma = QryLKM.Ma " & _ ' " ORDER BY QryLKM.Ma" InsertBangTongHop = " Insert INTO BangTongHop(Ma,TonDauKi,NhapTrongKy,LuyKeNhap,XuatTrongKi,LuyKeXuat ) " & _ " SELECT qryLKM.Ma as Ma, IIF ( ISNULL(TonDauKi.SoTien),0,TonDauKi.SoTien) as TonDauKi,IIF( ISNull (NhapTrongKy.SoTien), 0, NhapTrongKy.SoTien) as NhapTrongKy, IIF ( ISNULL (LuyKeNhapOK.SoTien) , 0 ,LuyKeNhapOK.SoTien ) as LuyKeNhap,IIF ( ISNULL(XuatTrongKy.SoTien),0,XuatTrongKy.SoTien) as XuatTrongKi,IIF ( ISNULL (LuyKeXuat.SoTien),0,LuyKeXuat.SoTien) as LuyKeXuat " & _ " From LuyKeXuat Right Join (XuatTrongKy Right Join (LuyKeNhapok Right Join (NhapTrongKy Right Join ( QryLKM Left Join TonDauKi ON QryLKM.Ma =TonDauKi.Ma ) " & _ " ON NhapTrongKy.Ma = QryLKM.Ma) ON LuyKeNhapok.Ma = QryLKM.Ma) ON XuatTrongKy.Ma = QryLKM.Ma) ON LuyKeXuat.Ma = QryLKM.Ma " & _ " ORDER BY QryLKM.Ma" cmdbangtonghop.CommandText = InsertBangTongHop cmdbangtonghop.Execute cmdbangtonghop.Cancel cmdbangtonghop.CommandText = " select * from bangtonghop order by Ma" cmdbangtonghop.Execute '****** Ket Noi Tao Nguon cho Report Bao Cao Chi Tong Hop Trong Thang: ******** ‘*********************************************************************** Set cmdADO = New ADODB.Command Set cmdADO.ActiveConnection = Conn StrSQL = " SELECT * " & _ " FROM (SELECT left(ma,4) as Ma1,sum(tondauki) as TonDauKi1 ,sum(nhaptrongky) as NhapTrongKy1, sum(luykenhap) as LuyKeNhap1, sum(xuattrongki) as XuatTrongKi1, sum(luykexuat) as LuyKeXuat1 " & _ " From BangTongHop " & _ " Group By left(ma,4) ) " & _ " WHERE not ( LuyKeXuat1 =0 AND TonDauKi1 =0 AND NhapTrongKy1=0 AND LuyKeNhap1=0 AND XuatTrongKi1=0 ); " '" WHERE not ( LuyKeXuat1 =0 AND TonDauKi1 =0 AND NhapTrongKy1=0 AND LuyKeNhap1=0 AND XuatTrongKi1=0 ) " cmdADO.CommandText = StrSQL cmdADO.CommandType = adCmdText On Error Resume Next VarReport4.Database.AddADOCommand Conn, cmdADO 'On Error Resume Next With VarReport4 .UnbForLoai.SetUnboundFieldSource "Left({ado.Ma1},2)" .UnbForKhoan.SetUnboundFieldSource "Right({ado.Ma1},2)" '.UnbForMuc.SetUnboundFieldSource "Right({ado.Ma1},3)" .UnbForTonDauKy.SetUnboundFieldSource "{ado.TonDauKi1}" .UnbForNhapTrongKyNay.SetUnboundFieldSource "{ado.NhapTrongKy1}" .UnbForLuyKeNhap.SetUnboundFieldSource "{ado.LuyKeNhap1}" .UnbForXuatTrongKy.SetUnboundFieldSource "{ado.XuatTrongKi1}" .UnbForLuyKeXuat.SetUnboundFieldSource "{ado.LuyKeXuat1}" .txtTieuDeThang.SetText VarThang2 .txtTieuDeNam.SetText G_CurrentYear If G_NgayInBC "" Then .txtNgay.SetText Day(CDate(G_NgayInBC)) .txtThang.SetText Month(CDate(G_NgayInBC)) .txtNam.SetText Year(CDate(G_NgayInBC)) Else .txtNgay.SetText " " .txtThang.SetText " " .txtNam.SetText " " End If .txtKeToan.SetText G_TenKTDV .txtChuTaiKhoan.SetText G_ChuTaiKhoan .PaperSize = crPaperA4 End With Screen.MousePointer = vbHourglass With CRViewer1 .ReportSource = VarReport4 .ViewReport .Zoom 100 .EnableGroupTree = False .EnableRefreshButton = True End With Screen.MousePointer = vbDefault End Sub Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer) Dim DropLuyKeXuat2 As String DropLuyKeXuat2 = " DROP TABLE LuyKeXuat2 " cmd.CommandText = DropLuyKeXuat2 cmd.Execute cmd.Cancel cmd.CommandText = "DROP TABLE SoDu2" cmd.Execute cmd.CommandText = " DROP TABLE SoDu4" cmd.Execute Dim DropLuyKeNhapChuaCoSoDu2 As String DropLuyKeNhapChuaCoSoDu2 = " DROP TABLE LuyKeNhapChuaCoSoDu2 " cmd1.CommandText = DropLuyKeNhapChuaCoSoDu2 cmd1.Execute Dim DropLuyKeNhap2 As String DropLuyKeNhap2 = " DROP TABLE LuyKeNhap2 " cmd1.CommandText = DropLuyKeNhap2 cmd1.Execute Dim DropLuyKeNhapOK2 As String DropLuyKeNhapOK2 = "DROP TABLE LuyKeNhapOK2 " cmd2.CommandText = DropLuyKeNhapOK2 cmd2.Execute Dim DropTonDauKi As String DropTonDauKi = " DROP TABLE TonDauKi" cmd2.CommandText = DropTonDauKi cmd2.Execute 'Dim DropNhapTrongKy As String 'DropNhapTrongKy = " DROP TABLE NhapTrongKy " 'cmd2.CommandText = DropNhapTrongKy Dim DropLuyKeNhapChuaCoSoDu As String DropLuyKeNhapChuaCoSoDu = " DROP TABLE LuyKeNhapChuaCoSoDu " cmd2.CommandText = DropLuyKeNhapChuaCoSoDu cmd2.Execute cmd2.Cancel Dim DropLuyKeNhap As String DropLuyKeNhap = " DROP TABLE LuyKeNhap " cmd3.CommandText = DropLuyKeNhap cmd3.Execute Dim DropLuyKeNhapOK As String DropLuyKeNhapOK = "DROP TABLE LuyKeNhapOK " cmd3.CommandText = DropLuyKeNhapOK cmd3.Execute Dim DropXuatTrongKy As String DropXuatTrongKy = " DROP TABLE XuatTrongKy " cmd3.CommandText = DropXuatTrongKy cmd3.Execute Dim DropLuyKeXuat As String DropLuyKeXuat = " DROP TABLE LuyKeXuat " cmd4.CommandText = DropLuyKeXuat cmd4.Execute cmd4.Cancel 'Dim DropLuyKeNhapChuaCoSoDu As String 'DropLuyKeNhapChuaCoSoDu = " DROP TABLE LuyKeNhapChuaCoSoDu" 'cmd5.CommandText = DropLuyKeNhapChuaCoSoDu 'cmd5.Execute Dim DropNhapTrongKy As String DropNhapTrongKy = " DROP TABLE NhapTrongKy " cmd5.CommandText = DropNhapTrongKy cmd5.Execute cmdbangtonghop.CommandText = "DROP TABLE BangTongHop " cmdbangtonghop.Execute Set cmd = Nothing Set cmd1 = Nothing Set cmd2 = Nothing Set cmd3 = Nothing Set cmd4 = Nothing Set cmd5 = Nothing Set cmdbangtonghop = Nothing Set cmdADO = Nothing Set VarReport4 = Nothing End Sub Private Sub Form_Resize() CRViewer1.Top = 0 CRViewer1.Left = 0 CRViewer1.Height = ScaleHeight CRViewer1.Width = ScaleWidth End Sub Hết ._.

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

  • doc3492.doc