-
21-02-2012, 08:11 AM #1Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Bài Toán Quản Lý Thuốc. Làm sao kiểm tra thuốc còn hay hết hoặc đã hết hạn?
Em có 1 bài toàn quản lý thuốc. Diagram của database như sau:
Vấn đề đặt ra như sau:
Khi nhập thuốc về kho lưu trữ. thì trong chi tiết hóa đơn có MaThuoc, NgayNhap, NgaySX, HanSD, SoLo.
Giả sử như:
- Ngày 01/01/2012 nhập về 30 vỉ thuốc cảm cúm mã là:MT00125, Có hạn sử dụng là 3 tháng. số lô:00123.
sau đó em bán còn 3 vỉ.
- Ngày 01/02/2013 Em nhập về tiếp 40 vỉ thuốc có mã MT00125 hạn sử dụng là 3 tháng. có số lô là: 00145.
(trong quá trình bán thì bán đi 20 vỉ thuốc loại trên).
- Ngày 01/03/2012 Em nhập tiếp 30 vỉ loại thuốc trên hạn sử dụng là 3 tháng. số lô 00879.
Vấn đề đặt ra là:
+ Làm sao để biết được thuốc nhập về có số lô là 00123( nhập vào ngày 01/01/2012) có còn hay không? số lượng là bao nhiêu, nếu còn thì sẽ thông báo thuốc đã hết hạn sử dụng
+ Khi bán thuốc, làm sao cảnh báo nhân viên bán thuốc là sẽ lấy thuốc có hạn sử dụng gần hết đem bán.
+ Làm sao để kiểm soát được số lượng thuốc bán của mỗi lô.
<font color="Red">Lưu ý: trong chi tiết hóa đơn bán không có số lô thuốc khi bán cho khác hàng!
Hjx vấn đề này em nghĩ mãi không ra, mong các ACE giúp mình (</font>View more random threads:
- Lỗi không tìm thấy SQL Server
- Lỗi: The database 'CT' cannot be opened because it is version 655, không attach được database???
- Hình động trong web ASPX?
- Nhập kiểu date trong Masked Textbox
- nhập dữ liệu từ bàn phím trong lập trình C#?
- [Question] Hỏi về hướng Code và Relationship SQL cho một chức năng nhỏ!
- Chương trình auto nhận diện capcha và auto như video dùng nhũng hàm nào lập trình
- Lỗi xuất dữ liệu từ DataTable ra Excel khi sử dụng thư viện Interop
- Sử dụng Google Drive API, cách để ứng dụng C# tự động upload không phải xác nhận?
- so sánh các cột trong datagridview
-
21-02-2012, 10:08 AM #2Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Mình nghĩ là bạn thiết kế thiếu rùi!!
Vì khi xuất thì nhất thiết phải biết được sản phẩm đó còn hay ko? thuộc lô hàng nào nữa chứ?
Như vậy mới có thể kiểm tra được tồn kho và hạn sử dụng.
-
21-02-2012, 10:12 AM #3Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
bạn định thêm 1 trường là hết hạn nữa rồi nhập vào , mỗi lần xuất sẽ gọi đến hàm/store/trigger kiểm tra xem thuốc hết hạn hay không , vậy thôi
-
21-02-2012, 12:46 PM #4Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
[IMG]images/smilies/biggrin.png[/IMG] Vụ này lan giải đó. Bởi vi nhập thì theo đợt, nhưng khi bán thì đâu biết là bán cái nhập trước hay sau. Mà cứ cho là bán theo thứ tự thì cái tên thuốc có liên quan gì tới hạn sử dụng đâu. Khi ấy không thống kê được. Mình thì phải thiết kế Cơ sở dữ liệu kiểu khác thì mới giải quyết được vấn đề này.
-
21-02-2012, 01:53 PM #5Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi mrfour.it
bác có thể gợi ý được không?
-
22-03-2012, 12:26 PM #6Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Gửi bởi lthict
Còn các vẫn đề của bạn theo mình nghĩ thì không khó, không biết suy nghĩ của mình có sai ko:
Yêu cầu thứ 1 của bạn theo mình truy vấn như sau (minh đã sửa 2 table của bạn):
Select Thuoc.MaThuoc, Count(Thuoc.MaThuoc) as Soluong from Thuoc,ChiTietPN,PhieuNhap where Thuoc.SoPN=ChiTietPH.SoPH and ChiTietPN.SoPN=PhieuNhap.SoPN and PhieuNhap.SoPN=00123
Bạn xem lại thử, mình chưa test, nếu đúng thì các yêu cầu còn lại đơn giản rồi
-
23-03-2012, 11:33 AM #7Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Ở ChitietPN: nên chọn MaThuoc và Solo làm khoá chính.
Ở ChitietPX: nên có 2 field MaThuoc và Solo.
Tính tồn:
select SoluongNhap-SoluongXuat
Từ 2 table ChitietPX và ChitietPN
điều kiện Solo=@Solo and Mathuoc=@Mathuoc
-- với @Solo và @Mathuoc là tham số truyền vào.
chúc vui
-
23-03-2012, 02:26 PM #8Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
bạn thiết kế csdl sai rùi:
một mặt hàng có thể nhập nhiều đợt khác nhau. 1 Phiếu nhập nhập nhiều mặt hàng => Bảng ChiTietPN sẽ có thêm 1 trường MaThuoc nửa lấy 2 trường MaThuoc và SoPN làm khóa chính
câu 1: select sum(Thuoc.MaThuoc) nối 3 bảng Thuoc, ChiTietPN, PhieuNhap với điều kiện Thuoc.MaThuoc = ChiTietPN.MaThuoc và ChiTietPN.SoPN = PhieuNhap.SoPN và SoLo =0123
câu 2: tương tự
câu 3: select sum(SoLuongXuat) nối 3 bảng ChiTietPN, Thuoc, ChiTietPX group by solo là được
-
23-03-2012, 05:17 PM #9Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
Dùng số lô quản lý thuốc. Ví dụ: lô thuốc A123 thì dán mã A123 lên thuốc đó. Đó là cách nhận dạng thuốc ngoài đời. Còn trên hệ thống thì tra hạn sử dụng của thuốc từ số của lô thuốc. Từ số lô thuốc => Ngày sản xuất , hạn sử dụng. Thiết kế bảng tồn kho chứa các cột sau : Mã thuốc, Mã lô, Số lượng tồn.Mã thuốc và mã lô là khoá chính. Mỗi khi xuất nhập tự update số lượng tồn vào bảng này. Như vậy sẽ kiểm soát được số lượng tồn theo lô thuốc.
-
31-03-2012, 10:51 AM #10Junior Member
- Ngày tham gia
- Sep 2015
- Bài viết
- 0
csdl mức vật lý của bạn bạn bạn khỏi tạo các kết nối đi, vì trong C# khi ta thực hiện câu lệnh nó buộc ta phải ghi chuỗi kết nối rồi,mình cũng đang làm bài quản lý thuốc đây nhưng không có báo cáo sắp hết hạn vì muốn báo hết hạn thì csdl Thuoc không nên bỏ số lượng vào, cứ đơn đặt hàng nào thì có sluong và ngày hết hạn riêng, khi bán thì chọn đơn nhập trước bán trước bạn ah
Ngoại trừ một số ít trường hợp rãnh mũi - má và “râu rồng silicon” xuất hiện sớm, có khi từ tuổi thanh niên do cơ địa, còn lại, đại đa số do căn do lão hoá đã gây nên ba diễn biến: Giảm mô xương gò...
Cách thẩm mỹ má ở tuổi trung niên...