Luận văn Xây dựng phần mềm quản lý vốn dự án đầu tư cho sở kế hoạch và đầu tư tỉnh Điện Biên

Cùng với sự phát triển của công nghệ thông tin, tin học đang được áp dụng ngày càng nhiều vào đời sống thực tế và trở nên không thể thiếu được trong quá trình phát triển của xã hội nói chung và của các doanh nghiệp nói riêng. Với sự đi lên không ngừng của nền kinh tế thì quản lý vốn dự án đầu tư đang ngày càng trở nên cần thiết và cấp bách hơn bao giờ hết. Việc xây dựng phần mềm sẽ giúp phần giảm nhẹ công tác quản lý của Sở Kế hoạch và Đầu tư tỉnh Điện Biên. Các thông tin về vốn của dự án sẽ được cập nhật nhanh chóng và chính xác tại mọi thời điểm. Chính vì vậy mà Sở Kế hoạch và Đầu tư tỉnh Điện Biên là một trong những Sở Kế hoạch và Đầu tư đầu tiên trên cả nước đi đầu trong trong việc tin học hoá quản lý vốn dự án Đầu tư.

doc99 trang | Chia sẻ: aloso | Lượt xem: 1529 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Luận văn Xây dựng phần mềm quản lý vốn dự án đầu tư cho sở kế hoạch và đầu tư tỉnh Điện Biên, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
ính khác. Ví dụ như thành tiền (=đơn giá x số lượng ). Những thuộc tính không phải là thứ sinh thì được gọi là các thuộc tính cơ sở. - Gạch chân các thuộc tính khoá cho thông tin đầu ra. - Loại bỏ các thuộc tính thứ sinh khỏi danh sách, chỉ để lại các thuộc tính cơ sở. Xem xét loại bỏ các thuộc tính không có ý nghĩa trong quản lý. Ví dụ Từ đầu ra “Phiếu yêu cầu mượn sách” ta lập được danh sách các thuộc tính: - Số phiếu - Số thẻ - Họ và tên - Đơn vị - Thứ tự - Tên sách/báo - Ký hiệu (R) - Phân loại (R) - Giá (R) - Thủ thư - Chữ ký - Ngày mượn - Ngày trả Ký hiệu (R) là đánh dấu thuộc tính lặp (Repeatable) Thực hiện việc chuẩn hoá mức 1 (1.NF) - Việc chuẩn hoá mức một (1NF) quy định rằng, trong mỗi danh sách không được chứa những thuộc tính lặp. Nếu có các thuộc tính lặp thì phải tách các thuộc tính lặp đó thành một 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ụ Sau khi chuẩn hoá mức một danh sách các thuộc tính của phiếu yêu cầu mượn sách trên ta tách ra được làm hai danh sách như sau: 1NF1: - Số phiếu - Số thẻ - Họ và tên - Đơn vị - Thủ thư - Chữ ký - Ngày mượn - Ngày trả 1NF2: - Số phiếu - Tên sách/báo - Ký hiệu - Phân loại - Giá Thực hiện việc chuẩn hoá mức 2 (2.NF) - Chuẩn hoá mức hai (2NF) quy định rằng trong một danh sách mỗi 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á. Nếu có sự phụ thuộc thì phải tách những thuộc tính phụ thuộc hàm vào bộ phận của khoá thành một danh sách con mới. - Lấy bộ phận khoá đó làm khoá cho danh sách mới. Đặ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ụ Sau khi chuẩn hoá mức hai các danh sách thuộc tính của 1NF2 sẽ là: 2NF1: - Tên sách/báo - Ký hiệu - Phân loại - Giá 2NF2: - Số phiếu - Ký hiệu Thực hiện việc chuẩn hoá mức 3 (3.NF) - Chuẩn hoá mức ba quy đị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 thuộc tính Z phụ thuộc hàm vào thuộc tính Y và Y phụ thuộc hàm vào X thì phải tách chúng vào hai danh sách chứa quan hệ Z, Y và danh sách chứa quan hệ Y với X. - Xác định khoá và tên cho mỗi danh sách mới. Sau khi chuẩn hoá mức ba danh sách thuộc tính của phiếu yêu cầu mượn sách sẽ là: Phiếu yêu cầu: Số phiếu Số thẻ Thủ thư Ngày mượn Ngày trả Chữ ký Thẻ mượn Số thẻ Họ tên Đơn vị Sách báo chí Ký hiệu Tên sách báo Phân loại Giá Phiếu yêu cầu _ tài liệu Số phiếu Ký hiệu Bước ba: Tích hợp các tên để tạo ra một cơ sở dl Phiếu yêu cầu Số phiếu Số thẻ Thủ thư Ngày mượn Ngày trả Chữ ký Thẻ mượn Số thẻ Họ tên Đơn vị Sách báo chí Ký hiệu Tên sách báo Phân loại Giá Phiếu yêu cầu _ tài liệu Số phiếu Ký hiệu 2.5.2 Thiết kế cơ sở dữ liệu bằng phương pháp mô hình hoá. - Khái niệm cơ bản Thực thể (Entity) : thực thể trong mô hình logic dữ liệu được dùng để biểu diễn những đối tượng cụ thể hoặc trừu tượng trong thế giới thực mà ta muốn lưu giữ thông tin về chúng. Thực thể được biểu diễn bằng một hình chữ nhật có ghi tên thực thể bên trong. CHỦ ĐẦU TƯ Liên kết(Association) : một thực thể trong thực tế không tồn tại độc lập với các thực thể khác. Có sự liên kết với qua lại giữa các thực thể với nhau. Khái niệm liên kết được dùng để trình bày, thể hiện những mối liên hệ tồn tại giữa các thực thể. - Mức độ của liên kết Để thiết kế tốt các sự trợ giúp quản lý của hệ thống thông tin, ngoài việc biết thực thể này liên kết với thực thể khác ra sao, còn phải biết có bao nhiêu lần xuất của thực thể A tương tác với thực thể B và ngược lại. Mỗi CHỦ ĐẦU TƯ có nhiều DỰ ÁN Mỗi DỰ ÁN thuộc nhiều CHỦ ĐẦU TƯ 1@1 Liên kết loại Một - Một Một lần xuất của thực thể A được liên kết với chỉ một lần xuất của thực thể B và ngược lại. 1@N Liên kết loại Một - Nhiều Một lần xuất của thực thể A được liên kết với chỉ một hoặc nhiều lần xuất của thực thể B và mỗi lần xuất của thực thể B chỉ liên kết với duy nhất một lần xuất của thực thể A N@M Liên kết loại Nhiều - Nhiều Một lần xuất của thực thể A được liên kết với một hoặc nhiều lần xuất của thực thể B và mỗi lần xuất của thực thể B được liên kết với một hoặc nhiều lần xuất của thực thể A. - Chiều của một liên kết Chiều của một quan hệ chỉ ra số lượng các thực thể tham gia vào quan hệ đó. Có ba loại quan hệ : một chi, hai chiều và nhiều chiều. Quan hệ một chiều là quan hệ mà một lần xuất của một thực thể được quan hệ với một lần xuất của chính thực thể đó. Quan hệ hai chiều là quan hệ trong đó có hai thực thể liên kết với nhau. Quan hệ nhiều chiều là một quan hệ có nhiều hơn hai thực thể tham gia . - Thuộc tính 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ó ba loại thuộc tính : thuộc tính mô tả, thuộc tính định danh và thuộc tính quan hệ. Thuộc tính định danh là thuộc tính dùng để xác định một cách duy nhất mỗi lần xuất của thực thể. Giá trị của thuộc tính đó là duy nhất đối với mọi lần xuất của thực thể. Thuộc tính mô tả dùng để mô tả về thực thể. Thuộc tính quan hệ dùng để chỉ đến một lần xuất nào đó trong thực thể có quan hệ. 2.6 Khái quát về dự án đầu tư 2.6.1 Khái niệm dự án đầu tư Đầu tư là một hoạt động quan trọng của bất kỳ tổ chức nào trong nền kinh tế. Đó là hoạt động bỏ vốn với hy vọng đạt được lợi ích tài chính, kinh tế xã hội trong tương lai. Ngày nay, nhằm tối đa hoá hiệu quả đầu tư, các hoạt động đầu tư đều được thực hiện theo dự án. Dự án đầu tư có thể được xem xét từ nhiều góc độ. Về mặt hình thức, dự án đầu tư là một tập hồ sơ tài liệu trình bày một cách chi tiết và có hệ thống các hoạt động và chi phí theo một kế hoạch để đạt được những kết quả và thực hiện được những mục tiêu nhất định trong tương lai. Trên góc độ quản lý, dự án đầu tư là một công cụ quản lý việc sử dụng vốn, vật tư, lao động để tạo ra các kết quả tài chính, kinh tế - xã hội trong một thời gian dài. Như vậy, một dự án đầu tư bao gồm bốn thành thành phần chính: - Mục tiêu của dự án được thể hiện ở hai mức: Mục tiêu phát triển và những lợi ích kinh tế - xã hội do thực hiện dự án đem lại và mục tiêu trước mắt là các mục đích cụ thể cần đạt được của việc thực hiện dự án. - Các kết quả: đó là những kết quả cụ thể có thể định lượng, được tạo ra từ các hoạt động khác nhau của dự án. Đây là điều kiện cần thiết để thực hiện các mục tiêu của dự án. - Các hoạt động: là những nhiệm vụ hoặc hành động được thực hiện trong dự án để tạo ra các kết quả nhất định. Những nhiệm vụ hoặc hành động này cùng với một lịch biểu và trách nhiệm cụ thể của các bộ phận thực hiện sẽ tạo thành kế hoạch làm việc của dự án. - Các nguồn lực: về vật chất, tài chính và con người cần thiết để tiến hành các hoạt động của dự án. Giá trị hoặc chi phí của các nguồn lực này chính là vốn đầu tư cần cho dự án. Trong bốn thành phần trên thì các kết quả được coi là cột mốc đánh dấu tiến độ của dự án. Vì vậy, trong quá trình thực hiện dự án phải thường xuyên theo dõi đánh giá các kết quả đạt được. Do đó quản lý vốn dự án đầu tư có vai trò đặc biệt quan trọng và cần phải theo dõi một cách thường xuyên. 2.6.2 Chu kỳ của dự án đầu tư Chu kỳ của dự án đầu tư là các bước hoặc các giai đoạn mà một dự án phải trải qua bắt đầu từ khi dự án mới chỉ là ý đồ đến khi dự án được hoàn thành chấm dứt hoạt động. Ta có thể minh hoạ chu kỳ của dự án đầu tư theo hình sau đây Ý đồ về dự án mới Ý đồ về dự án đầu tư Sản xuất kinh doanh dịch vụ Thực hiện đầu tư Chuẩn bị đầu tư Hình 2.3: Sơ đồ chu kỳ của dự án đầu tư 2.6.3 Quá trình hình thành và thực hiện một dự án đầu tư Quá trình hình thành và thực hiện một dự án đầu tư trải quan ba giai đoạn: Chuẩn bị đầu tư, thực hiện đầu tư và vận hành các kết quả đầu tư. Các bước công việc, các nội dung nghiên cứu ở các giai đoạn được tiến hành tuần tự nhưng không biệt lập mà đan xen gối đầu cho nhau, bổ xung cho nhau. Chuẩn bị đầu tư Thực hiện đầu tư Vận hành kết quả đầu tư Nghiên cứu phát hiện các cơ hội đầu tư Nghiên cứu tiền khả thi sơ bộ lựa chọn dự án Nghiên cứu khả thi Đánh giá và quyết định (thẩm định dự án) Hoàn tất các thủ tục để triển khai thực hiện đầu tư Thiết kế và lập dự toán thi công xây lắp công trình Thi công xây lắp công trình Chạy thử và nghiệm thu sử dụng Sử dụng chưa hết công suất Sử dụng công suất ở mức cao nhất Công suất giảm dần và thanh lý 2.7 Khái quát về công cụ sử dụng để thực hiện đề tài 2.7.1 Cơ sở dữ liệu Ông Thomas Watson, Jr, nguyên chủ tịch cỉa công ty IBM đã nói: “Toàn bộ giá trị của công ty này nằm trong đội ngũ cán bộ công nhân viên và những tệp dữ liệu. Dù tất cả các nhà cửa, văn phòng của công ty bị cháy trụi nhưng vẫn giữ được những con người và những tệp dữ liệu thì chẳng bao lâu chúng ta sẽ lại trở nên hùng mạnh như xưa. ” Hãy thử tưởng tượng xem điều gì sẽ xảy ra đối với một ngân hàng không còn nhớ nổi những ai đã vay tiền của họ hay một công ty phần mềm máy tính đã mất hết những chương trình nguồn do họ lập ra. Các cơ quan sẽ phải có trí nhớ, đó là những kho dữ liệu lưu trữ hàng tỷ tỷ những điều chi tiết cần thiết cho kinh doanh, nghiệp vụ và ra quyết định. Nói rằng: “Dữ liệu của một tổ chức có vai trò sống còn ” là điều khẳng định hoàn toàn đúng. 2.7.2 Hệ quản trị cơ sở dữ liệu Microsoft Access Trong những năm gần đây, công nghệ thông tin ngày càng phát triển với nhiều ứng dụng rộng rãi trong công tác quản lý xã hội, kinh tế, khoa học kỹ thuật. Hiện nay, có nhiều hệ quản trị cơ sở dữ liệu đang được sử dụng trên thế giới và trong nước: Microsoft Access, SQL, và Oracle. Trong đó Microsoft Access là một trong những bộ chương trình quan trọng thuộc tổ hợp chương trình Microsoft Office do hãng phần mềm Microsoft sản xuất. Microsoft Access hoạt động trong môi trường Windows, là một hệ điều hành giao diện đồ hoạ, do đó thiết kế cơ sở dữ liệu trên Microsoft Access rất thuận lợi với giao diện trực quan, khả năng phát triển ứng dụng mới nhanh chóng, chuyên nghiệp. Trong Microsoft Access có thể dùng ngôn ngữ lập trình hướng đối tượng Visual Basic. 2.7.3 Ưu điểm của ngôn ngữ lập trình Visual Basic 6.0 Là một ngôn ngữ mới và mạnh, Visual Basic có rất nhiều những ưu điểm. Với Visual Basic, có thể dễ dàng tạo những chương trình hoàn hảo với giao diện đẹp và hết sức sinh động bởi vì Visual Basic không chỉ cung cấp một khối lượng lớn các công cụ cho ta tuỳ chọn sử dụng mà còn hỗ trợ trong việc lập trình xử lý mã lệnh. Hơn nữa, Visual Basic còn có thể kết nối với các cơ sở dữ liệu từ nhiều nguồn khác nhau giúp các lập trình viên thoải mái hơn trong việc thao tác với dữ liệu. Nói chung, Visual Basic có thể sử dụng để xây dựng nên một phần mềm hoàn thiện theo bất cứ yêu cầu nào của người sử dụng. CHƯƠNG III XÂY DỰNG PHẦN MỀM QUẢN LÝ VỐN DỰ ÁN ĐẦU TƯ TẠI SỞ KẾ HOẠCH VÀ ĐẦU TƯ TỈNH ĐIỆN BIÊN 3.1 Phân tích hệ thống thông tin quản lý vốn dự án đầu tư 3.1.1 Thu thập thông tin hệ thống thông tin quản lý vốn dự án đầu tư Khi một dự án được đưa vào quản lý thì tuỳ theo dự án đó thuộc ngành nào thì phòng ban thuộc ngành đó sẽ quản lý. Các phòng ban khác chỉ được xem thông tin mà không được sửa thông tin về dự án đó. Sau khi dự án được đưa vào quản lý thì các thông tin về dự án sẽ được đưa lên mạng cục bộ. Ở đó mọi nhân viên thuộc sở đều có thể lấy thông tin ra. - Các thông tin về dự án bao gồm: Tên dự án Ngày khởi công Ngày kết thúc Số quyết định Ngày quyết định Nhóm dự án Chủ đầu tư Thuộc ngành Cơ quan quản lý dự án - Các thông tin về vốn của dự án Loại nguồn vốn Tiền nước ngoài Tiền đối ứng Kế hoạch vốn Dự toán Kế hoạch Thực hiện Thanh toán Các mẫu biểu thu thập được Đầu tư phát triển trên địa bàn 2006 Tỉnh Điện Biên STT Chỉ tiªu Thùc KÕ So s¸nh (%) hiÖn N¨m 2005 ho¹ch ¦íc TH KH n¨m n¨m KÕ Thùc n¨m 2005/TH 2006/ước 2.004 ho¹ch hiÖn 2006 2004 TH 2005 Tæng sè: 1.121.007 1.350.000 1.308.452 1.950.000 117 149 A Vèn ®Çu tư do ®Þa phư¬ng qu¶n lý 791.95 946.985 905.625 1.485.138 114 164 I Nguån vèn ng©n s¸ch nhµ nưíc 336.499 472.414 465.054 1.126.908 138 ####### Trong ®ã: - Vèn ®èi øng ODA 5.933 7.442 7.442 51 125 685 - ThiÕt kÕ qui ho¹ch 2.51 1.822 1.822 1.402 73 s77 - ChuÈn bÞ ®Çu tư 1 1 1 100 I.1 Vèn nưíc ngoµi (ODA) 53.438 79.542 72.182 47.36 - Vån JBIC 35.016 40.743 33.383 27.36 T. ®ã: + KÕ ho¹ch ®Çu n¨m 35.016 12.6 20 + N¨m tríc chuyÓn sang 28.143 7.36 - Vèn EU 18.422 38.799 38.799 - Vèn ODA kh¸c (KUWAIT) 20 I.2 Vèn c©n ®èi ng©n s¸ch ®Þa phư¬ng 69.675 66.48 66.48 200 95 301 Chia theo nguån vèn - Nguån vèn XDCB TT 56.394 58.492 58.492 191.5 104 327 - Vèn kÕt dư n¨m trưíc chuyÓn sang 4.882 2.098 2.098 - Vèn dù tr÷ tµi chÝnh 4.061 - Vèn thu tõ tiÒn sö dông ®Êt 4.338 5.89 5.89 8.5 136 144 Chia theo c¬ cÊu ®Çu tư 69.675 66.48 66.48 200 95 301 1 C«ng nghiÖp 2.127 872 872 3.095 41 355 2 N«ng, l©m, ngư nghiÖp 4.274 1.8 1.8 3.5 42 194 Trong ®ã: - XD C¬ së gièng n«ng nghiÖp 382 0 - Thuû lîi 3.892 1.8 1.8 3.5 - L©m nghiÖp 0 - Thuû s¶n 0 3.1.2 Mô hình hoá hệ thống thông tin quản lý vốn dự án đầu tư Sơ đồ chức năng BFD của phần mềm quản lý vốn dự án đầu tư Sơ đồ DFD mức ngữ cảnh Sơ đồ IFD tổng thể của phần mềm quản lý vốn dự án đầu tư Sơ đồ luồng dữ liệu DFD mức 0 của phần mềm quản lý vốn dự án đầu tư Phân rã xử lý 1.0 Phân rã xử lý 2.0 Phân rã xử lý 3.0 3.2 Thiết kế phần mềm quản lý vốn dự án đầu tư 3.2.1 Thiết kế cơ sở dữ liệu bằng phương pháp mô hình hoá. Mô hình quan hệ thực thể ERD - Chuyển đổi quan hệ hai chiều Quan hệ hai chiều 1@1 Đối với quan hệ như vậy cần phải tạo ra hai tệp ứng với hai thực thể Khi chuyển đổi ta thu được hai tệp sau PSDUAN(Mã dự án, Tên dự án, ……..) DUTOAN(Mã dự toán, Mã dự án, Tên dự toán, …..) Quan hệ hai chiều loại 1@N Trong trường hợp này tạo ra hai tệp, mỗi tệp ứng với một thực thể. Khoá của tệp ứng với thực thể có số mức quan hệ một được dùng như khoá quan hệ trong tệp ứng với thực thể có số mức N. PSDUAN(Mã dự án, Tên dự án, Mã chủ đầu tư…..) TD_CHUDAUTU(Mã chủ đầu tư, Tên chủ đầu tư) PSDUAN(Mã dự án, Tên dự án, Mã địa phương…..) TD_DIAPHUONG(Mã địa phương, Tên địa phương…..) PSDUAN(Mã dự án, Tên dự án, Mã ngành …..) TD_NGANH(Mã ngành, Tên ngành ……) PSDUAN(Mã dự án, Tên dự án, Mã nhóm …..) TD_NHOMDUAN(Mã nhóm, Tên nhóm, ……) PSDUAN(Mã dự án, Tên dự án,…..) KEHOACH(Mã kế hoạch, Mã dự án ….) PSDUAN(Mã dự án, Tên dự án,…..) THUCHIEN(Mã thực hiện, Mã dự án... ) PSDUAN(Mã dự án, Tên dự án,…..) THANHTOAN(Mã thanh toán, Mã dự án….. ) Quan hệ hai chiều loại N@M Trong trường hợp này ta phải tạo ra ba tệp: hai tệp mô tả hai thực thể và một tệp mô tả quan hệ. Khoá của tệp mô tả quan hệ được tạo thành bởi việc ghép khoá các thực thể tham gia vào quan hệ. PSDUAN(Mã dự án, Tên dự án,…..) TDNGUONVON(Mã nguồn vốn, Tên nguồn vốn……) NGUONVON(Mã nguồn vốn, Mã dự án……) Thiết kế các tệp dữ liệu - Tệp PSDUAN (Phát sinh dự án ) Tên trường Kiểu dữ liệu Độ rộng Mô tả MaDA Text 15 Mã dự án TenDA Text 50 Tên dự án TgKhoiCong Date/time 10 Thời gian khởi công SoQuyetDinh Number 4 Số quyết định Tgketthuc Date/time 10 Thời gian kết thúc MaChuDauTu Text 20 Mã chủ đầu tư MaDiaPhuong Text 20 Mã địa phương MaNhomDA Text 20 Mã nhóm dự án MaNganh Text 20 Mã ngành - Tệp DUTOAN ( Dự toán) Tên trường Kiểu dữ liệu Độ rộng Mô tả MaDuToan Text 15 Mã dự toán Tendutoan Text 50 Tên dự toán MaDA Text 15 Mã dự án SoTien Number 12 Số tiền - Tệp NGUONVON (nguồn vốn) Tên trường Kiểu dữ liệu Độ rộng Mô tả MaNguonVon Text 15 Mã nguồn vốn Mada Text 15 Mã dự án SoTien Number 12 Số tiền - Tệp KEHOACH (Kế hoạch) Tên trường Kiểu dữ liệu Độ rộng Mô tả MaKeHoach Text 10 Mã kế hoạch Mada Text 15 Mã dự án Manguonvon Text 15 Mã nguồn vốn Ngayqd Date/time 10 Ngày quyết định Thangnamkh Date/time 10 Tháng năm kế hoạch Sotien Number 12 Số tiền - Tệp TD_CHUDAUTU (Từ điển chủ đầu tư) Tên trường Kiểu dữ liệu Độ rộng Mô tả MaChuDauTu Text 15 Mã chủ đầu tư TenChuDauTu Text 50 Tên chủ đầu tư MadvCapTren Text 15 Mã đơn vị cấp trên - Tệp TD_DIAPHUONG (Từ điển địa phương) Tên trường Kiểu dữ liệu Độ rộng Mô tả MaDiaPhuong Text 15 Mã địa phương TenDiaPhuong Text 50 Tên địa phương MadvCapTren Text 15 Mã đơn vị cấp trên - Tệp TD_NGANH (Từ điển ngành) Tên trường Kiểu dữ liệu Độ rộng Mô tả MaNganh Text 15 Mã ngành TenNganh Text 50 Tên ngành MadvCapTren Text 15 Mã đơn vị cấp trên - Tệp TD_NGUONVON (Từ điển nguồn vốn) Tên trường Kiểu dữ liệu Độ rộng Mô tả MaNguonVon Text 15 Mã nguồn vốn MaNVMe Text 15 Mã nguồn vốn mẹ TenNguonVon Text 50 Tên nguồn vốn LoaiTien Text 10 Loại tiền - Tệp TD_NHOMDA (Từ điển nhóm dự án ) Tên trường Kiểu dữ liệu Độ rộng Mô tả MaNhomDA Text 15 Mã nhóm dự án TenNhomDA Text 50 Tên nhóm dự án MadvCaptren Text 15 Mã đơn vị cấp trên - Tệp THANHTOAN (Thanh toán) Tên trường Kiểu dữ liệu Độ rộng Mô tả Mathanhtoan Text 15 Mã thanh toán MaDA Text 15 Mã dự án MaNguonVon Text 15 Mã nguồn vốn Ngay Date/time 10 Ngày SoTien Number 12 Số tiền - Tệp THUCHIEN (Thực hiện) Tên trường Kiểu dữ liệu Độ rộng Mô tả Mathuchien Text 15 Mã thực hiện MaDA Text 15 Mã dự án Manguonvon Text 15 Mã nguồn vốn Ngay Date/time 10 Ngày SoTien Number 12 Số tiền - Tệp DANGNHAP (Đăng nhập) Tên trường Kiểu dữ liệu Độ rộng Mô tả NguoiDung Text 15 Người dùng MatKhau Text 15 Mật khẩu 3.2.2 Mô hình quan hệ giữa các thực thể 3.3 Thiết kế giải thuật cho phần mềm quản lý vốn dự án đầu tư 3.3.1 Giải thuật đăng nhập chương trình 3.3.2 Giải thuật nhập dữ liệu 3.3.3 Giải thuật sửa dữ liệu 3.3.4 Giải thuật in báo cáo 3.4 Cài đặt phần mềm quản lý vốn dự án đầu tư Để cài đặt thành công chương trình yêu cầu máy tính phải được cài đặt các phần mềm sau: VietKey 2000. Visual Basic 6.0 TDBGrid7 ToolsUniVb Crystal Report 10 Cách cài đặt: Chạy file setup để tiến hành cài đặt chương trình theo yêu cầu. 3.5 Một số giao diện chính của phần mềm Màn hình hiển thị danh sách các dự án Màn hình giao diện phát sinh dự án Màn hình cập nhật các nguồn vốn của dự án Màn hình cập nhật các dự toán của dự án Màn hình cập nhật các kế hoạch vốn của dự án Màn hình cập nhật từ điển nguồn vốn Màn hình cập nhật từ điển ngành Màn hình cập nhật từ điển chủ đầu tư Màn hình cập nhật từ điển nhóm dự án Báo cáo tình hình tài chính của dự án Báo cáo tổng hợp tình hình dải ngân vốn Báo cáo tình hình thực hiện vốn đầu tư phát triển KẾT LUẬN Cùng với sự phát triển của công nghệ thông tin, tin học đang được áp dụng ngày càng nhiều vào đời sống thực tế và trở nên không thể thiếu được trong quá trình phát triển của xã hội nói chung và của các doanh nghiệp nói riêng. Với sự đi lên không ngừng của nền kinh tế thì quản lý vốn dự án đầu tư đang ngày càng trở nên cần thiết và cấp bách hơn bao giờ hết. Việc xây dựng phần mềm sẽ giúp phần giảm nhẹ công tác quản lý của Sở Kế hoạch và Đầu tư tỉnh Điện Biên. Các thông tin về vốn của dự án sẽ được cập nhật nhanh chóng và chính xác tại mọi thời điểm. Chính vì vậy mà Sở Kế hoạch và Đầu tư tỉnh Điện Biên là một trong những Sở Kế hoạch và Đầu tư đầu tiên trên cả nước đi đầu trong trong việc tin học hoá quản lý vốn dự án Đầu tư. Phần mềm đã đạt được một số yêu cầu đặt ra như: cho biết thông tin về dự toán, kế hoạch, tình thực hiện và dải ngân vốn của dự án đầu tư. Đưa ra được báo cáo về tình hình sử dụng vốn và các báo cáo có thể kết xuất sang Microsoft Excel. Điều này giúp cho việc kiểm tra và tổng hợp số liệu một cách chính xác và đáp ứng được các yêu cầu khi cần thiết. Tuy nhiên, đây chưa phải là một chương trình hoàn hảo do còn có những hạn chế về mặt thực tế, kinh nghiệm lập trình cũng như là về thời gian. Trong thời gian tới, nếu điều kiện cho phép em sẽ cố gắng hoàn thiện chương trình hơn nữa. TÀI LIỆU THAM KHẢO TS. Trương Văn Tú – TS.Trần Thị Song Minh, Giáo trình Hệ thống thông tin quản lý, NXB Thống kê, 2000. PGS. TS. Hàn Viết Thuận, Giáo trình Cấu trúc dữ liệu và giải thuật, NXB Thống kê. Trần Công Uẩn, Giáo trình Cơ sở dữ liệu SQL, Access, NXB Thống kê, Hà Nội, 2000. Nguyễn Thị Ngọc Mai, Microsoft Visual Basic 6.0 Lập trình cơ sở dữ liệu, NXB Giáo dục, 2000. TS. Từ Quang Phương, Giáo trình quản lý dự án đầu tư, NXB Lao Động – Xã Hội. TS. Nguyễn Bạch Nguyệt, Giáo trình lập và quản lý dự án đầu tư, NXB Thống kê, Hà Nội, 2000. PHỤ LỤC Form phát sinh dự án Public gConn As New ADODB.Connection Public a As String Dim rsDonVi As ADODB.Recordset Dim AddNewRecord As Boolean Dim rr As ADODB.Recordset Private Sub cmdChonChuDautu_Click() td_chudt.Show End Sub Private Sub cmdChonDiaphuong_Click() td_diaphuong.Show End Sub Private Sub cmdChonNgannh_Click() td_nganh.Show End Sub Private Sub cmdchonNhomDA_Click() td_NhomDA.Show End Sub Private Sub CmdCuoi_Click(Index As Integer) rsDonVi.MoveLast Displayrec End Sub Private Sub cmdDau_Click(Index As Integer) rsDonVi.MoveFirst Displayrec End Sub Private Sub cmdghi_Click(Index As Integer) Dim rs As New ADODB.Recordset Dim str Dim strSQL As String Call con strSQL = "select * from PSDuan" Set rsDonVi = New ADODB.Recordset rsDonVi.Open strSQL, gConn If AddNewRecord Then str = "insert into PSDuAn values ('" & Trim(txtmada.Text) & "','" & Trim(txttenda.Text) & "', '" & Trim(txtkc.Text) & "', '" & Trim(txtsqd.Text) & "','" & Trim(txtkt.Text) & "','" & Trim(txtChudautu.Text) & "','" & Trim(txtDiaphuong.Text) & "', '" & Trim(txtNhomDA.Text) & "', '" & Trim(txtNganh.Text) & "')" ' str = "insert into PSDuAn values ('" & Trim(txtmada.Text) & "','" & Trim(txttenda.Text) & "', '" & Trim(txtkc.Text) & "', '" & Trim(txtsqd.Text) & "','" & Trim(txtkt.Text) & "','" & b & "','" & Trim(txtDiaphuong.Text) & "', '" & Trim(txtNhomDA.Text) & "', '" & Trim(txtNganh.Text) & "')" gConn.Execute (str) Else 'str = "update PSDuAn set maDA='" & Trim(txtmada.Text) & "',tenDA='" & Trim(txttenda.Text) & "',tgKhoicong='" & Trim(txtkc.Text) & "',soquyetdinh='" & Trim(txtsqd.Text) & "',tgketthuc='" & Trim(txtkt.Text) & "',machudautu='" & Trim(txtChudautu.Text) & "',madiaphuong='" & Trim(txtDiaphuong.Text) & "',maNhomDa='" & Trim(txtNhomDA.Text) & "',manganh='" & Trim(txtNganh.Text) & "' where mada= '" & txtmada.Text & "'" 'gConn.Execute (str) str = "update PSDuAn set maDA='" & Trim(txtmada.Text) & "',tenDA='" & Trim(txttenda.Text) & "',tgKhoicong='" & Trim(txtkc.Text) & "',soquyetdinh='" & Trim(txtsqd.Text) & "',tgketthuc='" & Trim(txtkt.Text) & "',machudautu='" & b & "',madiaphuong='" & Trim(txtDiaphuong.Text) & "',maNhomDa='" & Trim(txtNhomDA.Text) & "',manganh='" & Trim(txtNganh.Text) & "' where mada= '" & txtmada.Text & "'" gConn.Execute (str) End If rsDonVi.Close cmdTruoc.Enabled = True cmdSau.Enabled = True End Sub Private Sub cmdSau_Click() rsDonVi.MoveNext If Not rsDonVi.EOF Then Displayrec Else rsDonVi.MoveLast End If End Sub Private Sub cmdsua_Click(Index As Integer) AddNewRecord = False End Sub Private Sub cmdthem_Click(Index As Integer) AddNewRecord = True set_null txtmada.SetFocus End Sub Private Sub set_null() txtmada = "" txttenda = "" txtkc = "" txtkt = "" txtsqd = "" txtNhomDA = "" txtNganh = "" txtChudautu = "" txtDiaphuong = "" End Sub Private Sub cmdthoat_Click(Index As Integer) Unload Me End Sub Private Sub cmdTruoc_Click() rsDonVi.MovePrevious If Not rsDonVi.BOF Then Displayrec Else rsDonVi.MoveFirst End If End Sub Private Sub cmdxoa_Click(Index As Integer) Set DB = OpenDatabase(App.Path & "\csdl_von.mdb") Dim i As Integer i = MsgBox("Baïn coù muoán xoaù baûn ghi naøy thaät khoâng?", vbYesNo) If i = 6 Then DB.Execute "DELETE * FROM psduan WHERE Mada = '" & rsDonVi("mada") & "'" End If rsDonVi.MoveNext If Not rsDonVi.EOF Then Displayrec Else rsDonVi.MoveLast End If cmdSau.Enabled = True cmdTruoc.Enabled = True set_null End Sub Private Sub Form_Load() Set gConn = New ADODB.Connection With gConn .Provider = "MSDASQL.1" .ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source= " & App.Path & "\csdl_von.mdb" .CommandTimeout = 10 .Open End With strSQL = "select * from PSDuAn" Set rsDonVi = New ADODB.Recordset rsDonVi.Open strSQL, gConn, adOpenKeyset, adLockOptimistic If rsDonVi.RecordCount > 0 Then rsDonVi.MoveFirst Displayrec End If End Sub Private Sub Displayrec() txtmada.Text = rsDonVi!mada txttenda.Text = rsDonVi!TenDA txtkc.Text = rsDonVi!TgKhoicong txtkt.Text = rsDonVi!Tgketthuc txtsqd.Text = rsDonVi!SoQuyetDinh txtNhomDA.Text = rsDonVi!ManhomDA txtDiaphuong.Text = rsDonVi!MaDiaphuong txtChudautu.Text = rsDonVi!Machudautu txtNganh.Text = rsDonVi!Manganh End Sub Private Sub SSTab1_Click(PreviousTab As Integer) Call dutoan Call kehoach Call nguonvon Call thuchien Call thanhtoan End Sub Private Sub thanhtoan() Dim rs As New ADODB.Recordset Dim mada As String Dim rsQuaTrinhDT As New ADODB.Recordset Dim sql As String rsQuaTrinhDT.Open "Select * From Thanhtoan where thanhtoan.mada='" & Trim(txtmada.Text) & "'", gConn, 3, 3 Me.TDBGrid5.DataSource = rsQuaTrinhDT Dim oValueItem As New TrueOleDBGrid70.ValueItem Set rs = gConn.Execute("Select * From TD_NGUONVON ") Dim sTenQuyen As String Do While Not rs.EOF oValueItem.Value = rs("Manguonvon") sTenQuyen = IIf(IsNull(rs("TenNguonVon")), " ", rs("TenNguonVon")) 'oValueItem.DisplayValue = sTenQuyen oValueItem.Value = sTenQuyen Me.TDBGrid5.Columns("MaNguonVon").ValueItems.Add oValueItem rs.MoveNext Loop rs.Close Exit Sub End Sub Private Sub thuchien() Dim rs As New ADODB.Recordset Dim mada As String Dim rsQuaTrinhDT As New ADODB.Recordset Dim sql As String rsQuaTrinhDT.Open "Select * From thuchien where thuchien.mada='" & Trim(txtmada.Text) & "'", gConn, 3, 3 Me.TDBGrid4.DataSource = rsQuaTrinhDT Dim oValueItem As New TrueOleDBGrid70.ValueItem Set rs = gConn.Execute("Select * From TD_NGUONVON ") Dim sTenQuyen As String Do While Not rs.EOF oValueItem.Value = rs("Manguonvon") sTenQuyen = IIf(IsNull(rs("TenNguonVon")), " ", rs("TenNguonVon")) oValueItem.Value = sTenQuyen Me.TDBGrid4.Columns("MaNguonVon").ValueItems.Add oValueItem rs.MoveNext Loop rs.Close Exit Sub End Sub Private Sub dutoan() Dim rs As New ADODB.Recordset Dim mada As String Dim rsQuaTrinhDT As New ADODB.Recordset Dim sql As String rsQuaTrinhDT.Open "Select * From dutoan where dutoan.mada='" & Trim(txtmada.Text) & "'", gConn, 3, 3 Me.TDBGrid2.DataSource = rsQuaTrinhDT Exit Sub End Sub Private Sub kehoach() Dim rs As New ADODB.Recordset Dim mada As String Dim rsQuaTrinhDT As New ADODB.Recordset Dim sql As String rsQuaTrinhDT.Open "Select * From kehoach where kehoach.mada='" & Trim(txtmada.Text) & "'", gConn, 3, 3 Me.TDBGrid3.DataSource = rsQuaTrinhDT Dim oValueItem As New TrueOleDBGrid70.ValueItem Set rs = gConn.Execute("Select * From TD_NGUONVON ") Dim sTenQuyen As String Do While Not rs.EOF oValueItem.Value = rs("Manguonvon") sTenQuyen = IIf(IsNull(rs("TenNguonVon")), " ", rs("TenNguonVon")) 'oValueItem.DisplayValue = sTenQuyen oValueItem.Value = sTenQuyen Me.TDBGrid3.Columns("MaNguonVon").ValueItems.Add oValueItem rs.MoveNext Loop rs.Close Exit Sub End Sub Private Sub nguonvon() Dim rs As New ADODB.Recordset Dim mada As String Dim rsQuaTrinhDT As New ADODB.Recordset Dim sql As String rsQuaTrinhDT.Open "Select * From nguonvon where nguonvon.mada='" & Trim(txtmada.Text) & "'", gConn, 3, 3 Me.TDBGrid1.DataSource = rsQuaTrinhDT Dim oValueItem As New TrueOleDBGrid70.ValueItem Set rs = gConn.Execute("Select * From TD_NGUONVON ") Dim sTenQuyen As String Do While Not rs.EOF oValueItem.Value = rs("Manguonvon") sTenQuyen = IIf(IsNull(rs("TenNguonVon")), " ", rs("TenNguonVon")) 'oValueItem.DisplayValue = sTenQuyen oValueItem.Value = sTenQuyen Me.TDBGrid1.Columns("MaNguonVon").ValueItems.Add oValueItem rs.MoveNext Loop rs.Close Exit Sub End Sub Form chính của chương trình Private Sub MDIForm_Load() FRMMAIN.Show End Sub Private Sub psda_Click() frmPSDA.Show End Sub Private Sub tdcdt_Click() td_chudt.Show modal End Sub Private Sub tddp_Click() td_diaphuong.Show modal End Sub Private Sub tdnda_Click() td_NhomDA.Show modal End Sub Private Sub tdng_Click() td_nganh.Show modal End Sub Private Sub tdnv_Click() td_nguonvon.Show modal End Sub Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button) On Error Resume Next Select Case Button.Key Case "login" frmlogin.Show vbModal Case "frmpsda" frmPSDA.Show vbModal Case "td_chudt" td_chudt.Show vbModal Case "td_diaphuong" td_diaphuong.Show vbModal Case "td_nganh" td_nganh.Show vbModal Case "td_nguonvon" td_nguonvon.Show vbModal Case "td_nhomda" td_NhomDA.Show vbModal Case "close" If MsgBox("B¹n cã muèn tho¸t khái ch­¬ng tr×nh nµy khån ?", vbYesNo, "Thong Bao") = vbYes Then Unload Me End If End Select End Sub Form từ điển chủ đầu tư Option Explicit Public gConn As New ADODB.Connection Public a As String Dim strsql Dim mode, dem, i As Integer Dim mem As String Dim manv, coun, countrec As String Dim rsDonVi As ADODB.Recordset Private Sub cmdthem_Click() 'Set gconn = New ADODB.Connection Dim xd As Node Call con strsql = "Select * from td_chudautu Order by machudautu" Set rsDonVi = New ADODB.Recordset rsDonVi.Open strsql, gConn, adOpenKeyset, adLockOptimistic Dim cha As String cha = "x" & mem Set xd = TreeView2.Nodes.Add(cha, tvwChild, , txtchudautu.Text) Set rsDonVi = New ADODB.Recordset rsDonVi.Open strsql, gConn, adOpenKeyset, adLockOptimistic countrec = rsDonVi.RecordCount + dem + 2 rsDonVi.AddNew rsDonVi("machudautu") = countrec rsDonVi("Tenchudautu") = txtchudautu.Text rsDonVi("Madvcaptren") = mem rsDonVi.Update TreeView2.Refresh TreeView2.Nodes.Item(3).Selected = True End Sub Private Sub cmdthoat_Click() Unload Me End Sub Private Sub cmdxoa_Click() Dim Ma As String Ma = Right(Me.TreeView2.SelectedItem.Key, Len(Me.TreeView2.SelectedItem.Key) - 1) Dim i As Integer i = MsgBox("Baïn coù chaéc chaén muoán xoaù thaät khoâng?", vbYesNo) If i = 6 Then gConn.Execute "Delete from TD_chudautu Where Machudautu= '" & Ma & "'" dem = dem + 1 i = TreeView2.SelectedItem.Index TreeView2.Nodes.Remove (i) End If End Sub Private Sub Form_Load() Call con TreeAddDonVi TreeView2 TreeView2.Nodes.Item(2).Selected = True strsql = "Select * from td_chudautu Order by machudautu" Set rsDonVi = New ADODB.Recordset rsDonVi.Open strsql, gConn, adOpenKeyset, adLockOptimistic If rsDonVi.RecordCount > 0 Then rsDonVi.MoveFirst End If countrec = rsDonVi.RecordCount dem = 0 End Sub Public Sub TreeAddDonVi(tvTreeView As MSComctlLib.TreeView, Optional tvwPicture1 As Long = 1, Optional tvwPicture2 As Long = 2, Optional tvwPicture3 As Long = 3, Optional tvwPicture4 As Long = 4, Optional tvwPicture5 As Long = 5) Dim Mdv() As String Dim Tdv() As String Dim Cdv() As String Dim nDv As Long Dim i As Long 'On Error GoTo Loi ' Set gconn = New ADODB.Connection 'Call con Set gConn = New ADODB.Connection With gConn .Provider = "MSDASQL.1" .ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source= " & App.Path & "\csdl_von.mdb" .CommandTimeout = 10 .Open End With strsql = "Select * from td_chudautu Order by machudautu" Set rsDonVi = New ADODB.Recordset rsDonVi.Open strsql, gConn, adOpenKeyset, adLockOptimistic ReDim Mdv(rsDonVi.RecordCount) 'Ma don vi ReDim Tdv(rsDonVi.RecordCount) 'Ten don vi ReDim Cdv(rsDonVi.RecordCount) 'Ma don vi cap tren nDv = 0 'So don vi Do While Not rsDonVi.EOF Mdv(nDv) = "x" & rsDonVi("machudautu") Tdv(nDv) = rsDonVi("Tenchudautu") Cdv(nDv) = "x" & rsDonVi("Madvcaptren") rsDonVi.MoveNext nDv = nDv + 1 Loop tvTreeView.Nodes.Clear tvTreeView.Nodes.Add , , "x000", "Dang saùch caùc chuû ñaàu tö" TryAdd tvTreeView, Mdv, Tdv, Cdv, nDv, "x000" 'TiepTuc: tvTreeView.BorderStyle = vbFixedSingle rsDonVi.Close Exit Sub Loi: End Sub Public Sub TryAdd(tvTreeView As MSComctlLib.TreeView, Mdv() As String, Tdv() As String, Cdv() As String, SoDonVi As Long, Key As String) Dim i As Long For i = 0 To SoDonVi - 1 If Cdv(i) = Key Then tvTreeView.Nodes.Add Key, tvwChild, Mdv(i), Tdv(i) TryAdd tvTreeView, Mdv, Tdv, Cdv, SoDonVi, Mdv(i) End If Next End Sub Private Sub TreeView2_DblClick() Unload Me End Sub Private Sub TreeView2_NodeClick(ByVal Node As MSComctlLib.Node) 'On Error GoTo loi Dim i As Integer Dim str If Me.TreeView2.SelectedItem Node.Root Then Call con i = TreeView2.SelectedItem.Index str = Trim(TreeView2.Nodes.Item(i)) strsql = "Select * from td_chudautu where tenchudautu = '" & str & "' " Set rsDonVi = New ADODB.Recordset rsDonVi.Open strsql, gConn mem = rsDonVi("Madvcaptren") a = rsDonVi("tenchudautu") b = rsDonVi("machudautu") txtchudautu.Text = "" End If frmPSDA.txtchudautu.Text = a Exit Sub txtchudautu.Text = "" End Sub Form từ điển địa phương Option Explicit Public gConn As New ADODB.Connection Dim strsql Dim mode, dem, i As Integer Dim mem As String Dim manv, coun, countrec As String Dim rsDonVi As ADODB.Recordset Private Sub cmdthem_Click() 'Set gconn = New ADODB.Connection Dim xd As Node Call con strsql = "Select * from td_diaphuong Order by madiaphuong" Set rsDonVi = New ADODB.Recordset rsDonVi.Open strsql, gConn, adOpenKeyset, adLockOptimistic Dim cha As String cha = "x" & mem Set xd = TreeView3.Nodes.Add(cha, tvwChild, , txtdiaphuong.Text) Set rsDonVi = New ADODB.Recordset rsDonVi.Open strsql, gConn, adOpenKeyset, adLockOptimistic countrec = rsDonVi.RecordCount + dem + 2 rsDonVi.AddNew rsDonVi("madiaphuong") = countrec rsDonVi("Tendiaphuong") = txtdiaphuong.Text rsDonVi("Madvcaptren") = mem rsDonVi.Update End Sub Private Sub cmdthoat_Click() Unload Me End Sub Private Sub cmdxoa_Click() Dim Ma As String Ma = Right(Me.TreeView3.SelectedItem.Key, Len(Me.TreeView3.SelectedItem.Key) - 1) Dim i As Integer i = MsgBox("Baïn coù chaéc chaén muoán xoaù thaät khoâng?", vbYesNo) If i = 6 Then gConn.Execute "Delete from TD_diaphuong Where Madiaphuong= '" & Ma & "'" dem = dem + 1 i = TreeView3.SelectedItem.Index TreeView3.Nodes.Remove (i) End If End Sub Private Sub Form_Load() Call con TreeAddDonVi TreeView3 TreeView3.Nodes.Item(2).Selected = True strsql = "Select * from td_diaphuong Order by madiaphuong" Set rsDonVi = New ADODB.Recordset rsDonVi.Open strsql, gConn, adOpenKeyset, adLockOptimistic If rsDonVi.RecordCount > 0 Then rsDonVi.MoveFirst End If countrec = rsDonVi.RecordCount dem = 0 End Sub Public Sub TreeAddDonVi(tvTreeView As MSComctlLib.TreeView, Optional tvwPicture1 As Long = 1, Optional tvwPicture2 As Long = 2, Optional tvwPicture3 As Long = 3, Optional tvwPicture4 As Long = 4, Optional tvwPicture5 As Long = 5) 'Dim rsNhanVien As ADODB.Recordset Dim Mdv() As String Dim Tdv() As String Dim Cdv() As String Dim nDv As Long Dim i As Long 'On Error GoTo Loi ' Set gconn = New ADODB.Connection 'Call con Set gConn = New ADODB.Connection With gConn .Provider = "MSDASQL.1" .ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source= " & App.Path & "\csdl_von.mdb" .CommandTimeout = 10 .Open End With strsql = "Select * from td_diaphuong Order by madiaphuong" Set rsDonVi = New ADODB.Recordset rsDonVi.Open strsql, gConn, adOpenKeyset, adLockOptimistic ReDim Mdv(rsDonVi.RecordCount) 'Ma don vi ReDim Tdv(rsDonVi.RecordCount) 'Ten don vi ReDim Cdv(rsDonVi.RecordCount) 'Ma don vi cap tren nDv = 0 'So don vi Do While Not rsDonVi.EOF Mdv(nDv) = "x" & rsDonVi("madiaphuong") Tdv(nDv) = rsDonVi("Tendiaphuong") Cdv(nDv) = "x" & rsDonVi("Madvcaptren") rsDonVi.MoveNext nDv = nDv + 1 Loop tvTreeView.Nodes.Clear tvTreeView.Nodes.Add , , "x000", "Dang saùch caùc ñòa phöông" TryAdd tvTreeView, Mdv, Tdv, Cdv, nDv, "x000" tvTreeView.BorderStyle = vbFixedSingle rsDonVi.Close Exit Sub Loi: End Sub Public Sub TryAdd(tvTreeView As MSComctlLib.TreeView, Mdv() As String, Tdv() As String, Cdv() As String, SoDonVi As Long, Key As String) Dim i As Long For i = 0 To SoDonVi - 1 If Cdv(i) = Key Then tvTreeView.Nodes.Add Key, tvwChild, Mdv(i), Tdv(i) TryAdd tvTreeView, Mdv, Tdv, Cdv, SoDonVi, Mdv(i) End If Next End Sub Private Sub TreeView3_DblClick() Unload Me End Sub Private Sub TreeView3_NodeClick(ByVal Node As MSComctlLib.Node) 'On Error GoTo loi Dim i As Integer Dim str If Me.TreeView3.SelectedItem Node.Root Then Call con i = TreeView3.SelectedItem.Index str = Trim(TreeView3.Nodes.Item(i)) strsql = "Select * from td_diaphuong where tendiaphuong = '" & str & "' " Set rsDonVi = New ADODB.Recordset rsDonVi.Open strsql, gConn mem = rsDonVi("Madvcaptren") a = rsDonVi("tendiaphuong") txtdiaphuong.Text = "" End If frmPSDA.txtdiaphuong.Text = a Exit Sub End Sub Form từ điển ngành Option Explicit Public gConn As New ADODB.Connection Dim strsql Dim mode, dem, i As Integer Dim mem As String Dim manv, coun, countrec As String Dim rsDonVi As ADODB.Recordset Private Sub cmdghi_Click() 'Set gconn = New ADODB.Connection Call con End Sub Private Sub cmdthem_Click() 'Set gconn = New ADODB.Connection Dim xd As Node Call con strsql = "Select * from td_nganh Order by manganh" Set rsDonVi = New ADODB.Recordset rsDonVi.Open strsql, gConn, adOpenKeyset, adLockOptimistic Dim cha As String cha = "x" & mem Set xd = TreeView5.Nodes.Add(cha, tvwChild, , txtnganh.Text) Set rsDonVi = New ADODB.Recordset rsDonVi.Open strsql, gConn, adOpenKeyset, adLockOptimistic countrec = rsDonVi.RecordCount + dem + 2 rsDonVi.AddNew rsDonVi("Manganh") = countrec rsDonVi("Tennganh") = txtnganh.Text rsDonVi("Madvcaptren") = mem rsDonVi.Update End Sub Private Sub cmdthoat_Click() Unload Me End Sub Private Sub cmdxoa_Click() Dim Ma As String Ma = Right(Me.TreeView5.SelectedItem.Key, Len(Me.TreeView5.SelectedItem.Key) - 1) Dim i As Integer i = MsgBox("Baïn coù chaéc chaén muoán xoaù thaät khoâng?", vbYesNo) If i = 6 Then gConn.Execute "Delete from TD_nganh Where Manganh= '" & Ma & "'" dem = dem + 1 i = TreeView5.SelectedItem.Index TreeView5.Nodes.Remove (i) End If End Sub Private Sub Form_Load() Call con TreeAddDonVi TreeView5 TreeView5.Nodes.Item(2).Selected = True strsql = "Select * from td_nganh Order by manganh" Set rsDonVi = New ADODB.Recordset rsDonVi.Open strsql, gConn, adOpenKeyset, adLockOptimistic If rsDonVi.RecordCount > 0 Then rsDonVi.MoveFirst End If countrec = rsDonVi.RecordCount dem = 0 End Sub Public Sub TreeAddDonVi(tvTreeView As MSComctlLib.TreeView, Optional tvwPicture1 As Long = 1, Optional tvwPicture2 As Long = 2, Optional tvwPicture3 As Long = 3, Optional tvwPicture4 As Long = 4, Optional tvwPicture5 As Long = 5) Dim Mdv() As String Dim Tdv() As String Dim Cdv() As String Dim nDv As Long Dim i As Long Set gConn = New ADODB.Connection With gConn .Provider = "MSDASQL.1" .ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source= " & App.Path & "\csdl_von.mdb" .CommandTimeout = 10 .Open End With strsql = "Select * from td_nganh Order by manganh" Set rsDonVi = New ADODB.Recordset rsDonVi.Open strsql, gConn, adOpenKeyset, adLockOptimistic ReDim Mdv(rsDonVi.RecordCount) 'Ma don vi ReDim Tdv(rsDonVi.RecordCount) 'Ten don vi ReDim Cdv(rsDonVi.RecordCount) 'Ma don vi cap tren nDv = 0 'So don vi Do While Not rsDonVi.EOF Mdv(nDv) = "x" & rsDonVi("Manganh") Tdv(nDv) = rsDonVi("Tennganh") Cdv(nDv) = "x" & rsDonVi("Madvcaptren") rsDonVi.MoveNext nDv = nDv + 1 Loop tvTreeView.Nodes.Clear tvTreeView.Nodes.Add , , "x000", "Dang saùch caùc ngaønh" TryAdd tvTreeView, Mdv, Tdv, Cdv, nDv, "x000" tvTreeView.BorderStyle = vbFixedSingle rsDonVi.Close 'tvTreeView.Nodes.Item(1).Selected = True Exit Sub Loi: End Sub Public Sub TryAdd(tvTreeView As MSComctlLib.TreeView, Mdv() As String, Tdv() As String, Cdv() As String, SoDonVi As Long, Key As String) Dim i As Long For i = 0 To SoDonVi - 1 If Cdv(i) = Key Then tvTreeView.Nodes.Add Key, tvwChild, Mdv(i), Tdv(i) TryAdd tvTreeView, Mdv, Tdv, Cdv, SoDonVi, Mdv(i) End If Next End Sub Private Sub TreeView5_DblClick() Unload Me End Sub Private Sub TreeView5_NodeClick(ByVal Node As MSComctlLib.Node) 'On Error GoTo loi Dim i As Integer Dim str If Me.TreeView5.SelectedItem Node.Root Then Call con i = TreeView5.SelectedItem.Index str = Trim(TreeView5.Nodes.Item(i)) strsql = "Select * from td_nganh where tennganh = '" & str & "' " Set rsDonVi = New ADODB.Recordset rsDonVi.Open strsql, gConn mem = rsDonVi("Madvcaptren") a = rsDonVi("tennganh") txtnganh.Text = "" End If frmPSDA.txtnganh.Text = a Exit Sub txtnganh.Text = "" End Sub Form từ điển nguồn vốn Option Explicit Public gConn As New ADODB.Connection Dim strsql Dim mode, dem, i As Integer Dim manv, coun, countrec As String Dim mem As String Dim rsDonVi As ADODB.Recordset Private Sub cmdthem_Click() 'Set gconn = New ADODB.Connection Dim xd As Node Call con strsql = "Select * from td_nguonvon Order by manguonvon" Set rsDonVi = New ADODB.Recordset rsDonVi.Open strsql, gConn, adOpenKeyset, adLockOptimistic Dim cha As String cha = "x" & mem Set xd = TreeView1.Nodes.Add(cha, tvwChild, , txtNguonvon.Text) Set rsDonVi = New ADODB.Recordset rsDonVi.Open strsql, gConn, adOpenKeyset, adLockOptimistic 'If mode = 1 Then countrec = rsDonVi.RecordCount + dem + 2 rsDonVi.AddNew rsDonVi("Manguonvon") = countrec rsDonVi("Tennguonvon") = txtNguonvon.Text rsDonVi("MaNVMe") = mem rsDonVi.Update TreeView1.Nodes.Item(3).Selected = True TreeView1.Refresh End Sub Private Sub cmdthoat_Click() Unload Me End Sub Private Sub cmdxoa_Click() Dim Ma As String Ma = Right(Me.TreeView1.SelectedItem.Key, Len(Me.TreeView1.SelectedItem.Key) - 1) Dim i As Integer i = MsgBox("Baïn coù chaéc chaén muoán xoaù thaät khoâng?", vbYesNo) If i = 6 Then gConn.Execute "Delete from TD_NGUONVON Where MaNguonVon= '" & Ma & "'" dem = dem + 1 i = TreeView1.SelectedItem.Index TreeView1.Nodes.Remove (i) TreeView1.Refresh End If End Sub Private Sub Form_Load() Call con TreeAddDonVi TreeView1 TreeView1.Nodes.Item(2).Selected = True strsql = "Select * from td_nguonvon Order by manguonvon" Set rsDonVi = New ADODB.Recordset rsDonVi.Open strsql, gConn, adOpenKeyset, adLockOptimistic If rsDonVi.RecordCount > 0 Then rsDonVi.MoveFirst 'Displayrecord End If countrec = rsDonVi.RecordCount dem = 0 End Sub Public Sub TreeAddDonVi(tvTreeView As MSComctlLib.TreeView, Optional tvwPicture1 As Long = 1, Optional tvwPicture2 As Long = 2, Optional tvwPicture3 As Long = 3, Optional tvwPicture4 As Long = 4, Optional tvwPicture5 As Long = 5) Dim Mdv() As String Dim Tdv() As String Dim Cdv() As String Dim nDv As Long Dim i As Long Set gConn = New ADODB.Connection With gConn .Provider = "MSDASQL.1" .ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source= " & App.Path & "\csdl_von.mdb" .CommandTimeout = 10 .Open End With strsql = "Select * from td_nguonvon Order by manguonvon" Set rsDonVi = New ADODB.Recordset rsDonVi.Open strsql, gConn, adOpenKeyset, adLockOptimistic ReDim Mdv(rsDonVi.RecordCount) 'Ma don vi ReDim Tdv(rsDonVi.RecordCount) 'Ten don vi ReDim Cdv(rsDonVi.RecordCount) 'Ma don vi cap tren nDv = 0 'So don vi Do While Not rsDonVi.EOF Mdv(nDv) = "x" & rsDonVi("Manguonvon") Tdv(nDv) = rsDonVi("TenNguonVon") Cdv(nDv) = "x" & rsDonVi("MaNVMe") rsDonVi.MoveNext nDv = nDv + 1 Loop tvTreeView.Nodes.Clear 'Céng c¸c don vi vµo TreeView 'tvTreeView.Nodes.Add , , "x000", "Dang saùch nguoàn voán", , "a" tvTreeView.Nodes.Add , , "x000", "Dang saùch nguoàn voán" TryAdd tvTreeView, Mdv, Tdv, Cdv, nDv, "x000" 'TiepTuc: tvTreeView.BorderStyle = vbFixedSingle rsDonVi.Close 'tvTreeView.Nodes.Item(1).Selected = True Exit Sub Loi: End Sub Public Sub TryAdd(tvTreeView As MSComctlLib.TreeView, Mdv() As String, Tdv() As String, Cdv() As String, SoDonVi As Long, Key As String) Dim i As Long For i = 0 To SoDonVi - 1 If Cdv(i) = Key Then 'tvTreeView.Nodes.Add Key, tvwChild, Mdv(i), Tdv(i), , "b" tvTreeView.Nodes.Add Key, tvwChild, Mdv(i), Tdv(i) TryAdd tvTreeView, Mdv, Tdv, Cdv, SoDonVi, Mdv(i) End If Next End Sub Private Sub Label3_Click() End Sub Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node) 'On Error GoTo loi Dim i As Integer Dim str If Me.TreeView1.SelectedItem Node.Root Then Call con i = TreeView1.SelectedItem.Index str = Trim(TreeView1.Nodes.Item(i)) strsql = "Select * from td_nguonvon where tennguonvon = '" & str & "' " Set rsDonVi = New ADODB.Recordset rsDonVi.Open strsql, gConn mem = rsDonVi("MaNVMe") 'a = rsDonVi("tennguonvon") txtNguonvon.Text = "" End If Exit Sub txtNguonvon.Text = "" End Sub Form từ điển nhóm dự án Option Explicit Public gConn As New ADODB.Connection Dim strsql Dim mode, dem, i As Integer Dim mem As String Dim manv, coun, countrec As String Dim rsDonVi As ADODB.Recordset Private Sub cmdthem_Click() 'Set gconn = New ADODB.Connection Dim xd As Node Call con strsql = "Select * from td_nhomda Order by manhomda" Set rsDonVi = New ADODB.Recordset rsDonVi.Open strsql, gConn, adOpenKeyset, adLockOptimistic Dim cha As String cha = "x" & mem Set xd = TreeView4.Nodes.Add(cha, tvwChild, , txtnhomda.Text) Set rsDonVi = New ADODB.Recordset rsDonVi.Open strsql, gConn, adOpenKeyset, adLockOptimistic countrec = rsDonVi.RecordCount + dem + 2 rsDonVi.AddNew rsDonVi("Manhomda") = countrec rsDonVi("Tennhomda") = txtnhomda.Text rsDonVi("Madvcaptren") = mem rsDonVi.Update End Sub Private Sub cmdthoat_Click() Unload Me End Sub Private Sub cmdxoa_Click() Dim Ma As String Ma = Right(Me.TreeView4.SelectedItem.Key, Len(Me.TreeView4.SelectedItem.Key) - 1) Dim i As Integer i = MsgBox("Baïn coù chaéc chaén muoán xoaù thaät khoâng?", vbYesNo) If i = 6 Then gConn.Execute "Delete from TD_nhomda Where Manhomda= '" & Ma & "'" dem = dem + 1 i = TreeView4.SelectedItem.Index TreeView4.Nodes.Remove (i) TreeView4.Refresh End If End Sub Private Sub Form_Load() Call con TreeAddDonVi TreeView4 TreeView4.Nodes.Item(2).Selected = True strsql = "Select * from td_nhomda Order by manhomda" Set rsDonVi = New ADODB.Recordset rsDonVi.Open strsql, gConn, adOpenKeyset, adLockOptimistic If rsDonVi.RecordCount > 0 Then rsDonVi.MoveFirst End If countrec = rsDonVi.RecordCount dem = 0 End Sub Public Sub TreeAddDonVi(tvTreeView As MSComctlLib.TreeView, Optional tvwPicture1 As Long = 1, Optional tvwPicture2 As Long = 2, Optional tvwPicture3 As Long = 3, Optional tvwPicture4 As Long = 4, Optional tvwPicture5 As Long = 5) Dim Mdv() As String Dim Tdv() As String Dim Cdv() As String Dim nDv As Long Dim i As Long Set gConn = New ADODB.Connection With gConn .Provider = "MSDASQL.1" .ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source= " & App.Path & "\csdl_von.mdb" .CommandTimeout = 10 .Open End With strsql = "Select * from td_nhomda Order by manhomda" Set rsDonVi = New ADODB.Recordset rsDonVi.Open strsql, gConn, adOpenKeyset, adLockOptimistic ReDim Mdv(rsDonVi.RecordCount) 'Ma don vi ReDim Tdv(rsDonVi.RecordCount) 'Ten don vi ReDim Cdv(rsDonVi.RecordCount) 'Ma don vi cap tren nDv = 0 'So don vi Do While Not rsDonVi.EOF Mdv(nDv) = "x" & rsDonVi("Manhomda") Tdv(nDv) = rsDonVi("Tennhomda") Cdv(nDv) = "x" & rsDonVi("Madvcaptren") rsDonVi.MoveNext nDv = nDv + 1 Loop tvTreeView.Nodes.Clear 'tvTreeView.Nodes.Add , , "x000", "Dang saùch nguoàn voán", , "a" tvTreeView.Nodes.Add , , "x000", "Dang saùch caùc nhoùm döï aùn" TryAdd tvTreeView, Mdv, Tdv, Cdv, nDv, "x000" 'TiepTuc: tvTreeView.BorderStyle = vbFixedSingle rsDonVi.Close Exit Sub Loi: End Sub Public Sub TryAdd(tvTreeView As MSComctlLib.TreeView, Mdv() As String, Tdv() As String, Cdv() As String, SoDonVi As Long, Key As String) Dim i As Long For i = 0 To SoDonVi - 1 If Cdv(i) = Key Then 'tvTreeView.Nodes.Add Key, tvwChild, Mdv(i), Tdv(i), , "b" tvTreeView.Nodes.Add Key, tvwChild, Mdv(i), Tdv(i) TryAdd tvTreeView, Mdv, Tdv, Cdv, SoDonVi, Mdv(i) End If Next End Sub Private Sub TreeView4_DblClick() Unload Me End Sub Private Sub TreeView4_NodeClick(ByVal Node As MSComctlLib.Node) 'On Error GoTo loi Dim i As Integer Dim str If Me.TreeView4.SelectedItem Node.Root Then Call con i = TreeView4.SelectedItem.Index str = Trim(TreeView4.Nodes.Item(i)) strsql = "Select * from td_nhomda where tennhomda = '" & str & "' " Set rsDonVi = New ADODB.Recordset rsDonVi.Open strsql, gConn mem = rsDonVi("Madvcaptren") a = rsDonVi("tennhomda") txtnhomda.Text = "" End If frmPSDA.txtnhomda.Text = a Exit Sub txtnhomda.Text = "" End Sub Module của chương trình Dim gConn As ADODB.Connection Public a, b As String Public Sub con() Set gConn = New ADODB.Connection With gConn .Provider = "MSDASQL.1" .ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source= " & App.Path & "\csdl_von.mdb" .CommandTimeout = 10 .Open End With End Sub

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

  • doc32507.doc