Chào mừng đến với Diễn đàn lập trình - Cộng đồng lập trình.
Kết quả 1 đến 10 của 10
  1. #1
    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>

  2. #2
    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.

  3. #3
    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

  4. #4
    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.

  5. #5
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi mrfour.it
    [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.
    theo bác thì nên thiết kế như thế nào?
    bác có thể gợi ý được không?

  6. #6
    Ngày tham gia
    Sep 2015
    Bài viết
    0
    Trích dẫn Gửi bởi lthict
    theo bác thì nên thiết kế như thế nào?
    bác có thể gợi ý được không?
    Mình nghĩ 2 Bảng CTPN với THUỐC bạn thiết kế sai rồi. Đáng lẽ 1 phiếu nhập phải có nhiều loại thuốc chứ, đằng này bạn thiết kế ngược lại, 1 loại thuốc có nhiều phiếu nhập?
    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

  7. #7
    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

  8. #8
    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

  9. #9
    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.

  10. #10
    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

 

 

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •