Đề tài Viết chương trình quản lý kế toán doanh nghiệp

LỜI MỞ ĐẦU Hiện nay các doanh nghiệp tại Việt Nam, nhất là các doanh nghiệp có quy mô trung bình và lớn hoạt động trong lĩnh vực dịch vụ, thương mại, sản xuất thì vai trò của thông tin và quản lý thông tin bằng tin học lại càng có ý nghĩa đặc biệt, nó giúp các đơn vị đột biến về chất lượng quản lý điều hành và qua đó góp phần quan trọng trong việc nâng cao chất lượng và hiệu quả hoạt động của doanh nghiệp, đáp ứng yêu cầu cạnh tranh và phát triển làm cho thị trường phần mềm quản trị dữ liệu đã chuyển mình và sẽ trở thành thị trường quan trọng do hai điều kiện : Một : Số lượng máy tính trang bị trong các công ty đã nhiều và bắt đầu tiến trình nối mạng. Hai : Môi trường kinh doanh ngày càng mang tính thị trường rõ rệt với sự cạnh tranh mạnh mẽ giữa các doanh nghiệp trong nước cũng như với các doanh nghiệp nước ngoài. Điều này đòi hỏi các doanh nghiệp phải trang bị hệ thống quản lý thông tin tiên tiến để phân tích tình hình kinh doanh và ra quyết định một cách nhanh nhất. Do đó, các phần mềm ứng dụng trong quản lý đã đóng vai trò quan trọng, đặc biệt là phần mềm quản trị dữ liệu về nghiệp vụ kế toán cho các doanh nghiệp. Hiện nay, trên thị trường có rất nhiều phần mềm quản trị cơ sở dữ liệu để thực hiện cho việc quản lý kế toán trong các doanh nghiệp nhưng để xác định hệ quản trị nào là tối ưu, gần gũi với người sử dụng. Đặc biệt, đối với nước ta hiện nay thì việc nắm vững, thao tác và sử dụng vẫn còn nhiều khó khăng nên việc tạo ra một phần mềm như trên là rất quan trọng và cần thiết. Bởi vì, giao diện của chương trình đều sử dụng Font chữ tiếng việt nên người sử dụng có thể thao tác, sử dụng dễ dàng khi người sử dụng không thành thạo về tiếng anh Từ nhận định đó, tôi đã chọn đề tài : “Viết chương trình Quản Lý Kế Toán Doanh Nghiệp” trên cơ sở nghiên cứu và phát triển, tôi cố gắng hoàn thành đề tài với sự giúp đỡ tận tình của Thầy Đỗ Văn Uy đã đóng góp những ý kiến vô cùng quan trọng cho việc nghiên cứu cũng như trong cách thức lập trình. Tôi xin chân thành cảm ơn !  Quý thầy cô trường Đại Học Thủy Sản và trường Bách Khoa Hà Nội đã tận tình hướng dẫn, giúp đỡ.  Bạn Trần Thị Thanh Trâm lớp 41DN-2 đã tận tình góp ý về nghiệp vụ và cung cấp tài liệu về kế toán.  Cùng toàn thể lớp TIN HỌC 40 đã đóng góp những ý kiến quan trọng trong thao tác lập trình. Tôi mong đề tài sẽ được đón nhận và đóng góp để đề tài có thể phát triển hoàn thiện hơn.

doc80 trang | Chia sẻ: lvcdongnoi | Lượt xem: 2361 | Lượt tải: 0download
Bạn đang xem trước 20 trang tài liệu Đề tài Viết chương trình quản lý kế toán doanh nghiệp, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
t SL_CK Number Long Integer Soá löôïng cuoái kyø GTUSD_CK Number Double(Standard) Giaù trò USD cuoái kyø GTVND_CK Number Double(Standard) Giaù trò VND cuoái kyø DGBQ_USD Number Double(Standard) Ñôn giaù bình quaân USD DGBQ_VND Number Double(Standard) Ñôn giaù bình quaân VND b. Duøng Microsoft Access ñeå taïo boä cô sôû döõ lieäu Cô sôû döõ lieäu cho Chöông Trình Quaûn Lyù Keá Toaùn Doanh Nghieäp c. Moái quan heä cho caùc baûng döõ lieäu trong chöông trình Relationship phaân heä keá toaùn tieàn maët Relationship phaân heä keá toaùn haøng hoùa Relationship phaân heä keá toaùn coâng nôï PHAÀN IV SÖÛ DUÏNG NGOÂN NGÖÕ LAÄP TRÌNH VISUAL BASIC ÑEÅ THIEÁT KEÁ CHÖÔNG TRÌNH Ngoân ngöõ laäp trình Visual Basic Visual Basic coù raát nhieàu tính naêng môùi. Caùc ñieàu khieån môùi cho pheùp vieát caùc chöông trình öùng duïng keát hôïp giao dieän, caùch xöû lyù vaø tính naêng cuûa Microsoft Office 97 vaø trình duyeät Web Internet Explorer, khoâng nhaát thieát phaûi coù moät baûn sao cuûa ñieàu khieån treân bieåu maãu. Visual Basic cho pheùp : Laäp trình ñeå theâm ñieàu khieån vaøo ñeà aùn töï ñoäng vaø coù theå taïo ra caùc ñieàu khieån Activex hieäu chænh. Vieát caùc chöông trình öùng duïng phía maùy chuû (Server side) duøng HTML ñoäng nhuùng keát noái vôùi caùc thö vieän lieân keát ñoäng cuûa Internet Information Server. Moät vaøi caûi tieán cho pheùp laøm vieäc vôùi caùc öùng duïng truy caäp döõ lieäu ôû taàm côõ vó moâ lieân quan ñeán haøng traêm, haøng nghìn ngöôøi söû duïng qua maïng hay qua Internet. Visual Basic cung caáp caùc ñoái töôïng döõ lieäu Activex cho pheùp keát noái vôùi caùc taäp tin cô sôû döõ lieäu. Ngoaøi caùc ñieàu khieån Activex Visual Basic coøn coù moät boä coâng cuï vaø kyõ thuaät môùi giuùp truy caäp döõ lieäu deã daøng hôn. Trình thieát keá moâi tröôøng döõ lieäu cho pheùp xem xeùt vaø thao taùc döõ lieäu trong CSDL khaùc nhau. Bôûi vì baûn thaân moâi tröôøng döõ lieäu laø nhöõng ñoái töôïng, coù theå söû duïng chuùng nhö moät ñieàu khieån döõ lieäu. Thaäm chí coù theå gaén noù vôùi caùc ñieàu khieån khaùc. Visual Basic cung caáp moät vaøi ñieàu khieån döõ lieäu môùi cho pheùp taän duïng caùc theá maïnh cuûa ñieàu khieån döõ lieäu ADO. Ñieàu khieån DataGrid cho pheùp xem döõ lieäu döôùi daïng baûng goàm caùc doøng vaø coät. DataList vaø DataCombo töông töï nhö DBList vaø DBCombo, coù theå duøng chuùng ñeå laáy moät danh saùch döõ lieäu töø ñieàu khieån ADO trong caáu hình hoäp danh saùch (ListBox) hoaëc hoäp keát hôïp (ComboBox). Visual Basic môû roäng khaû naêng baùo caùo vôùi trình baùo caùo döõ lieäu cho pheùp taïo, xem tröôùc, vaø in caùc baùo caùo trong Visual Basic töông töï nhö Access vaø coù theå laáy caùc ñieàu khieån baùo caùo töø hoäp coâng cuï baùo caùo döõ lieäu môùi vaø ñöa vaøo bieåu maãu baùo caùo döõ lieäu. 2. Caùc ñoái töôïng truy caäp döõ lieäu Dynamic Data Exchange (DDE) : Trao ñoåi döõ lieäu ñoäng Cho pheùp caùc caùc öùng duïng chia seõ thoâng tin vôùi nhau trong luùc thi haønh. Côù cheá giao tieáp laø moät öùng duïng seõ göûi döõ lieäu vaøo moät vuøng ñöôïc quy ñònh saün bôûi moät öùng duïng khaùc. Tuy nhieân, ngöôøi laäp trình phaûi thieát laäp moïi thöù cho giao tieáp trao ñoåi döõ lieäu neân caùch thöïc hieän theo DDE raát phöùc taïp. Object Linking and Embedding (OLE) : Nhuùng vaø keát noái ñoái töôïng OLE tuaân thuû trieát lyù cuûa Windows (Click chuoät, keùo vaø thaû). OLE coù theå keùo döõ lieäu töø öùng duïng naøy vaø thaû vaøo öùng duïng khaùc. OLE coù hai kyõ thuaät : Khôûi ñoäng taïi choå (In-place activation) : Moät döõ lieäu ñöôïc taïo ra bôûi öùng duïng 1 vaø ñöôïc thaû vaøo öùng duïng 2. Nhaán Double click chuoät leân döõ lieäu ôû öùng duïng 2 noù seõ hoaït ñoäng gioáng nhö ôû öùng duïng 1. Töï ñoäng hoùa (Automation) : aùp duïng khaû naêng taùi söû duïng ñoái töôïng vaø taän duïng trieät ñeå caùc theá maïnh cuûa caùc ñoái töôïng. Activex Activex laø theá heä sau cuûa OLE. Neân Activex chöùa ñöïng taát caû tính naêng cuûa OLE vaø ñöôïc boå sung theâm nhieàu chöùc naêng khaùc nhö cho pheùp vieäc söû duïng caùc ñoaïn chöông trình coù saün maø khoâng caàn quan taâm chuùng coù nguoàn goác töø ñaâu hay hoaït ñoäng nhö theá naøo. 3. söû duïng caùc ñoái töôïng truy caäp döõ lieäu trong chöông trình Ñieàu khieån DAO (Data Access Objects) Cho pheùp thi haønh caùc caâu truy vaán, caäp nhaät giaù trò trong caùc baûng cô sôû döõ lieäu vaø taïo caáu truùc cô sôû döõ lieäu bao goàm caùc baûng, caùc caâu truy vaán chöùa saün vaø moái quan heä giöõa caùc baûng. Öu ñieåm : Giao dieän laäp trình cuûa DAO voâ cuøng maïnh meõ vaø deã söû duïng. Vôùi caùc cô sôû döõ lieäu Jet cuûa Microsoft, DAO cho pheùp truy caäp caùc tính naêng khoâng coù saün trong SQL hay ADO (Ñoái töôïng döõ lieäu Activex – Activex Data Object). DAO coù theå söû duïng ñeå truy caäp caùc cô sôû döõ lieäu treân maùy caù nhaân hay Client/Server. Khuyeát ñieåm : Moâ hình ñoái töôïng DAO khaù phöùc taïp DBEngine Workspace Database TableDef QueryDef RecordSet Container Container Relation Field Index Field Field Parameter Field Document Field User Group Group User Error Object only Object and collection Moâ hình caây phaân caáp DAO, trình baøy moái quan heä giöõa caùc ñoái töôïng cô sôû döõ lieäu Thoâng qua caùc taäp hôïp sôû höõu ñoái töôïng Database coù theå thao taùc treân döõ lieäu vaø caáu truùc cuûa moät cô sôû döõ lieäu, taïo caùc ñoái töôïng cô sôû döõ lieäu môùi, kieåm tra caáu truùc vaø döõ lieäu chöùa trong moät cô sôû döõ lieäu. Trong laäp trình DAO, coù moät taäp hôïp coát loõi goàm caùc kyõ thuaät thoâng duïng ñöôïc söû duïng gaàn nhö cho moïi chöông trình, bao goàm : Thi haønh caâu truy vaán SELECT ñeå laáy veà caùc döõ lieäu töø cô sôû döõ lieäu. Duyeät qua töøng maãu tin trong moät RecordSet Thi haønh caâu truy vaán haønh ñoäng (bao goàm caùc caâu truy vaán Update, Delete, Append) Söõa ñoåi caáu truùc cô sôû döõ lieäu Xöû lyù loãi phaùt sinh bôûi truy caäp cô sôû döõ lieäu. Ñieàu khieån ADODC (Microsoft ADO Data Control 6.0 (OLEDB) ) Visual Basic cung caáp caùc ñoái töôïng döõ lieäu ActiveX (ActiveX Data Object - ADO). ADO toång hôïp vaø thay theá vieäc truy caäp döõ lieäu cuûa DAO (Ñoái töôïng truy caäp döõ lieäu – Data Access Object) vaø RDO (Ñoái töôïng döõ lieäu töø xa – Remote Data Object). ADO laø coâng ngheä truy caäp cô sôû döõ lieäu höôùng ñoái töôïng töông töï nhö DAO vaø RDO,ø giao dieän döïa treân ñoái töôïng cho coâng ngheä döõ lieäu OLEDB. Ngoaøi ra, ADO deã söû duïng vaø coù taàm hoaït ñoäng roäng hôn duøng ñeå keát noái vôùi caùc taäp tin cô sôû döõ lieäu vaø coù theå truy caäp döõ lieäu töø xa. ADO ñöôïc xem laø kyõ thuaät ñeå truy caäp cô sôû döõ lieäu töø Web Server. Bôûi vì ADO ñöôïc cung caáp döôùi daïng thö vieän Activex Server (töông töï DAO vaø RDO), neân raát thuaän lôïi duøng trong öùng duïng Visual Basic. Trong thöïc teá, baèng nhieàu caùch ñaõ chöùng minh raèng söû duïng ADO ñeå laøm vieäc vôùi cô sôû döõ lieäu Client/Server thì deã hôn caùc kyõ thuaät khaùc. Phaàn lôùn caùc nhaø laäp trình Visual Basic khoâng töông taùc tröïc tieáp vôùi OLEDB. Thay vaøo ñoù, hoï laäp trình vôùi ADO, moâ hình ñoái töôïng cung caáp giao dieän vôùi OLEDB. Khi duøng ADO thì chæ caàn laäp trình vôùi phaàn giao dieän ngöôøi söû duïng ôû phía Client. Bôûi vì vieäc truy caäp döõ lieäu treân caû trình duyeät Wed vaø öùng duïng Visual Basic ñöôïc chuyeån heát veà phía Activex Server neân logic chöông trình luoân nhaát quaùn, baát keå loaïi öùng duïng naøo ñang ñöôïc söû duïng. Client Application Remote Data Objects ODBC Driver ODBC Driver Manager Activex Data Objects OLEDB Data Provider OLEDB Relational Database Document Server Email Server Client Workstation Caùch söû duïng ADO vaø OLEDB ñeå taêng cöôøng truy caäp thoâng tin trong moät cô sôû döõ lieäu Client Application Activex Data Objects OLEDB ODBC Provider ODBC Driver Relational Database Client Workstation ODBC Driver Manager OLEDB Caáu truùc truy caäp cô sôû döõ lieäu ODBC duøng trình cung caáp OLEDB Caáu truùc naøy cho pheùp duøng thaønh phaàn laäp trình Activex thoâng duïng treân caû trình duyeät Wed vaø öùng duïng Client Visual Basic. Keát noái vôùi chöùa Keát noái vôùi Bieåu maãu VB Caùc thuoäc tính DataSource, DataField cuûa ñieàu khieån raøng buoäc döõ lieäu Caùc thuoäc tính ConnectionString, RecordSource cuûa ñieàu khieån ADO Data Cô sôû döõ lieäu Caùch thöùc cuûa ñieàu khieån ADO Data keát noái vôùi cô sôû döõ lieäu trong öùng duïng 4. Caùc ñieàu khieån giao dieän ngöôøi söû duïng Ñieàu khieån noäi taïi (Hoaït ñoäng vôùi moïi aán baûn cuûa Visual Basic) Caùc ñieàu khieån naøy ñeàu coù theå tröïc tieáp noái keát vôùi moät tröôøng trong moät cô sôû döõ lieäu thoâng qua moät ñieàu khieån döõ lieäu hoaëc nguoàn döõ lieäu khaùc nhö trình thieát keá DataEnvironment. Nhaäp döõ lieäu vôùi ñieàu khieån TEXTBOX : Duøng söõa ñoåi döõ lieäu kieåu chuoãi vaø kieåu soá töø moät cô sôû döõ lieäu. Raøng buoäc vaøo trình thieát keá DataEnvironment : Laø khaû naêng taïo moät giao dieän ngöôøi söû duïng raøng buoäc döõ lieäu. Bôûi vì coù theå chia seõ trình thieát keá DataEnvironment qua nhieàu bieåu maãu vaø nhieàu öùng duïng, ñieàu naøy seõ cho taát caû caùc tính naêng vaø söï deã daøng laäp trình trong moät öùng duïng raøng buoäc döõ lieäu bôûi vì khoâng caàn raøng buoäc töøng ñieàu khieån rieâng reõ vôùi nguoàn döõ lieäu. Truy caäp giaù trò Boolean vôùi ñieàu khieån CHECKBOX : duøng CheckBox ñeå hieån thò moät giaù trò True hay False töø moät tröôøng trong moät cô sôû döõ lieäu. Söû duïng ñieàu khieån LISTBOX ñeå hieån thò döõ lieäu : duøng ListBox ñeå hieån thò caùc phaàn töû trong moät danh saùch choïn löïa daønh cho ngöôøi söû duïng. Nhöng khi söû duïng ListBox ñeå hieån thò döõ lieäu töø moät cô sôû döõ lieäu vaãn coù moät soá haïn cheá veà löôïng döõ lieäu duøng ñeå chöùa vaø hieån thò. TabControl : Laøm cho caùc chöùc naêng cuûa chöông trình naèm goïn treân moät form. Ñieàu khieån Activex (Laø nhöõng thaønh phaàn boå sung cho baûn Professional vaø Enterprise cuûa Visual Basic) Khaùc vôùi caùc ñieàu khieån giao dieän ngöôøi söû duïng, caùc ñieàu khieån naøy khoâng ñöôïc cung caáp bôûi heä ñieàu haønh. Thay vaøo ñoù, ta phaûi phaân phaùt ñieàu khieån boå sung vaøo caùc maùy tính cuûa ngöôøi söû duïng ñeå öùng duïng coù theå söû duïng chuùng. Söû duïng ñieàu khieån DataGrid : DataGrid coù khaû naêng hieån thò döõ lieäu döôùi daïng doøng, coät khi raøng buoäc vôùi ñieàu khieån ADO Data hay trình thieát keá DataEnvironment. Söû duïng ñieàu khieån DataList vaø DataCombo : Ñieàu khieån DataList vaø DataCombo laø nhöõng ñieàu khieån sao cheùp laïi caùc chöùc naêng cuûa ñieàu khieån DBList. DataList cung caáp danh saùch caùc choïn löïa, DataCombo duøng noái keát döõ lieäu nhaäp vaøo ñieàu khieån vôùi moät tröôøng trong cô sôû döõ lieäu, caû hai ñeàu töông thích vôùi DAO Data vaø ADO Data môùi. 5. Söû duïng caùc caâu truy vaán (SQL) Moät caâu truy vaán laø moät leänh cô sôû döõ lieäu ñeå laáy veà caùc maåu tin. Söû duïng caâu truy vaán, coù theå laáy döõ lieäu töø moät hoaëc nhieàu tröôøng trong moät hay nhieàu baûng. Ngoaøi ra, coøn coù theå eùp caùc döõ lieäu laáy veà theo moät hoaëc nhieàu raøng buoäc, goïi laø caùc tieâu chí ñeå haïn cheá soá löôïng döõ lieäu laáy veà. SQL laø giaûi phaùp chuaån ñeå thao taùc vôùi cô sôû döõ lieäu. Noù ñöôïc thöïc hieän theo nhieàu daïng khaùc nhau trong caùc heä thoáng cô sôû döõ lieäu quan heä, bao goàm Access vaø SQL Server Caùc caâu truy vaán SQL cho khaû naêng laáy veà caùc maåu tin töø moät baûng cô sôû döõ lieäu, ñoái chieáu caùc döõ lieäu quan heä vôùi nhau trong nhieàu baûng vaø thao taùc vôùi caáu truùc cuûa cô sôû döõ lieäu. Caùc kieåu truy vaán SQL nhaát ñònh coù theå ñieàn döõ lieäu vaøo moät ñieàu khieån döõ lieäu. Trong chöông trình, caùc caâu truy vaán SQL ñöôïc duøng khi thao taùc vôùi caùc cô sôû döõ lieäu thoâng qua söû duïng moâ hình ñoái töôïng DAO, RDO vaø ADO. Lôïi ích khi duøng SQL Theo kinh nghieäm trong Visual Basic, baát cöù choå naøo duøng moät tham chieáu ñeán moät baûng, ñeàu coù theå thay theá baèng caùch söû duïng moät caâu leänh SQL hoaëc moät tham chieáu ñeán moät truy vaán ñaõ löu tröõ nhöng baûn thaân noù vaãn döïa vaøo moät caâu leänh SQL. Nôi thích hôïp nhaát ñeå ñaët moät caâu leänh SQL, döïa treân caùc kyõ thuaät truy caäp döõ lieäu, laø thuoäc tính RecordSource cuûa moät ñieàu khieån döõ lieäu. Vì vaäy, thay vì chæ ra thuoäc tính RecordSource laø teân cuûa moät baûng, coù theå ñoåi thuoäc tính naøy thaønh teân cuûa moät caâu truy vaán chöùa saün hay moät caâu leänh SQL nhö : SELECT * FROM TEN_BANG ORDER BY KEY. Ñieàu naøy cho ta söï linh hoaït ñaùng keå khi choïn löïa moät nguoàn maåu tin. Söû duïng caâu leänh SQL trong caùc ngöõ caûnh khaùc nhau cuûa chöông trình Tham soá Source cuûa phöông thöùc OpenRecordSet cuûa ñoái töôïng DataBase cuûa DAO ñöôïc söû duïng phoå bieán nhaát khi truy vaán caùc maåu tin töø moät cô sôû döõ lieäu Access. Söû duïng thuoäc tính Source cuûa moät ñoái töôïng RecordSet cuûa ADO. Söû duïng caâu leänh SELECT ñeå laáy veà caùc maåu tin Caâu leänh SELECT laø coát loõi cuûa moïi truy vaán laáy veà döõ lieäu. Noù thoâng baùo cho boä maùy cô sôû döõ lieäu nhöõng tröôøng naøo seõ ñöôïc laáy veà. Daïng thoâng duïng nhaát cuûa caâu leänh SELECT laø : SELECT * Meänh ñeà coù yù nghóa laø “traû veà taát caû caùc tröôøng tìm thaáy trong nguoàn maåu tin chæ ñònh”. Daïng leänh naøy raát tieän duïng vì khoâng caàn bieát teân cuûa tröôøng ñeå laáy chuùng veà töø moät baûng. Tuy nhieân, laáy veà taát caû caùc coät trong moät baûng coù theå khoâng hieäu quaû, nhaát laø trong tröôøng hôïp maø ta chæ caàn 2 coät maø truy vaán cuûa ta traû veà quaù nhieàu. Vì vaäy, ngoaøi vieäc thoâng baùo cho boä maùy cô sôû döõ lieäu ñeå traû veà taát caû caùc tröôøng trong nguoàn maåu tin, ta coøn coù khaû naêng chæ ra chính xaùc tröôøng naøo caàn laáy veà. Hieäu öùng loïc bôùt naøy caûi tieán hieäu quaû cuûa moät truy vaán, nhaát laø treân baûng lôùn coù nhieàu tröôøng trong chöông trình, bôûi vì trong chöông trình ta chæ caàn laáy veà tröôøng naøo caàn thieát. Söû duïng meänh ñeà FROM ñeå chæ nguoàn maåu tin Meänh ñeà FROM laøm vieäc vôùi caâu leänh SELECT ñeå traû veà caùc maåu tin trong baûng, ví duï : SELECT * FROM TEN_BANG . Vì moät caâu truy vaán SELECT FROM khoâng xeáp theo thöù töï neân thöù töï traû veà laø khoâng xaùc ñònh. Ñeå caâu truy vaán coù hieäu quaû, caàn phaûi giôùi haïn soá tröôøng laáy veà baèng caùch söû duïng meänh ñeà WHERE. Söû duïng meänh ñeà WHERE ñeå chæ ra tieâu chí loïc Meänh ñeà WHERE thoâng baùo vôùi boä maùy cô sôû döõ lieäu ñeå giôùi haïn soá maåu tin traû veà theo moät hay nhieàu tieâu chí loïc do ngöôøi laäp trình cung caáp. Keát quaû traû veà cuûa tieâu chí loïc laø TRUE/FALSE. Ví duï : Laáy veà moät danh saùch cuûa nhöõng khaùch haøng ôû thaønh phoá Hoà Chí Minh SELECT HOLOT,TEN,THANHPHO FROM TBL_KHACHHANG WHERE MATP=’HCM’ Toùm laïi, chìa khoùa cuûa söï thaønh coâng trong vieäc phaùt trieån Client/Server laø phaùt trieån caùc chieán thuaät ñeå ñaûm baûo raèng caùc öùng duïng Client khoâng laáy veà quaù nhieàu maåu tin cuøng luùc. Ñieàu naøy ñaûm baûo raèng öùng duïng seõ chaïy nhanh hôn vaø khoâng gaây ra nhöõng phieàn phöùc cho maùy tính nhö laø heát boä nhôù. Moät trong nhöõng vuõ khí cô baûn ñeå traùnh nhöõng haäu quaû treân laø duøng meänh ñeà WHERE. Söû duïng ORDER BY trong caâu leänh SQL ñeå saép xeáp keát quaû Meänh ñeà ORDER BY thoâng baùo cho boä maùy cô sôû döõ lieäu caàn saép xeáp caùc maåu tin maø noù laáy veà. Maëc ñònh cuûa ORDER BY laø saép xeáp taêng daàn, ví duï : Saép xeáp taêng daàn SELECT [ÑÒA CHÆ],[HOÏTEÂN] FROM TBL_KHACHHANG WHERE MATP=’HCM’ ORDER BY MA_KH Saép xeáp giaûm daàn SELECT [ÑÒA CHÆ],[HOÏTEÂN] FROM TBL_KHACHHANG WHERE MATP=’HCM’ ORDER BY MA_KH DESC 6. Thieát laäp baùo caùo vaø xuaát thoâng tin Trong chöông trình duøng coâng cuï Crystal Report 8.5 ñeå laäp baùo caùo, noù goàm coù hai phaàn : Trình thieát keá baùo caùo xaùc ñònh döõ lieäu seõ ñöa vaøo baùo caùo vaø caùch theå hieän cuûa baùo caùo. Moät ñieàu khieån Activex cho pheùp thi haønh, hieån thò, in aán ñieàu khieån luùc thi haønh öùng duïng. Cöûa soå xaùc ñònh cô sôû döõ lieäu seõ ñöôïc baùo caùo Bôûi vì caùc moái quan heä ñònh nghóa saün cho cô sôû döõ lieäu ñaõ ñöôïc xaùc ñònh ôû möùc boä maùy cô sôû döõ lieäu neân Crystal Report töï ñoäng taïo moái quan heä giöõa caùc baûng nhö khi taïo trong Microsoft Access. Cöûa soå bieåu dieãn moái quan heä cuûa caùc baûng trong Crystal Report Cöûa soå thieát keá baùo caùo trong Crystal Report 7. Taïo boä giuùp ñôõ Ñeå chöông trình mang tính chuyeân nghieäp caàn taïo boä giuùp ñôõ ñeå ngöôøi söû duïng coù theå giaûi ñaùp moät soá thaéc maéc veà chöông trình khi coù vaán ñeà. Moät soá phaàn meàm hieän nay treân thò tröôøng hoå trôï vieäc taïo boä giuùp ñôõ nhö : WinHelp, ForeHelp, HTML Help, WorkShop, RoboHelp… 8. Ñoùng goùi chöông trình Chöông trình ñöôïc ñoùng goùi vaø coù theå trieån khai. PHAÀN V CHÖÔNG TRÌNH QUAÛN LYÙ KEÁ TOAÙN DOANH NGHIEÄP GIAO DIEÄN VAØ MAÕ NGUOÀN CUÛA MOÄT SOÁ FORM CAÄP NHAÄT – BAÙO CAÙO 1. Heä thoáng Folder ñeå löu tröõ chöông trình C:\ 2. Giao dieän chính cuûa chöông trình 3. Moät soá thuû tuïc duøng ñeå môû keát noái döõ lieäu giöõa Access vaø Visual Basic a. Thuû tuïc môû keát noái döõ lieäu baèng ADODB Public cn As New ADODB.Connection Sub MoKetNoi() Dim Ten_CSDL As String Dim str As String Ñöôøng daãn ñeán taäp tin chöùa cô sôû döõ lieäu Ten_CSDL = App.Path & " \Ktdn.mdb" Khai baùo nhaø cung caáp keát noái vaø nguoàn döõ lieäu str = "Provider=Microsoft.Jet.OLEDB.3.51;Data Source=" & Ten_CSDL & "" Khai baùo chuoãi keát noái cuûa DataEnvironment vaø DEconnection DE1.CN1.ConnectionString = "Provider=Microsoft.Jet.OLEDB.3.51;Persist Security Info=False;Data Source=" & Ten_CSDL & "" Phöông thöùc môû keát noái DE1.CN1.Open cn.Open str End Sub b. Thuû tuïc môû keát noái baèng DAO (Data Access Object) Private Sub Sub_Name() Khai baùo caùc bieán ñoái töôïng cô sôû döõ lieäu Dim db As DAO.Database Dim rs As DAO.Recordset Dim chuoi As String Bieán db truy caäp ñeán teân cô sôû döõ lieäu caàn môû Set db = OpenDatabase("c:\QL_ktdn\ktdn.mdb") Duøng caâu leänh SELECT SQL ñeå truy caäp ñeán baûng chuoi = "select * from Tbl_DMCT where MA_CT='" & DCDMCT.Text & "'" Set rs = db.OpenRecordset(chuoi) rs.Close db.Close End Sub c. Caùc böôùc keát noái döõ lieäu baèng ADO (Activex Data Object) Bieåu töôïng ADODC trong boä coâng cuï cuûa Visual Basic Trang General trong cöûa soå Property Pages cuûa ñieàu khieån ADODC Trang Provider trong cöûa soå Data Link Properties cuûa ADODC Trang Connection trong cöûa soå Data Link Properties cuûa ADODC Trang RecordSource trong cöûa soå Property Pages cuûa ñieàu khieån ADODC 4. Giao dieän vaø maõ nguoàn cuûa moät soá Form caäp nhaät vaø xuaát döõ lieäu Giao dieän Form caäp nhaät danh muïc chöùng töø Maõ nguoàn cuûa Form caäp nhaät danh muïc chöùng töø Option Compare Text Option Explicit Dim them As Boolean Private Sub form_load() Dim n Dim n1 n = 0 n1 = 0 n = Ado_DMCT.Recordset.RecordCount If (Ado_DMCT.Recordset.EOF = False) And (Ado_DMCT.Recordset.BOF = False) Then n1 = Ado_DMCT.Recordset.Bookmark End If txtBGHH.Text = n1 txtSBG.Text = n Khoa End Sub Private Sub Khoa() DataDMCT.AllowDelete = False DataDMCT.AllowUpdate = False cmdthem.Enabled = True cmdsua.Enabled = True cmdxoa.Enabled = True cmdghi.Enabled = False cmdkhong.Enabled = False cmdthoat.Enabled = True DataDMCT.Refresh End Sub Private Sub Mo_Khoa() DataDMCT.AllowDelete = True DataDMCT.AllowUpdate = True cmdthem.Enabled = False cmdsua.Enabled = False cmdxoa.Enabled = False cmdghi.Enabled = True cmdkhong.Enabled = True cmdthoat.Enabled = False DataDMCT.Refresh End Sub Private Sub cmdthem_click() On Error GoTo Loi_Them Mo_Khoa Ado_DMCT.Refresh Ado_DMCT.Recordset.AddNew DataDMCT.SetFocus them = True Thoat_Them: Exit Sub Loi_Them: MsgBox Err.Description Resume Thoat_Them End Sub Private Sub cmdsua_click() Dim recnum On Error GoTo Loi_Sua recnum = Ado_DMCT.Recordset.Bookmark Mo_Khoa them = False Thoat_Sua: Exit Sub Loi_Sua: MsgBox Err.Description Resume Thoat_Sua End Sub Private Sub cmdxoa_click() On Error GoTo Loi_Xoa Dim traloi traloi = MsgBox("Ban muon xoa chung tu " + Ado_DMCT.Recordset.Fields("MA_CT") + " ?", 48 + 4, "Thong bao") If traloi = 6 Then Ado_DMCT.Recordset.Delete Ado_DMCT.Recordset.Clone Ado_DMCT.Recordset.Requery Ado_DMCT.Recordset.MoveNext If Ado_DMCT.Recordset.EOF Then Ado_DMCT.Recordset.MoveLast End If End If Ado_DMCT.Refresh Thoat_Xoa: Exit Sub Loi_Xoa: MsgBox "Khong the xoa mau tin nay !" Resume Thoat_Xoa End Sub Private Sub cmdghi_click() On Error GoTo Loi_Ghi Ado_DMCT.Recordset.UpdateBatch adAffectAll Khoa cmdthem.SetFocus them = False Thoat_Ghi: DataDMCT.SetFocus Exit Sub Loi_Ghi: MsgBox "Du lieu khong hop le !" Resume Thoat_Ghi End Sub Private Sub cmdkhong_click() If them Then Ado_DMCT.Refresh Ado_DMCT.Recordset.CancelUpdate End If Khoa cmdthem.SetFocus them = False Ado_DMCT.Refresh End Sub Private Sub cmdthoat_click() Ado_DMCT.Refresh Unload Me End Sub Private Sub DataDMCT_click() Dim n Dim n1 n = 0 n1 = 0 n = Ado_DMCT.Recordset.RecordCount If (Ado_DMCT.Recordset.EOF = False) And (Ado_DMCT.Recordset.BOF = False) Then n1 = Ado_DMCT.Recordset.Bookmark End If txtBGHH.Text = n1 txtSBG.Text = n End Sub Giao dieän Form baùo caùo danh muïc chöùng töø Maõ nguoàn cuûa Form baùo caùo danh muïc chöùng töø Dim Report As New CrystalRepDMCT Private Sub Form_Load() Screen.MousePointer = vbHourglass CRViewer1.ReportSource = Report CRViewer1.ViewReport Screen.MousePointer = vbDefault End Sub Giao dieän Form caäp nhaät danh muïc taøi khoaûn Maõ nguoàn cuûa Form caäp nhaät danh muïc taøi khoaûn Option Compare Text Option Explicit Dim them As Boolean Private Sub form_load() Dim n Dim n1 n = 0 n1 = 0 n = Ado_DMTK.Recordset.RecordCount If (Ado_DMTK.Recordset.EOF = False) And (Ado_DMTK.Recordset.BOF = False) Then n1 = Ado_DMTK.Recordset.Bookmark End If txtBGHH.Text = n1 txtSBG.Text = n Khoa End Sub Private Sub Mo_Khoa() DataDMTK.AllowDelete = True DataDMTK.AllowUpdate = True cmdthem.Enabled = False cmdsua.Enabled = False cmdxoa.Enabled = False cmdghi.Enabled = True cmdkhong.Enabled = True cmdthoat.Enabled = False DataDMTK.Refresh End Sub Private Sub Khoa() DataDMTK.AllowDelete = False DataDMTK.AllowUpdate = False cmdthem.Enabled = True cmdsua.Enabled = True cmdxoa.Enabled = True cmdghi.Enabled = False cmdkhong.Enabled = False cmdthoat.Enabled = True DataDMTK.Refresh End Sub Private Sub cmdthem_click() On Error GoTo Loi_Them Ado_DMTK.Refresh Ado_DMTK.Recordset.AddNew Mo_Khoa DataDMTK.SetFocus them = True Thoat_Them: Exit Sub Loi_Them: MsgBox Err.Description Resume Thoat_Them End Sub Private Sub cmdsua_click() Dim recnum On Error GoTo Loi_Sua recnum = Ado_DMTK.Recordset.Bookmark Mo_Khoa them = False Thoat_Sua: Exit Sub Loi_Sua: MsgBox Err.Description Resume Thoat_Sua End Sub Private Sub cmdxoa_click() On Error GoTo Loi_Xoa Dim traloi traloi = MsgBox("Ban muon xoa tai khoan " + Ado_DMTK.Recordset.Fields("MA_TK") + " ?", 48 + 4, "Thong bao") If traloi = 6 Then Ado_DMTK.Recordset.Delete Ado_DMTK.Recordset.Clone Ado_DMTK.Recordset.Requery Ado_DMTK.Recordset.MoveNext If Ado_DMTK.Recordset.EOF Then Ado_DMTK.Recordset.MoveLast End If End If Ado_DMTK.Refresh Thoat_Xoa: Exit Sub Loi_Xoa: MsgBox "Khong the xoa mau tin nay !" Resume Thoat_Xoa End Sub Private Sub cmdghi_click() On Error GoTo Loi_Ghi Ado_DMTK.Recordset.UpdateBatch adAffectAll Khoa cmdthem.SetFocus them = False Thoat_Ghi: DataDMTK.SetFocus Exit Sub Loi_Ghi: MsgBox "Du lieu khong hop le !" Resume Thoat_Ghi End Sub Private Sub cmdkhong_click() If them Then Ado_DMTK.Refresh Ado_DMTK.Recordset.CancelUpdate End If Khoa cmdthem.SetFocus them = False Ado_DMTK.Refresh End Sub Private Sub cmdthoat_click() Ado_DMTK.Refresh Unload Me End Sub Private Sub DataDMTK_click() Dim n Dim n1 n = 0 n1 = 0 n = Ado_DMTK.Recordset.RecordCount If (Ado_DMTK.Recordset.EOF = False) And (Ado_DMTK.Recordset.BOF = False) Then n1 = Ado_DMTK.Recordset.Bookmark End If txtBGHH.Text = n1 txtSBG.Text = n End Sub 'Thu tuc khi muon quay lai ban ghi truoc do Private Sub cmdtruoc_click() If Ado_DMTK.Recordset.BOF Then MsgBox "Ban dang o ban ghi dau tien !", vbOKOnly, "Thong bao" Else Ado_DMTK.Recordset.MovePrevious End If End Sub 'Thu tuc khi muon di toi ban ghi ke tiep Private Sub cmdsau_click() If Ado_DMTK.Recordset.EOF Then MsgBox "Ban dang o ban ghi cuoi cung !", vbOKOnly, "Thong bao" Else Ado_DMTK.Recordset.MoveNext End If End Sub 'Thu tuc khi muon quay lai ban ghi dau tien Private Sub cmddau_click() On Error GoTo Loi_Dau If Ado_DMTK.Recordset.BOF Then MsgBox "Ban dang o ban ghi dau tien !", vbOKOnly, "Thong bao" Else Ado_DMTK.Recordset.MoveFirst End If Thoat_Dau: Exit Sub Loi_Dau: MsgBox Err.Description Resume Thoat_Dau End Sub 'Thu tuc khi di den ban ghi cuoi cung Private Sub cmdcuoi_click() On Error GoTo Loi_Cuoi If Ado_DMTK.Recordset.EOF Then MsgBox "Ban dang o ban ghi cuoi cung !", vbOKOnly, "Thong bao" Else Ado_DMTK.Recordset.MoveLast End If Thoat_Cuoi: Exit Sub Loi_Cuoi: MsgBox Err.Description Resume Thoat_Cuoi End Sub Giao dieän Form duøng ñeå baùo caùo danh muïc taøi khoaûn Maõ nguoàn cuûa Form duøng ñeå baùo caùo danh muïc taøi khoaûn Dim Report As New CrystalRepDMTK Private Sub Form_Load() Screen.MousePointer = vbHourglass CRViewer1.ReportSource = Report CRViewer1.ViewReport Screen.MousePointer = vbDefault End Sub Giao dieän Form cuûa chöùng töø nhaäp xuaát haøng hoùa Maõ nguoàn cuûa Form caäp nhaät chöùng töø nhaäp haøng Option Explicit Dim them As Boolean Dim sua As Boolean Dim chuoi1 As String Dim danhdau 'Dung danh dau ban ghi khi can sua doi Dim gtthang Dim gtnam Private Sub form_load() Dim so As Integer Dim thang As Byte Dim nam As Integer gtthang = Me.VScrollTHANG.Value gtnam = Me.VScrollNAM.Value thang = Month(Now()) nam = Year(Now()) Me.txtTHANG.Text = thang Me.txtNAM.Text = nam chuoi1 = "Select * from Tbl_HDNHAP where month(NGAYLAP_CT)='" & Val(thang) & "'" & " and year(NGAYLAP_CT)='" & Val(nam) & "'" Ado_HDNHAP.ConnectionString = "provider=Microsoft.Jet.OLEDB.3.51;Persist security info=false;data source='c:\QL_ktdn\ktdn.mdb'" Ado_HDNHAP.RecordSource = chuoi1 Ado_HDNHAP.Refresh Khoa End Sub Private Sub Khoa() txtSCT.Locked = True txtSCTG.Locked = True txtDIENGIAI.Locked = True txtNGAYCT.Locked = True DCDMNV.Locked = True txtHONV.Locked = True txtTENNV.Locked = True DCDMNCC.Locked = True txtTENNCC.Locked = True DCDMKHO.Locked = True txtTENKHO.Locked = True txtTYGIA.Locked = True DCDMCT.Locked = True txtTENCT.Locked = True DCDMTK.Locked = True txtDGTKN.Locked = True DCDMTKDU.Locked = True txtDGTKC.Locked = True DCDMNT.Locked = True txtTENNT.Locked = True DCDMHTTT.Locked = True txtTENHTTT.Locked = True DataHDNHAP.AllowUpdate = False DataHDNHAP.AllowDelete = False DataHDNHAP.AllowAddNew = False cmdthem.Enabled = True cmdsua.Enabled = True cmdxoa.Enabled = True cmdghi.Enabled = False cmdkhong.Enabled = False cmdthoat.Enabled = True cmdtruoc.Enabled = True cmdsau.Enabled = True cmddau.Enabled = True cmdcuoi.Enabled = True cmdchitiet.Enabled = True End Sub Private Sub Mo_Khoa() DCDMCT.SetFocus txtSCT.Locked = False txtSCTG.Locked = False txtDIENGIAI.Locked = False txtNGAYCT.Locked = False DCDMNV.Locked = False txtHONV.Locked = False txtTENNV.Locked = False DCDMNCC.Locked = False txtTENNCC.Locked = False DCDMKHO.Locked = False txtTENKHO.Locked = False txtTYGIA.Locked = False DCDMCT.Locked = False txtTENCT.Locked = False DCDMTK.Locked = False txtDGTKN.Locked = False DCDMTKDU.Locked = False txtDGTKC.Locked = False DCDMNT.Locked = False txtTENNT.Locked = False DCDMHTTT.Locked = False txtTENHTTT.Locked = False DataHDNHAP.AllowUpdate = True DataHDNHAP.AllowDelete = True DataHDNHAP.AllowAddNew = True cmdthem.Enabled = False cmdsua.Enabled = False cmdxoa.Enabled = False cmdghi.Enabled = True cmdkhong.Enabled = True cmdthoat.Enabled = True cmdtruoc.Enabled = False cmdsau.Enabled = False cmddau.Enabled = False cmdcuoi.Enabled = False cmdchitiet.Enabled = False End Sub '------------------------------------------------------------------------------------ 'Doan cac su kien danh cho cmddau, cmdcuoi, cmdtruoc, cmdsau 'Chuyen den ban ghi cuoi cung Private Sub cmdcuoi_click() On Error GoTo Loi_Cuoi 'Neu khong co loi thi If Ado_HDNHAP.Recordset.EOF() = True Then MsgBox "Ñang ôû baûn ghi cuoái cuøng !", vbOKOnly, "Thoâng baùo" Else Ado_HDNHAP.Recordset.MoveLast End If Thoat_Cuoi: Exit Sub Loi_Cuoi: MsgBox Err.Description Resume Thoat_Cuoi End Sub Private Sub cmdcuoi_mousemove(button As Integer, shift As Integer, x As Single, y As Single) txtTT.Text = "Nhaûy ñeán baûn ghi cuoái cuøng" End Sub 'Chuyen ve ban ghi dau tien Private Sub cmddau_click() On Error GoTo Loi_Dau 'Neu khong loi thi If Ado_HDNHAP.Recordset.BOF() = True Then MsgBox "Ñang ôû baûn ghi ñaàu tieân !", vbOKOnly, "Thoâng baùo" Else Ado_HDNHAP.Recordset.MoveFirst End If Thoat_Dau: Exit Sub Loi_Dau: MsgBox Err.Description Resume Thoat_Dau End Sub Private Sub cmddau_mousemove(button As Integer, shift As Integer, x As Single, y As Single) txtTT.Text = "Veà baûn ghi ñaàu tieân" End Sub 'Chuyen ve ban ghi ke tiep Private Sub cmdsau_click() If Ado_HDNHAP.Recordset.EOF Then MsgBox "Ñang ôû baûn ghi cuoái cuøng !", vbOKOnly, "Thoâng baùo" Else Ado_HDNHAP.Recordset.MoveNext End If End Sub Private Sub cmdsau_mousemove(button As Integer, shift As Integer, x As Single, y As Single) txtTT.Text = "Ñeán baûn ghi tieáp theo" End Sub 'Chuyen ve ban ghi truoc do Private Sub cmdtruoc_click() If Ado_HDNHAP.Recordset.BOF Then MsgBox "Ñang ôû baûn ghi ñaàu tieân !", vbOKOnly, "Thoâng baùo" Else Ado_HDNHAP.Recordset.MovePrevious End If End Sub Private Sub cmdtruoc_mousemove(button As Integer, shift As Integer, x As Single, y As Single) txtTT.Text = "Veà baûn ghi tröôùc ñoù" End Sub '----------------------------------------------------------------------------------------- ' Doan danh cho cac su kien cmdthem, cmdsua, cmdxoa, cmdghi, cmdkhong, ‘cmdthoat Private Sub cmdthem_click() On Error GoTo Loi_Them Ado_HDNHAP.Recordset.AddNew Mo_Khoa them = True sua = False Thoat_Them: Exit Sub Loi_Them: MsgBox Err.Description Resume Thoat_Them End Sub Private Sub cmdthem_mousemove(button As Integer, shift As Integer, x As Single, y As Single) txtTT.Text = "Theâm baûn ghi môùi" End Sub Private Sub cmdsua_click() On Error GoTo Loi_Sua danhdau = Ado_HDNHAP.Recordset.Bookmark Mo_Khoa them = False sua = True Thoat_Sua: Exit Sub Loi_Sua: MsgBox Err.Description Resume Thoat_Sua End Sub Private Sub cmdsua_mousemove(button As Integer, shift As Integer, x As Single, y As Single) txtTT.Text = "Caäp nhaät laïi baûn ghi" End Sub Private Sub cmdxoa_click() On Error GoTo Loi_Xoa Dim traloi traloi = MsgBox("Xoùa baûn ghi " + Ado_HDNHAP.Recordset.Fields("SO_CT") + "?", 48 + 4, "Thoâng baùo") If traloi = 6 Then Ado_HDNHAP.Recordset.Delete Ado_HDNHAP.Recordset.Clone Ado_HDNHAP.Recordset.Requery Ado_HDNHAP.Recordset.MoveNext If Ado_HDNHAP.Recordset.EOF Then Ado_HDNHAP.Recordset.MoveLast End If End If Ado_HDNHAP.Refresh Thoat_Xoa: Exit Sub Loi_Xoa: MsgBox "Khoâng theå xoùa baûn ghi naøy !", vbOKOnly, "Thoâng baùo" Resume Thoat_Xoa End Sub Private Sub cmdxoa_mousemove(button As Integer, shift As Integer, x As Single, y As Single) txtTT.Text = "Xoùa baûn ghi" End Sub Private Sub cmdghi_click() On Error GoTo Loi_Ghi Ado_HDNHAP.Recordset.UpdateBatch adAffectAll Khoa them = False sua = False Thoat_Ghi: DCDMCT.SetFocus Exit Sub Loi_Ghi: MsgBox "Döõ lieäu khoâng hôïp leä", vbOKOnly, "Thoâng baùo" Resume Thoat_Ghi End Sub Private Sub cmdghi_mousemove(button As Integer, shift As Integer, x As Single, y As Single) txtTT.Text = "Löu baûn ghi" End Sub Private Sub cmdkhong_click() Ado_HDNHAP.Refresh Ado_HDNHAP.Recordset.CancelUpdate Khoa cmdthem.SetFocus them = False sua = False End Sub Private Sub cmdkhong_mousemove(button As Integer, shift As Integer, x As Single, y As Single) If them = True Then txtTT.Text = "Boû qua khoâng theâm baûn ghi" Else txtTT.Text = "Khoâng caäp nhaät laïi baûn ghi" End If End Sub Private Sub cmdthoat_click() Unload Me End Sub 'Khi thay doi gia tri txtTHANG xu ly Private Sub txtTHANG_change() Dim thang Dim nam 'Lay thang va nam cap nhat chung tu thang = txtTHANG.Text nam = txtNAM.Text chuoi1 = "Select * from Tbl_HDNHAP where month(NGAYLAP_CT)='" & Val(thang) & "'" & " and year(NGAYLAP_CT)='" & Val(nam) & "'" Ado_HDNHAP.ConnectionString = "provider=Microsoft.Jet.OLEDB.3.51;Persist security info=false;data source='c:\QL_ktdn\ktdn.mdb'" Ado_HDNHAP.RecordSource = chuoi1 Ado_HDNHAP.Refresh 'Dem so ban ghi va cho biet ban ghi hien tai Dim bght Dim sobg sobg = 0 bght = 0 sobg = Ado_HDNHAP.Recordset.RecordCount If (Ado_HDNHAP.Recordset.EOF = False) And (Ado_HDNHAP.Recordset.BOF = False) Then bght = Ado_HDNHAP.Recordset.Bookmark End If txtBGHH.Text = bght txtSBG.Text = sobg End Sub Private Sub VScrollTHANG_change() Dim thang As Byte Dim so thang = Val(txtTHANG) so = VScrollTHANG.Value If so > gtthang Then txtTHANG = str(thang + 1) gtthang = so Else txtTHANG = str(thang - 1) gtthang = so End If End Sub Private Sub txtNAM_change() Dim thang Dim nam 'Lay thang va nam cap nhat chung tu thang = txtTHANG.Text nam = txtNAM.Text chuoi1 = "Select * from Tbl_HDNHAP where month(NGAYLAP_CT)='" & Val(thang) & "'" & " and year(NGAYLAP_CT)='" & Val(nam) & "'" Ado_HDNHAP.ConnectionString = "provider=Microsoft.Jet.OLEDB.3.51;Persist security info=false;data source='c:\QL_ktdn\ktdn.mdb'" Ado_HDNHAP.RecordSource = chuoi1 Ado_HDNHAP.Refresh 'Dem so ban ghi va cho biet ban ghi hien tai Dim bght Dim sobg sobg = 0 bght = 0 sobg = Ado_HDNHAP.Recordset.RecordCount If (Ado_HDNHAP.Recordset.EOF = False) And (Ado_HDNHAP.Recordset.BOF = False) Then bght = Ado_HDNHAP.Recordset.Bookmark End If txtBGHH.Text = bght txtSBG.Text = sobg End Sub Private Sub VScrollNAM_change() Dim nam, so nam = Val(txtNAM) so = VScrollNAM.Value If so > gtnam Then txtNAM = str(nam + 1) gtnam = so Else txtNAM = str(nam - 1) gtnam = so End If End Sub 'Cac su kien khi chon ma chung tu Private Sub DCDMCT_gotfocus() Me.DCDMCT.BackColor = &HC0E0FF End Sub Private Sub DCDMCT_change() Dim db As DAO.Database Dim rs As DAO.Recordset Dim chuoi As String If DCDMCT.Text "" Then Set db = OpenDatabase("c:\QL_ktdn\ktdn.mdb") chuoi = "select * from Tbl_DMCT where MA_CT='" & DCDMCT.Text & "'" Set rs = db.OpenRecordset(chuoi) If rs.RecordCount > 0 Then txtTENCT.Text = rs.Fields("TEN_CT") End If rs.Close db.Close End If End Sub Private Sub DCDMCT_keypress(keyascii As Integer) Dim str As String Dim rs As New ADODB.Recordset Select Case keyascii Case 13: str = "select MA_CT from Tbl_DMCT where MA_CT= '" & DCDMCT & "'" rs.Open str, cn If rs.EOF = False Then DCDMCT = rs!MA_CT txtNGAYCT.SetFocus Else Frm_CHONDMCTofHDNHAP.Show 1 End If End Select End Sub Private Sub DCDMCT_lostfocus() Me.DCDMCT.BackColor = &HFFFFFF End Sub 'Khi ngay chung tu nhan focus Private Sub txtNGAYCT_gotfocus() txtNGAYCT.BackColor = &HC0E0FF End Sub Private Sub txtNGAYCT_keypress(keyascii As Integer) Select Case keyascii Case 13 txtSCTG.SetFocus End Select End Sub Private Sub txtNGAYCT_lostfocus() txtNGAYCT.BackColor = &HFFFFFF End Sub 'Khi so chung tu goc nhan focus Private Sub txtSCTG_gotfocus() txtSCTG.BackColor = &HC0E0FF End Sub Private Sub txtSCTG_keypress(keyascii As Integer) Select Case keyascii Case 13 txtSCT.SetFocus End Select End Sub Private Sub txtSCTG_lostfocus() txtSCTG.BackColor = &HFFFFFF End Sub Private Sub txtSCT_gotfocus() Dim db As DAO.Database Dim rs As DAO.Recordset Dim rd As DAO.QueryDef Dim max Dim thang, nam Dim so, so1 Dim chuoi1 As String Dim chuoi2 As String txtSCT.BackColor = &HC0E0FF thang = txtTHANG.Text nam = txtNAM.Text chuoi1 = Trim(nam) & Right("0" & Trim(thang), 2) chuoi2 = "Select * from Tbl_HDNHAP where month(NGAYLAP_CT)='" & Val(thang) & "'" & "and year(NGAYLAP_CT)='" & Val(nam) & "'" Set db = OpenDatabase("c:\QL_ktdn\ktdn.mdb") Set rs = db.OpenRecordset(chuoi2) max = 0 If rs.RecordCount > 0 Then rs.MoveFirst Do Until rs.EOF 'Tang gia tri so chung tu len 1 phu thuoc vao thang va nam xu ly If (Trim(Month(rs!NGAYLAP_CT)) = txtTHANG) And (Trim(Year(rs!NGAYLAP_CT)) = txtNAM) Then so = Mid(Trim(rs!SO_CT), 7) 'Lay SO_CT tu vi tri thu 7 If (Len(so) 0) Then so1 = Val(so) If (max < so1) Then max = so1 End If End If End If rs.MoveNext Loop End If 'Tru truong hop SO_CT0 thi record hien hanh la record cu If Me.txtSCT.Text = "" Then Me.txtSCT.Text = Trim(chuoi1) & Right("0" & Trim(CStr(max + 1)), 2) End If End Sub 'Su kien khi thay doi so chung tu Private Sub txtSCT_change() Dim n Dim n1 n = 0 n1 = 0 n = Ado_HDNHAP.Recordset.RecordCount If (Ado_HDNHAP.Recordset.EOF = False) And (Ado_HDNHAP.Recordset.BOF = False) Then n1 = Ado_HDNHAP.Recordset.Bookmark End If txtBGHH.Text = n1 txtSBG.Text = n End Sub 'Su kien khi So chung tu nhan enter Private Sub txtSCT_keypress(keyascii As Integer) Select Case keyascii Case 13 txtDIENGIAI.SetFocus End Select End Sub Private Sub txtSCT_lostfocus() txtSCT.BackColor = &HFFFFFF End Sub Private Sub txtDIENGIAI_gotfocus() txtDIENGIAI.BackColor = &HC0E0FF End Sub Private Sub txtDIENGIAI_keypress(keyascii As Integer) Select Case keyascii Case 13 DCDMNCC.SetFocus End Select End Sub Private Sub txtDIENGIAI_lostfocus() txtDIENGIAI.BackColor = &HFFFFFF End Sub Private Sub DCDMNCC_gotfocus() DCDMNCC.BackColor = &HC0E0FF End Sub Private Sub DCDMNCC_change() Dim db As DAO.Database Dim rs As DAO.Recordset Dim chuoi As String If DCDMNCC.Text "" Then Set db = OpenDatabase("c:\QL_ktdn\ktdn.mdb") chuoi = "select * from Tbl_DMNCC where MA_NCC='" & DCDMNCC.Text & "'" Set rs = db.OpenRecordset(chuoi) If rs.RecordCount > 0 Then txtTENNCC.Text = rs.Fields("TEN_NCC") End If rs.Close db.Close End If End Sub Private Sub DCDMNCC_keypress(keyascii As Integer) Dim str As String Dim rs As New ADODB.Recordset Select Case keyascii Case 13: str = "select MA_NCC from Tbl_DMNCC where MA_NCC= '" & DCDMNCC & "'" rs.Open str, cn If rs.EOF = False Then DCDMNCC = rs!MA_NCC DCDMKHO.SetFocus Else Frm_CHONDMNCCofHDNHAP.Show 1 End If End Select End Sub Private Sub DCDMNCC_lostfocus() Me.DCDMNCC.BackColor = &HFFFFFF End Sub Private Sub DCDMKHO_gotfocus() Me.DCDMKHO.BackColor = &HC0E0FF End Sub Private Sub DCDMKHO_change() Dim db As DAO.Database Dim rs As DAO.Recordset Dim chuoi As String If DCDMKHO.Text "" Then Set db = OpenDatabase("c:\QL_ktdn\ktdn.mdb") chuoi = "select * from Tbl_DMKHO where MA_KHO='" & DCDMKHO.Text & "'" Set rs = db.OpenRecordset(chuoi) If rs.RecordCount > 0 Then txtTENKHO.Text = rs.Fields("TEN_KHO") End If rs.Close db.Close End If End Sub Private Sub DCDMKHO_keypress(keyascii As Integer) Dim str As String Dim rs As New ADODB.Recordset Select Case keyascii Case 13: str = "select MA_KHO from Tbl_DMKHO where MA_KHO= '" & DCDMKHO & "'" rs.Open str, cn If rs.EOF = False Then DCDMKHO = rs!MA_KHO DCDMTK.SetFocus Else Frm_CHONDMKHOofHDNHAP.Show 1 End If End Select End Sub Private Sub DCDMKHO_lostfocus() Me.DCDMKHO.BackColor = &HFFFFFF End Sub Private Sub DCDMTK_gotfocus() Me.DCDMTK.BackColor = &HC0E0FF End Sub Private Sub DCDMTK_change() Dim db As DAO.Database Dim rs As DAO.Recordset Dim chuoi As String If DCDMTK.Text "" Then Set db = OpenDatabase("c:\QL_ktdn\ktdn.mdb") chuoi = "select * from Tbl_DMTK where MA_TK='" & DCDMTK.Text & "'" Set rs = db.OpenRecordset(chuoi) If rs.RecordCount > 0 Then txtDGTKN.Text = rs.Fields("DIENGIAI") End If rs.Close db.Close End If End Sub Private Sub DCDMTK_keypress(keyascii As Integer) Dim str As String Dim rs As New ADODB.Recordset Select Case keyascii Case 13: str = "select MA_TK from Tbl_DMTK where MA_TK= '" & DCDMTK & "'" rs.Open str, cn If rs.EOF = False Then DCDMTK = rs!MA_TK DCDMTKDU.SetFocus Else Frm_CHONDMTKofHDNHAP.Show 1 End If End Select End Sub Private Sub DCDMTK_lostfocus() Me.DCDMTK.BackColor = &HFFFFFF End Sub Private Sub DCDMTKDU_gotfocus() Me.DCDMTKDU.BackColor = &HC0E0FF End Sub Private Sub DCDMTKDU_change() Dim db As DAO.Database Dim rs As DAO.Recordset Dim chuoi As String If DCDMTKDU.Text "" Then Set db = OpenDatabase("c:\QL_ktdn\ktdn.mdb") chuoi = "select * from Tbl_DMTK where MA_TK='" & DCDMTKDU.Text & "'" Set rs = db.OpenRecordset(chuoi) If rs.RecordCount > 0 Then txtDGTKC.Text = rs.Fields("DIENGIAI") End If rs.Close db.Close End If End Sub Private Sub DCDMTKDU_keypress(keyascii As Integer) Dim str As String Dim rs As New ADODB.Recordset Select Case keyascii Case 13: str = "select MA_TK from Tbl_DMTK where MA_TK= '" & DCDMTKDU & "'" rs.Open str, cn If rs.EOF = False Then DCDMTKDU = rs!MA_TK DCDMNT.SetFocus Else Frm_CHONDMTKDUofHDNHAP.Show 1 End If End Select End Sub Private Sub DCDMTKDU_lostfocus() Me.DCDMTKDU.BackColor = &HFFFFFF End Sub Private Sub DCDMNT_gotfocus() Me.DCDMNT.BackColor = &HC0E0FF End Sub Private Sub DCDMNT_change() Dim db As DAO.Database Dim rs As DAO.Recordset Dim chuoi As String If DCDMNT.Text "" Then Set db = OpenDatabase("c:\QL_ktdn\ktdn.mdb") chuoi = "select * from Tbl_DMNT where MA_NT='" & DCDMNT.Text & "'" Set rs = db.OpenRecordset(chuoi) If rs.RecordCount > 0 Then txtTENNT.Text = rs.Fields("DIENGIAI") End If rs.Close db.Close End If End Sub Private Sub DCDMNT_keypress(keyascii As Integer) Dim str As String Dim rs As New ADODB.Recordset Select Case keyascii Case 13: str = "select MA_NT from Tbl_DMNT where MA_NT= '" & DCDMNT & "'" rs.Open str, cn If rs.EOF = False Then DCDMNT = rs!MA_NT DCDMNV.SetFocus Else Frm_CHONDMNTofHDNHAP.Show 1 End If End Select End Sub Private Sub DCDMNT_lostfocus() Me.DCDMNT.BackColor = &HFFFFFF Dim db As DAO.Database Dim rs As DAO.Recordset Dim chuoi As String If DCDMNT.Text "" Then Set db = OpenDatabase("c:\QL_ktdn\ktdn.mdb") chuoi = "select * from Tbl_DMNT where MA_NT='" & DCDMNT.Text & "'" Set rs = db.OpenRecordset(chuoi) If rs.RecordCount > 0 Then Me.txtTYGIA = rs.Fields("TYGIA") End If rs.Close db.Close End If End Sub Private Sub DCDMNV_gotfocus() Me.DCDMNV.BackColor = &HC0E0FF End Sub Private Sub DCDMNV_change() Dim db As DAO.Database Dim rs As DAO.Recordset Dim chuoi As String If DCDMNV.Text "" Then Set db = OpenDatabase("c:\QL_ktdn\ktdn.mdb") chuoi = "select * from Tbl_DMNV where MA_NV='" & DCDMNV.Text & "'" Set rs = db.OpenRecordset(chuoi) If rs.RecordCount > 0 Then txtHONV.Text = rs.Fields("HO_NV") txtTENNV.Text = rs.Fields("TEN_NV") End If rs.Close db.Close End If End Sub Private Sub DCDMNV_keypress(keyascii As Integer) Dim str As String Dim rs As New ADODB.Recordset Select Case keyascii Case 13: str = "select MA_NV from Tbl_DMNV where MA_NV= '" & DCDMNV & "'" rs.Open str, cn If rs.EOF = False Then DCDMNV = rs!MA_NV txtTYGIA.SetFocus Else Frm_CHONDMNVofHDNHAP.Show 1 End If End Select End Sub Private Sub DCDMNV_lostfocus() Me.DCDMNV.BackColor = &HFFFFFF End Sub Private Sub txtTYGIA_gotfocus() txtTYGIA.BackColor = &HC0E0FF End Sub Private Sub txtTYGIA_keypress(keyascii As Integer) Select Case keyascii Case 13 chkTHUE.SetFocus End Select End Sub Private Sub txtTYGIA_lostfocus() txtTYGIA.BackColor = &HFFFFFF End Sub Private Sub chkTHUE_gotfocus() chkTHUE.BackColor = &HC0E0FF End Sub Private Sub chkTHUE_keypress(keyascii As Integer) Select Case keyascii Case 13 DCDMHTTT.SetFocus End Select End Sub Private Sub chkTHUE_lostfocus() chkTHUE.BackColor = &H8000000F End Sub Private Sub DCDMHTTT_gotfocus() Me.DCDMHTTT.BackColor = &HC0E0FF End Sub Private Sub DCDMHTTT_change() Dim db As DAO.Database Dim rs As DAO.Recordset Dim chuoi As String If DCDMHTTT.Text "" Then Set db = OpenDatabase("c:\QL_ktdn\ktdn.mdb") chuoi = "select * from Tbl_DMHTTT where MA_HTTT='" & DCDMHTTT.Text & "'" Set rs = db.OpenRecordset(chuoi) If rs.RecordCount > 0 Then txtTENHTTT.Text = rs.Fields("TEN_HTTT") End If rs.Close db.Close End If End Sub Private Sub DCDMHTTT_keypress(keyascii As Integer) Dim str As String Dim rs As New ADODB.Recordset Select Case keyascii Case 13: str = "select MA_HTTT from Tbl_DMHTTT where MA_HTTT= '" & DCDMHTTT & "'" rs.Open str, cn If rs.EOF = False Then DCDMHTTT = rs!MA_HTTT 'Goi Form Frm_HDNHAPCT cmdchitiet.SetFocus Else Frm_CHONDMHTTTofHDNHAP.Show 1 If (cmdchitiet.Enabled = True) Then Me.cmdchitiet.SetFocus Else Me.cmdghi.SetFocus End If End If End Select End Sub Private Sub DCDMHTTT_lostfocus() Me.DCDMHTTT.BackColor = &HFFFFFF End Sub 'Goi Form cap nhat chung tu nhap chi tiet Private Sub cmdchitiet_click() Frm_HDNHAPCT.Show 1 End Sub PHAÀN VI ÑOÙNG GOÙI - ÑAÙNH GIAÙ VAØ HÖÔÙNG PHAÙT TRIEÅN ÑEÀ TAØI Ñeå chöông trình mang moät phaàn tính chuyeân nghieäp, caàn ñoùng goùi chöông trình thaønh boä Setup ( Package & Deloyment Wizard ) vaø coù theå cung caáp cho ngöôøi söû duïng boä Setup naøy nhö coù theå sao cheùp, caøi ñaët vaø coù theå söû duïng treân baát kyø maùy tính naøo. Moät chöông trình hoaøn haûo ñeå ñaûm baûo cho coâng vieäc keá toaùn thöïc thuï thì ñoøi hoûi tính chuyeân nghieäp raát cao, neân treân cô sôû nghieân cöùu vaø phaùt trieån, ñeà taøi chæ ñaùp öùng ñöôïc phaàn naøo cho ngöôøi söû duïng hieåu khaùi quaùt veà keá toaùn, cuõng nhö caùch nghieân cöùu veà cô sôû döõ lieäu cho keá toaùn doanh nghieäp. Ngoaøi ra, naém baét caùch söû duïng ngoân ngöõ laäp trình ñeå taïo vaø phaùt trieån caùc chöông trình öùng duïng. Ñoàng thôøi goùp phaàn laøm hoaøn haûo moät chöông trình keá toaùn coù theå ñaùp öùng roäng raõi cho nhieàu doanh nghieäp söû duïng. Ñeà taøi caàn ñöôïc boå sung nhöõng thieáu soùt, haïn cheá nhö chöa tính toaùn ñöôïc toàn quyõ tieàn maët, toàn kho haøng hoùa vaø giaù voán haøng baùn….Vaø phaùt trieån theo höôùng môû roäng nhö tìm kieám caùc loaïi haøng toàn kho, khaùch haøng coù coâng nôï, tình hình thu chi toàn quyõ tieàn maët, tieàn löông ñeå traû cho coâng nhaân vieân chöùc cuûa doanh nghieäp trong thaùng, quyù hay trong töøng thôøi kyø saûn xuaát kinh doanh. Cuoái cuøng toâi xin chaân thaønh caùm ôn ñeán thaày Ñoã Vaên Uy ñaõ taïo ñieàu kieän, giuùp ñôõ toâi trong quaù trình nghieân cöùu vaø phaùt trieån ñeà taøi. Maëc duø khoâng ñöôïc tröïc tieáp, haïn cheá veà khoaûng caùch vaø thôøi gian nhöng thaày ñaõ ñoùng goùp nhöõng yù kieán quyù baùo cho toâi hoaøn thaønh ñeà taøi. Xin chaân thaønh caûm ôn ! NHAÄN XEÙT CUÛA GIAÙO VIEÂN HÖÔÙNG DAÃN TAØI LIEÄU THAM KHAÛO Lyù Thuyeá Keá Toaùn Thaùi Ninh Keá Toaùn Doanh Nghieäp I – II Khoa Kinh Teá Tröôøng Ñaïi Hoïc Thuûy Saûn Keá Toaùn Doanh Nghieäp Vôùi Visual Basic KS. Ñinh Xuaân Laâm Hoïc Visual Basic Qua Thöïc Hieän Chöông Trình Vieän kinh teá Tp. HCM Trung taâm öùng duïng kinh teá thaønh phoá Microsoft Visual Basic & Laäp Trình Cô Sôû Döõ Lieäu 6.0 Nguyeãn Thò Ngoïc Mai Nguyeãn Thò Kim Trang Hoaøng Ñöùc Haûi GSTS. Nguyeãn Höõu Anh MUÏC LUÏC LÔØI MÔÛ ÑAÀU PHAÀN I TIN HOÏC HOÙA QUAÛN LYÙ THOÂNG TIN TRONG CAÙC DOANH NGHIEÄP Keá toaùn Vai troø cuûa keá toaùn Vai troø tin hoïc trong quaûn lyù Nhieäm vuï cuûa ñeà taøi PHAÀN II PHAÂN TÍCH VAØ THIEÁT KEÁ HEÄ THOÁNG CHO CHÖÔNG TRÌNH QUAÛN LYÙ KEÁ TOAÙN DOANH NGHIEÄP Caùc böôùc thöïc hieän cô baûn cuûa keá toaùn doanh nghieäp Moâ taû yeâu caàu quaûn lyù cuûa chöông trình Quaù trình phaân tích chöông trình Döõ lieäu ñaàu vaøo vaø ñaàu ra cuûa chöông trình Caáu truùc chöông trình Sô ñoà chöùc naêng Sô ñoà luoàng döõ lieäu Sô ñoà quan heä giöõa caùc thöïc theå PHAÀN III CÔ SÔÛ DÖÕ LIEÄU CUÛA CHÖÔNG TRÌNH Cô sôû döõ lieäu Söû duïng Microsoft Access ñeå taïo cô sôû döõ lieäu PHAÀN IV SÖÛ DUÏNG NGOÂN NGÖÕ LAÄP TRÌNH VISUAL BASIC ÑEÅ THIEÁT KEÁ CHÖÔNG TRÌNH Ngoân ngöõ laäp trình visual basic Caùc ñoái töôïng truy caäp döõ lieäu Söû duïng caùc ñoái töôïng truy caäp döõ lieäu trong chöông trình Caùc giao dieän ngöôøi söû duïng Söû duïng caùc caâu truy vaán (SQL) Thieát laäp baùo caùo vaø xuaát thoâng tin Taïo boä giuùp ñôõ Ñoùng goùi chöông trình PHAÀN V CHÖÔNG TRÌNH QUAÛN LYÙ KEÁ TOAÙN DOANH NGHIEÄP GIAO DIEÄN VAØ MAÕ NGUOÀN CUÛA MOÄT SOÁ FORM CAÄP NHAÄT – BAÙO CAÙO Heä thoáng Folder ñeå löu tröõ chöông trình Giao dieän chính cuûa chöông trình Moät soá thuû tuïc duøng ñeå môû keát noái döõ lieäu giöõa Access vôùi Visual Basic Giao dieän vaø maõ nguoàn cuûa moät soá Form caäp nhaät vaø xuaát thoâng tin PHAÀN VI ÑOÙNG GOÙI – ÑAÙNH GIAÙ VAØ HÖÔÙNG PHAÙT TRIEÅN ÑEÀ TAØI NHAÄN XEÙT CUÛA GIAÙO VIEÂN HÖÔÙNG DAÃN TAØI LIEÄU THAM KHAÛO

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

  • docBaocaoDTTN.doc
  • pptdttnth40.ppt
  • pptdttnth400.ppt
  • rarSource.rar