Xây dựng một trình quản lý nhập xuất tồn đơn giản - Bài 1

Trạng thái
Không mở trả lời sau này.

phatnq2002

Tích cực giảm cân...
Hội viên mới
Để các bạn có thể có một chút cơ sở khi bắt đầu "lao vào con đường đau khổ" của dân lập trình, bắt đầu từ bài này, tôi sẽ giả định một bài toán cụ thể về quản lý nhập xuất tồn kho hàng hóa đơn giản.

Tùy thuộc vào thời gian mà tôi có thể thu xếp, các bài tôi gửi sẽ liên tục hoặc gián đoạn, nhưng không quá 1 tuần. Các bạn thông cảm nghen.

ĐỀ BÀI:
Công ty ABC là một doanh nghiệp chuyên "mua đi bán lại" một số mặt hàng có định lượng cụ thể (kg, cái, bộ, ...). Lãnh đạo công ty muốn có những thông tin sau để theo dõi:
- Mua của ai, mua cái gì, số lượng, giá mua.
- Bán cho ai, cái gì, số lượng, giá bán.
- Khi đem hàng về, số lượng nhập kho là thực tế được kiểm nghiệm.
- Hàng mua có thể trả lại nếu nó không đạt chuẩn. Cái này thì không cần lăn tăn, vì lãnh đạo không cần làm phiếu xuất trả lại mà khi kiểm nghiệm để nhập kho đã thực hiện điều này. Nghĩa là nếu số lượng nhập theo chừng từ của nhà cung cấp là 10 cái nhưng khi kiểm nghiệm chỉ có 8 cái đạt thì nhập kho 8 cái chứ không phải 10 cái.
- Hàng bán có thể cho khách hàng trả lại, nhưng không được quá 7 ngày kể từ ngày giao hàng.
- Hàng ngày có thể kiểm tra được số lượng tồn kho theo sổ sách. Từ đó sẽ có kế hoạch nhập tiếp hàng mà số lượng tồn kho dưới mức tối thiểu.
- Hàng tháng có thể kiểm tra được số lượng tồn kho theo thực tế, sau khi có kiểm kê kho.
- Ứng với một mặt hàng, lãnh đạo cần biết giá mua ở nhà cung cấp nào là tốt nhất (rẻ nhất).
- Ứng với một mặt hàng, lãnh đạo cần biết khách hàng nào mua với số lượng nhiều nhất, tần suất mua lớn nhất, để lãnh đạo có chính sách giảm giá cho khách hàng.
và một số linh tinh nho nhỏ khác ...

Lãnh đạo yêu cầu bạn hãy "đì zai" một chương trình bằng Access để thực hiện yêu cầu của lãnh đạo. Lãnh đạo có nói: "Làm được có thưởng". :-O16: Bạn nghĩ sao? Làm hay không làm? Chắc chắn là làm. :hurray:

Để các bạn có thời gian suy tư một chút, tôi dừng bài 1 ở đây. :sifone:
 
Sửa lần cuối:
Ðề: Xây dựng một trình quản lý nhập xuất tồn đơn giản - Bài 1

Bắt đầu vào giai đoạn gay cấn !!!

GIAI ĐOẠN MỘT: XÂY DỰNG CƠ SỞ DỮ LIỆU

Lưu ý: Đây chỉ cơ sở dữ liệu mẫu, các bạn có thể tùy biến cho thích hợp.

1. Bảng danh mục hàng hóa:
Name: tblDMHH
Structure:
mahh (Text, length: 20, Primary key) - Mã số hàng hóa
tenhh (Text, length: 100) - Tên hàng hóa
dvt (Text, length: 20) - đơn vị tính
sltontoithieu (Number, Long Integer, Default value: 0) - Số lượng hàng tồn tối thiểu
hanbaodong (Number, Long Integer, Default value: 0) - Nếu lấy số lượng tồn thực trừ cho hạn báo động mà nhỏ hơn hay bằng số lượng tồn tối thiểu thì báo để nhập tiếp.

2. Bảng danh mục nhà cung cấp:
Name: tblDMNCC
Structure:
mancc (Text, length: 20, Primary Key) - Mã số nhà cung cấp
tenncc (Text, length: 255) - Tên nhà cung cấp

Trong trường hợp này tôi chỉ cần 2 field thôi, các bạn muốn thêm địa chỉ, điệnthoại, ... thì cứ tự nhiên nhé.

3. Bảng danh mục khách hàng:
Name: tblDMKH
Structure:
makh (Text, length: 20, Primary Key) - Mã số khách hàng
tenkh (Text, length: 255) - Tên khách hàng

Y chang danh mục nhà cung cấp !!!

Còn những bảng nào nữa ta, các bạn đề nghị xem ???
:sifone:
 
Ðề: Xây dựng một trình quản lý nhập xuất tồn đơn giản - Bài 1 (tiếp theo)

Tiếp tục nhé...
Đối với các phiếu nhập, xuất, chúng tase 4tạo thành 2 bảng: một bảng gọi là lý lịch, một bảng gọi là chi tiết. Bảng lý lịch sẽ lưu những field như số, ngày, nhà cung cấp, ... Bảng chi tiết sẽ lưu những field như mã hàng, số lượng, đơn giá, thành tiền (nếu cần), ...
Hai bảng lý lịch và chi tiết sẽ quan hệ với nhau theo dạng one-to-many. Các bạn có thể đặt Primary key của bảng lý lịch là một field dạng Auto Number hoặc có thể lấy filed số phiếu cũng được. Nếu ở đơn vị của bạn có đánh số lại theo thời gian thì bạn nên kết hợp luôn cả field ngày lập phiếu.
Ở đây tôi sẽ sử dụng hai field số và ngày lập phiếu để làm Primary key. Lý do thì từ từ bạn hiểu. Như một số cao nhân đã nói: Có đôi khi chúng ta phải phi chuẩn mới hay !!!

4. Phiếu nhập lý lịch:
Name: tblNhap_Lylich
Structure:
sopn (Text, length: 20) - Số phiếu nhập
ngaypn (Date/Time) - Ngày lập phiếu
mancc (Text, length: 20, Display control: Combo box, Row Source: tblDMNCC, Limit to List: Yes, Column Count: 2, Column Widths: 0;1) - Mã số nhà cung cấp. Từ Display control trở đi là làm sẵn để sau này vào form khỏi định lại.
Primary key: sopn, ngaypn

Có thể thêm các field: số và ngày hoác đơn xuất kho của nhà cung cấp, ...

5. Phiếu nhập chi tiết:
Name: tblNhap_Chitiet
Structure:
sopn (Text, length: 20) - Số phiếu nhập
ngaypn (Date/Time) - Ngày lập phiếu
mahh (Text, length: 20, Display control: Combo box, Row Source: tblDMHH, Limit to List: Yes, Column Count: 2, Column Widths: 0;1)) - Mã số hàng hóa
slnhap (Number, Long Integer, default value: 0) - Số lượng nhập kho
dgnhap (Number, Long Integer, default value: 0) - Đơn giá nhập kho
Thành tiền thì không cần, nhưng nếu các bạn muốn thì ... chơi luôn:
thanhtiennhap (Number, Double, Decimal places: 0, default value: 0) - Thành tiền hàng nhập.
Primary key: sopn, ngaypn, mahh

6. Phiếu xuất lý lịch:
Name: tblXuat_Lylich
Structure:
sopx (Text, length: 20) - Số phiếu xuất
ngaypx (Date/Time) - Ngày lập phiếu
makh (Text, length: 20, Display control: Combo box, Row Source: tblDMKH, Limit to List: Yes, Column Count: 2, Column Widths: 0;1) - Mã số khách hàng. Từ Display control trở đi là làm sẵn để sau này vào form khỏi định lại.
Primary key: sopx, ngaypx


7. Phiếu xuất chi tiết:
Name: tblXuat_Chitiet
Structure:
sopx (Text, length: 20) - Số phiếu xuất
ngaypx (Date/Time) - Ngày lập phiếu
mahh (Text, length: 20, Display control: Combo box, Row Source: tblDMHH, Limit to List: Yes, Column Count: 2, Column Widths: 0;1)) - Mã số hàng hóa
slxuat (Number, Long Integer, default value: 0) - Số lượng xuất kho
dgban (Number, Long Integer, default value: 0) - Đơn giá bán
Tương tự nhập, thành tiền có thể cần hoặc không. Nhưng ở trên có thì ở đây có luôn cho đồng bộ.
thanhtienxuat (Number, Double, Decimal places: 0, default value: 0) - Thành tiền hàng bán.
Primary key: sopx, ngaypx, mahh


Nghỉ chút. :sifone:

Hic hic, vào xem thread này thấy hình như ít người xem. Vậy chắc là tui viết dở wá. Thôi thì dừng lại vậy. :-O15:

Nói vậy thôi, chứ làm người ai làm vậy há !!! :smilielol5:

Để có thể lập bảng cân đối nhập xuất tồn, các bạn sẽ tạo hai bảng dữ liệu sau, có cấu trúc gần giống nhau, một để báo cáo tháng, một để báo cáo ngày. Chịu khó nhé. Các bảng này có thể "xóa đi làm lại" nên thường gọi một cách nôm na là bảng tạm hay bảng kết xuất.
8. Bảng nhập xuất tồn ngày:
Name: tblNXT_ngay
Structure:
ngay (Date/time) - Ngày báo cáo
mahh (Text, length: 20)
sltd (Number, Long Integer) - số lượng hàng tồn đầu ngày
sln (Number, Long Integer) - số lượng hàng nhập trong ngày
slx (Number, Long Integer) - số lượng hàng xuất trong ngày
sltc (Number, Long Integer) - số lượng hàng tồn cuối ngày (hay tại thời điểm lập báo cáo).
sltoithieu (Number, Long Integer) - số lượng hàng tồn tối thiểu.

9. Bảng nhập xuất tồn tháng:
Name: tblNXT_thang
Structure:
thang (Number, Byte) - Tháng báo cáo
nam (Number, Integer) - Năm báo cáo
mahh (Text, length: 20)
sltd (Number, Long Integer) - số lượng hàng tồn đầu tháng
sln (Number, Long Integer) - số lượng hàng nhập trong tháng
slx (Number, Long Integer) - số lượng hàng xuất trong tháng
sltc (Number, Long Integer) - số lượng hàng tồn cuối tháng.
sltoithieu (Number, Long Integer) - số lượng hàng tồn tối thiểu.


Để tính số lượng tồn đầu, các bạn nên tạo thêm một bảng nữa để chứa các dữ liệu tồn kho đầu mỗi tháng.
10. Bảng tồn kho đầu tháng:
Name: tblTONDAU
Structure:
thang (Number, Byte) - Tháng
nam (Number, Integer) - Năm
mahh (Text, length: 20)
sltd (Number, Long Integer) - số lượng hàng tồn đầu tháng

Ngoài ra trong quá trình tực hiện sẽ có thể tạo ra một vài bảng nữa. Lúc đó tính sau.

Ngày mai, chúng ta sẽ thực hiện bước "đì zai" mấy cái form há.
 
Sửa lần cuối:
Ðề: Xây dựng một trình quản lý nhập xuất tồn đơn giản - Bài 1

Theo tác giả thì:

1. Bảng danh mục hàng hóa:
Name: tblDMHH
Structure:
mahh (Text, length: 20, Primary key) - Mã số hàng hóa
tenhh (Text, length: 100) - Tên hàng hóa
dvt (Text, length: 20) - đơn vị tính
sltontoithieu (Number, Long Integer, Default value: 0) - Số lượng hàng tồn tối thiểu
hanbaodong (Number, Long Integer, Default value: 0) - Nếu lấy số lượng tồn thực trừ cho hạn báo động mà nhỏ hơn hay bằng số lượng tồn tối thiểu thì báo để nhập tiếp.

Nhưng tôi thấy chưa đủ các thông tin sau:
- Giá bán lẻ quy định
- Giá bán sỉ quy định
- Giá thưồng mua
- Thuế suất
- Phần trăm chiết khấu / ngày bắt đầu áp dụng có chiết khấu / ngày kết thúc áp dụng chiết khấu.
- Sltontoithieu: không thể để long interger được bới có những mặt hàng có sử dụng đến 2 số sau số thập phân. Nên để là Double.

Theo tác giả:

2. Bảng danh mục nhà cung cấp:
Name: tblDMNCC
Structure:
mancc (Text, length: 20, Primary Key) - Mã số nhà cung cấp
tenncc (Text, length: 255) - Tên nhà cung cấp

Nhưng còn thông tin rất quan trọng cần sử dụng sau này là:
- Nợ cho phép : Cho phép khách hàng nợ tối đa là bao nhiêu (giúp báo động khách nợ quá nhiều sau này). Nên để Curency
- Tổng doanh số đã trao đổi: Thông tin doanh số mua bán của khách hàng với doanh nghiệp đến thời gian hiện tại được ghi nhận vào đây. Sau này sẽ sử dụng cho các công việc ưu tiên về giá mua bán... sắp xếp loại khách hàng theo các nhóm ưu đãi káhc nhau.

Theo tác giả:

4. Phiếu nhập lý lịch:
Name: tblNhap_Lylich
Structure:
sopn (Text, length: 20) - Số phiếu nhập
ngaypn (Date/Time) - Ngày lập phiếu
mancc (Text, length: 20, Display control: Combo box, Row Source: tblDMNCC, Limit to List: Yes, Column Count: 2, Column Widths: 0;1) - Mã số nhà cung cấp. Từ Display control trở đi là làm sẵn để sau này vào form khỏi định lại.
Primary key: sopn, ngaypn
Có thể thêm các field: số và ngày hoác đơn xuất kho của nhà cung cấp, ...

Nên cần:
- Hình thức nhập kho: M- Nhập mua, T- Nhập trả hàng do kém chất lượng, C- Nhập chuyển kho nội bộ, N - Nhập do dư thừa từ sản xuất về.
- Và như vậy không nên sử dụng trường MaNCC mà nên sử dụng Madoituong (nếu là phiếu nhập trả thì phải lấy từ danh sách khách mua chứ không phải từ danh sách nhà cung cấp.
- Thuế suất của phiếu này

Đề xuất giải pháp:

Trong danh mục hàng hóa ta nên thêm 24 trường cho 12 tháng trong năm để mỗi khi tính toán sẽ lưu số lượng tồn đầu, giá trị tồn vào các trường tương ứng trong danh mục hàng... Như vậy theo cách tổ chức này ta sẽ tiết kiệm được nhiều không gian chứa dữ liệu trên HDD.
 
Sửa lần cuối:
Ðề: Xây dựng một trình quản lý nhập xuất tồn đơn giản - Bài 1

Bạn dangtuanson có một số ý kiến có ích. Hoan nghênh đã có đóng góp.
Tuy nhiên xin "khều" chút nghen: do tính chất đại chúng, bài toán tôi đặt ra để anh em tham khảo là đơn giản thôi. Ngay cái tên của bài đã nói lên điều đó rồi.

Các đối tượng mục tiêu của loạt bài này là anh em mới nhập môn VBA của Access và cơ sở dữ liệu thôi. Nên nếu bày vẽ nhiều quá thì anh em sẽ rối. Những vấn đề trao đổi sâu hơn thì sẽ trao đổi qua tin nhắn hoặc mail.

Trong danh mục hàng hóa bạn đề nghị cho thêm 24 field, mỗi tháng có hai field, vậy qua năm sau thì sao? Nghĩa là bạn sẽ tạo ra một danh mục hàng hóa khác?
Thông thường khi xử lý theo row bao giờ cũng nhanh hơn là theo column. Theo cá nhân tôi ít khi nào "bành trướng" các column lắm trừ những trường hợp bất khả kháng.

Chào bạn dangtuanson.
 
Ðề: Xây dựng một trình quản lý nhập xuất tồn đơn giản - Bài 1

Rất cảm ơn Phatnq2002. Bài viết của bạn chi tiết lắm. Nhưng xin giới thiệu với các bạn một phầm mềm mà mịnh tự viết trên VBA, nhỏ gọn và rất dễ sữ dụng. Nếu cần có thể liên hệ với tớ nhé.
 
Ðề: Xây dựng một trình quản lý nhập xuất tồn đơn giản - Bài 1

Em mới học, về Acc để thiết kế một chương trình quản lý văn phòng phẩm cho công ty, em thấy các bác viết hay quá. Có gì nhờ các bán giúp em nhé.
 
Ðề: Xây dựng một trình quản lý nhập xuất tồn đơn giản - Bài 1

Rất cảm ơn Phatnq2002. Bài viết của bạn chi tiết lắm. Nhưng xin giới thiệu với các bạn một phầm mềm mà mịnh tự viết trên VBA, nhỏ gọn và rất dễ sữ dụng. Nếu cần có thể liên hệ với tớ nhé.

Chời. Có thì đưa lên cho quần chúng thưởng thức chứ.
Lại còn liên hệ riêng nữa cơ à. Em sợ ma lắm ạ
 
Ðề: Xây dựng một trình quản lý nhập xuất tồn đơn giản - Bài 1 (tiếp theo)

Bài viết bạn hữu ích lắm, tôi thiết kế form , report nhưng phần lấy số liệu thừ nhập liệu để lên mấy sổ thì không biết, bạn có thể chỉ tôi cách được không
tranbinh200780@yahoo.com.vn
thân chào

Bạn tự nhập dữ liệu vào để thử trên form hay trên table. Cái này chỉ là cái sườn, phần da thịt là để các bạn đắp thêm vào. :))
 
Ðề: Xây dựng một trình quản lý nhập xuất tồn đơn giản - Bài 1 (tiếp theo)

Tôi nhập dữ liệu trên form và khi nhập thì mình in sổ trên report, in sổ chi tiết và sổ cái,làm sao lấy dữ liệu qua, ví dụ, chọn sổ cái tiền mặt thì in được nó

Bạn phải thiết kế những query tương ứng để làm nguồn cho report.
Sau đó bạn sẽ làm một form điều khiển, hoặc ngay trong các form có sẵn, bạn cũng có thể đặt các command button. Ứng với sự kiện Click của nút lệnh, bạn sẽ cho chạy thủ tục sự kiện tương ứng, với code:
DoCmd.OpenReport "tên_report", acViewNormal (hoặc acViewPreview)
 
Ðề: Xây dựng một trình quản lý nhập xuất tồn đơn giản - Bài 1

Rất cảm ơn Phatnq2002. Bài viết của bạn chi tiết lắm. Nhưng xin giới thiệu với các bạn một phầm mềm mà mịnh tự viết trên VBA, nhỏ gọn và rất dễ sữ dụng. Nếu cần có thể liên hệ với tớ nhé.

Rất hoan nghênh Bác đã chia sẻ. Nhưng ở đây, bác Phatnq2002 nói là "Xây dựng một trình quản lý nhập xuất tồn đơn giản", tức là đưa lên ý tưởng, ý kiến đóng góp, rồi cùng nhau xây dựng, và cùng nhau hướng dẫn cho mọi người đã và chưa biết access cũng có thể làm đc.

Bài cùa bác Phatnq2002 là rất hữu ích cho a em nào đang học.
 
Ðề: Xây dựng một trình quản lý nhập xuất tồn đơn giản - Bài 1

Anh Phat ơi, đến giờ có thay đổi gì trong phần thiết kế Database không anh? em thấy có một số thảo luận, không biết có điều chỉnh cấu trúc dữ liệu không? Để làm cho nó đồng nhất :cheers1:
 
Ðề: Xây dựng một trình quản lý nhập xuất tồn đơn giản - Bài 1

Rất cảm ơn Phatnq2002. Bài viết của bạn chi tiết lắm. Nhưng xin giới thiệu với các bạn một phầm mềm mà mịnh tự viết trên VBA, nhỏ gọn và rất dễ sữ dụng. Nếu cần có thể liên hệ với tớ nhé.

Có thể cho mình một bản để nghiên cứu không Nam tước.
Mà sao không post lên cho mọi người cùng xem nhỉ?
Nếu được vui lòng gửi cho mình theo địa chỉ email: honey.2310@yahoo.com
Cảm ơn bạn
 
Ðề: Xây dựng một trình quản lý nhập xuất tồn đơn giản - Bài 1

Rất cảm ơn Phatnq2002. Bài viết của bạn chi tiết lắm. Nhưng xin giới thiệu với các bạn một phầm mềm mà mịnh tự viết trên VBA, nhỏ gọn và rất dễ sữ dụng. Nếu cần có thể liên hệ với tớ nhé.

Anh Nam Tước post lên diễn đàn luôn đi cho ai có nhu cầu thì tài về nghiên cứu.
 
Ðề: Xây dựng một trình quản lý nhập xuất tồn đơn giản - Bài 1

ông anh ơi! Post một bản lên xem nào? dân vùng sâu vùng xa còn mù chữ lắm.
 
Trạng thái
Không mở trả lời sau này.

CẨM NANG KẾ TOÁN TRƯỞNG


Liên hệ: 090.6969.247

KÊNH YOUTUBE DKT

Kỹ thuật giải trình thanh tra BHXH

Đăng ký kênh nhé cả nhà

SÁCH QUYẾT TOÁN THUẾ


Liên hệ: 090.6969.247

Top