LUẬN VĂN:
Xây dựng phần mềm quản lý bỏn hàng
tại trung tõm thương mại NC-TH
Lời mở đầu
Sự ra đời và phát triển của công nghệ thông tin là một trong những thành quả vĩ
đại nhất của con người. Nhịp độ phát triển của công nghệ thông tin đang là vấn đề rất
được các ngành khoa học giáo dục kinh tế… quan tâm. Nó hiện hữu với một tầm vóc
hết sức mạnh mẽ to lớn và ngày đang một lớn mạnh thêm.
Ngày nay những thành tự, những đổi mới trong công nghệ, trong quản lý kinh
doanh, trong lĩnh vực giáo dục… đều có sự góp phần quan trọng của tin học. Vai trũ của
tin học rất to lớn, đa dạng vô tận… bởi vậy khi loài người đang bước vào thời kỳ công
nghiệp hoá, hiện dại hoá, tin học đó thực sự trở thành một ngành khoa học công nghệ
mũi nhọn.
Trong hoạt động sản xuất kinh doanh như hiện nay, việc tin hoc hoá các hoạt động
mua bán hàng hoá là rất cần thiết. Một doanh nghiệp muốn phát triển khả năng tiếp cận
thông tin, thị trường, … và khả năng đáp ứng nhu cầu của khách hàng cũng như của đối
tác một cách hiệu quả nhất thỡ không thể thiếu một hệ thống thông tin hỗ trợ.
Việc ứng dụng vào các lĩnh vực làm sao để đạt được một cách có hiệu quả, sự lựa
chọn và vận dụng những phần mềm sao cho phù hợp và đạt được kết quả tốt là câu hỏi
luôn đặt ra đối với các nhà quản lý. Ngày nay các phần mềm cơ bản đó được ứng dụng
và phát triển rộng rói trong hầu hết mọi doanh nghiệp. Thế nhưng yêu cầu của người sử
dụng phần mềm ngày càng đa dạng và nhiều tính năng hơn. Do dó yêu cầu người làm
phần mềm phải đáp ứng được các yêu cầu trên.
Cũng nhằm mục đích nói trên mà đề tài “Xõy dựng phần mềm quản lý bỏn hàng
tại trung tõm thương mại NC-TH” ra đời.
A. Giới thiệu chung về đề tài lựa chọn
1. Tên đề tài
Xõy dựng phần mềm quản lý bỏn hàng cho trung tõm thương mại NC-HT thuộc
tập đoàn Hitech
2. Lý do chọn đề tài
Trong môi trường kinh doanh cạnh tranh ngày nay để đảm bảo một doanh nghiệp
luôn đứng vững thỡ tất yếu doanh nghiệp đó phải có một chiến lược quản lý phự hợp.
Đối với lĩnh vực quản lý nói chung và quản lý kinh doanh của một doanh nghiệp núi
riờng, việc xử lý các thông tin nhận được là một vấn đề không đơn giản vỡ lượng thông
tin ngày càng lớn và thường xuyên thay đổi, nó luôn là một bài toán hết sức phức tạp,
nhất là trong việc tổ chức sắp xếp dữ liệu sao cho phù hợp đồng thời tỡm ra những
phương pháp tính toán tối ưu nhất ….Tuy nhiên sự ra đời của máy vi tính cùng với sự
phát triển của công nghệ thông tin đó đưa tới một giải pháp hiệu quả để giải quyết các
vấn đề một cách trên nhanh chóng và hiệu quả. Đó là giải pháp sử dụng các phần mềm
để quản lý cỏc hoạt động kinh doanh của doanh nghiệp.
Đối với trung tâm thương mại, đứng trước sự phát triển mạnh mẽ của nền kinh tế
họ cũng lựa chọn công cụ tin học hoá các bộ phận quản lý nhằm mục đích thúc đẩy việc
kinh doanh của mỡnh đồng thời giảm chi phí và thời gian một cách tối uư nhất trong
quản lý. Mục tiờu để các nhà quản lý lựa chọn để tiến hành công tác tin học hoá đầu tiên
là bộ phận quản lý bỏn hàng. Bời vỡ, hiện nay số lượng hoá đơn cần phải xử lý trong
một ngày tăng lên rất nhiều và đồng thời yêu cầu về các báo cáo doanh thu, hàng tồn
kho, khách hàng, nhà cung cấp…phải được một cách thường xuyên liên tục nên phương
pháp quản lý bằng thủ cụng khụng cũn phự hợp nữa.
Nắm bắt được thực tế của trung tâm nên em lựa chọn đề tài viết phần mềm quản
lý bỏn hàng nhằm giỳp trung tõm cú thể quản lý dễ dàng và hiệu quả hơn nghiệp vụ bán
hàng của mỡnh.
3. Mục tiêu của đề tài
Chuyên nghiệp hoá các hoạt động liên quan đến bán hàng, giảm thiểu thời gian
tỡm kiếm thụng tin về đối tác, khách hàng, về các hoạt động vật tư, thông tin về hàng
tồn kho …
Đơn giản hoá các chứng từ: Các chứng từ đều được hoàn thành theo mẫu,
việc cập nhật các chứng từ đơn giản và tốn ít thời gian.
Đáp ứng nhu cầu quản lý của các cơ quan liên quan một cách nhanh chóng và
chính xác như các báo cáo về việc nhập và xuất hàng hoá…
Đáp ứng được nhu cầu ứng dụng những thành tựu của quá trỡnh phỏt triển
khoa học cụng nghệ vào quản lý.
4. Công cụ nghiên cứu và thực hiện đề tài
4.1. Hệ quản trị cơ sở dữ liệu Microsoft access 2003
Để tạo lập cơ sở dữ liệu ta sử dụng hệ quản trị cơ sở dữ liệu Microsoft Access
2003, hệ quản trị cơ sở dữ liệu này phổ biến, rất thân thiện với người sử dụng, dễ sử
dụng và nó có độ tương thích cao với ngôn ngữ lập trỡnh Visual Basic 6.0.
4.2. Ngụn ngữ lập trỡnh Visual Basic 6.0
Để viết Code của chương trỡnh em lựa chọn ngụn ngữ Visual Basic 6.0. Đây là
một ngôn ngữ lập trỡnh hướng sự kiện và cho phép lập trỡnh hướng đối tượng để xây
dựng chương trỡnh trong mụi trường Windows.Hơn nữa Visual Basic 6.0 là ngôn ngữ
lập trỡnh với tớnh trực quan cao: việc sử dụng công cụ Toolbox để thiết kế giúp người
lập trỡnh thiết kế một cỏch dễ dàng.
Visual Basic cung cấp nhiều công cụ để cho phép kết nối và khai thác dữ
liệu ở nhiều hệ quản trị cơ sở dữ liệu khác nhau. Ngoài ra ngôn ngữ lập trỡnh này cú
chế độ bảo mật an toàn dữ liệu khá tốt, dễ sử dụng và được sử dụng rất phổ biến trong
thông tin quản lý.
4.3. Công cụ làm báo cáo Crystal Report
Khi xây dựng một chương trỡnh với mục đích ứng dụng thực tiễn thỡ kết quả
cuối cựng là dữ liệu phải được kết xuất và có thể xuất ra các thiết bị như máy in hay các
chương trỡnh hỗ trợ khỏc cho phộp người dùng in hay trích dữ liệu sang các chương
trỡnh tương thích khác.
Crystal Report là một công cụ chuẩn cho phép thiết kế các báo cáo trên
ứng dụng Visual Basic. Ngoài ra có thể tạo báo cáo trên ứng dụng và Web, sau đó thiết
lập như một dịch vụ trên trỡnh chủ tệp tin dạng Crystal Report cú tờn mở rộng “.rpt”.
Để tạo báo cáo bằng Crystal Report trong Visual Basic chúng ta sẽ kết nối với cơ sở dữ
liệu, có thể là Microsoft Access hay SQL Server 2000. Trong phần mềm này sẽ sử dụng
hệ quản trị cơ sở dữ liệu Microsoft Access 2003.
B. Nội dung
1. Nội dung bài toỏn quản lý bỏn hàng
Trung tâm thương mại NC-HT những năm gần đây phát triển rất mạnh, quy mô
ngày càng được mở rộng và doanh thu liên tục tăng. Vỡ thế việc quản lý bỏn hàng gặp
rất nhiều khú khăn và việc quản lý thủ công không thể đáp ứng nhu cầu của các nhà
quản lý cấp trờn.Hoạt động quản lý bán hàng của trung tâm như sau:
Khi khỏch hàng cú nhu cầu về hàng hoỏ thỡ bộ phận tiếp nhận yờu cầu mua
hàng, khách hàng có thể mua hàng tại trung tâm hoặc gọi điện để đặt hàng. Sau đó phiếu
mua hàng của khách hàng sẽ được gửi đến phũng vật tư.
Phũng vật tư thông báo đến bộ phận quản lý kho, thủ kho tiến hành kiểm tra
trong kho nếu cũn hàng sẽ xuất hàng cho bộ phận chuyển hàng cho khách hàng. Ngược
lại nếu trong kho không cũn đủ hàng thỡ phũng vật tư đơn hàng cần mua đến nhà cung
cấp và nhập hàng vào kho.
Để thực hiện việc quản lý của mỡnh cú theo dừi cỏc bảng danh mục sau
đây:
o Danh mục hàng hoá
o Danh mục khách hàng
o Danh mục nhà cung cấp
o Danh mục nhân viên
Việc mua bán tại trung tâm luôn được thanh toán ngay nên không có công nợ,
trên một hoá đơn có thể bán nhiều mặt hàng, tỷ lệ thuế cho các mặt hàng bán ra và mua
vào là 10%.Khách hàng được hưởng chiết khấu trực tiếp trên hoá đơn theo quy định
sau:
o Nếu tổng giá trị hoá đơn từ 1 triệu đến 3 triệu thỡ chiết khấu 5%
o Nếu trờn 3 triệu thỡ chiết khấu 8%
Định kỳ hay bất thường có thể lên báo cáo sau:
o Báo cáo tổng hợp hàng nhập trong một khoảng thời gian xác định
o Báo cáo hàng bán trong một khoảng thời gian xác định
o Báo cáo tổng hợp tồn kho
o Báo cáo tổng hợp hàng bán theo khách hàng
o Báo cáo tổng hợp hàng mua theo nhà cung cấp
2. Phân tích nghiệp vụ
2.1. Quy trỡnh mua hàng
Hàng nội địa
o Mục đích: Quy trỡnh nhập khẩu cung cấp một quỏ trỡnh thống nhất
trong lĩnh vực nhập khẩu hàng, tạo điều kiện cho ban tài chính kế toán, phũng vật tư và
các đơn vị có một quy trỡnh thống nhất, hiệu quả chuẩn hoỏ khi cú nhu cầu đặt hàng
nhập khẩu
o Lưu đồ
Nhận yêu cầu mua
Kiểm tra hàng trong kho
Đánh giá nhà cung cấp
Không
Vật tư hàng hóa trong kho có giá trị
Lựa chọn nhà cung ứng
Chọn
Đàm phán ký kết hợp đồng
Thực hiện hợp đồng
Nhập kho hàng hóa
Thông báo cho người sử dụng
Lưu HS
Hàng nhập khẩu
o Mục đích : Quy trỡnh nhập khẩu cung cấp một quỏ trỡnh thống nhất
trong lĩnh vực nhập khẩu hàng, tạo điều kiện cho ban tài chính kế toán, phũng vật tư và
các đơn vị có một quy trỡnh thống nhất, hiệu quả chuẩn hoá khi có nhu cầu đặt hàng
nhập khẩu
o Lưu đồ
Đề nghị đặt hàng
Xét duyệt
Không duyệt
Duyệt
Đặt hàng
Thanh toán
Thông báo cho nhà cung cấp chuyển hàng
Nhận HS từ nhà cung cấp và người vận
Nhận hàng tại cảng
Kiểm tra hàng hoá
Nhập kho hoàn thiện hồ sơ nhập khẩu
Lưu HS
T
2.2. Quy trỡnh quản lý kho
Mục đích: Quản lý sản phẩm từ lúc nhận hàng vào kho cho đến khi hàng
được xuất kho.
Yêu cầu nhập
Không đạt
Kiểm tra
Đạt
Nhận sản phẩm nhập kho
Dán mó hiệu
Bảo quản
Không đạt
KT trước khi xuất kho
Đạt
Lưu đồ
Xuất sản phẩm
Lưu HS
2.3. Quy trỡnh triển khai bỏn hàng
Được thực hiện như sau:
Nhận yêu cầu triển khai bán hàng cho khách hàng
Khi tiếp nhận yêu cầu mua hàng, bộ phận triển khai thu thập đầy đủ chính xác
thông tin về nhu cầu mua hàng của khách hàng, thông tin về khách hàng, địa chỉ của
khách hàng
Giao hàng cho khách hàng
Cán bộ triển khai phải thống nhất với khách hàng về thời gian, người liên hệ và
địa điểm bàn giao hàng sau đó đóng gói hàng hoá chuyển tới địa chỉ của khách hàng
Tại nơi giao hàng nhân viên giao hàng hoá cho khách hàng .Nhân viên giao hàng
phải có trách nhiệm xin ý kiến đóng ghóp của khách hàng.
Nếu khách hàng có vướng mắc về sản phẩm, không chấp nhận, nhân viên giao
hàng phải xin xác nhận của khách hàng và thông báo ngay cho trưởng phũng quản lý
bỏn hàng và bàn giao cỏc giấy tờ liờn quan để kịp thời xử lý.
áo cáo và lưu hồ sơ
Sau khi hoàn tất viêc giao hàng, nhân viên giao hàng nộp hồ sơ giao hàng cho
cán bộ quản lý hồ sơ để kiểm tra và lưu trữ.
3. Phân tích yêu cầu người sử dụng
3.1. Yêu cầu chung
Trên các Form nhập dữ liệu phải được bố trí thuận tiện, dễ sử dụng. Đây là một
yêu cầu mang tính trừu tượng bởi lẽ mức độ thuận tiện, dễ sử dụng phụ thuộc vào cách
đánh giá khác nhau của từng người sử dụng. Tuy nhiên việc thiết kế giao diện phải đảm
bảo một số yêu cầu sau:
o Màu sắc trên from phải hài hoà không có quá nhiều màu sắc song cũng
cần phải làm nổi bật một số trường quan trọng như mó hàng, mó khỏch hàng, mó nhà
cung cấp…
o Dùng phím Tab để thay đổi vị trí trường nhập theo một thứ tự từ trên
xuống dưới, từ trái qua phải hay thay đổi từ form chính sang form con.
o Hiển thị các thực đơn cùng với hướng dẫn sử dụng phím tắt…
Trên các Form phải sử dụng các từ ngữ dễ hiểu, thân thiện với người sử dụng.
Giảm thiểu tối đa việc nhập liệu bằng tay và nên sử dụng các Combo Box
để người sử dụng chọn các giá trị chuẩn có sẵn. Điều này sẽ giúp người sử dụng
tiết kiệm thời gian và tăng độ chính xác của thông tin.
Dựa vào các quy tắc đó được chấp nhận về đồ hoạ để minh họa thông tin trên
màn hỡnh giao diện: vớ dụ dựng biểu tượng máy in để mô tả nút có chức năng in văn
bản, sử dụng biểu tượng của đĩa mềm để mô tả chức năng lưu văn bản,…
Phải có dấu hiệu cho biết người sử dụng đang thao tác với thực đơn nào: ví dụ
khi người sử dụng đang nhập danh mục hàng hoỏ thỡ trờn thanh tiờu đề của form phải
hiển thị chữ Danh mục hàng hoá…
Khi người sử dụng tiến hành một số thao tác làm thay đổi dữ liệu hệ thống cần
phải có câu hỏi xác nhận nhằm tránh những mất mát đáng tiếc có thể xảy ra: ví dụ khi
người sử dụng ấn vào nút xoá hoá đơn chương trỡnh phải hiện một Message box xỏc
nhận lại xem cú muốn xoỏ thật khụng.
Các phím nóng phải được sử dụng thống nhất trong toàn hệ thống, tiện lợi cho
người sử dụng
3.2. Yêu cầu đối với nghiệp vụ nhập hàng
Phiếu nhập hàng phải hiển thị đầy đủ các trường: Số hiệu phiếu nhập, mó nhà
cung cấp, mó hàng hoỏ nhập, tờn hàng hoỏ đơn vị tính, số lượng nhập…
Khi nhân viên nhấn nút lưu phiếu nhập hàng thỡ chương trỡnh phải tự động cập
nhật số liệu liên quan đến hàng hoá vừa nhập vào bảng danh mục hàng hoá.
3.3. Yêu cầu đối với nghiệp vụ xuất hàng
Phiếu xuất hàng phải hiển thị đầy đủ thông tin cần thiết về số hiệu phiếu xuất,
ngày xuất, mó hàng hoỏ, đơn vị tính, số lượng…
Khi nhân viên lưu phiếu xuất thỡ dữ liệu tồn kho phải được cập nhật.
3.4. Yêu cầu đối với nghiệp vụ lập báo cáo
Do là một trung tâm thương mại cung cấp nhiều loại mặt hàng cho khách hàng
nên trung tâm thương mại phải lên nhiều loại báo cáo như: báo cáo hàng nhập theo thời
gian, báo cáo hàng xuất theo thời gian, báo cáo doanh thu theo khách hàng, báo cáo chi
phí theo nhà cung cấp, báo cáo kết quả kinh doanh…
Phải thiết kế cỏc form cú giao diện phự hợp với từng loại bỏo cỏo theo yờu cầu
của từng cấp quản lý.
Sử dụng công cụ làm báo cáo Crystal Report để làm các báo cáo này. Các báo
cáo phải hiển thị đầy đủ thông tin cần thiết theo từng loại báo cáo.
3.5. Các yêu cầu khác
Yêu cầu về bảo mật và an toàn dữ liệu: Chương trỡnh phải đảm bảo tương đối
tốt về bảo mật và an toàn dữ liệu, có thể khôi phục dữ liệu đầy đủ và tin cậy.
Yêu cầu về tính mở: Hệ thống phải dễ dàng mở rộng và nâng cấp trong tương
lai.
Yêu cầu về tính hiệu quả: Hệ thống cần tối ưu hoá năng lực xử lý thụng tin, cú
cỏc cụng cụ tỡm kiếm nhanh và hợp lý.
4. Phõn tớch hệ thống thụng tin quản lý bỏn hàng tại trung tõm thương mại
NC-HT
4.1. Sơ đồ chức năng kinh doanh của trung tâm thương mại
Quản lý bán hàng
Bán hàng
Quản lý mua
Quản lý kho hàng
Mua nội địa
Nhập khẩu
Yêu cầu nhập kho
Nhân đơn đặt
Nhận yêu cầu
Yêu cầu mua hàng
KT sản phẩm nhập kho
Xử lý đơn
Đặt hàng
Nhập kho
Chọn NCC
Lập hoá đơn bán
Ký kết đơn
Thanh toán
Dán mó hiệu sản phẩm
Làm thủ tục thu tiền
Bảo quản sản phẩm
Thanh toán
Nhận hàng tại
Giao hàng
Kiểm tra sản phẩm xuất kho
Lập báo cáo
Kiểm tra hàng
Lập báo cáo
Xuất kho
Lập báo cáo
Lập báo cáo
4.2. Sơ đồ luồng dữ liệu DFD
4.2.1. Sơ đồ ngữ cảnh
Đơn đặt hàng
Báo cáo
Khách hàng
Lónh đạo
Yêu cầu mua hàng
Đơn đặt hàng
Phũng vật tư
TT xuất nhập
Nhà cung cấp
Phần mềm quản lý bỏn hàng
Thủ kho
Yêu cầu giao hàng
Khách hàng
Phiếu nhận hàng
Bộ phận giao hàng
4.2.2. Sơ đồ DFD mức 0 của cỏc nghiệp vụ quản lý bỏn hàng
Phiếu Yc mua hàng
Đơn đạt hàng
ĐH đó duyệt
P.Vt ư
1.0 Xử lý đơn hàng
2.0 Kiểm tra tồn
Khách hàng
Đơn hàng
Hồ sơ đơn hàng
phiếu yc mua hàng đó duyệt
Phiếu xuất
5.0 Giao hàng
P.Trỉên khai
4.0 Vào sổ xnhập
YC Giao hàng
DS hàng đạt yêu cầu
Phiếu giao nhận HH
Hoá đơn
3.0 Xử lý mua hàng
Hồ sơ kho hàng
Khách hàng
Phiếu thu
6.0 Xử lý tiền thu
Báo cáo tồn kho
7.0 Làm báo cáo
Sổ sách kế toán
Lónh đạo
Báo cáo tổng hợp
4.3. Các bảng dữ liệu đầu vào
Bảng danh mục hàng hoá
STT Tên trường Kiểu dữ liệu Độ rộng Giải thích
1 MaHH Text Mó hàng hoỏ 10
2 TenHH Text Tên hàng hóa 50
3 DVT Text Đơn vị tính 10
4 GiaBan Number Giá bán
5 GiaNhap Number Giá nhập
6 XuatXu Text 50 Xuất xứ
7 TonKho Number Tồn kho
8 HanSuDung Date/time Hạn sử dụng
Bảng danh mục khách hàng
STT Tên trường Kiểu dữ liệu Độ rộng Giải thích
Mó khỏch hàng 1 MaKH Text 10
Tên khách hàng 2 TenKH Text 50
Điạ chỉ 3 DiaChi Text 10
Số điện thoại 4 DT Text 10
Ghi chú 5 GhiChu Text 50
Bảng danh mục nhà cung cấp
STT Tên trường Kiểu dữ liệu Độ rộng Giải thích
1 MaNCC Text Mó nhà cung cấp 10
2 TenNCC Text Tên nhà cung cấp 50
3 DiaChi Text Điạ chỉ 10
4 DT Text Số điện thoại 10
5 GhiChu Text Ghi chú 50
Bảng nhân viên
STT Tên trường Kiểu dữ liệu Độ rộng Giải thích
1 MaNV Text Mó nhõn viờn 10
2 TenNV Text Tên nhân vien 50
3 DiaChi Text Điạ chỉ 10
4 QueQuan Text Quê quán 50
5 MucLuong Number Mức lương
DT Text Số điện thoại 10
Bảng hoá đơn nhập hàng
STT Tên trường Kiểu dữ liệu Độ rộng Giải thích
1 SoHHDN Text 10 Số hiệu hoá đơn
2 MaNCC Text 10 Mó khỏch hàng
3 MaNV Text 10 Mó nhõn viờn
4 NgayMua Date/time 10 Ngày bán
Bảng hoá đơn bán hàng
STT Tên trường Kiểu dữ liệu Độ rộng Giải thích
1 SoHHDB Text 10 Số hiệu hoá đơn
2 MaKH Text 10 Mó khỏch hàng
3 MaNV Text 10 Mó nhõn viờn
4 NgayBan Date/time 10 Ngày bán
5 ChietKhau Text 50 Tỷ lệ chiết khấu
Bảng chi tiết bán hàng
STT Tên trường Kiểu dữ liệu Độ rộng Giải thích
1 SoHHDB Text 10 Số hiệu hoá đơn
2 MaHH Text 10 Mó hàng hoỏ
3 SoLuong Text 10 Số lượng
Bảng chi tiết hàng nhập
STT Tên trường Kiểu dữ liệu Độ rộng Giải thích
1 SoHHDN Text 10 Số hiệu hoá đơn
2 MaHH Text 10 Mó hàng hoỏ
3 SoLuong Text 10 Số lượng
Mối quan hệ giữa các bảng
4.4. Các thuật toán
4.4.1. Giải thuật đăng nhập chương trỡnh
Bắt đầu
N=0
Nhập tên và mật khẩu
N=N+1
F
N<=3
T
T
Đăng nhập hệ thống
Kiểm tra thông tin
Thông báo lỗi
Thực hiện chương trỡnh
T
Đăng nhập lại
F
Kết thúc
4.4.2. Giải thuật sửa dữ liệu
Bắt đầu
Mở Form cần sửa
Tỡm bản ghi cần sửa
F
Hiện thông báo
Có tồn tại bản ghi này
T
Hiện bản ghi cần sửa
Tiến hành sửa dữ liệu của bản ghi
Lưu bản ghi
T
Có tiếp tục sửa không?
F
Đóng Form sau khi sửa
Kết thúc
Bắt đầu
Nhập thông tin cần tỡm kiếm
F
Hiện thông báo
Kiểm tra có bản ghi nào thoả món
T
Hiển thị bản ghi tỡm thấy
Có tiếp tục không?
T
F
Đóng Form
Kết thúc
4.4.3. Giải thuật tỡm kiếm thụng tin theo từ hoặc cụm từ
Các giao diện chương trỡnh
Một số đoạn code chương trỡnh
1. Code form danh mục khách hàng
Private Sub KhongChoUpDate()
GrdKH.AllowUpdate = False
txtMakh.Locked = True
txtTenkhachhang.Locked = True
txtDiachi.Locked = True
txtDienthoai.Locked = True
txtGhichu.Locked = True
End Sub
Private Sub ChoPhepUpDate()
GrdKH.AllowUpdate = True
txtMakh.Locked = False
txtTenkhachhang.Locked = False
txtDiachi.Locked = False
txtDienthoai.Locked = False
txtGhichu.Locked = False
End Sub
Private Sub cmdKTTK_Click()
txtGiatri.Text = ""
cbTimtheo.Text = ""
NapAdodcKH
lbSokq.Caption = ""
lbSokq1.Caption = "Số bản ghi:" & AdodcKH.Recordset.RecordCount
KhongChoUpDate
End Sub
Private Sub cmdTim_Click()
Dim str As String
Dim trloi As Integer
If cbTimtheo.Text = "" Then
trloi = MsgBox("Bạn hóy nhập tiêu thức cần tỡm kiếm",
vbOKOnly)
If trloi = vbOK Then
cbTimtheo.SetFocus
Exit Sub
End If
ElseIf txtGiatri.Text = "" Then
trloi = MsgBox("Bạn hóy nhập giá trị cần tỡm kiếm", vbOKOnly)
If trloi = vbOK Then
txtGiatri.SetFocus
Exit Sub
End If
ElseIf cbTimtheo.Text = "Ma KH" Then
str = "MaKH"
ElseIf cbTimtheo.Text = "Ten KH" Then
str = "TenKH"
ElseIf cbTimtheo.Text = "Địa chỉ" Then
str = "DiaChi"
ElseIf cbTimtheo.Text = "Điện thoạii" Then
str = "DT"
ElseIf cbTimtheo.Text = "Ghi chú" Then
str = "GhiChu"
End If
AdodcKH.RecordSource = "SELECT MaKH,TenKH,DiaChi, DT,GhiChu FROM
KhachHang where " & str & "='" & txtGiatri.Text & "' ORDER BY MaKH "
AdodcKH.Refresh
lbSokq.Caption = "Số kết quả:" & AdodcKH.Recordset.RecordCount
lbSokq1.Caption = ""
End Sub
Private Sub Form_Load()
AdodcKH.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
App.Path & "\Database\QuanLyBanHang.mdb;Persist Security Info=False"
NapAdodcKH
lbSokq1.Caption = "Số bản ghi:" & AdodcKH.Recordset.RecordCount
KhongChoUpDate
End Sub
Private Sub NapAdodcKH()
AdodcKH.CommandType = adCmdText
AdodcKH.RecordSource = "SELECT MaKH,TenKH,DiaChi, DT,GhiChu FROM
KhachHang ORDER BY MaKH"
AdodcKH.Refresh
End Sub
Private Sub CmdThem_Click()
Dim Traloi As Integer
Traloi = MsgBox("Bạn muốn thêm bản ghi mớii ?", vbInformation + vbYesNo)
If Traloi = vbNo Then
AdodcKH.Refresh
Exit Sub
Else
AdodcKH.Recordset.AddNew
ChoPhepUpDate
txtMakh.SetFocus
End If
End Sub
Private Sub CmdLuu_Click()
AdodcKH.Recordset.Save
GrdKH.AllowUpdate = False
lbSokq1.Caption = "Số bản ghi:" & AdodcKH.Recordset.RecordCount
End Sub
Private Sub CmdChon_Click()
ChoPhepUpDate
End Sub
Private Sub CmdSua_Click()
Dim Traloi As Integer
Traloi = MsgBox("Bạn muốn sửa bản ghi ?", vbInformation + vbYesNo)
If Traloi = vbNo Then
AdodcKH.Refresh
Exit Sub
Else
GrdKH.AllowUpdate = True
AdodcKH.Recordset.Update
End If
KhongChoUpDate
End Sub
Private Sub CmdXoa_Click()
Dim Traloi As Integer
Traloi = MsgBox("bạn muốn xoá bản ghi này ?", vbInformation + vbYesNo)
If Traloi = vbNo Then
GrdKH.AllowDelete = False
Else
GrdKH.AllowDelete = True
AdodcKH.Recordset.Delete
End If
lbSokq1.Caption = "Số bản ghii:" & AdodcKH.Recordset.RecordCount
End Sub
2. Code form danh mục mặt hàng
Private Sub KhongChoUpDate()
GrdMH.AllowUpdate = False
txtMahh.Locked = True
txtTenhang.Locked = True
txtDvt.Locked = True
txtGianhap.Locked = True
txtGiaban.Locked = True
txtTonkho.Locked = True
txtXuatxu.Locked = True
txtHansudung.Locked = True
End Sub
Private Sub ChoPhepUpDate()
GrdMH.AllowUpdate = True
txtMahh.Locked = False
txtTenhang.Locked = False
txtDvt.Locked = False
txtGianhap.Locked = False
txtGiaban.Locked = False
txtTonkho.Locked = False
txtXuatxu.Locked = False
txtHansudung.Locked = False
End Sub
Private Sub cmdKTTK_Click()
txtGiatri.Text = ""
cbTimtheo.Text = ""
NapAdodcMH
lbSokq.Caption = ""
lbSokq1.Caption = "Số bản ghi:" & AdodcMH.Recordset.RecordCount
KhongChoUpDate
End Sub
Private Sub cmdTim_Click()
Dim str As String
Dim trloi As Integer
If cbTimtheo.Text = "" Then
trloi = MsgBox("Bạn hóy nhập tiêu thức tỡm kiếm", vbOKOnly)
If trloi = vbOK Then
cbTimtheo.SetFocus
Exit Sub
End If
ElseIf txtGiatri.Text = "" Then
trloi = MsgBox("Bạn hóy nhập giá trị cần tỡm kiếm, vbOKOnly)
If trloi = vbOK Then
txtGiatri.SetFocus
Exit Sub
End If
ElseIf cbTimtheo.Text = "M· hµng" Then
str = "MaHH"
AdodcMH.RecordSource = "SELECT
MaHH,TenHH,DVT,GiaNhap,GiaBan,TonKho,Xuatxu,HanSuDung FROM HangHoa
where " & str & "='" & txtGiatri.Text & "' ORDER BY MaHH "
ElseIf cbTimtheo.Text = "Tên hàng" Then
str = "TenHH"
AdodcMH.RecordSource = "SELECT
MaHH,TenHH,DVT,GiaNhap,GiaBan,TonKho,Xuatxu,HanSuDung FROM HangHoa
where " & str & "='" & txtGiatri.Text & "' ORDER BY MaHH "
ElseIf cbTimtheo.Text = "Đơn vị tính" Then
str = "DVT"
AdodcMH.RecordSource = "SELECT
MaHH,TenHH,DVT,GiaNhap,GiaBan,TonKho,Xuatxu,HanSuDung FROM HangHoa
where " & str & "='" & txtGiatri.Text & "' ORDER BY MaHH "
ElseIf cbTimtheo.Text = "Giá nhập" Then
str = "GiaNhap"
AdodcMH.RecordSource = "SELECT
MaHH,TenHH,DVT,GiaNhap,GiaBan,TonKho,Xuatxu,HanSuDung FROM HangHoa
where " & str & "=" & txtGiatri.Text & " ORDER BY MaHH "
ElseIf cbTimtheo.Text = "Xuất xứ" Then
str = "Xuatxu"
AdodcMH.RecordSource = "SELECT
MaHH,TenHH,DVT,GiaNhap,GiaBan,TonKho,Xuatxu,HanSuDung FROM HangHoa
where " & str & "='" & txtGiatri.Text & "' ORDER BY MaHH "
ElseIf cbTimtheo.Text = "Hạn sử dụng" Then
str = "HanSuDung"
AdodcMH.RecordSource = "SELECT
MaHH,TenHH,DVT,GiaNhap,GiaBan,TonKho,Xuatxu,HanSuDung FROM HangHoa
where " & str & "=DateValue('" & txtGiatri.Text & "') ORDER BY MaHH "
ElseIf cbTimtheo.Text = "Tồn kho" Then
str = "TonKho"
AdodcMH.RecordSource = "SELECT
MaHH,TenHH,DVT,GiaNhap,GiaBan,TonKho,Xuatxu,HanSuDung FROM HangHoa
where " & str & "=" & txtGiatri.Text & " ORDER BY MaHH "
ElseIf cbTimtheo.Text = "Giá bán" Then
str = "GiaBan"
AdodcMH.RecordSource = "SELECT
MaHH,TenHH,DVT,GiaNhap,GiaBan,TonKho,Xuatxu,HanSuDung FROM HangHoa
where " & str & "=" & txtGiatri.Text & " ORDER BY MaHH "
End If
AdodcMH.Refresh
lbSokq.Caption = "Số kết quả:" & AdodcMH.Recordset.RecordCount
lbSokq1.Caption = ""
End Sub
Private Sub Form_Load()
AdodcMH.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
App.Path & "\Database\QuanLyBanHang.mdb;Persist Security Info=False"
NapAdodcMH
lbSokq1.Caption = "Số bản ghi:" & AdodcMH.Recordset.RecordCount
KhongChoUpDate
End Sub
Private Sub NapAdodcMH()
AdodcMH.CommandType = adCmdText
AdodcMH.RecordSource = "SELECT
MaHH,TenHH,DVT,GiaNhap,GiaBan,TonKho,Xuatxu,HanSuDung FROM HangHoa
ORDER BY MaHH"
AdodcMH.Refresh
End Sub
Private Sub CmdThem_Click()
Dim Traloi As Integer
Traloi = MsgBox("Bạn muốn thêm bản ghi mới ?", vbInformation + vbYesNo)
If Traloi = vbNo Then
AdodcMH.Refresh
Exit Sub
Else
AdodcMH.Recordset.AddNew
ChoPhepUpDate
txtMahh.SetFocus
End If
End Sub
Private Sub CmdLuu_Click()
AdodcMH.Recordset.Save
GrdMH.AllowUpdate = False
lbSokq1.Caption = "Số bản ghi:" & AdodcMH.Recordset.RecordCount
End Sub
Private Sub CmdChon_Click()
ChoPhepUpDate
End Sub
Private Sub CmdSua_Click()
Dim Traloi As Integer
Traloi = MsgBox("Bạn muốn sửa bản ghi này?", vbInformation + vbYesNo)
If Traloi = vbNo Then
AdodcMH.Refresh
Exit Sub
Else
GrdMH.AllowUpdate = True
AdodcMH.Recordset.Update
End If
KhongChoUpDate
End Sub
Private Sub CmdXoa_Click()
Dim Traloi As Integer
Traloi = MsgBox("Bạn muốn xoá bản ghi này ?", vbInformation + vbYesNo)
If Traloi = vbNo Then
GrdMH.AllowDelete = False
Else
GrdMH.AllowDelete = True
AdodcMH.Recordset.Delete
End If
lbSokq1.Caption = "Số bản ghi:" & AdodcMH.Recordset.RecordCount
End Sub
3. Code form hoá đơn bán hàng
Option Explicit
Dim KiemtraHH As Integer
Dim KiemtraHD As Integer
Dim rsMaHH As New ADODB.Recordset
Dim rsMaKH As New ADODB.Recordset
Dim rsNapTuDong As New ADODB.Recordset
Dim rsMaNV As New ADODB.Recordset
Dim rsTong As New ADODB.Recordset
Dim rsSoHHDB As New ADODB.Recordset
Dim rsKiemTraCTB1 As New ADODB.Recordset
Dim rsKiemTraCTB2 As New ADODB.Recordset
Dim rsSoLuong As New ADODB.Recordset
Dim rsHoaDonBan As New ADODB.Recordset
Dim KT1 As Integer
Dim KT2 As Integer
Dim KT3 As Integer
Dim Ten1 As String
Private Sub cmbMaHH_Click()
Dim sql As String
sql = "SElect TenHH, DVT, GiaBan, TonKho, XuatXu from HangHoa where
MaHH=('" & cmbMaHH.Text & "')"
rsNapTuDong.Open sql, Conn
TxtTenHH.Text = rsNapTuDong!TenHH
txtDvt.Text = rsNapTuDong!DVT
txtGiaban.Text = rsNapTuDong!GiaBan
txtTonkho.Text = rsNapTuDong!TonKho
txtXuatxu.Text = rsNapTuDong!XuatXu
TxtSoLuong.Text = ""
txtThanhTien.Text = ""
TxtSoLuong.SetFocus
rsNapTuDong.Close
End Sub
Private Sub ThanhTien()
txtThanhTien.Text = Val(TxtSoLuong.Text) * Val(txtGiaban.Text)
End Sub
Private Sub cmdFirst1_Click()
If KT1 = 1 Or KT2 = 1 Or (adoCTB.Recordset.EOF And adoCTB.Recordset.BOF)
Then
Exit Sub
Else
adoCTB.Recordset.MoveFirst
End If
End Sub
Private Sub cmdFirst2_Click()
If KT1 = 1 Or KT2 = 1 Or (adoHDB.Recordset.EOF And adoHDB.Recordset.BOF)
Then
Exit Sub
Else
adoHDB.Recordset.MoveFirst
NapadoCTB
NapadoTHB
End If
End Sub
Private Sub cmdLast1_Click()
If KT1 = 1 Or KT2 = 1 Or (adoCTB.Recordset.EOF And adoCTB.Recordset.BOF)
Then
Exit Sub
Else
adoCTB.Recordset.MoveLast
End If
End Sub
Private Sub cmdLast2_Click()
If KT1 = 1 Or KT2 = 1 Or (adoHDB.Recordset.EOF And adoHDB.Recordset.BOF)
Then
Exit Sub
Else
adoHDB.Recordset.MoveLast
NapadoCTB
NapadoTHB
End If
End Sub
Private Sub CmdLuuHD_Click()
Dim Traloi As Integer
Dim sql As String
Dim sql1 As String
Dim sql2 As String
On Error GoTo XuLyLoi
If KT1 = 1 Then
If TxtSoHHDB.Text = "" Or cmbMaNV.Text = "" Or TxtNgayBan.Text = "" Or
CmbMaKH.Text = "" Then
Exit Sub
End If
sql1 = "Select SoHHDB from HoaDonBan"
rsSoHHDB.Open sql1, Conn
NapadoCTB
NapadoTHB
Do Until rsSoHHDB.EOF
If TxtSoHHDB.Text = rsSoHHDB!SoHHDB Then
sql2 = "Select KhachHang.MaKH, TenKH, KhachHang.DiaChi, KhachHang.DT,
NgayBan, NhanVien.MaNV, TenNV, ChietKhau from HoaDonBan, NhanVien,
KhachHang " & _
"where HoaDonBan.MaKH=KhachHang.MaKH and HoaDonBan.MaNV=
NhanVien.MaNV and SoHHDB=('" & TxtSoHHDB.Text & "')"
rsHoaDonBan.Open sql2, Conn
TxtNgayBan.Text = rsHoaDonBan!NgayBan
cmbMaNV.Text = rsHoaDonBan!MaNV
txtTennv.Text = rsHoaDonBan!TenNV
CmbMaKH.Text = rsHoaDonBan!MaKH
txtTenKH.Text = rsHoaDonBan!TenKH
txtDiachi.Text = rsHoaDonBan!DiaChi
txtDT.Text = rsHoaDonBan!DT
sql = " update HoaDonBan set ChietKhau=val('" & txtChietKhau.Text & "')
where SoHHDB=('" & TxtSoHHDB.Text & "')"
Conn.Execute sql
adoCTB.Refresh
adoTHB.Refresh
NapadoCTB
NapadoTHB
MsgBox "Lưu thành công!", vbOKOnly
rsSoHHDB.Close
rsHoaDonBan.Close
Exit Sub
Else
rsSoHHDB.MoveNext
End If
Loop
If txtChietKhau = "" Then
sql = "insert into HoaDonBan (SoHHDB, MaKH, NgayBan, MaNV) values ('" &
TxtSoHHDB.Text & "', '" & CmbMaKH.Text & "', '" & TxtNgayBan.Text & "', '" &
cmbMaNV.Text & "')"
Conn.Execute sql
Else
sql = "insert into HoaDonBan values ('" & TxtSoHHDB.Text & "', '" &
CmbMaKH.Text & "', '" & TxtNgayBan.Text & "', '" & cmbMaNV.Text & "','" &
txtChietKhau & "')"
Conn.Execute sql
End If
MsgBox "Lưu thành công!", vbOKOnly
rsSoHHDB.Close
Exit Sub
ElseIf KT2 = 1 Then
sql = "update HoaDonBan set MaKH=('" & CmbMaKH.Text & "'), MaNV=('" &
cmbMaNV.Text & "'), NgayBan=('" & TxtNgayBan.Text & "'), ChietKhau=('" &
txtChietKhau.Text & "') where SoHHDB=('" & TxtSoHHDB.Text & "')"
Conn.Execute sql
adoTHB.Refresh
NapadoTHB
MsgBox "Xoá thành công”
Exit Sub
Else
Exit Sub
End If
XuLyLoi:
MsgBox "bạn hóy xem lại dữ liệu nhập!", vbOKOnly
MsgBox Error$
rsSoHHDB.Close
Exit Sub
End Sub
Private Sub CmdLuuMH_Click()
Dim sql As String
Dim sql1 As String
Dim sql2 As String
Dim sql3 As String
Dim sql4 As String
Dim Traloi As Integer
Dim sql5 As String
If KT2 = 1 Then
sql5 = "Select SoHHDB from HoaDonBan"
rsSoHHDB.Open sql5, Conn
Do Until rsSoHHDB.EOF
If TxtSoHHDB.Text <> rsSoHHDB!SoHHDB Then
rsSoHHDB.MoveNext
Else
sql = "Select MaHH from HangHoa"
rsMaHH.Open sql, Conn
Do Until rsMaHH.EOF
If cmbMaHH.Text <> rsMaHH!MaHH Then
rsMaHH.MoveNext
Else
If Val(TxtSoLuong.Text) > Val(txtTonkho.Text) Then
MsgBox " Trong kho không có đủ!", vbOKOnly
rsSoHHDB.Close
rsMaHH.Close
Exit Sub
ElseIf Val(TxtSoLuong.Text) = "0" Then
MsgBox " Không hợp lệ!", vbOKOnly
rsSoHHDB.Close
rsMaHH.Close
Exit Sub
Else
sql1 = "Select MaHH from ChiTietBanHang where MaHH=('" & cmbMaHH.Text &
"') and SoHHDB=('" & TxtSoHHDB.Text & "')"
rsKiemTraCTB1.Open sql1, Conn
If rsKiemTraCTB1.EOF Then
sql2 = " Insert into ChiTietBanHang values ('" & TxtSoHHDB.Text & "', '" &
cmbMaHH.Text & "', '" & TxtSoLuong.Text & "')"
Conn.Execute sql2
sql3 = " Update HangHoa set TonKho=TonKho - val('" & TxtSoLuong.Text & "')
where MaHH=('" & cmbMaHH.Text & "')"
Conn.Execute sql3
adoCTB.Refresh
adoTHB.Refresh
'NapadoCTB
'cmbMaHH.DataField =AdoCTB.Recordset!TenHH
'TxtTenHH.DataField = AdoCTB.Recordset!TenHH
'TxtSoLuong.DataField = adoCTB.Recordset!SoLuong
'TxtDVT.DataField = AdoCTB.Recordset!DVT
'TxtGiaBan.DataField = AdoCTB.Recordset!GiaBan
'TxtTonKho.DataField = adoCTB.Recordset!TonKho
'txtThanhTien.DataField = adoCTB.Recordset!ThanhTien
't xtXuatXu.DataField = AdoCTB.Recordset!XuatXu
MsgBox "Lưu thành công!", vbOKOnly
Else
Traloi = MsgBox(" ?", vbInformation + vbYesNo)
If Traloi = vbYes Then
sql3 = " Update ChiTietBanHang set SoLuong=SoLuong + val('" &
TxtSoLuong.Text & "') where MaHH=('" & cmbMaHH.Text & "') and SoHHDB=('"
& TxtSoHHDB.Text & "')"
Conn.Execute sql3
sql3 = " Update HangHoa set TonKho=TonKho - val('" & TxtSoLuong.Text & "')
where MaHH=('" & cmbMaHH.Text & "')"
Conn.Execute sql3
adoCTB.Refresh
adoTHB.Refresh
'NapadoCTB
Else
End If
End If
rsKiemTraCTB1.Close
End If
rsSoHHDB.Close
rsMaHH.Close
Exit Sub
End If
Loop
If rsMaHH.EOF Then
vbOKOnly
End If
rsMaHH.Close
rsSoHHDB.Close
Exit Sub
End If
Loop
If rsSoHHDB.EOF Then
rsSoHHDB.Close
ElseIf KT3 = 1 Then
sql = "Update ChiTietBanHang set SoLuong=val('" & TxtSoLuong.Text & "') where
SoHHDB=('" & TxtSoHHDB.Text & "') and MaHH=('" & cmbMaHH.Text & "')"
sql1 = "Update HangHoa set TonKho=(TonKho + val('" & Text1.Text & "') - val('"
& TxtSoLuong.Text & "')) where MaHH=('" & cmbMaHH.Text & "')"
Conn.Execute sql
Conn.Execute sql1
adoCTB.Refresh
adoTHB.Refresh
NapadoCTB
Else
Exit Sub
End If
End Sub
Private Sub cmdNext1_Click()
If KT1 = 1 Or KT2 = 1 Or (adoCTB.Recordset.EOF And adoCTB.Recordset.BOF)
Then
Exit Sub
Else
If adoCTB.Recordset.EOF = False Then
adoCTB.Recordset.MoveNext
Else
adoCTB.Recordset.MoveLast
End If
End If
End Sub
Private Sub cmdNext2_Click()
If KT1 = 1 Or KT2 = 1 Or (adoHDB.Recordset.EOF And adoHDB.Recordset.BOF)
Then
Exit Sub
Else
If adoHDB.Recordset.EOF = False Then
adoHDB.Recordset.MoveNext
NapadoCTB
NapadoTHB
Else
adoHDB.Recordset.MoveLast
NapadoCTB
NapadoTHB
End If
End If
End Sub
Private Sub cmdPri1_Click()
If KT1 = 1 Or KT2 = 1 Or (adoCTB.Recordset.EOF And adoCTB.Recordset.BOF)
Then
Exit Sub
Else
If adoCTB.Recordset.BOF = False Then
adoCTB.Recordset.MovePrevious
Else
adoCTB.Recordset.MoveFirst
End If
End If
End Sub
Private Sub cmdPri2_Click()
If KT1 = 1 Or KT2 = 1 Or (adoHDB.Recordset.EOF And adoHDB.Recordset.BOF)
Then
Exit Sub
Else
If adoHDB.Recordset.BOF = False Then
adoHDB.Recordset.MovePrevious
NapadoCTB
NapadoTHB
Else
adoHDB.Recordset.MoveFirst
NapadoCTB
NapadoTHB
End If
End If
End Sub
Private Sub CmdSuaHD_Click()
KT2 = 1
vbOKOnly
TxtNgayBan.Locked = False
cmbMaNV.Locked = False
txtTennv.Locked = False
CmbMaKH.Locked = False
txtTenKH.Locked = False
txtDiachi.Locked = False
txtDT.Locked = False
txtChietKhau.Locked = False
End Sub
Private Sub CmdSuaMH_Click()
KT3 = 1
Dim Traloi As Integer
Traloi = MsgBox(" Bản có muốn sửa số lượng không?", vbYesNo)
If Traloi = vbYes Then
Text1.Text = TxtSoLuong.Text
TxtSoLuong.Locked = False
cmbMaHH.DataField = ""
TxtTenHH.DataField = ""
TxtSoLuong.DataField = ""
txtDvt.DataField = ""
txtGiaban.DataField = ""
txtTonkho.DataField = ""
txtThanhTien.DataField = ""
txtXuatxu.DataField = ""
TxtSoLuong.Text = ""
txtThanhTien.Text = ""
End If
End Sub
Private Sub cmdThemHD_Click()
KT1 = 1
adoTHB.Recordset.AddNew
ChoUpdate
TxtSoHHDB.Text = ""
TxtNgayBan.Text = ""
cmbMaNV.Text = ""
txtTennv.Text = ""
CmbMaKH.Text = ""
txtTenKH.Text = ""
txtDiachi.Text = ""
txtDT.Text = ""
txtTongThue.Text = ""
txtChietKhau.Text = ""
txtTongTien.Text = ""
txtTongTT.Text = ""
cmbMaHH.DataField = ""
TxtTenHH.DataField = ""
TxtSoLuong.DataField = ""
txtDvt.DataField = ""
txtGiaban.DataField = ""
txtTonkho.DataField = ""
txtThanhTien.DataField = ""
txtXuatxu.DataField = ""
cmbMaHH.Text = ""
TxtTenHH.Text = ""
txtGiaban.Text = ""
txtTonkho.Text = ""
txtDvt.Text = ""
txtXuatxu.Text = ""
TxtSoLuong.Text = ""
txtThanhTien = ""
cmbMaHH.Locked = True
TxtTenHH.Locked = True
TxtSoLuong.Locked = True
txtDvt.Locked = True
txtGiaban.Locked = True
txtTonkho.Locked = True
txtXuatxu.Locked = True
txtThanhTien.Locked = True
txtTongTT.Locked = True
NapcmbMaHH
NapcmbMaKH
NapcmbMaNV
NapadoCTB
NapadoTHB
TxtSoHHDB.SetFocus
End Sub
Private Sub CmdThemMH_Click()
KT2 = 1
If TxtSoHHDB.Text = "" Or cmbMaNV.Text = "" Or TxtNgayBan.Text = "" Or
CmbMaKH.Text = "" Then
Exit Sub
Else
Dim Traloi As Integer
Traloi = MsgBox("Bạn muốnt thêm bản ghi mới ?", vbInformation + vbYesNo)
If Traloi = vbNo Then
adoCTB.Refresh
Exit Sub
Else
ChoUpdate
NapcmbMaHH
cmbMaHH.DataField = ""
TxtTenHH.DataField = ""
TxtSoLuong.DataField = ""
txtDvt.DataField = ""
txtGiaban.DataField = ""
txtTonkho.DataField = ""
txtThanhTien.DataField = ""
txtXuatxu.DataField = ""
cmbMaHH.Text = ""
TxtTenHH.Text = ""
txtGiaban.Text = ""
txtTonkho.Text = ""
txtDvt.Text = ""
txtXuatxu.Text = ""
TxtSoLuong.Text = ""
txtThanhTien = ""
cmbMaHH.SetFocus
End If
End If
End Sub
Private Sub CmdThoat_Click()
Unload Me
End Sub
Private Sub CmdXoaHD_Click()
KT3 = 1
Dim sql As String
Dim sql1 As String
sql = "Select SoHHDB from ChiTietBanHang"
rsSoHHDB.Open sql, Conn
Do Until rsSoHHDB.EOF
If (TxtSoHHDB.Text) = rsSoHHDB!SoHHDB Then
rsSoHHDB.Close
Exit Sub
Else
rsSoHHDB.MoveNext
End If
Loop
If rsSoHHDB.EOF Then
sql1 = "Delete * from HoaDonBan where SoHHDB=('" & TxtSoHHDB.Text & "')"
Conn.Execute sql1
MsgBox "§· xo¸ thµnh c«ng"
NapadoHDB
End If
rsSoHHDB.Close
End Sub
Private Sub CmdXoaMH_Click()
Dim sql As String
Dim sql2 As String
sql = "delete * from ChiTietBanHang where MaHH=('" & cmbMaHH.Text & "') and
SoHHDB=('" & TxtSoHHDB.Text & "')"
sql2 = "update HangHoa set TonKho=TonKho+val('" & txtTonkho.Text & "') where
MaHH=('" & cmbMaHH.Text & "') "
Conn.Execute sql
Conn.Execute sql2
'NapadoCTB
adoCTB.Refresh
End Sub
Private Sub Form_Load()
NapadoHDB
NapadoCTB
NapadoTHB
Naptooltip
KhongChoUpDate
End Sub
Private Sub NapadoHDB()
adoHDB.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
App.Path & "\Database\QuanLyBanHang.mdb;Persist Security Info=False"
adoHDB.CommandType = adCmdText
adoHDB.RecordSource = " SELECT SoHHDB, NgayBan, NhanVien.MaNV,
TenNV,KhachHang.MaKH, TenKH, KhachHang.DiaChi,
KhachHang.DT,ChietKhau from HoaDonBan, KhachHang, NhanVien " & _
"where HoaDonBan.MaNV=NhanVien.MaNV and
HoaDonBan.MaKH=KhachHang.MaKH"
adoHDB.Refresh
End Sub
Private Sub NapadoCTB()
adoCTB.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
App.Path & "\Database\QuanLyBanHang.mdb;Persist Security Info=False"
adoCTB.CommandType = adCmdText
adoCTB.RecordSource = " select HangHoa.MaHH, TenHH, XuatXu, DVT,
SoLuong, GiaBan, SoLuong* GiaBan as ThanhTien, TonKho from HangHoa,
ChiTietBanHang " & _
"where HangHoa.MaHH=ChiTietBanHang.MaHH and SoHHDB=('" &
TxtSoHHDB.Text & "')"
adoCTB.Refresh
End Sub
Private Sub NapadoTHB()
adoTHB.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
App.Path & "\Database\QuanLyBanHang.mdb;Persist Security Info=False"
adoTHB.CommandType = adCmdText
adoTHB.RecordSource = "select Sum(SoLuong*GiaBan) as TongTien,
Sum(SoLuong*GiaBan*0.1) as TongThue, (Sum(SoLuong*GiaBan) +
sum(SoLuong*GiaBan*0.1)-Sum(SoLuong*GiaBan*ChietKhau)) as TongTT " & _
"From HoaDonBan, HangHoa, ChiTietBanHang " & _
"Where HoaDonBan.SoHHDB=ChiTietBanHang.SoHHDB and
HangHoa.MaHH=ChiTietBanHang.MaHH " & _
"and HoaDonBan.SoHHDB=('" & TxtSoHHDB.Text & "')"
adoTHB.Refresh
End Sub
Private Sub Naptooltip()
CmdThemHD.ToolTipText = "Thªm ho¸ ®¬n"
CmdLuuHD.ToolTipText = "L-u ho¸ ®¬n"
CmdSuaHD.ToolTipText = "Söa ho¸ ®¬n"
CmdXoaHD.ToolTipText = "Xo¸ ho¸ ®¬n"
CmdThoat.ToolTipText = "Tho¸t "
End Sub
Private Sub KhongChoUpDate()
TxtSoHHDB.Locked = True
TxtNgayBan.Locked = True
cmbMaNV.Locked = True
txtTennv.Locked = True
CmbMaKH.Locked = True
txtTenKH.Locked = True
txtDiachi.Locked = True
txtDT.Locked = True
txtTongThue.Locked = True
txtChietKhau.Locked = True
txtTongTien.Locked = True
txtTongTT.Locked = True
cmbMaHH.Locked = True
TxtTenHH.Locked = True
TxtSoLuong.Locked = True
txtDvt.Locked = True
txtGiaban.Locked = True
txtTonkho.Locked = True
txtXuatxu.Locked = True
txtThanhTien.Locked = True
GrdHHB.AllowDelete = False
GrdHHB.AllowUpdate = False
End Sub
Private Sub ChoUpdate()
TxtSoHHDB.Locked = False
TxtNgayBan.Locked = False
cmbMaNV.Locked = False
txtTennv.Locked = False
CmbMaKH.Locked = False
txtTenKH.Locked = False
txtDiachi.Locked = False
txtDT.Locked = False
txtTongThue.Locked = False
txtChietKhau.Locked = False
txtTongTien.Locked = False
txtTongTT.Locked = False
cmbMaHH.Locked = False
TxtTenHH.Locked = False
TxtSoLuong.Locked = False
txtDvt.Locked = False
txtGiaban.Locked = False
txtTonkho.Locked = False
txtXuatxu.Locked = False
txtThanhTien.Locked = False
GrdHHB.AllowDelete = True
GrdHHB.AllowUpdate = True
End Sub
Private Sub NapcmbMaHH()
Dim sql As String
sql = "Select MaHH from HangHoa where TonKho<>null order by MaHH"
rsMaHH.Open sql, Conn
cmbMaHH.Clear
Do While Not rsMaHH.EOF
cmbMaHH.AddItem rsMaHH!MaHH
rsMaHH.MoveNext
Loop
rsMaHH.Close
End Sub
Private Sub NapcmbMaKH()
Dim sql As String
sql = "Select MaKH from KhachHang order by MaKH"
rsMaKH.Open sql, Conn
CmbMaKH.Clear
Do While Not rsMaKH.EOF
CmbMaKH.AddItem rsMaKH!MaKH
rsMaKH.MoveNext
Loop
rsMaKH.Close
End Sub
Private Sub txtThanhTien_Gotfocus()
txtThanhTien.Text = Val(TxtSoLuong.Text) * Val(txtGiaban.Text)
End Sub
Private Sub NapcmbMaNV()
Dim sql As String
sql = " select MaNV from NhanVien order by MaNV"
rsMaNV.Open sql, Conn
cmbMaNV.Clear
Do Until rsMaNV.EOF
cmbMaNV.AddItem rsMaNV!MaNV
rsMaNV.MoveNext
Loop
rsMaNV.Close
End Sub
Private Sub cmbMaNV_Click()
Dim sql As String
sql = "Select TenNV from NhanVien where MaNV=('" & cmbMaNV.Text & "')"
rsNapTuDong.Open sql, Conn
txtTennv.Text = rsNapTuDong!TenNV
rsNapTuDong.Close
End Sub
Private Sub cmbMaKH_Click()
Dim sql As String
sql = "Select TenKH, DiaChi, DT from KhachHang where MaKH=('" &
CmbMaKH.Text & "')"
rsNapTuDong.Open sql, Conn
txtTenKH.Text = rsNapTuDong!TenKH
txtDiachi.Text = rsNapTuDong!DiaChi
txtDT.Text = rsNapTuDong!DT
rsNapTuDong.Close
End Sub
Private Sub cmbMaKH_LostFocus()
Dim sql As String
On Error GoTo XuLyLoi
sql = "Select TenKH, DiaChi, DT from KhachHang where MaKH=('" &
CmbMaKH.Text & "')"
Dim rsTenKH As New ADODB.Recordset
rsTenKH.Open sql, Conn
txtTenKH.Text = rsTenKH!TenKH
txtDiachi.Text = rsTenKH!DiaChi
txtDT.Text = rsTenKH!DT
rsTenKH.Close
Exit Sub
XuLyLoi:
MsgBox " B¹n h·y nhËp l¹i m· kh¸ch hµng!", vbOKOnly
rsTenKH.Close
End Sub
Private Sub cmbMaNV_LostFocus()
Dim sql As String
On Error GoTo XuLyLoi
sql = "Select TenNV from NhanVien where MaNV=('" & cmbMaNV.Text & "')"
Dim rsTenNV As New ADODB.Recordset
rsTenNV.Open sql, Conn
txtTennv.Text = rsTenNV!TenNV
rsTenNV.Close
Exit Sub
XuLyLoi:
rsTenNV.Close
Exit Sub
End Sub
Private Sub cmbMaHH_LostFocus()
Dim sql As String
On Error GoTo XuLyLoi
sql = "Select TenHH, XuatXu, GiaBan ,DVT, TonKho from HangHoa where
MaHH=('" & cmbMaHH.Text & "')"
Dim rsTenHH As New ADODB.Recordset
rsTenHH.Open sql, Conn
TxtTenHH.Text = rsTenHH!TenHH
txtDvt.Text = rsTenHH!DVT
txtXuatxu.Text = rsTenHH!XuatXu
txtTonkho.Text = rsTenHH!TonKho
txtGiaban.Text = rsTenHH!GiaBan
rsTenHH.Close
Exit Sub
XuLyLoi:
rsTenHH.Close
Exit Sub
End Sub
4. Code form hoá đơn nhập hàng
Option Explicit
Dim KiemtraHH As Integer
Dim KiemtraHD As Integer
Dim rsMaHH As New ADODB.Recordset
Dim rsMaKH As New ADODB.Recordset
Dim rsNapTuDong As New ADODB.Recordset
Dim rsMaNV As New ADODB.Recordset
Dim rsTong As New ADODB.Recordset
Dim rsSoHHDM As New ADODB.Recordset
Dim rsKiemTraCTM1 As New ADODB.Recordset
Dim rsKiemTraCTM2 As New ADODB.Recordset
Dim rsSoLuong As New ADODB.Recordset
Dim rsHoaDonMua As New ADODB.Recordset
Dim rsMaNCC As New ADODB.Recordset
Dim rsTenNCC As New ADODB.Recordset
Dim KT1 As Integer
Dim KT2 As Integer
Dim KT3 As Integer
Dim Ten1 As String
Dim t As Integer
Private Sub cmbMaHH_Click()
Dim sql As String
sql = "SElect TenHH, DVT, GiaNhap, TonKho, XuatXu, HanSuDung from
HangHoa where MaHH=('" & cmbMaHH.Text & "')"
rsNapTuDong.Open sql, Conn
TxtTenHH.Text = rsNapTuDong!TenHH
txtDvt.Text = rsNapTuDong!DVT
txtGianhap.Text = rsNapTuDong!GiaNhap
txtTonkho.Text = rsNapTuDong!TonKho
txtXuatxu.Text = rsNapTuDong!XuatXu
txtHansudung.Text = rsNapTuDong!HanSuDung
TxtSoLuong.Text = ""
txtThanhTien.Text = ""
TxtSoLuong.SetFocus
rsNapTuDong.Close
End Sub
Private Sub ThanhTien()
txtThanhTien.Text = Val(TxtSoLuong.Text) * Val(txtGianhap.Text)
End Sub
Private Sub cmdFirst1_Click()
If KT1 = 1 Or KT2 = 1 Or (adoCTM.Recordset.EOF And adoCTM.Recordset.BOF)
Then
Exit Sub
Else
adoCTM.Recordset.MoveFirst
End If
End Sub
Private Sub cmdFirst2_Click()
If KT1 = 1 Or KT2 = 1 Or (adoHDM.Recordset.EOF And
adoHDM.Recordset.BOF) Then
Exit Sub
Else
adoHDM.Recordset.MoveFirst
NapadoCTM
NapadoTHM
End If
End Sub
Private Sub cmdLast1_Click()
If KT1 = 1 Or KT2 = 1 Or (adoCTM.Recordset.EOF And adoCTM.Recordset.BOF)
Then
Exit Sub
Else
adoCTM.Recordset.MoveLast
End If
End Sub
Private Sub cmdLast2_Click()
If KT1 = 1 Or KT2 = 1 Or (adoHDM.Recordset.EOF And
adoHDM.Recordset.BOF) Then
Exit Sub
Else
adoHDM.Recordset.MoveLast
NapadoCTM
NapadoTHM
End If
End Sub
Private Sub CmdLuuHD_Click()
Dim Traloi As Integer
Dim sql As String
Dim sql1 As String
Dim sql2 As String
'On Error GoTo XuLyLoi
If KT1 = 1 Then
If TxtSoHHDM.Text = "" Or cmbMaNV.Text = "" Or TxtNgayMua.Text = "" Or
cmbMaNCC.Text = "" Then
MsgBox "B¹n chưa điền đủ dữ liệu !", vbInformation + vbOKOnly
Exit Sub
End If
sql1 = "Select SoHHDM from HoaDonMua"
rsSoHHDM.Open sql1, Conn
NapadoCTM
NapadoTHM
Do Until rsSoHHDM.EOF
If TxtSoHHDM.Text = rsSoHHDM!SoHHDM Then
sql2 = "Select NhaCC.MaNCC, TenNCC, NhaCC.DiaChi, NhaCC.DT, NgayMua,
NhanVien.MaNV, TenNV from HoaDonMua, NhanVien, NhaCC " & _
"where HoaDonMua.MaNCC=NhaCC.MaNCC and HoaDonMua.MaNV=
NhanVien.MaNV and SoHHDM=('" & TxtSoHHDM.Text & "')"
rsHoaDonMua.Open sql2, Conn
TxtNgayMua.Text = rsHoaDonMua!NgayMua
cmbMaNV.Text = rsHoaDonMua!MaNV
txtTennv.Text = rsHoaDonMua!TenNV
cmbMaNCC.Text = rsHoaDonMua!MaNCC
txtTenNCC.Text = rsHoaDonMua!TenNCC
txtDiachi.Text = rsHoaDonMua!DiaChi
txtDT.Text = rsHoaDonMua!DT
adoCTM.Refresh
adoTHM.Refresh
NapadoCTM
NapadoTHM
MsgBox "§· l-u thµnh c«ng!", vbOKOnly
rsSoHHDM.Close
rsHoaDonMua.Close
Exit Sub
Else
rsSoHHDM.MoveNext
End If
Loop
sql = "insert into HoaDonMua values ('" & TxtSoHHDM.Text & "', '" &
cmbMaNCC.Text & "', '" & TxtNgayMua.Text & "', '" & cmbMaNV.Text & "')"
Conn.Execute sql
adoHDM.Refresh
MsgBox "§· l-u thµnh c«ng!", vbOKOnly
rsSoHHDM.Close
Exit Sub
ElseIf KT2 = 1 Then
sql = "update HoaDonMua set MaNCC=('" & cmbMaNCC.Text & "'), MaNV=('" &
cmbMaNV.Text & "'), NgayMua=('" & TxtNgayMua.Text & "') where
SoHHDM=('" & TxtSoHHDM.Text & "')"
Conn.Execute sql
adoTHM.Refresh
NapadoTHM
MsgBox "§· söa thµnh c«ng!"
Exit Sub
Else
Exit Sub
End If
'XuLyLoi:
'MsgBox "B¹n h·y xem l¹i d÷ liÖu nhËp!", vbOKOnly
'MsgBox Error$
'rsSoHHDM.Close
'Exit Sub
End Sub
Private Sub CmdLuuMH_Click()
Dim sql As String
Dim sql1 As String
Dim sql2 As String
Dim sql3 As String
Dim sql4 As String
Dim Traloi As Integer
Dim sql5 As String
If KT2 = 1 Then
sql5 = "Select SoHHDM from HoaDonMua"
rsSoHHDM.Open sql5, Conn
Do Until rsSoHHDM.EOF
If TxtSoHHDM.Text <> rsSoHHDM!SoHHDM Then
rsSoHHDM.MoveNext
Else
sql = "Select MaHH from HangHoa"
rsMaHH.Open sql, Conn
Do Until rsMaHH.EOF
If cmbMaHH.Text <> rsMaHH!MaHH Then
rsMaHH.MoveNext
ElseIf Val(TxtSoLuong.Text) = "0" Then
MsgBox " Sè l-îng mua kh«ng hîp lÖ!", vbOKOnly
rsSoHHDM.Close
rsMaHH.Close
Exit Sub
Else
sql1 = "Select MaHH from ChiTietHangMua where MaHH=('" & cmbMaHH.Text
& "') and SoHHDM=('" & TxtSoHHDM.Text & "')"
rsKiemTraCTM1.Open sql1, Conn
If rsKiemTraCTM1.EOF Then
sql2 = " Insert into ChiTietHangMua values ('" & TxtSoHHDM.Text & "', '" &
cmbMaHH.Text & "', '" & TxtSoLuong.Text & "')"
Conn.Execute sql2
sql3 = " Update HangHoa set TonKho=TonKho + val('" & TxtSoLuong.Text & "')
where MaHH=('" & cmbMaHH.Text & "')"
Conn.Execute sql3
adoCTM.Refresh
adoTHM.Refresh
'NapadoCTB
'cmbMaHH.DataField =AdoCTB.Recordset!TenHH
'TxtTenHH.DataField = AdoCTB.Recordset!TenHH
'TxtSoLuong.DataField = adoCTB.Recordset!SoLuong
'TxtDVT.DataField = AdoCTB.Recordset!DVT
'TxtGiaBan.DataField = AdoCTB.Recordset!GiaBan
'TxtTonKho.DataField = adoCTB.Recordset!TonKho
'txtThanhTien.DataField = adoCTB.Recordset!ThanhTien
't xtXuatXu.DataField = AdoCTB.Recordset!XuatXu
MsgBox "§· l-u thµnh c«ng!", vbOKOnly
Else
Traloi = MsgBox(" Mặt hàng này đã có rồi bạn có muốn cộng dồn không?",
vbInformation + vbYesNo)
If Traloi = vbYes Then
sql3 = " Update ChiTietHangMua set SoLuong=SoLuong + val('" &
TxtSoLuong.Text & "') where MaHH=('" & cmbMaHH.Text & "') and
SoHHDM=('" & TxtSoHHDM.Text & "')"
Conn.Execute sql3
sql3 = " Update HangHoa set TonKho=TonKho + val('" & TxtSoLuong.Text & "')
where MaHH=('" & cmbMaHH.Text & "')"
Conn.Execute sql3
adoCTM.Refresh
adoTHM.Refresh
'NapadoCTB
MsgBox "§· l-u thµnh c«ng!", vbOKOnly
Else
MsgBox "B¹n h·y nhËp l¹i mÆt hµng!", vbOKOnly
End If
End If
rsKiemTraCTM1.Close
rsSoHHDM.Close
rsMaHH.Close
Exit Sub
End If
Loop
If rsMaHH.EOF Then
MsgBox "Mặt hàng này chưa có trong danh mục mÆt hµng!", vbOKOnly
End If
rsMaHH.Close
rsSoHHDM.Close
Exit Sub
End If
Loop
If rsSoHHDM.EOF Then
MsgBox "B¹n h·y l-u ho¸ ®¬n tr-íc!", vbOKOnly
End If
rsSoHHDM.Close
ElseIf KT3 = 1 Then
sql = "Update ChiTietHangMua set SoLuong=val('" & TxtSoLuong.Text & "')
where SoHHDM=('" & TxtSoHHDM.Text & "') and MaHH=('" & cmbMaHH.Text
& "')"
sql1 = "Update HangHoa set TonKho=(TonKho - val('" & Text1.Text & "')+ val('"
& TxtSoLuong.Text & "')) where MaHH=('" & cmbMaHH.Text & "')"
Conn.Execute sql
Conn.Execute sql1
adoCTM.Refresh
adoTHM.Refresh
NapadoCTM
Else
Exit Sub
End If
End Sub
Private Sub cmdNext1_Click()
If KT1 = 1 Or KT2 = 1 Or (adoCTM.Recordset.EOF And adoCTM.Recordset.BOF)
Then
Exit Sub
Else
If adoCTM.Recordset.EOF = False Then
adoCTM.Recordset.MoveNext
Else
adoCTM.Recordset.MoveLast
End If
End If
End Sub
Private Sub cmdNext2_Click()
If KT1 = 1 Or KT2 = 1 Or (adoHDM.Recordset.EOF And
adoHDM.Recordset.BOF) Then
Exit Sub
Else
If adoHDM.Recordset.EOF = False Then
adoHDM.Recordset.MoveNext
NapadoCTM
NapadoTHM
Else
adoHDM.Recordset.MoveLast
NapadoCTM
NapadoTHM
End If
End If
End Sub
Private Sub cmdPri1_Click()
If KT1 = 1 Or KT2 = 1 Or (adoCTM.Recordset.EOF And adoCTM.Recordset.BOF)
Then
Exit Sub
Else
If adoCTM.Recordset.BOF = False Then
adoCTM.Recordset.MovePrevious
Else
adoCTM.Recordset.MoveFirst
End If
End If
End Sub
Private Sub cmdPri2_Click()
If KT1 = 1 Or KT2 = 1 Or (adoHDM.Recordset.EOF And
adoHDM.Recordset.BOF) Then
Exit Sub
Else
If adoHDM.Recordset.BOF = False Then
adoHDM.Recordset.MovePrevious
NapadoCTM
NapadoTHM
Else
adoHDM.Recordset.MoveFirst
NapadoCTM
NapadoTHM
End If
End If
End Sub
Private Sub CmdSuaHD_Click()
KT2 = 1
MsgBox "Nếu hoá đơn đã có bạn không sửa được số hiệu hoá đơn!", vbOKOnly
TxtNgayMua.Locked = False
cmbMaNV.Locked = False
txtTennv.Locked = False
cmbMaNCC.Locked = False
txtTenNCC.Locked = False
txtDiachi.Locked = False
txtDT.Locked = False
End Sub
Private Sub CmdSuaMH_Click()
KT3 = 1
Dim Traloi As Integer
Traloi = MsgBox(" Bạn có muốn sửa lượng bán mặt hàng này không?", vbYesNo)
If Traloi = vbYes Then
rsSoLuong.Open "Select SoLuong from ChiTietHangMua where MaHH=('" &
cmbMaHH.Text & "') and SoHHDM=('" & TxtSoHHDM.Text & "')", Conn
Text1.Text = rsSoLuong!SoLuong
TxtSoLuong.Locked = False
cmbMaHH.DataField = ""
TxtTenHH.DataField = ""
TxtSoLuong.DataField = ""
txtDvt.DataField = ""
txtGianhap.DataField = ""
txtTonkho.DataField = ""
txtThanhTien.DataField = ""
txtXuatxu.DataField = ""
txtHansudung.DataField = ""
TxtSoLuong.Text = ""
txtThanhTien.Text = ""
rsSoLuong.Close
End If
End Sub
Private Sub cmdThemHD_Click()
KT1 = 1
adoTHM.Recordset.AddNew
ChoUpdate
TxtSoHHDM.Text = ""
TxtNgayMua.Text = ""
cmbMaNV.Text = ""
txtTennv.Text = ""
cmbMaNCC.Text = ""
txtTenNCC.Text = ""
txtDiachi.Text = ""
txtDT.Text = ""
txtTongThue.Text = ""
txtTongTien.Text = ""
txtTongTT.Text = ""
cmbMaHH.DataField = ""
TxtTenHH.DataField = ""
TxtSoLuong.DataField = ""
txtDvt.DataField = ""
txtGianhap.DataField = ""
txtTonkho.DataField = ""
txtThanhTien.DataField = ""
txtXuatxu.DataField = ""
txtHansudung.DataField = ""
cmbMaHH.Text = ""
TxtTenHH.Text = ""
txtGianhap.Text = ""
txtTonkho.Text = ""
txtDvt.Text = ""
txtXuatxu.Text = ""
TxtSoLuong.Text = ""
txtThanhTien = ""
txtHansudung.Text = ""
cmbMaHH.Locked = True
TxtTenHH.Locked = True
TxtSoLuong.Locked = True
txtDvt.Locked = True
txtGianhap.Locked = True
txtTonkho.Locked = True
txtXuatxu.Locked = True
txtThanhTien.Locked = True
txtTongTT.Locked = True
txtHansudung.Locked = True
NapcmbMaHH
NapcmbMaNCC
NapcmbMaNV
NapadoCTM
NapadoTHM
TxtSoHHDM.SetFocus
End Sub
Private Sub CmdThemMH_Click()
KT2 = 1
If TxtSoHHDM.Text = "" Or cmbMaNV.Text = "" Or TxtNgayMua.Text = "" Or
cmbMaNCC.Text = "" Then
MsgBox "Bạn chưa điền đủ thông tin!", vbInformation + vbOKOnly
Exit Sub
Else
Dim Traloi As Integer
Traloi = MsgBox(" B¹n muèn thªm b¶n ghi míi ?", vbInformation + vbYesNo)
If Traloi = vbNo Then
adoCTM.Refresh
Exit Sub
Else
ChoUpdate
NapcmbMaHH
cmbMaHH.DataField = ""
TxtTenHH.DataField = ""
TxtSoLuong.DataField = ""
txtDvt.DataField = ""
txtGianhap.DataField = ""
txtTonkho.DataField = ""
txtThanhTien.DataField = ""
txtXuatxu.DataField = ""
txtHansudung.DataField = ""
cmbMaHH.Text = ""
TxtTenHH.Text = ""
txtGianhap.Text = ""
txtTonkho.Text = ""
txtDvt.Text = ""
txtXuatxu.Text = ""
TxtSoLuong.Text = ""
txtThanhTien = ""
txtHansudung = ""
cmbMaHH.SetFocus
End If
End If
End Sub
Private Sub CmdThoat_Click()
Unload Me
End Sub
Private Sub CmdXoaHD_Click()
Dim sql As String
Dim sql1 As String
sql = "Select SoHHDM from ChiTietHangMua"
rsSoHHDM.Open sql, Conn
Do Until rsSoHHDM.EOF
If (TxtSoHHDM.Text) = rsSoHHDM!SoHHDM Then
MsgBox "Ho¸ ®¬n nµy kh«ng ®-îc xo¸ do ®· ph¸t sinh giao dich!", vbOKOnly
rsSoHHDM.Close
Exit Sub
Else
rsSoHHDM.MoveNext
End If
Loop
If rsSoHHDM.EOF Then
sql1 = "Delete * from HoaDonMua where SoHHDM=('" & TxtSoHHDM.Text &
"')"
Conn.Execute sql1
adoHDM.Refresh
adoTHM.Refresh
MsgBox "§· xo¸ thµnh c«ng"
NapadoHDM
End If
rsSoHHDM.Close
End Sub
Private Sub CmdXoaMH_Click()
Dim sql As String
Dim sql2 As String
sql = "delete * from ChiTietHangMua where MaHH=('" & cmbMaHH.Text & "')
and SoHHDM=('" & TxtSoHHDM.Text & "')"
sql2 = "update HangHoa set TonKho=TonKho-val('" & TxtSoLuong.Text & "')
where MaHH=('" & cmbMaHH.Text & "') "
Conn.Execute sql
Conn.Execute sql2
'NapadoCTB
adoCTM.Refresh
MsgBox "§· xo¸ thµnh c«ng!"
End Sub
Private Sub Form_Load()
NapadoHDM
NapadoCTM
NapadoTHM
Naptooltip
KhongChoUpDate
End Sub
Private Sub NapadoHDM()
adoHDM.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
& App.Path & "\Database\QuanLyBanHang.mdb;Persist Security Info=False"
adoHDM.CommandType = adCmdText
adoHDM.RecordSource = " SELECT SoHHDM, NgayMua, NhanVien.MaNV,
TenNV, NhaCC.MaNCC, TenNCC, NhaCC.DiaChi, NhaCC.DT from HoaDonMua,
NhaCC, NhanVien " & _
"where HoaDonMua.MaNV=NhanVien.MaNV and
HoaDonMua.MaNCC=NhaCC.MaNCC"
adoHDM.Refresh
End Sub
Private Sub NapadoCTM()
adoCTM.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
App.Path & "\Database\QuanLyBanHang.mdb;Persist Security Info=False"
adoCTM.CommandType = adCmdText
adoCTM.RecordSource = " select HangHoa.MaHH, TenHH, XuatXu, DVT,
SoLuong, GiaNhap, HanSuDung, SoLuong* GiaNhap as ThanhTien, TonKho from
HangHoa, ChiTietHangMua " & _
"where HangHoa.MaHH=ChiTietHangMua.MaHH and SoHHDM=('" &
TxtSoHHDM.Text & "')"
adoCTM.Refresh
End Sub
Private Sub NapadoTHM()
adoTHM.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &
App.Path & "\Database\QuanLyBanHang.mdb;Persist Security Info=False"
adoTHM.CommandType = adCmdText
adoTHM.RecordSource = "select Sum(SoLuong*GiaNhap) as TongTien,
Sum(SoLuong*GiaNhap*0.1) as TongThue, (Sum(SoLuong*GiaNhap) +
sum(SoLuong*GiaNhap*0.1)) as TongTT " & _
"From HoaDonMua, HangHoa, ChiTietHangMua " & _
"Where HoaDonMua.SoHHDM=ChiTietHangMua.SoHHDM and
HangHoa.MaHH=ChiTietHangMua.MaHH " & _
"and HoaDonMua.SoHHDM=('" & TxtSoHHDM.Text & "')"
adoTHM.Refresh
End Sub
Private Sub Naptooltip()
CmdThemHD.ToolTipText = "Thêm hoá đơn"
CmdLuuHD.ToolTipText = "Lưu hoá đơn"
CmdSuaHD.ToolTipText = "Sửa hoá đơn”
CmdXoaHD.ToolTipText = "Xoá hoá đơn"
CmdThoat.ToolTipText = "Thoát "
End Sub
Private Sub KhongChoUpDate()
TxtSoHHDM.Locked = True
TxtNgayMua.Locked = True
cmbMaNV.Locked = True
txtTennv.Locked = True
cmbMaNCC.Locked = True
txtTenNCC.Locked = True
txtDiachi.Locked = True
txtDT.Locked = True
txtTongThue.Locked = True
txtTongTien.Locked = True
txtTongTT.Locked = True
cmbMaHH.Locked = True
TxtTenHH.Locked = True
TxtSoLuong.Locked = True
txtDvt.Locked = True
txtGianhap.Locked = True
txtTonkho.Locked = True
txtXuatxu.Locked = True
txtThanhTien.Locked = True
txtHansudung.Locked = True
GrdHHM.AllowDelete = False
GrdHHM.AllowUpdate = False
End Sub
Private Sub ChoUpdate()
TxtSoHHDM.Locked = False
TxtNgayMua.Locked = False
cmbMaNV.Locked = False
txtTennv.Locked = False
cmbMaNCC.Locked = False
txtTenNCC.Locked = False
txtDiachi.Locked = False
txtDT.Locked = False
txtTongThue.Locked = False
txtTongTien.Locked = False
txtTongTT.Locked = False
cmbMaHH.Locked = False
TxtTenHH.Locked = False
TxtSoLuong.Locked = False
txtDvt.Locked = False
txtGianhap.Locked = False
txtTonkho.Locked = False
txtXuatxu.Locked = False
txtHansudung.Locked = False
txtThanhTien.Locked = False
GrdHHM.AllowDelete = True
GrdHHM.AllowUpdate = True
End Sub
Private Sub NapcmbMaHH()
Dim sql As String
sql = "Select MaHH from HangHoa where TonKho<>null order by MaHH"
rsMaHH.Open sql, Conn
cmbMaHH.Clear
Do While Not rsMaHH.EOF
cmbMaHH.AddItem rsMaHH!MaHH
rsMaHH.MoveNext
Loop
rsMaHH.Close
End Sub
Private Sub NapcmbMaNCC()
Dim sql As String
sql = "Select MaNCC from NhaCC order by MaNCC"
rsMaNCC.Open sql, Conn
cmbMaNCC.Clear
Do While Not rsMaNCC.EOF
cmbMaNCC.AddItem rsMaNCC!MaNCC
rsMaNCC.MoveNext
Loop
rsMaNCC.Close
End Sub
Private Sub txtThanhTien_Gotfocus()
txtThanhTien.Text = Val(TxtSoLuong.Text) * Val(txtGianhap.Text)
End Sub
Private Sub NapcmbMaNV()
Dim sql As String
sql = " select MaNV from NhanVien order by MaNV"
rsMaNV.Open sql, Conn
cmbMaNV.Clear
Do Until rsMaNV.EOF
cmbMaNV.AddItem rsMaNV!MaNV
rsMaNV.MoveNext
Loop
rsMaNV.Close
End Sub
Private Sub cmbMaNV_Click()
Dim sql As String
sql = "Select TenNV from NhanVien where MaNV=('" & cmbMaNV.Text & "')"
rsNapTuDong.Open sql, Conn
txtTennv.Text = rsNapTuDong!TenNV
rsNapTuDong.Close
End Sub
Private Sub cmbMaNCC_Click()
Dim sql As String
sql = "Select TenNCC, DiaChi, DT from NhaCC where MaNCC=('" &
cmbMaNCC.Text & "')"
rsNapTuDong.Open sql, Conn
txtTenNCC.Text = rsNapTuDong!TenNCC
txtDiachi.Text = rsNapTuDong!DiaChi
txtDT.Text = rsNapTuDong!DT
rsNapTuDong.Close
End Sub
Private Sub cmbMaNCC_LostFocus()
Dim sql As String
On Error GoTo XuLyLoi
sql = "Select TenNCC, DiaChi, DT from NhaCC where MaNCC=('" &
cmbMaNCC.Text & "')"
Dim rsTenKH As New ADODB.Recordset
rsTenNCC.Open sql, Conn
txtTenNCC.Text = rsTenNCC!TenNCC
txtDiachi.Text = rsTenNCC!DiaChi
txtDT.Text = rsTenNCC!DT
rsTenNCC.Close
Exit Sub
XuLyLoi:
rsTenNCC.Close
Exit Sub
End Sub
Private Sub cmbMaNV_LostFocus()
Dim sql As String
On Error GoTo XuLyLoi
sql = "Select TenNV from NhanVien where MaNV=('" & cmbMaNV.Text & "')"
Dim rsTenNV As New ADODB.Recordset
rsTenNV.Open sql, Conn
txtTennv.Text = rsTenNV!TenNV
rsTenNV.Close
Exit Sub
XuLyLoi:
rsTenNV.Close
cmbMaNV.SetFocus
Exit Sub
End Sub
Private Sub cmbMaHH_LostFocus()
Dim sql As String
On Error GoTo XuLyLoi
sql = "Select TenHH, XuatXu, GiaNhap ,DVT, TonKho, HanSuDung from
HangHoa where MaHH=('" & cmbMaHH.Text & "')"
Dim rsTenHH As New ADODB.Recordset
rsTenHH.Open sql, Conn
TxtTenHH.Text = rsTenHH!TenHH
txtDvt.Text = rsTenHH!DVT
txtXuatxu.Text = rsTenHH!XuatXu
txtTonkho.Text = rsTenHH!TonKho
txtGianhap.Text = rsTenHH!GiaNhap
txtHansudung.Text = rsTenHH!HanSuDung
rsTenHH.Close
Exit Sub
XuLyLoi:
rsTenHH.Close
cmbMaHH.SetFocus
Exit Sub
End Sub
Mục lục
A. Giới thiệu chung về đề tài lựa chọn
1. Tên đề tài 5
2. Lý do chọn đề tài 5
3. Mục tiêu của đề tài 6
4. Công cụ nghiên cứu và thực hiện đề tài 6
4.1 Hệ quản trị cơ sở dữ liệu Microsoft access 2003 6
4.2 Ngôn ngữ lập trỡnh Visual Basic 6.0 6
4.3 Công cụ làm báo cáo Crystal Report 7
B. Nội dung 7
1. Nội dung bài toán quản lý bán hàng 7
2. Phân tích nghiệp vụ 9
2.1 Quy trỡnh mua hàng 9
2.2 Quy trỡnh quản lý kho 13
2.3 quy trỡnh triển khai bán hàng 14
3. Phân tích yêu cầu người sử dụng 14
3.1 Yêu cầu chung 14
3.2 Yêu cầu đối với nghiệp cụ nhập hàng 15
3.3 Yêu cầu đối với nghiệp vụ xuất hàng 16
3.4 Yêu cầu đối với nghiệp vụ xuất báo cáo 16
3.5 Các yêu cầu khác 16
4. Phân tích hệ thống thông tin quản lý bán hàng và lưu kho tại 17
trung tâm thương mại NC-HT
4.1 Sơ đồ chức năng kinh doanh của trung tâm thương mại 17
4.2 Sơ đồ luồng thông tin IFD 19
4.3 Sơ đồ luồng dữ liệu DFD 21
4.3.1 Sơ đồ ngữ cảnh
4.3.2 Sơ đồ DFD mức 0 của các nghiệp vụ quản lý bán
hàng
4.4 Các bảng dữ liệu đầu vào 25
4.5 Các thuật toán 25
4.5.1 Giải thuật đăng nhập chương trỡnh 27
4.5.2 Giải thuật sửa dữ liệu 28
4.5.3 Giải thuật tỡm kiếm thông tin theo các cụm từ 28
Giao diện chương trỡnh 29
Một số đoạn code chương trỡnh 37