Đây là một phương pháp thiết kế giải thuật dựa trên tư tưởng module hoá. Nội dung của phương pháp thiết kế này như sau: Trước hết người ta xác định các vấn đề chủ yếu nhất mà việc giải quyết bài toán yêu cầu, bao quát được toàn bộ bài toán. Sau đó phân chia nhiệm vụ cần giải quyết thành các nhiệm vụ cụ thể hơn, tức là chuyển dần từ module chính đến các module con từ trên xuống dưới, do vậy phương pháp có tên gọi là thiết kế “từ đỉnh xuống” (Top down design).
Với phương pháp này, tôi đã làm bài toán Xây dựng hệ thống quản lý bán hàng cho Công ty Thương mại và Dịch vụ K&S như sau:
Mục đích của bài toán là thiết kế một hệ thống các chương trình quản lý cơ sở dữ liệu về qua trình bán hàng chăn ga gối nệm K&S:
124 trang |
Chia sẻ: oanh_nt | Lượt xem: 1633 | Lượt tải: 1
Bạn đang xem trước 20 trang tài liệu Đồ án Xây dựng hệ thống quản lý bán hàng của công ty thương mại và dịch vụ K&S, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
dươc dùng để biểu diễn những đối tượng cụ thể hoặc trừu tượng trong thế giới thực mà ta muốn lưu trữ thông tin về chúng. Thực thể được biểu diễn bằng hình chữ nhật
Liên kết(association):dùng để trình bày, thể hiện mối liên hệ giữa các thực thể.
Số mức độ liên kết: 1@1 liên kết một – một
1@N liên kết một – nhiều
N@M liên kết nhiều – nhiều
Chiều của một liên kết: chiều của quan hệ chỉ ra số lượng các thực thể tham gia vào quan hệ đó. Chia ra làm 3 loại: một chiều, hai chiều, nhiều chiều
* Thiết kế logic xử lý và tính khối lượng xử lý
- Phân tích tra cứu: là tìm hiểu bằng cách nào để có được các thông tin đầu ra từ các tệp đã được thiết kế trong phần thiết kê csdl, một mặt giúp cho xem xét lại khâu thiết kế csdl đã hoàn tất chưa
- Phân tích cập nhật: thông tin trong csdl phải được cập nhật thường xuyên đảm bảo CSDL phản ánh tình trạng mới nhất của đối tượng mà nó quản lý
4.6. Đề xuất các phương án của giải pháp
Mô hình logic của hệ thống mới mô tả cái mà hệ thống này sẽ làm sau khi mô hình được chuẩn y thì tiến hành việc xây dựng các phương án khác nhau để cụ thể hoá mô hình logic. Giai đoạn này có 4 công đoạn: xác định các ràng buộc tin học và ràng buộc tổ chức, xây dựng các phương án của giải pháp, đánh giá các phương án của giải pháp, chuẩn bị và trình bày báo cáo của giai đoạn đề xuất các phương án của giải pháp.
4.7. Thiết kế vật lý ngoài
Sau khi lựa chọn một giải pháp thì tiến hành thiết kế vật lý ngoài. cần có hai tài liệu: tài liệu bao chứa tất cả các đặc trưng của hệ thống mới sẽ cần cho việc thực hiện kỹ thuât sau này, và tiếp đó là tài liệu dành cho người sử dụng. Những công đoạn chính của thiết kế vật lý ngoài là: lập kế hoạch thiết kế vật lý ngoài, thiết kế chi tiết các giao diện, thiết kế các cách thức tương tác với phần tin học hoá, thiết kế các thủ tục thủ công, chuẩn bị và trình bày báo cáo
4.8. Triển khai kỹ thuật hệ thống
Kết quả quan trọng nhất của giai đoạn này là phần mềm. Các hoạt đọng chính của giai đoạn này là: lập kế hoạch thực hiện kỹ thụât, thiết kế vật lý trong, lập trình, thử nghiệm hệ thống, chuẩn bị tài liệu
4.9. Cài đặt và khai thác
Thực hiện việc chuyển từ hệ thống cũ sang hệ thống mới. để quá trình chuyển đổi thực hiện với ít va chạm nhất,cần phải lập kế hoạch một cách cẩn thận. Giai đoạn nàybao gồm các công đoạn sau: lập kế hoạch cài đặt, chuyển đổi, khai thác và bảo trì, đánh giá.
V – PHÂN TÍCH NGHIỆP VỤ QUẢN LÝ BÁN HÀNG
Công ty Thương mại và Dịch vụ K&S chuyên cung cấp các sản phẩm về chăn ga gối nệm nên sản phẩm khá đa dạng và phong phú. Tuy nhiên hiện nay công ty vẫn đang quản lý việc xuất nhập hàng qua việc sử dụng Microsoft Word, Excel bao gồm: Phiếu báo giá, Phiếu bán hàng và đề nghị xuất kho, Phiếu thông tin khách hàng…Hiện tại chưa in ra được những báo cáo tự động như Phiếu nhập hàng, Phiếu xuất hàng, Báo cáo số lượng hàng tồn… Chính vì thê Hệ thống mới được xây dựng là Hệ thống Quản lý bán hàng, gồm các mảng:
Mảng mặt hàng
Quản lý các thông tin về loại mặt hàng, số lượng, tình trạng tồn kho.
In ra các báo cáo về mỗi loại mặt hàng bán ra trong ngày hoặc theo thời gian nhất định
Mảng nhà cung cấp
Quản lý các thông tin về các nhà cung cấp, lưu giữ cập nhật thông tin về mặt hàng của từng nhà cung cấp, nắm được các thông tin về loại mặt hàng, giá cả.
Mảng thống kê báo cáo
Mảng thống kê báo cáo thực hiện việc:
Doanh số theo thời gian ấn định (chọn khoảng thời gian để xuất báo cáo)
Danh mục mặt hàng (xem một loại hay chi tiết toàn bộ)
Danh mục mặt hàng theo tên nhà cung cấp (danh mục, thông tin về các nhà cung cấp)
Mảng khách hàng
Quản lý các thông tin chi tiết về khách hàng của công ty, các đại lý cũng như khách hàng lẻ.
Mảng quản lý hệ thống
Quản lý quyền người dùng của hệ thống.
Lựa chọn ngôn ngữ lập trình và cơ sở dữ liệu Access
Đây là một chương trình không lớn nên tôi sử dụng ngôn ngữ lập trình Visual Basic, cơ sở dữ liệu Access. Chương trình này sẽ là một chương trình chạy trên máy đơn dùng cho nhân viên văn phòng quản lý toàn bộ hệ thống bán hàng của công ty K&S.
CHƯƠNG III – XÂY DỰNG HỆ THỐNG QUẢN LÝ BÁN HÀNG CHO CÔNG TY THƯƠNG MẠI VÀ DỊCH VỤ K&S
I – THIẾT KẾ DỮ LIỆU
1. Xác định các thực thể:
Hệ thống bao gồm các thực thể sau:
Thực thể 1: Chi Tiết Nhập
+ Số phiếu nhập
+ Số hoá đơn
+ Số lượng
+ Đơn giá
+ Đơn vị tính
+ Tiền chưa thuế
+ Tiền thuế
Ký hiệu (ChiTietNhap)
Thực thể 2: Chi Tiết Xuất
+ Số phiếu xuất
+ Mã sản phẩm
+ Số hoá đơn
+ Số lượng
+ Đơn giá
+ Đơn vị tính
+ Tiền chưa thuế
+ Tiền thuế
Thực thể 3: Danh Mục Sản Phẩm
+ Mã sản phẩm
+ Tên sản phẩm
+ Lượng tồn
+ Ghi chú sản phẩm
Thực thể 4: Khách Hàng
+ Mã khách hàng
+ Tên khách hàng
+ Mã số thuế
+ Địa chỉ
+ Điện thoại
+ Fax
+ Tài khoản
+ Ngân hàng
Thực thể 5: Nhà Cung Cấp
+ Mã NCC
+ Tên NCC
+ Địa chỉ
+ Số điện thoại
+ Fax
+ Tài khoản
+ Ngân hàng
Thực thể 6: Phiếu Chi
+ Mã phiếu chi
+ Mã NCC
+ Ngày chi
+ Người nhận
+ Số tiền
+ Bằng chữ
+ Lý do
Thực thể 7: Phiếu Thu
+ Mã phiếu thu
+ Mã Khách hàng
+ Ngày thu
+ Người nộp
+ Số tiền
+ Bằng chữ
+ Lý do
h. Thực thể 8: Phiếu Nhập
+ Số phiếu nhập
+ Mã NCC
+ Ngày nhập
Thực thể 9: Phiếu Xuất
+ Số phiếu xuất
+ Mã khách hàng
+ Ngày xuất
+ Kho xuất
2. Xác định thuộc tính chi tiết của từng thuộc tính trong thực thể:
Chi Tiết Nhập:
Khóa
Thuộc tính
Kiểu dữ liệu
Độ dài
Khóa chính
Số phiếu nhập
Text
10
Số hoá đơn
Number
Long Interger
Số lượng
Number
Long Interger
Đơn giá
Number
Long Interger
Đơn vị tính
Text
50
Tiền chưa thuế
Number
Long Interger
Tiền thuế
Number
Long Interger
Chi Tiết Xuất:
Khóa
Thuộc tính
Kiểu dữ liệu
Độ dài
Khóa chính
Số phiếu xuất
Text
10
Mã sản phẩm
Text
20
Số hoá đơn
Number
Long Interger
Số lượng
Number
Đơn giá
Number
Đơn vị tính
Text
15
Tiền chưa thuế
Number
Long Interger
Tiền thuế
Number
Long Interger
Danh Mục Sản Phẩm:
Khóa
Thuộc tính
Kiểu dữ liệu
Độ dài
Khóa chính
Mã sản phẩm
Text
10
Tên sản phẩm
Text
15
Lượng tồn
Number
Long Interger
Ghi chú sản phẩm
Text
50
Khách Hàng:
Khóa
Thuộc tính
Kiểu dữ liệu
Độ dài
Khóa chính
Mã khách hàng
Text
10
Tên khách hàng
Text
50
Mã số thuế
Number
Long Interger
Địa chỉ
Text
50
Điện thoại
Number
Interger
Fax
Number
Interger
Tài khoản
Number
Long Interger
Ngân hàng
Text
50
Nhà Cung Cấp:
Khóa
Thuộc tính
Kiểu dữ liệu
Độ dài
Khóa chính
Mã NCC
Text
10
Tên NCC
Text
25
Địa chỉ
Number
Long Interger
Số điện thoại
Number
Long Interger
Fax
Number
Long Interger
Tài khoản
Number
Long Interger
Ngân hàng
Text
50
Phiếu Chi:
Khóa
Thuộc tính
Kiểu dữ liệu
Độ dài
Khóa chính
Mã phiếu chi
Text
10
Mã NCC
Text
25
Ngày chi
Number
Long Interger
Người nhận
Number
Long Interger
Số tiền
Number
Long Interger
Bằng chữ
Number
Long Interger
Lý do
Text
50
Phiếu Thu:
Khóa
Thuộc tính
Kiểu dữ liệu
Độ dài
Khóa chính
Mã phiếu thu
Text
10
Mã khách hàng
Text
25
Ngày thu
Number
Long Interger
Người nộp
Number
Long Interger
Số tiền
Number
Long Interger
Bằng chữ
Number
Long Interger
Lý do
Text
50
Phiếu Nhập:
Khóa
Thuộc tính
Kiểu dữ liệu
Độ dài
Khóa chính
Số phiếu nhập
Text
10
Mã NCC
Text
25
Ngày nhập
Number
Long Interger
Phiếu Xuất:
Khóa
Thuộc tính
Kiểu dữ liệu
Độ dài
Khóa chính
Số phiếu xuất
Text
10
Mã khách hàng
Text
25
Ngày xuất
Number
Long Interger
Kho xuất
Text
20
3. Mô hình thực thể quan hệ:
II – PHÂN TÍCH HỆ THỐNG
Sơ đồ chức năng:
Hệ thống quản lý bán hàng K&S
Cập nhật
Báo cáo
Tìm kiếm
Cập nhật phiếu xuất
Cập nhật phiếu xuất
Cập nhật phiếu xuất
Cập nhật phiếu xuất
Cập nhật phiếu xuất
Kế toán
Danh sách khách hàng
Danh sách sản phẩm
Danh sách NCC
Danh sách phiếu thu
Danh sách phiếu chi
Phiếu thu
Phiếu chi
Thông tin
Tên sản phẩm
Tên NCC
Tên khách hàng
Hình vẽ: Biểu đồ phân cấp chức năng của hệ thống
1.1 - Sơ đồ luồng dữ liệu
1.1.1- Sơ đồ luồng dữ liệu mức 0
Nhu cầu sử dụng SP của khách
Hoá đơn mua hàng
Báo giá sản phẩm
Yêu cầu đặt hàng
Hệ thống QLBH
cho công ty K&S
Khách hàng
Nhà cung cấp
1.1.2 - Sơ đồ luồng dữ liệu mức 1
Nợ
Báo giá sản phẩm
Nhu cầu sử dụng sản phẩm
Yêu cầu mua hàng
Hoá đơn mua hàng
Hoá đơn mua hàng
Hệ thống QLBH
cho công ty K&S
Nhà cung cấp
Quản lý
tài chính
Khách hàng
1.1.3 - Sơ đồ luồng dữ liệu mức 2
Hoá đơn mua hàng
Yêu cầu mua hàng
Thanh toán nợ
Hoá đơn BH
Quản lý bán hàng
Khách hàng
1.1.4 - Sơ đồ luồng dữ liệu quản lý khách hàng
Thanh toán nợ
Thông tin khách
Lưu trữ khách hàng
Thông tin nợ
Yêu cầu nợ
Khách hàng
Quản lý bán hàng
Quản lý khách
Yêu cầu mua hàng
1.1.5 – Sơ đồ luồng dữ liệu cập nhật khách hàng:
Điều kiện
Điều kiện
DS khách
DS khách
Lưu trữ khách
Tin nhắn
Hoá đơn
Thông tin khách
DS tìm thấy
Khách hàng
Cập nhật KH
Nhắn tin KH
Thống kê
Nhà quản lý
Tìm nguồn KH
1.1.6 - Sơ đồ luồng dữ liệu cập nhật nhà cung cấp
Hồ sơ nhà CC
TT mặt hàng
Y/C đặt hàng
Loại mặt hàng
Cập nhật TT nhà cung cấp
Nhà cung cấp
Nhà quản lý
1.1.7 – Sơ đồ luồng dữ liệu quản lý mặt hàng cập nhật
Hoá đơn
Hiện trạng mặt hàng
Thể loại báo cáo
Báo cáo mặt hàng
TT mặt hàng
TT hoá đơn
Khách
Cập nhật MH
Nhà quản lý
Báo cáo
Mặt hàng
Quản lý
mặt hàng
ẳnMtj h
1.1.8 - Sơ đồ luồng dữ liệu quản lý mặt hàng
Hiện trạng
DS MH yêu càu
ĐK thống kê
DS mặt hàng
Y/C Loại MH
Hoá đơn
Hoá đơn
TT hoá đơn
Quản lý MH
Tìm MH
Cập nhật MH
Khách hàng
Nhà quản lý
Thống kê mặt hàng
TT mặt hàng
Mặt hàng
1.2: Ta có các tiến trình sau:
1 - Tiến trình đặt hàng
INPUT
Loại hàng theo yêu cầu
Thông tin về khách hàng
OUTPUT
Trạng thái mặt hàng
Thông tin về khách hàng lưu trong CSDL
PROCESS
Tìm kiếm các mặt hàng có điều kiện:
Mã hàng
Số lượng tồn kho
Nếu tìm thấy thì cập nhật thông tin về khách hàng
Nếu không tìm thấy thì thông báo.
2 - Tiến trình cập nhật hàng
INPUT
Mặt hàng
Thông tin cập nhật
OUTPUT
Thông tin của mặt hàng yêu cầu được đưa vào cơ sở dữ liệu
PROCESS
Tìm kiếm mặt hàng
Nếu tìm thấy:
Hiển thị thông tin về mặt hàng
Cập nhật thông tin khách và thông tin dặt hàng
Nếu không tìm thấy: Thông báo
3 - Tiến trình Thống kê mặt hàng
INPUT
Một hoặc nhiều các tiêu chí thống kê
OUTPUT
Hiển thị danh sách mặt hàng
PROCESS
Tìm kiếm các mặt hàng theo các điều kiện
Nếu tìm thấy: Hiển thị danh sách mặt hàng
Nếu không tìm thấy: Thông báo
4 - Tiến trình cập nhật nhà cung cấp
INPUT
Thông tin cập nhật
OUTPUT
Thông tin nhà cung cấp được cập nhật vào CSDL
PROCESS
Tìm kiếm các nhà cung cấp
Nếu tìm thấy: Cập nhật thông tin mới về nhà cung cấp vào CSDL
Nếu không tìm thấy: Hiển thị thông báo.
5 - Tiến trình Thống kê nhà cung cấp
INPUT
Các tiêu chí thống kê
OUTPUT
Hiển thị danh sách nhà cung cấp tìm thấy
PROCESS
Tìm trong các nhà cung cấp
Tìm thấy: Hiển thị danh sách
Không thấy: Hiển thị thông báo
6 - Tiến trình cập nhật khách
INPUT
Thông tin cần cập nhật
PUTPUT
Thông tin về khách hàng được cập nhật vào CSDL
PROCESS
Tìm trong danh sách khách
Nếu tìm thấy: Cập nhật thông tin bổ sung, ghi nhận nợ
Nếu không thấy: Thêm một mã khách, thêm một thông tin mới về khách hàng vào CSDL
7 - Tiến trình Tìm khách hàng
INPUT
Các tiêu chí tìm
OUTPUT
Danh sách tìm thấy trong CSDL
PROCESS
Tìm trong CSDL các khách thoả mãn tiêu chí tìm kiếm
Nếu thấy:Hiển thị;Thanh toán nợ tồn đọng
Không thấy: Hiển thị thông báo
8 - Tiến trình thống kê khách hàng
INPUT
Tiêu chí tìm kiếm
OUTPUT
Danh sách tìm thấy trong CSDL
PROCESS
Tìm trong cơ sở dữ liệu các khách hàng thoả mãn yêu cầu
Nếu thấy:Hiển thị danh sách
Không thấy: Hiển thị thông báo
9 - Tiến trình Cập nhật hoá đơn
INPUT
Thông tin hoá đơn cần cập nhật
OUTPUT
Thông tin hoá đơn được lưu trong CSDL
PROCESS
Tìm kiếm Hoá đơn trong CSDL theo các thông tin hoá đơn cập nhật
Nếu thấy: Sửa chữa thông tin
Không thấy: `Cập nhật mới
10 - Tiến trình tìm hoá đơn
INPUT
Một hoặc nhiều chỉ tiêu tìm kiếm
OUTPUT
Danh sách hoá đơn tìm được
PROCESS
Tìm trong cơ sở dữ liệu các hoá đơn thoả mãn thông tin Input
Nếu thấy:Hiển thị
Không thấy: Hiển thị thông báo
11 - Tiến trình Thống kê hoá đơn
INPUT
Một hoặc nhiều chỉ tiêu tìm kiếm
OUTPUT
Danh sách hoá đơn tìm được
PROCESS
Tìm trong CSDL các hoá đơn thoả mãn
Nếu thấy: Hiển thị
Không thấy: Hiển thị thông báo
III - THIẾT KẾ CHƯƠNG TRÌNH
1. Phương pháp thiết kế: Phương pháp Top down Design
Đây là một phương pháp thiết kế giải thuật dựa trên tư tưởng module hoá. Nội dung của phương pháp thiết kế này như sau: Trước hết người ta xác định các vấn đề chủ yếu nhất mà việc giải quyết bài toán yêu cầu, bao quát được toàn bộ bài toán. Sau đó phân chia nhiệm vụ cần giải quyết thành các nhiệm vụ cụ thể hơn, tức là chuyển dần từ module chính đến các module con từ trên xuống dưới, do vậy phương pháp có tên gọi là thiết kế “từ đỉnh xuống” (Top down design).
Với phương pháp này, tôi đã làm bài toán Xây dựng hệ thống quản lý bán hàng cho Công ty Thương mại và Dịch vụ K&S như sau:
Mục đích của bài toán là thiết kế một hệ thống các chương trình quản lý cơ sở dữ liệu về qua trình bán hàng chăn ga gối nệm K&S:
Phân tích bài toán:
Số liệu ban đầu:
Tệp hoá đơn với các trường:
Mã hàng hoá N
Tên hàng C
Số lượng N
Đơn giá N
Ngày bán D
Ngày nhập D
Số hiệu kho C
Các phép toán xử lý:
Nạp số liệu cho tệp thống kê
Tìm kiếm
Lập các bảng tổng hợp
Như vậy ta có phác thảo thứ nhất về bài toán đặt ra:
Module chính được chia thành … module nhỏ (Vào số liệu cho tệp, Xử lý, In các bảng tổng hợp kinh doanh, ..)
Sơ đồ các module chức năng trong bài toán:
Hệ thống quản lý bán hàng K&S
Cập nhật
Báo cáo
Tìm kiếm
Kế toán
Các module được phân cấp như sau:
Tìm kiếm
Kế toán
Phiếu thu
Phiếu chi
Thông tin
Tên sản phẩm
Tên NCC
Tên khách hàng
Báo cáo
Danh sách khách hàng
Danh sách sản phẩm
Danh sách NCC
Danh sách phiếu thu
Danh sách phiếu chi
Cập nhật
Cập nhật phiếu xuất
Cập nhật phiếu xuất
Cập nhật phiếu xuất
Cập nhật phiếu xuất
Cập nhật phiếu xuất
2. Chương trình phần mềm:
Chức năng chính của chương trình
Khi sử dụng chương trình bạn sẽ dùng chuột để chọn menu mà mình cần làm việc. Có những menu chính sau:
- Hệ thống
- Cập nhật
- Báo cáo
- Kế toán
- Tìm kiếm
2.1 Menu “Hệ thống”
Khi bạn chọn menu Hệ thống, màn hình của chương trình sẽ hiện ra như sau:
2.2. Menu “Cập nhật”
Khi bạn chọn menu Cập nhật, màn hình của chương trình sẽ hiện ra như sau:
2.3. Menu “Báo cáo”
Khi bạn chọn menu Báo cáo, màn hình của chương trình sẽ hiện ra form như sau:
2.4. Menu “Kế toán”
Khi bạn chọn menu Kế toán, màn hình của chương trình sẽ hiện ra form như sau:
2.5. Menu “Tìm kiếm”
Khi bạn chọn menu Tìm kiếm, màn hình của chương trình sẽ hiện ra form
như sau:
3. Một số Form chính của chương trình
3.1 Form Phiếu nhập:
3.2 Form Phiếu xuất:
3.3 Form thông tin khách hàng:
3.4 Form thông tin sản phẩm:
3.5 Form danh sách khách hàng
3.6 Form phiếu trả lại:
3.7 Form Phiếu thu:
3.8 Form Phiếu chi:
3.9 Form Tìm kiếm:
3.10 Giao diện chính:
KẾT LUẬN
Ngành kinh doanh dịch vụ bán hàng, với chức năng phục vụ nhu cầu ăn, mặc, ở và các hoạt động sinh hoạt khác của con người đã có quá trình hình thành và phát triển khá lâu. Cứ mối giai đoạn phát triển lại có những biến đổi không ngừng về quy mô, số lượng, cấp hạng, loại, đối tượng phục vụ mà cách quản lý cũng thay đổi. Như bất kỳ một ngành kinh tế nào khác, kinh doanh dịch vụ bán hàng cũng gặp phải sự cạnh tranh của thị trường một cách khốc liệt, sâu sắc. Điều này đòi hỏi nhà quản lý của công ty K&S không chỉ có những tri thức chuyên môn sâu mà còn phải nắm được thị hiếu của khách hàng cũng như những thay đổi của thị trường và nghệ thuật kinh doanh. Có như vậy các nhà quản lý mới dành được những thắng lợi trong cạnh tranh kinh doanh.
Hệ thống quản lý bán hàng của công ty K&S được xây dựng sẽ là một hệ thống chương trình máy tính được xây dựng từ việc khảo sát các hoạt động của việc bán hàng hiện tại nhằm giúp cho người dùng có thể quản lý công việc của mình một cách tốt nhất mà không mất quá nhiều thời gian. Nói cách khác hệ thống quản lý bán hàng này chính là sự kết hợp giữa công nghệ thông tin và công việc quản lý.
Việc nghiên cứu và xây dựng đề tài này đang trong quá trình hoàn thiện. Đây sẽ là một chương trình được ứng dụng thực tế vào công tác quản lý bán hàng tại công ty K&S. Chương trình này sẽ thay thế việc thực hiện lưu trữ thông tin chưa được tin học hoá, góp phần vào hệ thống quản lý chung của công ty K&S.
TÀI LIỆU THAM KHẢO
- Bài giảng CNPM của PGS.TS Hàn Viết Thuận – Khoa Tin học Kinh tế - Đại học Kinh tế Quốc dân Hà Nội.
- Bài giảng Hệ thống Thông tin quản lý – Khoa Tin học Kinh tế - Đại học Kinh tế Quốc dân Hà Nội.
- Micorosoft Access - Nguyễn Thượng Hiền – NXB Khoa Học Kỹ Thuật
- Những bài thực hành cơ sở dữ liệu Visual Basic nâng cao, 15-8-2005, Nhà xuất bản Thống kê.
- Tài liệu của công ty Thương mại và Dịch vụ K&S
MỤC LỤC
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
PHỤ LỤC
FRM_CHINH
Private Sub chi_Click()
Frm_PhieuChi.Show
End Sub
Private Sub dskh_Click()
DtRpKH.Show
End Sub
Private Sub dslk_Click()
DtRpLK.Show
End Sub
Private Sub dsncc_Click()
DtRpNCC.Show
End Sub
Private Sub dspc_Click()
DtRpPC.Show
End Sub
Private Sub dspt_Click()
DtRpPT.Show
End Sub
Private Sub dssp_Click()
DtRpSP.Show
End Sub
Private Sub Form_Load()
DtEvm.DtEvmConn.ConnectionString = "Provider=Microsoft.JET.OLEDB.4.0;Data Source=" & App.Path & "\db\QLBH.mdb"
Connect
End Sub
Private Sub Form_Resize()
Frm_Chinh.WindowState = 2
End Sub
Private Sub Form_Unload(Cancel As Integer)
End
End Sub
Private Sub ketthuc_Click()
End
End Sub
Private Sub nhaplk_Click()
Frm_Nhap.Show
End Sub
Private Sub khachhang_Click()
Frm_KhachHang.Show
End Sub
Private Sub nhap_Click()
Frm_Nhap.Show
End Sub
Private Sub sanpham_Click()
Frm_SanPham.Show
End Sub
Private Sub thu_Click()
Frm_PhieuThu.Show
End Sub
Private Sub tksp_Click()
Frm_TimKiem.Show
End Sub
Private Sub tra_Click()
Frm_TraLai.Show
End Sub
Private Sub xuat_Click()
Frm_Xuat.Show
End Sub
FRM_NHAP
Option Explicit
Dim RS_LK As New ADODB.Recordset
Dim StrLK As String
Dim RS_Temp As New ADODB.Recordset
Dim StrTemp As String
Dim i As Integer
Private Sub ShowRS()
Text1(0) = RS("SoPhieuN")
Text1(1) = RS("NgayNhap")
cboMaNCC.Text = RS("MaNCC")
Text1(2) = RS("KhoN")
Text1(3) = RS("GhiChuN")
cboMaLK.Text = RS("MaLK")
StrLK = "SELECT * FROM DanhMucLinhKien WHERE MaLK =""" & cboMaLK.Text & """"
RS_LK.Open StrLK, Conn
Text1(4) = RS_LK("TenLK")
Text1(5) = RS_LK("Ton")
Text1(6) = RS_LK("KhoLK")
Text1(7) = RS_LK("GhiChuLK")
RS_LK.Close
End Sub
Private Function TestRS() As Boolean
RS.MoveNext
If RS.EOF Then
cmdTien.Enabled = False
Else
cmdTien.Enabled = True
End If
RS.MovePrevious
RS.MovePrevious
If RS.BOF Then
cmdLui.Enabled = False
Else
cmdLui.Enabled = True
End If
RS.MoveNext
If (RS.BOF Or RS.EOF) Then
TestRS = False
Else
TestRS = True
End If
End Function
Private Sub cboMaLK_Click()
If cboMaLK.Text "" Then
StrLK = "SELECT * FROM DanhMucLinhKien WHERE MaLK=""" & cboMaLK.Text & """"
RS_LK.Open StrLK, Conn
If Not (RS_LK.EOF And RS_LK.BOF) Then
Text1(4) = RS_LK("TenLK")
Text1(5) = RS_LK("Ton")
Text1(6) = RS_LK("KhoLK")
Text1(7) = RS_LK("GhiChuLK")
End If
RS_LK.Close
End If
End Sub
Private Sub cboXem_Click()
If Not (RS.EOF And RS.BOF) Then RS.MoveFirst
Do While Not RS.EOF
If RS("SoPhieuN") = cboXem.Text Then
If Not (RS.EOF Or RS.BOF) Then ShowRS
Exit Do
Else
RS.MoveNext
End If
Loop
If RS.EOF Then RS.MoveFirst
TestRS
End Sub
Private Sub cmdBoqua_Click()
Mode = "Show"
cboXem.Enabled = True
cmdLui.Enabled = True
cmdTien.Enabled = True
cmdThem.Enabled = True
cmdSua.Enabled = True
cmdXoa.Enabled = True
cmdLuu.Enabled = False
cmdBoqua.Enabled = False
Text1(0).Enabled = True
cboMaNCC.Enabled = True
cboMaLK.Enabled = True
Unload Frm_ChitietNCC
Unload Frm_ChiTietNhap
For i = 0 To 7
Text1(i).Locked = True
Next
cboMaNCC.Locked = True
cboMaLK.Locked = True
If Not (RS.EOF And RS.BOF) Then
cboMaNCC.Clear
cboMaLK.Clear
RS.Requery
ShowRS
End If
End Sub
Private Sub cmdChitietNCC_Click()
Frm_ChitietNCC.Show
End Sub
Private Sub cmdLui_Click()
If Not RS.BOF Then RS.MovePrevious
'TestRS
If TestRS False Then ShowRS
End Sub
Private Function Check() As Boolean
Dim RS_Tmp As New ADODB.Recordset
If Trim(Text1(0)) = "" Then
MsgBox "Chua nhap so phieu nhap !", vbCritical, "Quan ly ban hang"
Text1(0).SetFocus
Check = False
Exit Function
End If
StrTemp = "SELECT * FROM PhieuNhap WHERE SoPhieuN =""" & Text1(0) & """"
If Mode = "Add" Then
RS_Tmp.Open StrTemp, Conn
If Not (RS_Tmp.EOF And RS_Tmp.BOF) Then
MsgBox "So phieu nhap da ton tai !", vbCritical, "Quan ly ban hang"
Text1(0).SetFocus
Check = False
Exit Function
End If
RS_Tmp.Close
End If
If Trim(cboMaNCC) = "" Then
MsgBox "Chua nhap ma nha cung cap !", vbCritical, "Quan ly ban hang"
cboMaNCC.SetFocus
Check = False
Exit Function
End If
If Trim(cboMaLK) = "" Then
MsgBox "Chua nhap ma linh kien !", vbCritical, "Quan ly ban hang"
cboMaLK.SetFocus
Check = False
Exit Function
End If
If Not IsDate(Text1(1)) Then
MsgBox "Ngay nhap sai kieu !", vbCritical, "Quan ly ban hang"
Text1(1).SetFocus
Check = False
Exit Function
End If
Check = True
End Function
Private Sub cmdLuu_Click()
'If Check = False Then Exit Sub
On Error GoTo Err1
If Check = True Then
'Nha cung cap
StrTemp = "SELECT * FROM NhaCungCap WHERE MaNCC=""" & cboMaNCC.Text & """"
RS_Temp.Open StrTemp, Conn, adOpenDynamic, adLockOptimistic
If (RS_Temp.EOF And RS_Temp.BOF) Then
For i = 0 To 5
If Len(Frm_ChitietNCC.Text1(i)) = 0 Then
Frm_ChitietNCC.Text1(i) = "N/A"
End If
Next
RS_Temp.AddNew
RS_Temp("MaNCC") = cboMaNCC.Text
RS_Temp("TenNCC") = Frm_ChitietNCC.Text1(0)
RS_Temp("DiaChi") = Frm_ChitietNCC.Text1(1)
RS_Temp("DienThoai") = Frm_ChitietNCC.Text1(2)
RS_Temp("Fax") = Frm_ChitietNCC.Text1(3)
RS_Temp("TaiKhoan") = Frm_ChitietNCC.Text1(4)
RS_Temp("NganHang") = Frm_ChitietNCC.Text1(5)
RS_Temp.Update
Else
If Mode = "Edit" Then
RS_Temp("TenNCC") = Frm_ChitietNCC.Text1(0)
RS_Temp("DiaChi") = Frm_ChitietNCC.Text1(1)
RS_Temp("DienThoai") = Frm_ChitietNCC.Text1(2)
RS_Temp("Fax") = Frm_ChitietNCC.Text1(3)
RS_Temp("TaiKhoan") = Frm_ChitietNCC.Text1(4)
RS_Temp("NganHang") = Frm_ChitietNCC.Text1(5)
RS_Temp.Update
End If
End If
RS_Temp.Close
'Danh muc linh kien
StrTemp = "SELECT * FROM DanhMucLinhKien WHERE MaLK=""" & cboMaLK.Text & """"
RS_Temp.Open StrTemp, Conn, adOpenDynamic, adLockOptimistic
If (RS_Temp.EOF And RS_Temp.BOF) Then
For i = 4 To 7
If Len(Text1(i)) = 0 Then
Text1(i) = "N/A"
End If
Next
RS_Temp.AddNew
RS_Temp("MaLK") = cboMaLK.Text
RS_Temp("TenLK") = Text1(4)
RS_Temp("Ton") = Text1(5)
RS_Temp("KhoLK") = Text1(6)
RS_Temp("GhiChuLK") = Text1(7)
RS_Temp.Update
Else
If Mode = "Edit" Then
RS_Temp("TenLK") = Text1(4)
RS_Temp("Ton") = Text1(5)
RS_Temp("KhoLK") = Text1(6)
RS_Temp("GhiChuLK") = Text1(7)
RS_Temp.Update
End If
End If
RS_Temp.Close
'Phieu nhap
StrTemp = "SELECT * FROM PhieuNhap WHERE SoPhieuN = """ & Text1(0) & """"
RS_Temp.Open StrTemp, Conn, adOpenDynamic, adLockOptimistic
For i = 0 To 3
If Len(Text1(i)) = 0 Then
Text1(i) = "N/A"
End If
Next
If Mode = "Add" Then
RS_Temp.AddNew
RS_Temp("SophieuN") = Text1(0)
End If
RS_Temp("MaLK") = cboMaLK.Text
RS_Temp("MaNCC") = cboMaNCC.Text
RS_Temp("NgayNhap") = Text1(1)
RS_Temp("KhoN") = Text1(2)
RS_Temp("GhiChuN") = Text1(3)
RS_Temp.Update
RS_Temp.Close
'Chi tiet phieu nhap
StrTemp = "SELECT * FROM ChiTietNhap WHERE SoPhieuN = """ & Text1(0) & """"
RS_Temp.Open StrTemp, Conn, adOpenDynamic, adLockOptimistic
For i = 0 To 5
If Len(Frm_ChiTietNhap.Text1(i)) = 0 Then
Frm_ChiTietNhap.Text1(i) = "N/A"
End If
Next
If Mode = "Add" Then
RS_Temp.AddNew
RS_Temp("SophieuN") = Text1(0)
End If
RS_Temp("SoHoaDon") = Frm_ChiTietNhap.Text1(0)
RS_Temp("SoLuong") = Frm_ChiTietNhap.Text1(1)
RS_Temp("DonGia") = Frm_ChiTietNhap.Text1(2)
RS_Temp("DonViTinh") = Frm_ChiTietNhap.Text1(3)
RS_Temp("TienChuaThue") = Frm_ChiTietNhap.Text1(4)
RS_Temp("TienThue") = Frm_ChiTietNhap.Text1(5)
RS_Temp.Update
RS_Temp.Close
cmdBoqua_Click
Add_cboXem
MsgBox "Cap nhat thanh cong !", vbInformation, "Quan ly ban hang"
End If
Err1:
If Len(Err.Description) 0 Then MsgBox Err.Description, vbCritical, "Quan ly ban hang"
End Sub
Private Sub cmdSua_Click()
Mode = "Edit"
cboXem.Enabled = False
cmdLui.Enabled = False
cmdTien.Enabled = False
cmdThem.Enabled = False
cmdSua.Enabled = False
cmdXoa.Enabled = False
cmdLuu.Enabled = True
cmdBoqua.Enabled = True
Text1(0).Enabled = False
cboMaNCC.Enabled = False
cboMaLK.Enabled = False
For i = 1 To 7
Text1(i).Locked = False
Next
Text1(1).SetFocus
Frm_ChitietNCC.Show
Frm_ChitietNCC.Hide
Frm_ChiTietNhap.Show
Frm_ChiTietNhap.Hide
End Sub
Private Sub cmdThem_Click()
Mode = "Add"
cboXem.Enabled = False
cmdLui.Enabled = False
cmdTien.Enabled = False
cmdThem.Enabled = False
cmdSua.Enabled = False
cmdXoa.Enabled = False
cmdLuu.Enabled = True
cmdBoqua.Enabled = True
For i = 0 To 7
Text1(i).Locked = False
Text1(i) = ""
Next
cboMaNCC.Locked = False
cboMaNCC.Clear
StrTemp = "SELECT MaNCC FROM NhaCungCap"
RS_Temp.Open StrTemp, Conn
If Not (RS_Temp.EOF And RS_Temp.BOF) Then
RS_Temp.MoveFirst
Do While Not RS_Temp.EOF
cboMaNCC.AddItem RS_Temp("MaNCC")
RS_Temp.MoveNext
Loop
End If
RS_Temp.Close
cboMaLK.Locked = False
cboMaLK.Clear
StrLK = "SELECT MaLK FROM DanhMucLinhKien"
RS_LK.Open StrLK, Conn
If Not (RS_LK.EOF And RS_LK.BOF) Then
Do While Not RS_LK.EOF
cboMaLK.AddItem RS_LK("MaLK")
RS_LK.MoveNext
Loop
End If
RS_LK.Close
Text1(0).SetFocus
Unload Frm_ChitietNCC
Unload Frm_ChiTietNhap
End Sub
Private Sub cmdThoat_Click()
Unload Me
End Sub
Private Sub cmdTien_Click()
If Not RS.EOF Then RS.MoveNext
'TestRS
If TestRS False Then ShowRS
End Sub
Private Sub cmdXoa_Click()
Mode = "Del"
Frm_XoaNhap.Show
End Sub
Private Sub Command3_Click()
Frm_ChiTietNhap.Show
End Sub
Private Sub Form_Activate()
'Unload Frm_ChitietNCC
Unload Frm_XoaNhap
If Mode = "Show" Then
If Not (RS.EOF Or RS.BOF) Then ShowRS
Add_cboXem
End If
End Sub
Private Sub Add_cboXem()
Dim RS_Xem As New ADODB.Recordset
cboXem.Clear
cboXem.AddItem "Xem nhanh theo sè phiÕu nhËp"
str = "SELECT SoPhieuN FROM PhieuNhap ORDER BY SophieuN"
RS_Xem.Open str, Conn
Do While Not RS_Xem.EOF
cboXem.AddItem RS_Xem("SoPhieuN")
RS_Xem.MoveNext
Loop
RS_Xem.Close
Set RS_Xem = Nothing
cboXem.ListIndex = 0
End Sub
Private Sub Form_Load()
Mode = "Show"
'Connect
str = "SELECT * FROM PhieuNhap ORDER BY SophieuN"
RS.Open str, Conn, adOpenDynamic, adLockOptimistic
If Not (RS.EOF Or RS.BOF) Then ShowRS
Add_cboXem
'TestRS
End Sub
Private Sub Form_Unload(Cancel As Integer)
RS.Close
Set RS = Nothing
Set RS_LK = Nothing
Unload Frm_ChitietNCC
Unload Frm_ChiTietNhap
End Sub
FRM_XUAT
Option Explicit
Dim RS_Temp As New ADODB.Recordset
Dim StrTemp As String
Dim i As Integer
Private Sub ShowRS()
Text1(0) = RS("PhieuXuat.SoPhieuX")
Text1(1) = RS("NgayXuat")
cboMaKH.Text = RS("MaKH")
Text1(2) = RS("KhoX")
Text1(3) = RS("GhiChuX")
cboMaSP.Text = RS("MaSP")
Text1(4) = RS("SoHoaDon")
Text1(5) = RS("SoLuong")
Text1(6) = RS("DonGia")
Text1(7) = RS("DonViTinh")
Text1(8) = RS("TienChuaThue")
Text1(9) = RS("TienThue")
End Sub
Private Function TestRS() As Boolean
RS.MoveNext
If RS.EOF Then
cmdTien.Enabled = False
Else
cmdTien.Enabled = True
End If
RS.MovePrevious
RS.MovePrevious
If RS.BOF Then
cmdLui.Enabled = False
Else
cmdLui.Enabled = True
End If
RS.MoveNext
If (RS.BOF Or RS.EOF) Then
TestRS = False
Else
TestRS = True
End If
End Function
Private Sub cboXem_Click()
If Not (RS.EOF And RS.BOF) Then RS.MoveFirst
Do While Not RS.EOF
If RS("PhieuXuat.SoPhieuX") = cboXem.Text Then
If Not (RS.EOF And RS.BOF) Then If Not (RS.EOF Or RS.BOF) Then ShowRS
Exit Do
Else
RS.MoveNext
End If
Loop
If RS.EOF Then RS.MoveFirst
TestRS
End Sub
Private Sub cmdBoqua_Click()
Mode = "Show"
cboXem.Enabled = True
cmdLui.Enabled = True
cmdTien.Enabled = True
cmdThem.Enabled = True
cmdSua.Enabled = True
cmdXoa.Enabled = True
cmdLuu.Enabled = False
cmdBoqua.Enabled = False
Text1(0).Enabled = True
cboMaKH.Enabled = True
cboMaSP.Enabled = True
For i = 0 To 9
Text1(i).Locked = True
Next
cboMaKH.Locked = True
cboMaSP.Locked = True
If Not (RS.EOF And RS.BOF) Then
cboMaKH.Clear
cboMaSP.Clear
RS.Requery
ShowRS
End If
End Sub
Private Sub cmdLui_Click()
If Not RS.BOF Then RS.MovePrevious
If TestRS False Then ShowRS
End Sub
Private Function Check() As Boolean
Dim RS_Tmp As New ADODB.Recordset
If Trim(Text1(0)) = "" Then
MsgBox "Chua nhap so phieu xuat !", vbCritical, "Quan ly ban hang"
Text1(0).SetFocus
Check = False
Exit Function
End If
StrTemp = "SELECT * FROM PhieuXuat WHERE SoPhieuX =""" & Text1(0) & """"
If Mode = "Add" Then
RS_Tmp.Open StrTemp, Conn
If Not (RS_Tmp.EOF And RS_Tmp.BOF) Then
MsgBox "So phieu xuat da ton tai !", vbCritical, "Quan ly ban hang"
Text1(0).SetFocus
Check = False
Exit Function
End If
RS_Tmp.Close
End If
If Trim(cboMaKH) = "" Then
MsgBox "Chua nhap ma khach hang !", vbCritical, "Quan ly ban hang"
cboMaKH.SetFocus
Check = False
Exit Function
End If
StrTemp = "SELECT MaKH FROM KhachHang WHERE MaKH =""" & cboMaKH.Text & """"
RS_Tmp.Open StrTemp, Conn
If (RS_Tmp.EOF And RS_Tmp.BOF) Then
MsgBox "Ma khach hang khong ton tai !" & Chr(13) _
& "Ban phai chon ma khach hang co trong danh sach hoac nhap thong tin ve khach hang nay truoc.", vbCritical, "Quan ly ban hang"
cboMaKH.SetFocus
Check = False
Exit Function
End If
RS_Tmp.Close
If Trim(cboMaSP) = "" Then
MsgBox "Chua nhap ma san pham !", vbCritical, "Quan ly ban hang"
cboMaSP.SetFocus
Check = False
Exit Function
End If
StrTemp = "SELECT MaSP FROM DanhMucSanPham WHERE MaSP =""" & cboMaSP.Text & """"
RS_Tmp.Open StrTemp, Conn
If (RS_Tmp.EOF And RS_Tmp.BOF) Then
MsgBox "Ma san pham khong ton tai !" & Chr(13) _
& "Ban phai chon ma san pham co trong danh sach hoac nhap thong tin ve san pham nay truoc.", vbCritical, "Quan ly ban hang"
cboMaKH.SetFocus
Check = False
Exit Function
End If
RS_Tmp.Close
If Not IsDate(Text1(1)) Then
MsgBox "Ngay xuat sai kieu !", vbCritical, "Quan ly ban hang"
Text1(1).SetFocus
Check = False
Exit Function
End If
Check = True
End Function
Private Sub cmdLuu_Click()
'If Check = False Then Exit Sub
On Error GoTo Err1
If Check = True Then
'Phieu xuat
StrTemp = "SELECT * FROM PhieuXuat WHERE SoPhieuX = """ & Text1(0) & """"
RS_Temp.Open StrTemp, Conn, adOpenDynamic, adLockOptimistic
For i = 0 To 3
If Len(Text1(i)) = 0 Then
Text1(i) = "N/A"
End If
Next
If Mode = "Add" Then
RS_Temp.AddNew
RS_Temp("SophieuX") = Text1(0)
End If
RS_Temp("MaKH") = cboMaKH.Text
RS_Temp("NgayXuat") = Text1(1)
RS_Temp("KhoX") = Text1(2)
RS_Temp("GhiChuX") = Text1(3)
RS_Temp.Update
RS_Temp.Close
'Chi tiet phieu xuat
StrTemp = "SELECT * FROM ChiTietXuat WHERE SoPhieuX = """ & Text1(0) & """"
RS_Temp.Open StrTemp, Conn, adOpenDynamic, adLockOptimistic
For i = 4 To 9
If Len(Text1(i)) = 0 Then
Text1(i) = "N/A"
End If
Next
If Mode = "Add" Then
RS_Temp.AddNew
RS_Temp("SophieuX") = Text1(0)
End If
RS_Temp("MaSP") = cboMaSP.Text
RS_Temp("SoHoaDon") = Text1(4)
RS_Temp("SoLuong") = Text1(5)
RS_Temp("DonGia") = Text1(6)
RS_Temp("DonViTinh") = Text1(7)
RS_Temp("TienChuaThue") = Text1(8)
RS_Temp("TienThue") = Text1(9)
RS_Temp.Update
RS_Temp.Close
cmdBoqua_Click
Add_cboXem
MsgBox "Cap nhat thanh cong !", vbInformation, "Quan ly ban hang"
End If
Err1:
If Len(Err.Description) 0 Then MsgBox Err.Description, vbCritical, "Quan ly ban hang"
End Sub
Private Sub cmdSua_Click()
Dim Temp1, Temp2 As String
Mode = "Edit"
cboXem.Enabled = False
cmdLui.Enabled = False
cmdTien.Enabled = False
cmdThem.Enabled = False
cmdSua.Enabled = False
cmdXoa.Enabled = False
cmdLuu.Enabled = True
cmdBoqua.Enabled = True
Text1(0).Enabled = False
For i = 1 To 9
Text1(i).Locked = False
Next
cboMaKH.Locked = False
Temp1 = cboMaKH.Text
cboMaKH.Clear
StrTemp = "SELECT MaKH FROM KhachHang"
RS_Temp.Open StrTemp, Conn
If Not (RS_Temp.EOF And RS_Temp.BOF) Then
RS_Temp.MoveFirst
Do While Not RS_Temp.EOF
cboMaKH.AddItem RS_Temp("MaKH")
If RS_Temp("MaKH") = Temp1 Then Temp2 = cboMaKH.ListCount - 1
RS_Temp.MoveNext
Loop
End If
RS_Temp.Close
cboMaKH.ListIndex = Temp2
cboMaSP.Locked = False
Temp1 = cboMaSP.Text
cboMaSP.Clear
StrTemp = "SELECT MaSP FROM DanhMucSanPham"
RS_Temp.Open StrTemp, Conn
If Not (RS_Temp.EOF And RS_Temp.BOF) Then
Do While Not RS_Temp.EOF
cboMaSP.AddItem RS_Temp("MaSP")
If RS_Temp("MaSP") = Temp1 Then Temp2 = cboMaSP.ListCount - 1
RS_Temp.MoveNext
Loop
End If
RS_Temp.Close
cboMaSP.ListIndex = Temp2
Text1(1).SetFocus
End Sub
Private Sub cmdThem_Click()
Mode = "Add"
cboXem.Enabled = False
cmdLui.Enabled = False
cmdTien.Enabled = False
cmdThem.Enabled = False
cmdSua.Enabled = False
cmdXoa.Enabled = False
cmdLuu.Enabled = True
cmdBoqua.Enabled = True
For i = 0 To 9
Text1(i).Locked = False
Text1(i) = ""
Next
cboMaKH.Locked = False
cboMaKH.Clear
StrTemp = "SELECT MaKH FROM KhachHang"
RS_Temp.Open StrTemp, Conn
If Not (RS_Temp.EOF And RS_Temp.BOF) Then
RS_Temp.MoveFirst
Do While Not RS_Temp.EOF
cboMaKH.AddItem RS_Temp("MaKH")
RS_Temp.MoveNext
Loop
End If
RS_Temp.Close
cboMaSP.Locked = False
cboMaSP.Clear
StrTemp = "SELECT MaSP FROM DanhMucSanPham"
RS_Temp.Open StrTemp, Conn
If Not (RS_Temp.EOF And RS_Temp.BOF) Then
Do While Not RS_Temp.EOF
cboMaSP.AddItem RS_Temp("MaSP")
RS_Temp.MoveNext
Loop
End If
RS_Temp.Close
Text1(0).SetFocus
End Sub
Private Sub cmdThoat_Click()
Unload Me
End Sub
Private Sub cmdTien_Click()
If Not RS.EOF Then RS.MoveNext
If TestRS False Then ShowRS
End Sub
Private Sub cmdXoa_Click()
If (RS.EOF And RS.BOF) Then
MsgBox "Co so du lieu rong !", vbCritical
Exit Sub
End If
If MsgBox("Ban muon xoa phieu xuat nay ?", vbExclamation + vbYesNo) = vbYes Then
RS.Delete adAffectCurrent
RS.Requery
ShowRS
cmdBoqua_Click
Add_cboXem
Else
Exit Sub
End If
End Sub
Private Sub Add_cboXem()
Dim RS_Xem As New ADODB.Recordset
cboXem.Clear
cboXem.AddItem "Xem nhanh theo sè phiÕu xuÊt"
str = "SELECT SoPhieuX FROM PhieuXuat ORDER BY SophieuX"
RS_Xem.Open str, Conn
Do While Not RS_Xem.EOF
cboXem.AddItem RS_Xem("SoPhieuX")
RS_Xem.MoveNext
Loop
RS_Xem.Close
Set RS_Xem = Nothing
cboXem.ListIndex = 0
End Sub
Private Sub Form_Load()
Mode = "Show"
'Connect
str = "SELECT * FROM PhieuXuat,ChiTietXuat WHERE PhieuXuat.SophieuX = ChiTietXuat.SophieuX ORDER BY PhieuXuat.SophieuX"
RS.Open str, Conn, adOpenDynamic, adLockOptimistic
If Not (RS.EOF Or RS.BOF) Then ShowRS
Add_cboXem
End Sub
Private Sub Form_Unload(Cancel As Integer)
On Error Resume Next
RS.Close
Set RS = Nothing
Set RS_Temp = Nothing
End Sub
FRM_KHACHHANG
Option Explicit
Dim RS_Temp As New ADODB.Recordset
Dim StrTemp As String
Dim i As Integer
Private Sub ShowRS()
Text1(0) = RS("MaKH")
Text1(1) = RS("TenKH")
Text1(2) = RS("MaSoThue")
Text1(3) = RS("DiaChi")
Text1(4) = RS("DienThoai")
Text1(5) = RS("Fax")
Text1(6) = RS("TK")
Text1(7) = RS("NganHang")
End Sub
Private Function TestRS() As Boolean
RS.MoveNext
If RS.EOF Then
cmdTien.Enabled = False
Else
cmdTien.Enabled = True
End If
RS.MovePrevious
RS.MovePrevious
If RS.BOF Then
cmdLui.Enabled = False
Else
cmdLui.Enabled = True
End If
RS.MoveNext
If (RS.BOF Or RS.EOF) Then
TestRS = False
Else
TestRS = True
End If
End Function
Private Sub cboXem_Click()
If Not (RS.EOF And RS.BOF) Then RS.MoveFirst
Do While Not RS.EOF
If RS("MaKH") = cboXem.Text Then
If Not (RS.EOF And RS.BOF) Then If Not (RS.EOF Or RS.BOF) Then ShowRS
Exit Do
Else
RS.MoveNext
End If
Loop
If RS.EOF Then RS.MoveFirst
TestRS
End Sub
Private Sub cmdBoqua_Click()
Mode = "Show"
cboXem.Enabled = True
cmdLui.Enabled = True
cmdTien.Enabled = True
cmdThem.Enabled = True
cmdSua.Enabled = True
cmdXoa.Enabled = True
cmdLuu.Enabled = False
cmdBoqua.Enabled = False
Text1(0).Enabled = True
If Not (RS.EOF And RS.BOF) Then
RS.Requery
ShowRS
End If
End Sub
Private Sub cmdLui_Click()
If Not RS.BOF Then RS.MovePrevious
If TestRS False Then ShowRS
End Sub
Private Function Check() As Boolean
Dim RS_Tmp As New ADODB.Recordset
If Trim(Text1(0)) = "" Then
MsgBox "Chua nhap ma khach hang !", vbCritical, "Quan ly ban hang"
Text1(0).SetFocus
Check = False
Exit Function
End If
StrTemp = "SELECT * FROM KhachHang WHERE MaKH =""" & Text1(0) & """"
If Mode = "Add" Then
RS_Tmp.Open StrTemp, Conn
If Not (RS_Tmp.EOF And RS_Tmp.BOF) Then
MsgBox "Ma khach hang da ton tai !", vbCritical, "Quan ly ban hang"
Text1(0).SetFocus
Check = False
Exit Function
End If
RS_Tmp.Close
End If
Check = True
End Function
Private Sub cmdLuu_Click()
On Error GoTo Err1
If Check = True Then
'Khach hang
StrTemp = "SELECT * FROM KhachHang WHERE MaKH = """ & Text1(0) & """"
RS_Temp.Open StrTemp, Conn, adOpenDynamic, adLockOptimistic
For i = 1 To 7
If Len(Text1(i)) = 0 Then
Text1(i) = "N/A"
End If
Next
If Mode = "Add" Then
RS_Temp.AddNew
RS_Temp("MaKH") = Text1(0)
End If
RS_Temp("TenKH") = Text1(1)
RS_Temp("MaSoThue") = Text1(2)
RS_Temp("DiaChi") = Text1(3)
RS_Temp("DienThoai") = Text1(4)
RS_Temp("Fax") = Text1(5)
RS_Temp("TK") = Text1(6)
RS_Temp("NganHang") = Text1(7)
RS_Temp.Update
RS_Temp.Close
cmdBoqua_Click
Add_cboXem
MsgBox "Cap nhat thanh cong !", vbInformation, "Quan ly ban hang"
End If
Err1:
If Len(Err.Description) 0 Then MsgBox Err.Description, vbCritical, "Quan ly ban hang"
End Sub
Private Sub cmdSua_Click()
Dim Temp1, Temp2 As String
Mode = "Edit"
cboXem.Enabled = False
cmdLui.Enabled = False
cmdTien.Enabled = False
cmdThem.Enabled = False
cmdSua.Enabled = False
cmdXoa.Enabled = False
cmdLuu.Enabled = True
cmdBoqua.Enabled = True
Text1(0).Enabled = False
For i = 1 To 7
Text1(i).Locked = False
Next
Text1(1).SetFocus
End Sub
Private Sub cmdThem_Click()
Mode = "Add"
cboXem.Enabled = False
cmdLui.Enabled = False
cmdTien.Enabled = False
cmdThem.Enabled = False
cmdSua.Enabled = False
cmdXoa.Enabled = False
cmdLuu.Enabled = True
cmdBoqua.Enabled = True
For i = 0 To 7
Text1(i).Locked = False
Text1(i) = ""
Next
Text1(0).SetFocus
End Sub
Private Sub cmdThoat_Click()
Unload Me
End Sub
Private Sub cmdTien_Click()
If Not RS.EOF Then RS.MoveNext
If TestRS False Then ShowRS
End Sub
Private Sub cmdXoa_Click()
If (RS.EOF And RS.BOF) Then
MsgBox "Co so du lieu rong !", vbCritical
Exit Sub
End If
If MsgBox("Toan bo phieu xuat va phieu tra cua khach hang nay se bi xoa." & Chr(13) _
& "Ban muon xoa thong tin ve khach hang nay ?", vbCritical + vbYesNo) = vbYes Then
RS.Delete adAffectCurrent
RS.Requery
ShowRS
cmdBoqua_Click
Add_cboXem
Else
Exit Sub
End If
End Sub
Private Sub Add_cboXem()
Dim RS_Xem As New ADODB.Recordset
cboXem.Clear
cboXem.AddItem "Xem nhanh theo m· KH"
str = "SELECT MaKH FROM KhachHang ORDER BY MaKH"
RS_Xem.Open str, Conn
Do While Not RS_Xem.EOF
cboXem.AddItem RS_Xem("MaKH")
RS_Xem.MoveNext
Loop
RS_Xem.Close
Set RS_Xem = Nothing
cboXem.ListIndex = 0
End Sub
Private Sub Form_Load()
Mode = "Show"
'Connect
str = "SELECT * FROM KhachHang ORDER BY MaKH"
RS.Open str, Conn, adOpenDynamic, adLockOptimistic
If Not (RS.EOF Or RS.BOF) Then ShowRS
Add_cboXem
End Sub
Private Sub Form_Unload(Cancel As Integer)
On Error Resume Next
RS.Close
Set RS = Nothing
Set RS_Temp = Nothing
End Sub
FRMSANPHAM
Option Explicit
Dim RS_Temp As New ADODB.Recordset
Dim StrTemp As String
Dim i As Integer
Private Sub ShowRS()
Text1(0) = RS("MaSP")
Text1(1) = RS("TenSP")
Text1(2) = RS("LuongTon")
Text1(3) = RS("KhoSP")
Text1(4) = RS("GhiChuSP")
End Sub
Private Function TestRS() As Boolean
RS.MoveNext
If RS.EOF Then
cmdTien.Enabled = False
Else
cmdTien.Enabled = True
End If
RS.MovePrevious
RS.MovePrevious
If RS.BOF Then
cmdLui.Enabled = False
Else
cmdLui.Enabled = True
End If
RS.MoveNext
If (RS.BOF Or RS.EOF) Then
TestRS = False
Else
TestRS = True
End If
End Function
Private Sub cboXem_Click()
If Not (RS.EOF And RS.BOF) Then RS.MoveFirst
Do While Not RS.EOF
If RS("MaSP") = cboXem.Text Then
If Not (RS.EOF And RS.BOF) Then If Not (RS.EOF Or RS.BOF) Then ShowRS
Exit Do
Else
RS.MoveNext
End If
Loop
If RS.EOF Then RS.MoveFirst
TestRS
End Sub
Private Sub cmdBoqua_Click()
Mode = "Show"
cboXem.Enabled = True
cmdLui.Enabled = True
cmdTien.Enabled = True
cmdThem.Enabled = True
cmdSua.Enabled = True
cmdXoa.Enabled = True
cmdLuu.Enabled = False
cmdBoqua.Enabled = False
Text1(0).Enabled = True
If Not (RS.EOF And RS.BOF) Then
RS.Requery
ShowRS
End If
End Sub
Private Sub cmdLui_Click()
If Not RS.BOF Then RS.MovePrevious
If TestRS False Then ShowRS
End Sub
Private Function Check() As Boolean
Dim RS_Tmp As New ADODB.Recordset
If Trim(Text1(0)) = "" Then
MsgBox "Chua nhap ma san pham !", vbCritical, "Quan ly ban hang"
Text1(0).SetFocus
Check = False
Exit Function
End If
StrTemp = "SELECT * FROM DanhMucSanPham WHERE MaSP =""" & Text1(0) & """"
If Mode = "Add" Then
RS_Tmp.Open StrTemp, Conn
If Not (RS_Tmp.EOF And RS_Tmp.BOF) Then
MsgBox "Ma san pham da ton tai !", vbCritical, "Quan ly ban hang"
Text1(0).SetFocus
Check = False
Exit Function
End If
RS_Tmp.Close
End If
Check = True
End Function
Private Sub cmdLuu_Click()
On Error GoTo Err1
If Check = True Then
'Khach hang
StrTemp = "SELECT * FROM DanhMucSanPham WHERE MaSP = """ & Text1(0) & """"
RS_Temp.Open StrTemp, Conn, adOpenDynamic, adLockOptimistic
For i = 1 To 4
If Len(Text1(i)) = 0 Then
Text1(i) = "N/A"
End If
Next
If Mode = "Add" Then
RS_Temp.AddNew
RS_Temp("MaSP") = Text1(0)
End If
RS_Temp("TenSP") = Text1(1)
RS_Temp("LuongTon") = Text1(2)
RS_Temp("KhoSP") = Text1(3)
RS_Temp("GhiChuSP") = Text1(4)
RS_Temp.Update
RS_Temp.Close
cmdBoqua_Click
Add_cboXem
MsgBox "Cap nhat thanh cong !", vbInformation, "Quan ly ban hang"
End If
Err1:
If Len(Err.Description) 0 Then MsgBox Err.Description, vbCritical, "Quan ly ban hang"
End Sub
Private Sub cmdSua_Click()
Dim Temp1, Temp2 As String
Mode = "Edit"
cboXem.Enabled = False
cmdLui.Enabled = False
cmdTien.Enabled = False
cmdThem.Enabled = False
cmdSua.Enabled = False
cmdXoa.Enabled = False
cmdLuu.Enabled = True
cmdBoqua.Enabled = True
Text1(0).Enabled = False
For i = 1 To 4
Text1(i).Locked = False
Next
Text1(1).SetFocus
End Sub
Private Sub cmdThem_Click()
Mode = "Add"
cboXem.Enabled = False
cmdLui.Enabled = False
cmdTien.Enabled = False
cmdThem.Enabled = False
cmdSua.Enabled = False
cmdXoa.Enabled = False
cmdLuu.Enabled = True
cmdBoqua.Enabled = True
For i = 0 To 4
Text1(i).Locked = False
Text1(i) = ""
Next
Text1(0).SetFocus
End Sub
Private Sub cmdThoat_Click()
Unload Me
End Sub
Private Sub cmdTien_Click()
If Not RS.EOF Then RS.MoveNext
If TestRS False Then ShowRS
End Sub
Private Sub cmdXoa_Click()
If (RS.EOF And RS.BOF) Then
MsgBox "Co so du lieu rong !", vbCritical
Exit Sub
End If
If MsgBox("Toan bo phieu xuat va phieu tra cua san pham nay se bi xoa." & Chr(13) _
& "Ban muon xoa thong tin ve san pham nay ?", vbCritical + vbYesNo) = vbYes Then
RS.Delete adAffectCurrent
RS.Requery
ShowRS
cmdBoqua_Click
Add_cboXem
Else
Exit Sub
End If
End Sub
Private Sub Add_cboXem()
Dim RS_Xem As New ADODB.Recordset
cboXem.Clear
cboXem.AddItem "Xem nhanh theo m· s¶n phÈm"
str = "SELECT MaSP FROM DanhMucSanPham ORDER BY MaSP"
RS_Xem.Open str, Conn
Do While Not RS_Xem.EOF
cboXem.AddItem RS_Xem("MaSP")
RS_Xem.MoveNext
Loop
RS_Xem.Close
Set RS_Xem = Nothing
cboXem.ListIndex = 0
End Sub
Private Sub Form_Load()
Mode = "Show"
'Connect
str = "SELECT * FROM DanhMucSanPham ORDER BY MaSP"
RS.Open str, Conn, adOpenDynamic, adLockOptimistic
If Not (RS.EOF Or RS.BOF) Then ShowRS
Add_cboXem
End Sub
Private Sub Form_Unload(Cancel As Integer)
On Error Resume Next
RS.Close
Set RS = Nothing
Set RS_Temp = Nothing
End Sub
FRM_TIMKIEM
Option Explicit
Dim RS_Temp As New ADODB.Recordset
Dim StrTemp As String
Private Sub DiSPlayResult(str As String)
Text2 = str
End Sub
Private Sub cmdKT_Click()
Unload Me
End Sub
Private Sub cmdTimKH_Click()
Dim KH, StrResult As String
KH = "%" & Trim(Text1(2)) & "%"
StrResult = " KÕt qu¶ t×m kiÕm" & vbCrLf
StrResult = StrResult & " ---------------------------------------------------------------------------------------------------------------------------" & vbCrLf
StrTemp = "SELECT * FROM KhachHang WHERE TenKH LIKE """ & KH & """"
RS_Temp.Open StrTemp, Conn, adOpenDynamic, adLockOptimistic
If Not (RS_Temp.EOF And RS_Temp.BOF) Then
Do While Not RS_Temp.EOF
StrResult = StrResult & " M· kh¸ch hµng: " & RS_Temp("MaKH") & vbCrLf
StrResult = StrResult & " Tªn kh¸ch hµng: " & RS_Temp("TenKH") & vbCrLf
StrResult = StrResult & " M· sè thuÕ: " & RS_Temp("MaSoThue") & vbCrLf
StrResult = StrResult & " §Þa chØ: " & RS_Temp("DiaChi") & vbCrLf
StrResult = StrResult & " §iÖn tho¹i: " & RS_Temp("DienThoai") & vbCrLf
StrResult = StrResult & " Fax: " & RS_Temp("Fax") & vbCrLf
StrResult = StrResult & " Tµi kho¶n: " & RS_Temp("TK") & vbCrLf
StrResult = StrResult & " Ng©n hµng: " & RS_Temp("NganHang") & vbCrLf & vbCrLf
StrResult = StrResult & " ---------------------------------------------------------------------------------------------------------------------------" & vbCrLf
RS_Temp.MoveNext
Loop
Else
StrResult = StrResult & " Kh«ng t×m thÊy !"
End If
RS_Temp.Close
DiSPlayResult (StrResult)
End Sub
Private Sub cmdTimLK_Click()
Dim LK, StrResult As String
LK = "%" & Trim(Text1(3)) & "%"
StrResult = " KÕt qu¶ t×m kiÕm" & vbCrLf
StrResult = StrResult & " ---------------------------------------------------------------------------------------------------------------------------" & vbCrLf
StrTemp = "SELECT * FROM DanhMucLinhKien WHERE TenLK LIKE """ & LK & """"
RS_Temp.Open StrTemp, Conn, adOpenDynamic, adLockOptimistic
If Not (RS_Temp.EOF And RS_Temp.BOF) Then
Do While Not RS_Temp.EOF
StrResult = StrResult & " M· linh kiÖn: " & RS_Temp("MaLK") & vbCrLf
StrResult = StrResult & " Tªn linh kiÖn: " & RS_Temp("TenLK") & vbCrLf
StrResult = StrResult & " Lîng tån: " & RS_Temp("Ton") & vbCrLf
StrResult = StrResult & " Kho: " & RS_Temp("KhoLK") & vbCrLf
StrResult = StrResult & " Ghi chó: " & RS_Temp("GhiChuLK") & vbCrLf & vbCrLf
StrResult = StrResult & " ---------------------------------------------------------------------------------------------------------------------------" & vbCrLf
RS_Temp.MoveNext
Loop
Else
StrResult = StrResult & " Kh«ng t×m thÊy !"
End If
RS_Temp.Close
DiSPlayResult (StrResult)
End Sub
Private Sub cmdTimNCC_Click()
Dim NCC, StrResult As String
NCC = "%" & Trim(Text1(1)) & "%"
StrResult = " KÕt qu¶ t×m kiÕm" & vbCrLf
StrResult = StrResult & " ---------------------------------------------------------------------------------------------------------------------------" & vbCrLf
StrTemp = "SELECT * FROM NhaCungCap WHERE TenNCC LIKE """ & NCC & """"
RS_Temp.Open StrTemp, Conn, adOpenDynamic, adLockOptimistic
If Not (RS_Temp.EOF And RS_Temp.BOF) Then
Do While Not RS_Temp.EOF
StrResult = StrResult & " M· NCC: " & RS_Temp("MaNCC") & vbCrLf
StrResult = StrResult & " Tªn NCC: " & RS_Temp("TenNCC") & vbCrLf
StrResult = StrResult & " §Þa chØ: " & RS_Temp("DiaChi") & vbCrLf
StrResult = StrResult & " §iÖn tho¹i: " & RS_Temp("DienThoai") & vbCrLf
StrResult = StrResult & " Fax: " & RS_Temp("Fax") & vbCrLf
StrResult = StrResult & " Tµi kho¶n: " & RS_Temp("TaiKhoan") & vbCrLf
StrResult = StrResult & " Ng©n hµng: " & RS_Temp("NganHang") & vbCrLf & vbCrLf
StrResult = StrResult & " ---------------------------------------------------------------------------------------------------------------------------" & vbCrLf
RS_Temp.MoveNext
Loop
Else
StrResult = StrResult & " Kh«ng t×m thÊy !"
End If
RS_Temp.Close
DiSPlayResult (StrResult)
End Sub
Private Sub cmdTimSP_Click()
Dim SP, StrResult As String
SP = "%" & Trim(Text1(0)) & "%"
StrResult = " KÕt qu¶ t×m kiÕm" & vbCrLf
StrResult = StrResult & " ---------------------------------------------------------------------------------------------------------------------------" & vbCrLf
StrTemp = "SELECT * FROM DanhMucSanPham WHERE TenSP LIKE """ & SP & """"
RS_Temp.Open StrTemp, Conn, adOpenDynamic, adLockOptimistic
If Not (RS_Temp.EOF And RS_Temp.BOF) Then
Do While Not RS_Temp.EOF
StrResult = StrResult & " M· s¶n phÈm: " & RS_Temp("MaSP") & vbCrLf
StrResult = StrResult & " Tªn s¶n phÈm: " & RS_Temp("TenSP") & vbCrLf
StrResult = StrResult & " Lîng tån: " & RS_Temp("LuongTon") & vbCrLf
StrResult = StrResult & " Kho: " & RS_Temp("KhoSP") & vbCrLf
StrResult = StrResult & " Ghi chó: " & RS_Temp("GhiChuSP") & vbCrLf & vbCrLf
StrResult = StrResult & " ---------------------------------------------------------------------------------------------------------------------------" & vbCrLf
RS_Temp.MoveNext
Loop
Else
StrResult = StrResult & " Kh«ng t×m thÊy !"
End If
RS_Temp.Close
DiSPlayResult (StrResult)
End Sub
Private Sub Form_Load()
'Connect
End Sub
Private Sub Text1_Click(Index As Integer)
Text1(Index).SelStart = 0
Text1(Index).SelLength = Len(Text1(Index))
End Sub
Các file đính kèm theo tài liệu này:
- P0096.doc