Đề tài Xây dựng chương trình quản lý kho hàng trong hệ thông tin kế toán

LỜI NÓI ĐẦU Trong 20 năm trở lại đây, một xu thế được thấy đặc biệt rõ nét ở các nước phát triển là số công việc liên quan đến tạo lập, xử lý thông tin ở dạng này hoặc dạng khác tăng lên nhanh chóng. Điều này khác hẳn so với những năm nửa đầu thế kỷ 20, khi công việc lao động chân tay chiếm vị trí chủ đạo. Một trong những nguyên nhân chính của hiện tượng này là các ngành công nghiệp dịch vụ (như ngân hàng, khách sạn, du lịch, xuất bản .) tăng vọt. Đa số công việc thuộc lĩnh vực dịch vụ đều liên quan đến xử lý thông tin. Xử lý thông tin bằng máy được bắt đầu vào những năm 50, những thay đổi trong công nghệ xử lý thông tin diễn ra với nhịp độ rất nhanh kèm theo nhiều biến chuyển không dễ nhận thấy. Để có thể thích ứng được với các biến chuyển trong đời sông kinh tế – xã hội, chúng ta cần nắm được thông tin. Đó là thông tin về những thay đổi có khả năng xẩy ra trong tương lai gần, là thông tin về các khả năng đương đầu có thể lựa chọn, thông tin về những người khác hành động như thế nào trong các hoàn cảnh tương tự . Chính vì vậy, các tổ chức cần có trong tay một khối lượng lớn thông tin đủ mạnh để có thể nắm bắt được nhu cầu của khách hàng, nhìn thấy rõ xu thế cạnh tranh và môi trường kinh tế bên ngoài; đồng thời phải xử lý các thông tin này một cách nhanh nhất để có những quyết định kịp thời. Như vậy, việc nắm bắt thông tin nhanh chóng, chính xác sẽ làm giảm bớt các yếu tố bất định cho cả tổ chức lẫn cá nhân. Thông tin đã trở thành một vấn đề sống còn đối với mọi lĩnh vực của đời sống kinh tế xã hội; đặc biệt là trong lĩnh vực quản lý kinh tế và nghiên cứu ứng dụng khoa học. Qua quá trình thực tập tại Công ty TNHH dược , với sự giúp đỡ tận tình của thầy giáo hướng dẫn Đặng Quế Vinh, cùng với sự chỉ bảo của các anh chị đang làm việc tại công ty Fast em đã hoàn thành xong chuyên đề của mình với đề tài mang tên: Xây dựng chương trình quản lý kho hàng trong hệ thông tin kế toán. Đề tài này được hình thành trên cơ sở nhu cầu cung cấp một cách đầy đủ, nhanh chóng, chính xác và thường xuyên có tính tác nghiệp cũng như tổng hợp những thông tin về tình hình số lượng cũng như chất lượng và hiện trạng của vật tư, hàng hoá trong kho và luân chuyển qua kho cho người lãnh đạo đơn vị để ra quyết định xuất nhập kho hữu hiệu nhất trong từng thời điểm nhất định. Đề tài gồm các chương sau: Chương I: Công ty Phần mềm tài chính kế toán Fast và bài toán quản lý kho hàng trong hệ thông tin kế toán. Chương này giới thiệu về công ty Fast nơi em thưc tập và nội dung bài toán "Xây dựng chương trình quản lý kho hàng trong hệ thông tin kế toán". Chương II: Khảo sát thực tế. Chương này giới thiệu khái quát về vấn dề quản lý kho hàng đối với một doanh nghiệp, những thông tin đầu vào và đầu ra của bài toán. Chương III: Phân tích và thiết kế hệ thống cho chương trình "Quản lý kho" Em xin bày tỏ sự cám ơn sâu sắc của em tới Thầy giáo Đặng Quế Vinh đã tận tình hướng dẫn em hoàn thành chuyên đề này; cám ơn rất nhiều sự giúp đỡ từ phía các cán bộ, nhân viên Công ty Fast trong thời gian em thực tập tại đây. Tuy nhiên, do thời gian có hạn và do vốn kiến thức của em còn hạn chế, thiếu kinh nghiệm thực tế nên chắc sẽ không tránh khỏi những thiếu sót. Vậy kính mong thầy giáo và tất cả những người quan tâm đến đề tài này thông cảm và bổ sung thiếu sót cho em. Một lần nữa em xin chân thành cảm ơn ! MỤC LỤC LỜI NÓI ĐẦU 1 CHƯƠNG I: CÔNG TY PHẦN MỀM TÀI CHÍNH KẾ TOÁN FAST VÀ BÀI TOÁN QUẢN LÝ KHO HÀNG TRONG HỆ THÔNG TIN KẾ TOÁN 3 I. Vài nét về lịch sử thành lập công ty 3 II. Bài toán xây dựng phân hệ thông tin quản lý kho hàng trong hệ thông tin kế toán 9 III. Môi trường và công cụ. CHƯƠNG II : KHẢO SÁT THỰC TẾ 16 I. Tóm tắt chức năng, nhiệm vụ, tổ chức và các quy trình nghiệp vụ của một công ty trong quản lý kho hàng 17 II.Mô tả hệ thống thông tin điều hành và quản lý 19 CHƯƠNG III: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 30 I. Phân tích hệ thống 30 II. Cấu trúc dữ liệu 36 III. Cấu trúc chương trình 44 IV. Một số thuật toán trong chương trình 46 V. Xây dựng chương trình 50 KẾT LUẬN 60 PHỤ LỤC 62

doc99 trang | Chia sẻ: maiphuongtl | Lượt xem: 1962 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Đề tài Xây dựng chương trình quản lý kho hàng trong hệ thông tin kế toán, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
à nơi lưu trữ danh mục các khách hàng có quan hệ xuất nhập hàng hoá, vật tư với công ty. THUỘC TÍNH SỬ DỤNG KIỂU ĐỘ DÀI GHI CHÚ MaKh TenKh Tel DiaChi ID Char Char Char Char 5 30 11 50 Trường khoá chính Tên khách hàng Điện thoại của khách Địa chỉ của khách 5. Phiếu nhập (Master) Tên thực thể là PhieuNh, là nơi lưu trữ danh mục các phiếu nhập kho đối với các kho của công ty. THUỘC TÍNH SỬ DỤNG KIỂU ĐỘ DÀI GHI CHÚ Ma_CT Ngay TK_NO TK_CO MA_KH MA_KHO DIEN_GIAI ID Char Date Char Char Char Char Char 5 5 5 5 5 30 Trường khoá chính Ngày chứng từ Tài khoản nợ Tài khoản có Mã khách giao hàng Mã kho nhập Ghi chú 6. Chi tiết nhập (Details) Tên thực thể là CtNh, là nơi lưu trữ danh mục các dòng của phiếu nhập kho có mã là Ma_Ct. THUỘC TÍNH SỬ DỤNG KIỂU ĐỘ DÀI GHI CHÚ MA_CT STT0 MA_VT SO_LUONG DON_GIA ID ID Char Number Char Number Number 5 5 Mã chứng từ Số thứ tự từng dòng Mã vật tư Số lượng Đơn giá 1 many Invoice(Master) Invoice(Details) 7. Phiếu lưu chuyển (Master). Tên thực thể là PhieuLc, là nơi lưu trữ danh mục các phiếu nhập lưu chuyển của một kho đối với các kho khác của công ty. THUỘC TÍNH SỬ DỤNG KIỂU ĐỘ DÀI GHI CHÚ Ma_CT Ngay TK_NO TK_CO MA_KHO_N MA_KHO_X DIEN_GIAI ID Char Date Char Char Char Char Char 5 5 5 5 5 30 Trường khoá chính Ngày chứng từ Tài khoản nợ Tài khoản có Mã kho nhập Mã kho xuất Ghi chú 8. Chi tiết lưu chuyển (Details) Tên thực thể là CtLc, là nơi lưu trữ danh mục các dòng của phiếu lưu chuyển có mã là Ma_Ct. THUỘC TÍNH SỬ DỤNG KIỂU ĐỘ DÀI GHI CHÚ MA_CT STT MA_VT SO_LUONG ID ID Char Number Char Number 5 5 Mã chứng từ Số thứ tự từng dòng Mã vật tư Số lượng 1 many Local voicher (Master) Local voicher (Details) 9. Phiếu xuất (Master) Tên thực thể là PhieuX, là nơi lưu trữ danh mục các phiếu xuất kho đối với các kho của công ty. THUỘC TÍNH SỬ DỤNG KIỂU ĐỘ DÀI GHI CHÚ Ma_CT Ngay TK_NO TK_CO MA_KH MA_KHO DIEN_GIAI ID Char Date Char Char Char Char Char 5 5 5 5 5 30 Trường khoá chính Ngày chứng từ Tài khoản nợ Tài khoản có Mã khách nhận hàng Mã kho xuất Ghi chú 10. Chi tiết xuất (Details) Tên thực thể là CtXuat, là nơi lưu trữ danh mục các dòng của phiếu xuất kho có mã là Ma_Ct. THUỘC TÍNH SỬ DỤNG KIỂU ĐỘ DÀI GHI CHÚ MA_CT STT0 MA_VT SO_LUONG DON_GIA ID ID Char Number Char Number Number 5 5 Mã chứng từ Số thứ tự từng dòng Mã vật tư Số lượng Đơn giá 1 many Invoice(Master) Invoice(Details) 11. Hàng tồn kho Tên thực thể là TonKho, là nơi lưu trữ khối lượng hàng tồn kho đôí với từng mặt hàng và ở tựng kho. THUỘC TÍNH SỬ DỤNG KIỂU ĐỘ DÀI GHI CHÚ MaKho MaVt Ton_dq ID ID Char Char Number 5 5 Mã kho Mã vật tư Lượng hàng tồn kho III. Cấu trúc chương trình Do cơ cấu tổ chức, thực tế công việc hiện nay của công ty nên sẽ chia toàn bộ hệ thống thành một số bài toán nhỏ nhưng vẫn cố gắng đảm bảo được tính nhất quán của cơ sở dữ liệu, tiện lợi cho việc hợp nhất thành một hệ thống hoàn chỉnh khi có điều kiện. Cấu trúc chương trình được thể hiện thông qua sơ đồ sau: Quản lý kho hàng Hệ thống danh mục Giao dịch Tìm kiếm và xử lý Báo cáo -DM Khách -DM Kho -DM Vật tư -DM Chứng từ -Phiếu nhập -Phiếu xuất -Phiếu lưu chuyển -Tìm theo kho -Tìm theo mã -Tính hàng tồn -Báo cáo tồn -Báo cáo tổng hợp -Thẻ kho 1. Phạm vi sủ dụng: Chương trình được sử dụng trong các kho hàng khu vực như: tổng kho, các kho con.... 2. Dữ liệu vào: các hoá đơn xuất kho, phiếu bán hàng, phiếu vận chuyển nội bộ. 3. Thông tin kết xuất: Các báo cáo tình trạng xuất nhập của từng kho trong từng ngày, từng tháng, tình trạng kho hàng, bảng tổng hợp tình hình xuất nhập hàng gửi cho ban giám đốc công ty, các báo cáo trợ giúp quá trình phân tích kinh doanh. 4. Nhiệm vụ: Nhận các thông tin về sản phẩm có trong kho của mình (Transaction-Product file maintain). Nhận các thông tin về kho (Transaction- Location Maintain). Nhập vào máy các thông tin về hoá đơn bán hàng (Input/Output- Output voucher). Nhập vào máy các hoá đơn vận chuyển nội bộ các mặt hàng chuyển từ kho khác đến, chuyển tới các kho khác (Input/Output .... Move local voucher). Tổng kết tất cả các thông tin đưa vào bộ nhớ (Automatic). Đưa ra các báo cáo theo mẫu, theo yêu cầu hỏi đáp (report). CÔNG TY Tổng kho Kho 1 .... Kho 2 IV. Một số thuật toán trong chương trình 1. Thuật toán kiểm tra người sử dụng false True True False Begin -Nhập tên người sử dụng -Nhập mật khẩu Kiểm tra tên và MK Hiện màn hình làm việc của chương trình Có nhập lại không Thoát khỏi chương trình End 2. Thuật toán nhập phiếu nhập True false True false Begin Nhập ngày,mã chứng từ,Tk nợ có, diễn giải Nhập mã kho Kiểm tra mã kho trong bảng DM_kho Hiện bảng DM_kho để chọn Nhập mã khách Lấy tên kho tương ứng điền vào hộp tên kho Hiện bảng DM_kho để chọn Lấy tên khách tương ứng điền vào hộp tên khách Kiểm tra mã khách trong bảng DM_kh false True false True Nhập mã vật tư Kiểm tra mã vật tư trong bảng DM_vt Hiện bảng DM_vt để chọn Lấy tên vật tư tương ứng điền vào hộp tên vật tư Nhập số lượng, đơn giá của vật tư Tính tổng giá trị Có nhập nữa không Tính lại lượng tồn trong kho, lưu lại giá trị mới Lưu phiếu nhập vào bảng phiếu nhập và bảng phiếu nhập chi tiết Quay lại Menu chính End 3.Thuật toán tính tồn cho phiếu xuất kho False True True False BEGIN Kiểm tra trong kho có mặt hàng đó không Thông báo mặt hàng không có trong kho. Yêu cầu nhập lại Kiểm tra trong kho mặt hàng đó có còn đủ gể xuất không False Thông báo mặt hàng không có đủ để xuất kho. Yêu cầu nhập lại Cho xuất hàng trừ số lượng hành trong kho END Hàng tồn nhỏ hơn số lượng min True Thông báo lượng hàng trong kho nhỏ hơn số lượng min Yêu cầu nhập thêm V. Xây dựng chương trình 1. Danh mục khách hàng 1.1. Chức năng Phần này cho phép quản lý tất cả các khách hàng có quan hệ xuất nhập hàng hoá, vật tư đối với công ty. Nhân viên sử dụng chương trình nếu được quyền truy nhập vào chức năng này của chương trình sẽ đựợc phép thêm những khách hàng mới vào trong danh mục, sửa đổi thông tin về những khách hàng dã có sẵn trong danh mục khách hàng. Do yêu cầu của công tác quản lý kho hàng, trong danh mục khách hàng chỉ lưu giữ những thông tin tối thiểu về mỗi khách hàng, đó là tên khách hàng, địa chỉ và số điện thoại của khách hàng. Tất cả những khách hàng có tham gia vào một quy trình nghiệp vụ xuất hay nhập kho thì đều phải đưọc lưu giữ trong danh mục khách hàng. Khi xoá tên một khách hàng trong danh mục khách, tất cả những phiếu nhập xuất có tên khách hàng đó sẽ được chương trình tự động huỷ bỏ. 1.2. Giao diện Form danh mục khách hàng Khi nhập một khách hàng mới cần phải nhập mã khách hàng. Mã này là duy nhất cho mỗi khách hàng nên chương trình phải kiểm tra sự trùng nhau giữa mã nhập vào và mã của những khách hàng đã có trong danh mục. 2. Danh mục vật tư 2.1. Chức năng Phần này cho phép quản lý tất cả các vật tư, hàng hoá có trong mỗi kho của công ty. Nhân viên sử dụng chương trình nếu được quyền truy nhập vào chức năng này của chương trình sẽ đựợc phép thêm những tên hàng hoá, vật tư mới vào trong danh mục, sửa đổi thông tin về những vật tư, hàng hoá đã có sẵn trong danh mục vật tư. Do yêu cầu của công tác quản lý kho hàng, trong danh mục vật tư chỉ lưu giữ những thông tin về hàng hoá, vật tư sau: tên vật tư, đơn vị tính, số lượng tối đa và số lượng tối thiểu vật tư đó được phép lưu giữ trong một kho hàng theo quy định của công ty. Những thông tin về từng loại vật tư được lưu giữ trong bảng DmVt trong file “Hethong.mdb”. Tất cả những vật tư, hàng hoá xuất hiện trong một hoá đơn xuất hay nhập kho đều phải đưọc lưu giữ trong danh mục vật tư. Khi xoá tên một vật tư, tất cả những phiếu nhập, xuất có tên vật tư đó sẽ được chương trình tự động huỷ bỏ. 2.2. Giao diện Form danh mục vât tư (xem ở trang sau) Khi nhập một vật tư mới cần phải nhập mã vật tư. Mã này là duy nhất cho mỗi vật tư nên chương trình phải kiểm tra sự trùng nhau giữa mã nhập vào và mã của những vật tư đã có trong danh mục. 3. Màn hình phiếu Nhập kho 3.1. Chức năng Phần này cho phép lưu giữ những phiếu nhập kho đối với tất cả các các kho của công ty. Nhân viên sử dụng chương trình khi vào màn hình nhập liệu, lựa chọn phiếu nhập kho sẽ được phép nhập thêm những phiếu nhập kho mới, xem lại những phiếu nhập kho đã nhập trước đó, xoá đi những phiếu nhập kho không còn cần phải lưu giữ. Để tạo điều kiện thuận lợi, nhanh chóng cho người sử dụng, trên màn hình nhập phiếu nhập có chức năng tìm kiếm phiếu nhập theo một số điều kiện cho trước như ngày nhập phiếu, mã phiếu... Để tạo điều kiện thuận lợi, dễ dàng trong công việc, tạo cảm giác thân thiện đối với người sử dụng, màn hình nhập liệu Phiếu nhập kho được thiết kế gần giống với mẫu phiếu nhập kho theo quy định của bộ tài chính. Thông tin về Phiếu nhập kho được lưu giữ trong hai bảng PhiêuNh và CtNh trong file “Hethong.mdb”. Tuy nhiên, để có được thông tin đầy đủ về một phiếu nhập kho, chương trình cần phải truy nhập vào các bảng DmVt, DmKh và DmKho. Quan hệ giữa các bảng được mô tả trong phần trước. 3.2. Giao diện Form Phiếu nhập kho Khi nhập một phiếu nhập kho mới trước hết phải nhập mã chứng từ. Mã chứng từ là yếu tố giúp phân biệt giữa những Phiếu nhập kho với nhau, vì vậy không được phép có sự trùng nhau về mã chứng từ. Máy sẽ tự động kiểm tra, so sánh với những mã chứng từ đang lưu giữ, nếu có sự trùng lặp mã chứng từ thì sẽ thông báo và yêu cầu nhập lại mã chứng từ. Đối với tên kho nhận hàng, tên khách giao hàng và vật tư, hàng hoá thì cần nhập mã số. Sau khi nhập mã số máy sẽ kiểm tra xem có mã đó trong danh mục tương ứng hay không. Nếu có mã đó thì sẽ cho hiện tên tương ứng, ngược lại nếu không tồn tại mã đó trong danh mục thì cho hiện danh mục với đầy đủ mã số và tên cho người nhập lựa chọn. Với việc nhập vật tư hàng hóa, sau khi nhập xong một dòng máy sẽ tự động tính tổng giá trị khối lượng hàng đã nhập và tính lại lượng thuế giá trị gia tăng tương ứng. Với công việc tìm kiếm những Phiếu nhập kho đã nhập trước đó, ta có thể dùng nút tua để tua lần lượt qua từng phiếu đến phiếu cần tìm hoặc nhấn nút tìm cho hiện Form tìm kiếm. Khi đã tìm được phiếu máy sẽ tự động hiển thị phiếu tìm được trên màn hình. Khi lưu lại phiếu nhập kho chương trình sẽ ghi lại phần đầu phiếu vào bảng PhieuNh và ghi lại từng dòng trong phần bảng của phiếu cùng mã phiếu vào bảng CtNh. Sau đó chương trình sẽ thực hiện công việc tính lại hàng tồn kho. Dưới đây là màn hình tìm kiếm: 4. Các báo cáo và phân tích tình hình xuất nhập tồn trong chương trình Để phục vụ cho công tác quản lý kho hàng, đáp ứng yêu cầu nghiệp vụ quản lý kho, chương trình cho phép in ra những Phiếu nhập kho, Phiếu xuất kho và phiếu lưu chuyển nội bộ đang được lưu trữ trong máy. Để phục vụ cho công tác báo cáo định kỳ về tình hình hàng hoá vật tư được lưu giữ trong kho, chương trình cho phép in ra những bảng báo cáo tình hình xuất nhập hàng hoá của các kho theo ngày, theo tháng hoặc theo năm. Chương trình còn cho phép in ra bảng báo cáo tình hình hàng tồn kho tại các kho của công ty. Như chúng ta đã biết, hàng hoá xuất kho với khối lượng lớn là một trong những yếu tố chứng tỏ loại hàng đó đang có nhu cầu lớn trên thị trường. Để trợ giúp cho việc phân tích kinh doanh của công ty, chương trình cho phép in ra bảng báo cáo tình hình xuất kho của hàng hoá xuất kho theo thứ tự khối lượng xuất kho. Để phục vụ cho công tác tra cứu những thông tin về một loại hàng tồn kho được nhanh chóng thuận tiện, chương trình cho phép in ra báo cáo về tình trạng tồn kho (bao gồm khối lượng tồn kho và địa điểm kho đang cất giữ) của một loại hàng hoá, vật tư theo yêu cầu của người sử dụng. Dưới đây là một số màn hình báo cáo của chương trình Màn hình báo cáo tình hình hàng tồn kho Màn hình báo cáo tình hình nhập xuất trong tháng 5. Màn hình chính của chương trình quản lý kho Màn hình chính của chương trình quản lý kho được thiết kế với một hệ thống Menu, menu popup, các Toolbar và Taskbar giúp cho người sử dụng có cảm giác thoải mái, thuận tiện trong khi sử dụng. 6. Sơ đồ quan hệ thực thể Cơ sở dữ liệu của chương trình như đã trình bày ở trên được xây dựng trên hệ quản trị cơ sở dữ liệu Access. Màn hình quan hệ giữa các thực thể của Access là một công cụ hết sức hữu ích và tiện lợi. Qua đây ta có thể có đựoc một cái nhìn đầy đủ, rõ ràng về mối quan hệ giữa các thực thể trong cơ sở dữ liệu với nhau. KẾT LUẬN Trong quản lý kinh doanh, tin học ngày càng đóng vai trò quan trọng. Nó đang trở thành một bộ phận cấu thành của hệ thống công cụ quản lý kinh tế, tài chính, có vai trò tích cực trong quản lý điều hành và kiểm soát các hoạt động kinh tế của Nhà nước cũng như các hoạt động kinh tế tài chính của doanh nghiệp. Môi trường kinh tế mới kết hợp với sự đầu tư nước ngoài ngày càng mở rộng cùng với việc tự chủ trong hạch toán kinh doanh buộc các doanh nghiệp phải tổ chức tốt các hoạt động kinh doanh của mình, nắm bắt được tình hình kết quả kinh doanh của đơn vị để đảm bảo lợi nhuận thu được là cao nhất. Việc sử dụng các chương trình tin học trong quản lý sẽ giúp các đơn vị giảm bớt được các nguồn chi phí, gián tiếp làm giảm giá thành sản phẩm, nâng cao được tính cạnh tranh của mình trên thị trường. Chương trình Fast Acounting được thiết kế và xây dựng đã đáp ứng được mong muốn đó của các doanh nghiệp. Chính vì vậy Fast Acounting đã được đông đảo những doanh nghiệp đặc biệt là những doanh nghiệp vừa và nhỏ sử dụng trong hoạt động kinh doanh. Xây dựng bài toán quản lý kho hàng trong hệ thông tin kế toán tuy chỉ là một phần của cả một bài toán kế toán quản lý doanh nghiệp nhưng em cũng đã cố gắng xây dựng chương trình nhằm đạt được mục đích, đem lại những thuận lợi cho người khai thác, sử dụng. Việc sử dụng chương trình không đòi hỏi người sử dụng phải có những hiểu biết sâu về tin học hay công nghệ thông tin. Hệ thống giao diện thực đơn, cửa sổ, hộp thoại, phím tắt của chương trình mang tính đơn giản, tiện dụng và thân thiện với người sử dụng. Chương trình này được thiết kế theo hướng các nhà thiết kế có thể sửa đổi thêm bớt các thuộc tính chức năng của chương trình khi cần thiết. Nó cũng được thiết kế theo hướng mở để tạo thuận lợi hơn cho người sử dụng. Tuy nhiên, chương trình còn tồn tại một số nhược điểm như tốc độ xử lý sẽ giảm nếu dữ liệu vào lớn, hình thức báo cáo in ra chưa được đẹp ... Dẫu vậy, chương trình vẫn là một sản phẩm có một giá trị thực tiễn cao và thực sự đem lại nhiều tiện lợi cho người sử dụng. PHỤ LỤC CHƯƠNG TRÌNH I. Form DMKH Dim kt As Boolean Private Sub Command1_Click() If Command1.Caption = "Nhập" Then frame1.Enabled = True Command2.Enabled = True Command3.Enabled = False Command1.Caption = "Lưu" Command2.Caption = "Hoãn" Text1.SetFocus Else Data1.Recordset.AddNew Data1.Recordset.Fields(0).Value = Text1.Text Data1.Recordset.Fields(1).Value = Text2.Text Data1.Recordset.Fields(2).Value = Text3.Text Data1.Recordset.Update Data1.Refresh frame1.Enabled = False Command2.Enabled = True Command3.Enabled = True Command1.Caption = "Nhập" Command2.Caption = "Xoá" End If End Sub Private Sub Command2_Click() If Command2.Caption = "Xoá" Then dk = MsgBox("Bạn có chắc chắn xoá không ?", vbYesNo + vbQuestion, "Chú ý") If dk = vbYes Then Data1.Recordset.Delete Data1.Refresh If Data1.Recordset.BOF = False Then Data1.Recordset.MoveFirst Else frame1.Enabled = True Text1.Text = "" Text2.Text = "" frame1.Enabled = False Command2.Enabled = False End If End If Else frame1.Enabled = False Command1.Caption = "Nhập" Command2.Caption = "Xoá" Command3.Enabled = True If Data1.Recordset.BOF = False Then Data1.Recordset.MoveFirst Else frame1.Enabled = True Text1.Text = "" Text2.Text = "" frame1.Enabled = False Command2.Enabled = False End If End If End Sub Private Sub Command3_Click() Unload Me End Sub Private Sub Data1_Reposition() On Error GoTo loi If kt = False Then Exit Sub If Not IsNull(Data1.Recordset.Fields(0).Value) Then Text1.Text = Data1.Recordset.Fields(0).Value Else Text1 = "" End If If Not IsNull(Data1.Recordset.Fields(1).Value) Then Text2.Text = Data1.Recordset.Fields(1).Value Else Text2 = "" End If If Not IsNull(Data1.Recordset.Fields(2).Value) Then Text3.Text = Data1.Recordset.Fields(2).Value Else Text3 = "" End If Exit Sub loi: If Err.Number = 3021 Then Exit Sub End If End Sub Private Sub Data1_Validate(Action As Integer, Save As Integer) Select Case Action Case vbDataActionMoveFirst kt = True Case vbDataActionMovePrevious kt = True Case vbDataActionMoveNext kt = True Case vbDataActionMoveLast kt = True Case vbDataActionAddNew kt = False Case vbDataActionUpdate kt = True Case vbDataActionDelete kt = False Case vbDataActionFind kt = False Case vbDataActionBookmark Case vbDataActionClose End Select End Sub Private Sub Form_Load() Data1.DatabaseName = Loctext + "Hethong.mdb" Data1.RecordSource = "dmkh" Data1.Refresh frame1.Enabled = False If Data1.Recordset.BOF = True Then Command2.Enabled = False Else Data1.Recordset.MoveFirst End If End Sub Private Sub Form_Resize() Me.Height = 3780 Me.Width = 4590 Me.Top = (Screen.Height - Me.Height) / 3 Me.Left = (Screen.Width - Me.Width) / 2 End Sub Private Sub Text1_GotFocus() Text1.SelStart = 0 Text1.SelLength = Len(Text1.Text) End Sub Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Text2.SetFocus End If End Sub Private Sub Text2_GotFocus() Text2.SelStart = 0 Text2.SelLength = Len(Text2.Text) End Sub Private Sub Text2_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Text3.SetFocus End If End Sub Private Sub Text3_GotFocus() Text3.SelStart = 0 Text3.SelLength = Len(Text3.Text) End Sub Private Sub Text3_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Command1.SetFocus End If End Sub Form Nhập liệu : Dim kt As Boolean Dim dk As String Dim dk1 As String Dim nut1 As Byte Dim i As Byte 'Dim DK As String Private Sub Command1_Click() If Command1.Caption = "Nhập" Then xoa MaskEdBox1.Text = Date Text1.Text = Mid(MaskEdBox1.Text, 4, 2) & "-" Text2.Text = "" Text12.Text = "" Text13.Text = "" Text5.Text = "" Text6.Text = "" Text7.Text = "" Text11.Text = "" Text10.Text = "" 'Text3.Enabled = True 'Text4.Enabled = True Frame1.Enabled = True Frame2.Enabled = True Frame3.Enabled = True MaskEdBox1.SetFocus nut1 = 1 Command1.Caption = "Nhập tiếp" Command2.Enabled = False Command3.Enabled = True Command4.Enabled = True Command5.Enabled = False Command6.Enabled = False Command7.Enabled = False Command8.Enabled = False i = 1 Else If Len(Text5.Text) = 0 Then MsgBox "Mã vật tư không thể trống", vbInformation, "Chú ý" Text5.SetFocus Exit Sub End If If Len(Text7.Text) = 0 Then MsgBox "Số lượng không thể trống", vbInformation, "Chú ý" Text7.SetFocus Exit Sub End If If Len(Text8.Text) = 0 Then MsgBox "Đơn giá không thể trống", vbInformation, "Chú ý" Text8.SetFocus Exit Sub End If Data1.Recordset.AddNew Data1.Recordset.Fields(0).Value = Text1.Text Data1.Recordset.Fields(1).Value = i Data1.Recordset.Fields(2).Value = Text5.Text Data1.Recordset.Fields(3).Value = Text6.Text Data1.Recordset.Fields(4).Value = Text7.Text Data1.Recordset.Fields(5).Value = Text8.Text Data1.Recordset.Fields(6).Value = Val(Text7.Text) * Val(Text8.Text) Data1.Recordset.Update Data1.Refresh Text5.SetFocus i = i + 1 End If End Sub Private Sub Command2_Click() Data5.DatabaseName = Loctext + "ht1.mdb" Data5.RecordSource = "lpnk1" Data5.Refresh Command1.Enabled = False Command2.Enabled = False Command3.Enabled = True Command4.Enabled = True Command5.Enabled = False Command6.Enabled = False Command7.Enabled = False Command8.Enabled = False Text3.Enabled = True Text4.Enabled = True Frame1.Enabled = True Frame2.Enabled = True Text3.SetFocus nut1 = 2 End Sub Public Sub xoa() Data1.Refresh If Not Data1.Recordset.BOF Then Data1.Recordset.MoveFirst Do While Not Data1.Recordset.EOF Data1.Recordset.Delete Data1.Recordset.MoveNext Loop End If End Sub Public Sub chuyen() xoa Set db = OpenDatabase(Loctext + "hethong.mdb") If nut = 1 Then db.Execute "insert into phu select mact,stt0,mavt,tenvt,soluong,dongia,tien from query1 where mact='" & Text1.Text & "'" Else db.Execute "insert into phu select mact,stt0,mavt,tenvt,soluong,dongia,tien from query2 where mact='" & Text1.Text & "'" End If db.Close Dim tt1 tt1 = 0 Set db = OpenDatabase(Loctext + "hethong.mdb") Set rs = db.OpenRecordset("phu") rs.MoveFirst Do While rs.EOF = False tt1 = tt1 + rs.Fields("tien").Value rs.MoveNext Loop rs.Close db.Close Text10.Text = Str(tt1) Text11.Text = Str(tt1 / 10) Data1.Refresh DBGrid1.Refresh End Sub Private Sub Command3_Click() If Len(Text5.Text) = 0 Then MsgBox "Mã vật tư không thể trống", vbInformation, "Chú ý" Text5.SetFocus Exit Sub End If If Len(Text7.Text) = 0 Then MsgBox "Số lượng không thể trống", vbInformation, "Chú ý" Text7.SetFocus Exit Sub End If If Len(Text8.Text) = 0 Then MsgBox "Đơn giá không thể trống", vbInformation, "Chú ý" Text8.SetFocus Exit Sub End If Data1.Recordset.AddNew Data1.Recordset.Fields(0).Value = Text1.Text Data1.Recordset.Fields(1).Value = i Data1.Recordset.Fields(2).Value = Text5.Text Data1.Recordset.Fields(3).Value = Text6.Text Data1.Recordset.Fields(4).Value = Text7.Text Data1.Recordset.Fields(5).Value = Text8.Text Data1.Recordset.Fields(6).Value = Val(Text7.Text) * Val(Text8.Text) Data1.Recordset.Update Data1.Refresh If Len(Text1.Text) = 0 Then MsgBox "Mã chứng từ không thể trống", vbInformation, "Thông Báo" Text1.SetFocus Exit Sub End If If Len(MaskEdBox1.Text) = 0 Then MsgBox "Ngày nhập phiếu không thể trống", vbInformation, "Thông Báo" MaskEdBox1.SetFocus Exit Sub End If If Len(Text12.Text) = 0 Then MsgBox "Mã kho hàng không thể trống", vbInformation, "Thông Báo" Text12.SetFocus Exit Sub End If Data2.Recordset.AddNew Data2.Recordset.Fields(1).Value = Text1.Text Data2.Recordset.Fields(2).Value = MaskEdBox1.Text Data2.Recordset.Fields(3).Value = Text13.Text Data2.Recordset.Fields(4).Value = Text12.Text Data2.Recordset.Fields(5).Value = Text9.Text Data2.Recordset.Fields(6).Value = Text3.Text Data2.Recordset.Fields(7).Value = Text4.Text Data2.Recordset.Update Data2.Refresh If nut = 1 Then Set db = OpenDatabase(Loctext + "hethong.mdb") db.Execute "Insert into ctx select mact,stt0,mavt,soluong,dongia,tien from phu" Dim rs1 As Recordset Set rs = db.OpenRecordset("phu") rs.MoveFirst Do While rs.EOF = False Set rs1 = db.OpenRecordset("select * from tonkho where makho='" & Text12.Text & "' and mavt='" & rs.Fields(2).Value & "'") rs1.Edit rs1.Fields(2).Value = rs1.Fields(2).Value - rs.Fields(4).Value rs1.Update rs1.Close rs.MoveNext Loop rs.Close db.Close Else Set db = OpenDatabase(Loctext + "hethong.mdb") db.Execute "Insert into ctnh select mact,stt0,mavt,soluong,dongia,tien from phu" Set rs = db.OpenRecordset("phu") rs.MoveFirst Do While rs.EOF = False Set rs1 = db.OpenRecordset("select * from tonkho where makho='" & Text1.Text & "' and mavt='" & rs.Fields(2).Value & "'") If rs1.BOF = rs1.EOF And rs1.EOF = True Then rs1.AddNew rs1.Fields(0).Value = Text12.Text rs1.Fields(1).Value = rs.Fields(2).Value rs1.Fields(2).Value = rs.Fields(4).Value rs1.Update Else rs1.Edit rs1.Fields(2).Value = rs1.Fields(2).Value + rs.Fields(4).Value rs1.Update End If rs1.Close rs.MoveNext Loop rs.Close db.Close End If Frame1.Enabled = False Frame2.Enabled = False Frame3.Enabled = False Command1.Enabled = True Command2.Enabled = True Command3.Enabled = False Command4.Enabled = False Command5.Enabled = True Command6.Enabled = True Command7.Enabled = True Command8.Enabled = True Command1.Caption = "Nhập" Data2.Recordset.MoveLast chuyen Command1.SetFocus End Sub Private Sub Command4_Click() xoa Command1.Enabled = True Command1.Caption = "Nhập" Command2.Enabled = True If Data2.Recordset.BOF = False Then Data2.Recordset.MoveLast chuyen Command3.Enabled = False Command4.Enabled = False Command5.Enabled = True Else Command5.Enabled = False End If Frame1.Enabled = False Frame2.Enabled = False Frame3.Enabled = False Command6.Enabled = True Command7.Enabled = True Command8.Enabled = True End Sub Private Sub Command5_Click() dk = MsgBox("Bạn có chắc chắn xoá không ?", vbCritical + vbYesNo, "Chú ý") If dk = vbYes Then Data2.Recordset.Delete Data2.Refresh If Data2.Recordset.BOF Then Command5.Enabled = False End If End If End Sub Private Sub Command6_Click() Set db = OpenDatabase(Loctext + "hethong") db.Execute "delete * from table1" Set rs = db.OpenRecordset("table1") rs.AddNew rs.Fields(0).Value = Text1.Text rs.Update rs.Close db.Close If Label1.Caption = "Phiếu Xuất Kho" Then CrystalReport1.DataFiles(0) = Loctext & "hethong.mdb" CrystalReport1.ReportFileName = Loctext$ + "px.rpt" Else CrystalReport1.DataFiles(0) = Loctext & "hethong.mdb" CrystalReport1.ReportFileName = Loctext$ + "pnh.rpt" End If On Error GoTo ErrorHandler CrystalReport1.Action = 1 Screen.MousePointer = 0 Exit Sub ErrorHandler: MsgBox CrystalReport1.LastErrorString Screen.MousePointer = 0 Exit Sub End Sub Private Sub Command7_Click() dktk.Show 1 dk = "mact='" & ma & "'" Data2.Recordset.FindFirst dk Data2.Recordset.MoveNext Data2.Recordset.MovePrevious chuyen End Sub Private Sub Command8_Click() Unload Me End Sub Private Sub Data2_Reposition() 'On Error GoTo loi If kt = False Then Exit Sub If Not IsNull(Data2.Recordset.Fields(1).Value) Then Text1.Text = Data2.Recordset.Fields(1).Value Else Text1 = "" End If If Not IsNull(Data2.Recordset.Fields(2).Value) Then MaskEdBox1.Text = Data2.Recordset.Fields(2).Value Else MaskEdBox1.Text = "__/__/____" End If If Not IsNull(Data2.Recordset.Fields(3).Value) Then Text13.Text = Data2.Recordset.Fields(3).Value Else Text13 = "" End If Set db = OpenDatabase(Loctext + "hethong.mdb") Set rs = db.OpenRecordset("select * from dmkh where makh='" & Text13.Text & "'") Text2.Text = rs.Fields(1).Value rs.Close db.Close If Not IsNull(Data2.Recordset.Fields(4).Value) Then Text12.Text = Data2.Recordset.Fields(4).Value Else Text12 = "" End If If Not IsNull(Data2.Recordset.Fields(6).Value) Then Text3.Text = Data2.Recordset.Fields(6).Value Else Text3 = "" End If If Not IsNull(Data2.Recordset.Fields(7).Value) Then Text4.Text = Data2.Recordset.Fields(7).Value Else Text4 = "" End If If Not IsNull(Data2.Recordset.Fields(5).Value) Then Text9.Text = Data2.Recordset.Fields(5).Value Else Text9 = "" End If chuyen ' DBGrid1.SetFocus Exit Sub loi: If Err.Number = 3021 Then Exit Sub End If End Sub Private Sub Data2_Validate(Action As Integer, Save As Integer) Select Case Action Case vbDataActionMoveFirst kt = True Case vbDataActionMovePrevious kt = True Case vbDataActionMoveNext kt = True Case vbDataActionMoveLast kt = True Case vbDataActionAddNew kt = False Case vbDataActionUpdate kt = False Case vbDataActionDelete kt = True Case vbDataActionFind kt = False Case vbDataActionBookmark Case vbDataActionClose End Select End Sub Private Sub Form_Load() Frame1.Enabled = False Frame2.Enabled = False Frame3.Enabled = False Frame4.Enabled = False Command3.Enabled = False Command4.Enabled = False If nut = 1 Then Label1.Caption = "Phiếu Xuất Kho" Data1.DatabaseName = Loctext + "Hethong.mdb" Data1.RecordSource = "phu" Data1.Refresh Data2.DatabaseName = Loctext + "Hethong.mdb" Data2.RecordSource = "phieux" Data2.Refresh 'Data3.DatabaseName = Loctext + "hethong.mdb" 'Data3.RecordSource = "ctx" 'Data3.Refresh xoa If Data2.Recordset.BOF = False Then Data2.Recordset.MoveLast chuyen Else Command5.Enabled = False End If Else Label1.Caption = "Phiếu Nhập Kho" Data1.DatabaseName = Loctext + "Hethong.mdb" Data1.RecordSource = "phu" Data1.Refresh Data2.DatabaseName = Loctext + "Hethong.mdb" Data2.RecordSource = "phieunh" Data2.Refresh xoa If Data2.Recordset.BOF = False Then Data2.Recordset.MoveLast chuyen Else Command5.Enabled = False End If End If End Sub Private Sub Form_Resize() Me.Width = 8100 Me.Height = 5145 Me.Top = 0 Me.Left = (Screen.Width - Me.Width) / 2 End Sub Private Sub MaskEdBox1_GotFocus() MaskEdBox1.SelStart = 0 MaskEdBox1.SelLength = Len(MaskEdBox1.Text) End Sub Private Sub MaskEdBox1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Text1.SetFocus End If End Sub Private Sub Text1_GotFocus() Text1.SelStart = 0 Text1.SelLength = Len(Text1.Text) End Sub Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Text12.SetFocus End If End Sub Private Sub Text12_GotFocus() Text1.SelStart = 0 Text1.SelLength = Len(Text12.Text) End Sub Private Sub Text12_KeyPress(KeyAscii As Integer) KeyAscii = 0 tck.Show 1 Text12.Text = ma Text13.SetFocus End Sub Private Sub Text13_GotFocus() Text1.SelStart = 0 Text1.SelLength = Len(Text13.Text) End Sub Private Sub Text13_KeyPress(KeyAscii As Integer) KeyAscii = 0 Text2.SetFocus End Sub Private Sub Text2_GotFocus() Dim dk As String If Len(Text2.Text) = 0 Then ttt.Show 1 Text13.Text = ma Text2.Text = ten Text9.SetFocus End If End Sub Private Sub Text2_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Command1.SetFocus End If End Sub Private Sub Text3_GotFocus() Text3.SelStart = 0 Text3.SelLength = Len(Text3.Text) End Sub Private Sub Text3_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Text4.SetFocus End If End Sub Private Sub Text4_GotFocus() Text4.SelStart = 0 Text4.SelLength = Len(Text4.Text) End Sub Private Sub Text4_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Text5.SetFocus End If End Sub Private Sub Text5_GotFocus() Text5.SelStart = 0 Text5.SelLength = Len(Text5.Text) End Sub Private Sub Text5_KeyPress(KeyAscii As Integer) KeyAscii = 0 Text6.SetFocus End Sub Private Sub Text6_GotFocus() If Len(Text5.Text) = 0 Then tt.Show 1 Text5.Text = ma Text6.Text = ten Text7.SetFocus End If End Sub Private Sub Text6_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Text17.SetFocus End If End Sub Private Sub Text7_GotFocus() Text7.SelStart = 0 Text7.SelLength = Len(Text7.Text) End Sub Private Sub Text7_KeyDown(KeyCode As Integer, Shift As Integer) If (KeyCode 57) And KeyCode 13 And KeyCode 37 And KeyCode 39 And KeyCode 46 And KeyCode 8 Then KeyCode = 0 End If End Sub Private Sub Text7_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Text8.SetFocus Else If (KeyAscii 57) And KeyAscii 37 And KeyAscii 39 And KeyAscii 46 And KeyAscii 8 Then KeyAscii = 0 End If End If End Sub Private Sub Text8_GotFocus() Text8.SelStart = 0 Text8.SelLength = Len(Text8.Text) End Sub Private Sub Text8_KeyDown(KeyCode As Integer, Shift As Integer) If (KeyCode 57) And KeyCode 13 And KeyCode 37 And KeyCode 39 And KeyCode 46 And KeyCode 8 Then KeyCode = 0 End If End Sub Private Sub Text8_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Command1.SetFocus Else If (KeyAscii 57) And KeyAscii 37 And KeyAscii 39 And KeyAscii 46 And KeyAscii 8 Then KeyAscii = 0 End If End If End Sub Private Sub Text9_GotFocus() Text9.SelStart = 0 Text9.SelLength = Len(Text9.Text) End Sub Private Sub Text9_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Text3.SetFocus End If End Sub II. Form màn hình chính : Dim kt As Boolean Dim dk As String Dim dk1 As String Dim nut1 As Byte Dim i As Byte 'Dim DK As String Private Sub Command1_Click() If Command1.Caption = "Nhập" Then xoa MaskEdBox1.Text = Date Text1.Text = Mid(MaskEdBox1.Text, 4, 2) & "-" Text2.Text = "" Text12.Text = "" Text13.Text = "" Text5.Text = "" Text6.Text = "" Text7.Text = "" Text11.Text = "" Text10.Text = "" Frame1.Enabled = True Frame2.Enabled = True Frame3.Enabled = True MaskEdBox1.SetFocus nut1 = 1 Command1.Caption = "Nhập tiếp" Command2.Enabled = False Command3.Enabled = True Command4.Enabled = True Command5.Enabled = False Command6.Enabled = False Command7.Enabled = False Command8.Enabled = False 'Data1.Recordset.AddNew i = 1 Else If Len(Text5.Text) = 0 Then MsgBox "Mã vật tư không thể trống", vbInformation, "Chú ý" Text5.SetFocus Exit Sub End If If Len(Text7.Text) = 0 Then MsgBox "Số lượng không thể trống", vbInformation, "Chú ý" Text7.SetFocus Exit Sub End If If Len(Text8.Text) = 0 Then MsgBox "Đơn giá không thể trống", vbInformation, "Chú ý" Text8.SetFocus Exit Sub End If Data1.Recordset.AddNew Data1.Recordset.Fields(0).Value = Text1.Text Data1.Recordset.Fields(1).Value = i Data1.Recordset.Fields(2).Value = Text5.Text Data1.Recordset.Fields(3).Value = Text6.Text Data1.Recordset.Fields(4).Value = Text7.Text Data1.Recordset.Fields(5).Value = Text8.Text Data1.Recordset.Fields(6).Value = Val(Text7.Text) * Val(Text8.Text) Data1.Recordset.Update Data1.Refresh Text5.SetFocus i = i + 1 End If End Sub Private Sub Command2_Click() Data5.DatabaseName = Loctext + "ht1.mdb" Data5.RecordSource = "lpnk1" Data5.Refresh Command1.Enabled = False Command2.Enabled = False Command3.Enabled = True Command4.Enabled = True Command5.Enabled = False Command6.Enabled = False Command7.Enabled = False Command8.Enabled = False Text3.Enabled = True Text4.Enabled = True Frame1.Enabled = True Frame2.Enabled = True Text3.SetFocus nut1 = 2 End Sub Public Sub xoa() Data1.Refresh If Not Data1.Recordset.BOF Then Data1.Recordset.MoveFirst Do While Not Data1.Recordset.EOF Data1.Recordset.Delete Data1.Recordset.MoveNext Loop End If End Sub Public Sub chuyen() xoa Set db = OpenDatabase(Loctext + "hethong.mdb") If nut = 1 Then db.Execute "insert into phu select mact,stt0,mavt,tenvt,soluong,dongia,tien from query1 where mact='" & Text1.Text & "'" Else db.Execute "insert into phu select mact,stt0,mavt,tenvt,soluong,dongia,tien from query2 where mact='" & Text1.Text & "'" End If 'db.Execute "insert into phu select mact,stt0,mavt,tenvt,soluong,dongia,tien form query1" db.Close Dim tt1 tt1 = 0 ' db.Close Set db = OpenDatabase(Loctext + "hethong.mdb") Set rs = db.OpenRecordset("phu") rs.MoveFirst Do While rs.EOF = False tt1 = tt1 + rs.Fields("tien").Value rs.MoveNext Loop rs.Close db.Close Text10.Text = Str(tt1) Text11.Text = Str(tt1 / 10) Data1.Refresh DBGrid1.Refresh End Sub Private Sub Command3_Click() If Len(Text5.Text) = 0 Then MsgBox "Mã vật tư không thể trống", vbInformation, "Chú ý" Text5.SetFocus Exit Sub End If If Len(Text7.Text) = 0 Then MsgBox "Số lượng không thể trống", vbInformation, "Chú ý" Text7.SetFocus Exit Sub End If If Len(Text8.Text) = 0 Then MsgBox "Đơn giá không thể trống", vbInformation, "Chú ý" Text8.SetFocus Exit Sub End If Data1.Recordset.AddNew Data1.Recordset.Fields(0).Value = Text1.Text Data1.Recordset.Fields(1).Value = i Data1.Recordset.Fields(2).Value = Text5.Text Data1.Recordset.Fields(3).Value = Text6.Text Data1.Recordset.Fields(4).Value = Text7.Text Data1.Recordset.Fields(5).Value = Text8.Text Data1.Recordset.Fields(6).Value = Val(Text7.Text) * Val(Text8.Text) Data1.Recordset.Update Data1.Refresh If Len(Text1.Text) = 0 Then MsgBox "Mã chứng từ không thể trống", vbInformation, "Thông Báo" Text1.SetFocus Exit Sub End If If Len(MaskEdBox1.Text) = 0 Then MsgBox "Ngày nhập phiếu không thể trống", vbInformation, "Thông Báo" MaskEdBox1.SetFocus Exit Sub End If If Len(Text12.Text) = 0 Then MsgBox "Mã kho hàng không thể trống", vbInformation, "Thông Báo" Text12.SetFocus Exit Sub End If Data2.Recordset.AddNew Data2.Recordset.Fields(1).Value = Text1.Text Data2.Recordset.Fields(2).Value = MaskEdBox1.Text Data2.Recordset.Fields(3).Value = Text13.Text Data2.Recordset.Fields(4).Value = Text12.Text Data2.Recordset.Fields(5).Value = Text9.Text Data2.Recordset.Fields(6).Value = Text3.Text Data2.Recordset.Fields(7).Value = Text4.Text Data2.Recordset.Update Data2.Refresh If nut = 1 Then Set db = OpenDatabase(Loctext + "hethong.mdb") db.Execute "Insert into ctx select mact,stt0,mavt,soluong,dongia,tien from phu" Dim rs1 As Recordset Set rs = db.OpenRecordset("phu") rs.MoveFirst Do While rs.EOF = False Set rs1 = db.OpenRecordset("select * from tonkho where makho='" & Text12.Text & "' and mavt='" & rs.Fields(2).Value & "'") rs1.Edit rs1.Fields(2).Value = rs1.Fields(2).Value - rs.Fields(4).Value rs1.Update rs1.Close rs.MoveNext Loop rs.Close db.Close Else Set db = OpenDatabase(Loctext + "hethong.mdb") db.Execute "Insert into ctnh select mact,stt0,mavt,soluong,dongia,tien from phu" Set rs = db.OpenRecordset("phu") rs.MoveFirst Do While rs.EOF = False Set rs1 = db.OpenRecordset("select * from tonkho where makho='" & Text1.Text & "' and mavt='" & rs.Fields(2).Value & "'") If rs1.BOF = rs1.EOF And rs1.EOF = True Then rs1.AddNew rs1.Fields(0).Value = Text12.Text rs1.Fields(1).Value = rs.Fields(2).Value rs1.Fields(2).Value = rs.Fields(4).Value rs1.Update Else rs1.Edit rs1.Fields(2).Value = rs1.Fields(2).Value + rs.Fields(4).Value rs1.Update End If rs1.Close rs.MoveNext Loop rs.Close db.Close End If Frame1.Enabled = False Frame2.Enabled = False Frame3.Enabled = False Command1.Enabled = True Command2.Enabled = True Command3.Enabled = False Command4.Enabled = False Command5.Enabled = True Command6.Enabled = True Command7.Enabled = True Command8.Enabled = True Command1.Caption = "Nhập" Data2.Recordset.MoveLast chuyen Command1.SetFocus End Sub Private Sub Command4_Click() xoa Command1.Enabled = True Command1.Caption = "Nhập" Command2.Enabled = True If Data2.Recordset.BOF = False Then Data2.Recordset.MoveLast chuyen Command3.Enabled = False Command4.Enabled = False Command5.Enabled = True Else Command5.Enabled = False End If Frame1.Enabled = False Frame2.Enabled = False Frame3.Enabled = False Command6.Enabled = True Command7.Enabled = True Command8.Enabled = True End Sub Private Sub Command5_Click() dk = MsgBox("Bạn có chắc chắn xoá không ?", vbCritical + vbYesNo, "Chú ý") If dk = vbYes Then Data2.Recordset.Delete Data2.Refresh If Data2.Recordset.BOF Then Command5.Enabled = False End If End If End Sub Private Sub Command6_Click() Set db = OpenDatabase(Loctext + "hethong") db.Execute "delete * from table1" Set rs = db.OpenRecordset("table1") rs.AddNew rs.Fields(0).Value = Text1.Text rs.Update rs.Close 'rs.Close db.Close If Label1.Caption = "Phiếu Xuất Kho" Then CrystalReport1.DataFiles(0) = Loctext & "hethong.mdb" CrystalReport1.ReportFileName = Loctext$ + "px.rpt" Else CrystalReport1.DataFiles(0) = Loctext & "hethong.mdb" CrystalReport1.ReportFileName = Loctext$ + "pnh.rpt" End If On Error GoTo ErrorHandler CrystalReport1.Action = 1 Screen.MousePointer = 0 Exit Sub ErrorHandler: MsgBox CrystalReport1.LastErrorString Screen.MousePointer = 0 Exit Sub End Sub Private Sub Command7_Click() dktk.Show 1 dk = "mact='" & ma & "'" Data2.Recordset.FindFirst dk Data2.Recordset.MoveNext Data2.Recordset.MovePrevious chuyen End Sub Private Sub Command8_Click() Unload Me End Sub Private Sub Data2_Reposition() 'On Error GoTo loi If kt = False Then Exit Sub If Not IsNull(Data2.Recordset.Fields(1).Value) Then Text1.Text = Data2.Recordset.Fields(1).Value Else Text1 = "" End If If Not IsNull(Data2.Recordset.Fields(2).Value) Then MaskEdBox1.Text = Data2.Recordset.Fields(2).Value Else MaskEdBox1.Text = "__/__/____" End If If Not IsNull(Data2.Recordset.Fields(3).Value) Then Text13.Text = Data2.Recordset.Fields(3).Value Else Text13 = "" End If Set db = OpenDatabase(Loctext + "hethong.mdb") Set rs = db.OpenRecordset("select * from dmkh where makh='" & Text13.Text & "'") Text2.Text = rs.Fields(1).Value rs.Close db.Close If Not IsNull(Data2.Recordset.Fields(4).Value) Then Text12.Text = Data2.Recordset.Fields(4).Value Else Text12 = "" End If If Not IsNull(Data2.Recordset.Fields(6).Value) Then Text3.Text = Data2.Recordset.Fields(6).Value Else Text3 = "" End If If Not IsNull(Data2.Recordset.Fields(7).Value) Then Text4.Text = Data2.Recordset.Fields(7).Value Else Text4 = "" End If If Not IsNull(Data2.Recordset.Fields(5).Value) Then Text9.Text = Data2.Recordset.Fields(5).Value Else Text9 = "" End If chuyen ' DBGrid1.SetFocus Exit Sub loi: If Err.Number = 3021 Then Exit Sub End If End Sub Private Sub Data2_Validate(Action As Integer, Save As Integer) Select Case Action Case vbDataActionMoveFirst kt = True Case vbDataActionMovePrevious kt = True Case vbDataActionMoveNext kt = True Case vbDataActionMoveLast kt = True Case vbDataActionAddNew kt = False Case vbDataActionUpdate kt = False Case vbDataActionDelete kt = True Case vbDataActionFind kt = False Case vbDataActionBookmark Case vbDataActionClose End Select End Sub Private Sub Form_Load() Frame1.Enabled = False Frame2.Enabled = False Frame3.Enabled = False Frame4.Enabled = False Command3.Enabled = False Command4.Enabled = False If nut = 1 Then Label1.Caption = "Phiếu Xuất Kho" Data1.DatabaseName = Loctext + "Hethong.mdb" Data1.RecordSource = "phu" Data1.Refresh Data2.DatabaseName = Loctext + "Hethong.mdb" Data2.RecordSource = "phieux" Data2.Refresh 'Data3.DatabaseName = Loctext + "hethong.mdb" 'Data3.RecordSource = "ctx" 'Data3.Refresh xoa If Data2.Recordset.BOF = False Then Data2.Recordset.MoveLast chuyen Else Command5.Enabled = False End If Else Label1.Caption = "Phiếu Nhập Kho" Data1.DatabaseName = Loctext + "Hethong.mdb" Data1.RecordSource = "phu" Data1.Refresh Data2.DatabaseName = Loctext + "Hethong.mdb" Data2.RecordSource = "phieunh" Data2.Refresh xoa If Data2.Recordset.BOF = False Then Data2.Recordset.MoveLast chuyen Else Command5.Enabled = False End If End If End Sub Private Sub Form_Resize() Me.Width = 8100 Me.Height = 5145 Me.Top = 0 Me.Left = (Screen.Width - Me.Width) / 2 End Sub Private Sub MaskEdBox1_GotFocus() MaskEdBox1.SelStart = 0 MaskEdBox1.SelLength = Len(MaskEdBox1.Text) End Sub Private Sub MaskEdBox1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Text1.SetFocus End If End Sub Private Sub Text1_GotFocus() Text1.SelStart = 0 Text1.SelLength = Len(Text1.Text) End Sub Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Text12.SetFocus End If End Sub Private Sub Text12_GotFocus() Text1.SelStart = 0 Text1.SelLength = Len(Text12.Text) End Sub Private Sub Text12_KeyPress(KeyAscii As Integer) KeyAscii = 0 tck.Show 1 Text12.Text = ma Text13.SetFocus End Sub Private Sub Text13_GotFocus() Text1.SelStart = 0 Text1.SelLength = Len(Text13.Text) End Sub Private Sub Text13_KeyPress(KeyAscii As Integer) KeyAscii = 0 Text2.SetFocus End Sub Private Sub Text2_GotFocus() Dim dk As String If Len(Text2.Text) = 0 Then ttt.Show 1 Text13.Text = ma Text2.Text = ten Text9.SetFocus End If End Sub Private Sub Text2_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Command1.SetFocus End If End Sub Private Sub Text3_GotFocus() Text3.SelStart = 0 Text3.SelLength = Len(Text3.Text) End Sub Private Sub Text3_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Text4.SetFocus End If End Sub Private Sub Text4_GotFocus() Text4.SelStart = 0 Text4.SelLength = Len(Text4.Text) End Sub Private Sub Text4_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Text5.SetFocus End If End Sub Private Sub Text5_GotFocus() Text5.SelStart = 0 Text5.SelLength = Len(Text5.Text) End Sub Private Sub Text5_KeyPress(KeyAscii As Integer) KeyAscii = 0 Text6.SetFocus End Sub Private Sub Text6_GotFocus() If Len(Text5.Text) = 0 Then tt.Show 1 Text5.Text = ma Text6.Text = ten Text7.SetFocus End If End Sub Private Sub Text6_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Text17.SetFocus End If End Sub Private Sub Text7_GotFocus() Text7.SelStart = 0 Text7.SelLength = Len(Text7.Text) End Sub Private Sub Text7_KeyDown(KeyCode As Integer, Shift As Integer) If (KeyCode 57) And KeyCode 13 And KeyCode 37 And KeyCode 39 And KeyCode 46 And KeyCode 8 Then KeyCode = 0 End If End Sub Private Sub Text7_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Text8.SetFocus Else If (KeyAscii 57) And KeyAscii 37 And KeyAscii 39 And KeyAscii 46 And KeyAscii 8 Then KeyAscii = 0 End If End If End Sub Private Sub Text8_GotFocus() Text8.SelStart = 0 Text8.SelLength = Len(Text8.Text) End Sub Private Sub Text8_KeyDown(KeyCode As Integer, Shift As Integer) If (KeyCode 57) And KeyCode 13 And KeyCode 37 And KeyCode 39 And KeyCode 46 And KeyCode 8 Then KeyCode = 0 End If End Sub Private Sub Text8_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Command1.SetFocus Else If (KeyAscii 57) And KeyAscii 37 And KeyAscii 39 And KeyAscii 46 And KeyAscii 8 Then KeyAscii = 0 End If End If End Sub Private Sub Text9_GotFocus() Text9.SelStart = 0 Text9.SelLength = Len(Text9.Text) End Sub Private Sub Text9_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Text3.SetFocus End If End Sub Form DKTK (Tìm kiếm) : Private Sub Combo1_Click() Combo2.SetFocus End Sub Private Sub Combo1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Combo2.SetFocus End If End Sub Private Sub Combo2_Click() Text1.SetFocus End Sub Private Sub Combo2_GotFocus() Combo2.AddItem ("=") Combo2.AddItem (">") Combo2.AddItem ("<") End Sub Private Sub Combo2_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Text1.SetFocus End If End Sub Private Sub Command1_Click() Dim da As Date Select Case nut Case 1: If Combo1.Text = "Mã chứng từ" Then Data1.DatabaseName = Loctext + "hethong.mdb" Data1.RecordSource = "select ngay,mact from phieux where mact " & Combo2.Text & "'" & Text1.Text & "'" Data1.Refresh Else da = Text1.Text Data1.DatabaseName = Loctext + "hethong.mdb" dk = "select ngay,mact from phieux where ngay " & Combo2.Text & " #" & da & "#" Data1.RecordSource = dk Data1.Refresh End If Case 2: If Combo1.Text = "Mã chứng từ" Then Data1.DatabaseName = Loctext + "hethong.mdb" Data1.RecordSource = "select ngay,mact from phieunh where mact " & Combo2.Text & "'" & Text1.Text & "'" Data1.Refresh Else da = Text1.Text Data1.DatabaseName = Loctext + "hethong.mdb" dk = "select ngay,mact from phieunh where ngay " & Combo2.Text & " #" & da & "#" Data1.RecordSource = dk Data1.Refresh End If Case 3: If Combo1.Text = "Mã chứng từ" Then Data1.DatabaseName = Loctext + "hethong.mdb" Data1.RecordSource = "select ngay,mact from phieulc where mact " & Combo2.Text & "'" & Text1.Text & "'" Data1.Refresh Else da = Text1.Text Data1.DatabaseName = Loctext + "hethong.mdb" dk = "select ngay,mact from phieulc where ngay " & Combo2.Text & " #" & da & "#" Data1.RecordSource = dk Data1.Refresh End If End Select If Data1.Recordset.BOF = False Then Command3.Enabled = True Command1.Enabled = False End If End Sub Private Sub Command2_Click() Unload Me End Sub Private Sub Command3_Click() ma = Data1.Recordset.Fields(1).Value ten = Data1.Recordset.Fields(0).Value Unload Me End Sub Private Sub DBGrid1_DblClick() Command3_Click End Sub Private Sub Form_Load() Combo1.AddItem ("Mã chứng từ") Combo1.AddItem ("Ngày Nhập Phiếu") Command3.Enabled = False 'Combo1.Text = "" End Sub Private Sub Form_Resize() Me.Height = 3510 Me.Width = 5370 End Sub Private Sub Text1_GotFocus() Text1.SelStart = 0 Text1.SelLength = Len(Text1.Text) End Sub Private Sub Text1_KeyPress(KeyAscii As Integer) If KeyAscii = 13 Then Command1.SetFocus End If End Sub MỤC LỤC LỜI NÓI ĐẦU 1 CHƯƠNG I: CÔNG TY PHẦN MỀM TÀI CHÍNH KẾ TOÁN FAST VÀ BÀI TOÁN QUẢN LÝ KHO HÀNG TRONG HỆ THÔNG TIN KẾ TOÁN 3 Vài nét về lịch sử thành lập công ty 3 Bài toán xây dựng phân hệ thông tin quản lý kho hàng trong hệ thông tin kế toán 9 Môi trường và công cụ........................................................................... 12 CHƯƠNG II : KHẢO SÁT THỰC TẾ 16 I. Tóm tắt chức năng, nhiệm vụ, tổ chức và các quy trình nghiệp vụ của một công ty trong quản lý kho hàng 17 II.Mô tả hệ thống thông tin điều hành và quản lý 19 CHƯƠNG III: PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG 30 Phân tích hệ thống 30 Cấu trúc dữ liệu 36 Cấu trúc chương trình 44 Một số thuật toán trong chương trình 46 Xây dựng chương trình 50 KẾT LUẬN 60 PHỤ LỤC 62 TÀI LIỆU THAM KHẢO Kỹ thuật lập trình Access trên Windows - Phạm Văn Ất - NXB Khoa học Kỹ thuật 2. Microsoft Access 97 Visual Basic for application từ A đến Z - Trần Thanh Phong - NXB Thống kê 3. Bài giảng Cơ sở dữ liệu - Trần Công Uẩn 4. Giáo trình Hệ thống thông tin quản lý- Trương Văn Tú 5. Phân tích và thiết kế tin học hệ thống quản lý, kinh doanh, nghiệp vụ - NXB Giao thông Vận tải 6. Visual Basic 6.0 7. Tạp chí PC World Việt Nam

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

  • docbc_quan_ly_kho_theo_vb_4993.doc
Tài liệu liên quan