• Tự động cập nhật mã khi thay đổi thông tin trên bảng khác
  • Tự động cập nhật mã khi thay đổi thông tin trên bảng khác

    longkd_bvct@yahoo.com.vn > 16-06-23, 05:09 PM

    Chào mọi người ạ. em đang gặp vấn đề sau nhờ mọi người giúp (kèm file dữ liệu)
    Em có CSDL gồm các bảng sau:

    1. TblDanhmuchang gồm các trường: MaHH, TenHH, dvt, quycach,....
    2. TblNhaphoadon_chitiet gồm các trường: ID, MaHH, solo, Handung, soluong, maphu
    3. TblDieuchuyendi_chitiet( điều chuyển đi chi tiết) gồm các trường: ID, Maphu, Soluong

    Em muốn quản lý hàng hóa điều chuyển đi theo số lô, hạn dùng thông qua Maphu. Em tạo Maphu bằng cách nối các trường Mahh, solo, Handung trong bảng TblNhaphoadon_chitiet với nhau bằng query "Qry_Maphu". Sau đó em cập nhật vào bảng BangtamMaphu để làm nguồn Maphu cho bảng Tbldieuchuyedi_chitiet. 
    Nhưng  khi có chỉnh sửa MaHH trên bảng TblDanhmuchang hay Solo, Handung trên bảngTblNhaphoadon_chitiet thì Maphu trên bảng TblDieuchuyendi_chitiet không tự động câp nhật theo. Em có tạo query để cập nhật lại Maphu trên BangtamMaphu nhưng khi cập nhật thì Maphu trên bảng TblDieuchuyendi_chitiet sẽ bị mất mà k cập nhật theo.
    Vậy phải làm thế nào ạ.

    LINK CSDL
    https://drive.google.com/file/d/1fagC0bd...sp=sharing
  • RE: Tự động cập nhật mã khi thay đổi thông tin trên bảng khác

    ongke0711 > 17-06-23, 01:55 PM

    (16-06-23, 05:09 PM)longkd_bvct@yahoo.com.vn Đã viết: Em muốn quản lý hàng hóa điều chuyển đi theo số lô, hạn dùng thông qua Maphu. Em tạo Maphu bằng cách nối các trường Mahh, solo, Handung trong bảng TblNhaphoadon_chitiet với nhau bằng query "Qry_Maphu". Sau đó em cập nhật vào bảng BangtamMaphu để làm nguồn Maphu cho bảng Tbldieuchuyedi_chitiet. 
    Nhưng  khi có chỉnh sửa MaHH trên bảng TblDanhmuchang hay Solo, Handung trên bảngTblNhaphoadon_chitiet thì Maphu trên bảng TblDieuchuyendi_chitiet không tự động câp nhật theo. Em có tạo query để cập nhật lại Maphu trên BangtamMaphu nhưng khi cập nhật thì Maphu trên bảng TblDieuchuyendi_chitiet sẽ bị mất mà k cập nhật theo.

    Cách làm này của bạn nó đi lòng vòng, làm nặng, rườm ra thêm CSDL mà việc cập nhật lại càng rối thêm. Không cần tạo thêm bảng [BangTamMaPhu] làm gì vì nếu tạo nó, mỗi khi có thay đổi bạn phải cập nhật lại bảng này, mất thời gian, thêm code xử lý...
    - Để tạo [MaPhu]: bạn tạo thẳng ngay khi nhập hoá đơn, lưu xuống bảng tblNhapHoaDon_ChiTiet. Sau này bạn muốn sửa thônh tin gì trong bảng tblNhapHoaDon_ChiTiet thì nó cũng cập nhật lại luôn cái [MaPhu]. Cột [MaPhu] sẽ là Index: YEs (Duplicate OK).
    - Khi thực thi nghiệp vụ nhập điều chuyển, comboBox để chọn [MaPhu] sẽ có RecordSource là cái GroupBy Query như cái [qry_maphu] mà bạn đang làm (lấy thẳng cột MaPhu đã có sẳn của tblNhapHoaDon_ChiTiet luôn).
    - Còn vấn đề sửa MaHH trong bảng Danh Mục hàng, nếu chuẩn hoá thì nên không cho sửa vì ảnh hường đến các báo cáo liên quan đến mã hàng này đã phát sinh. Tôi thường thiểt kế chỉ cho sửa/ xoá MaHH sau khi kiểm tra không có nghiệp vụ nào phát sinh liên quan mới cho xoá/ sửa.
  • RE: Tự động cập nhật mã khi thay đổi thông tin trên bảng khác

    DooHoaangPhuuc > 17-06-23, 06:57 PM

    Vì khi đã ghi vào Tbldieuchuyedi_chitiet. từ BangtamMaphu thì dữ liệu trên bảng này  Tbldieuchuyedi_chitiet. đã cố định. Thay đổi dữ liệu trên các bảng khác sẽ không thể tác động gì đến dữ liệu trên bảng này.
    Có thể có giải pháp sau :
    + Khi thay đổi dữ liệu  TblDanhmuchang thì sẽ xoá dữ liệu liên quan này trên bảng  Tbldieuchuyedi_chitiet.
    + Sau khi chỉnh sửa dữ liệu (record) trên bảng  TblDanhmuchang sẽ cập nhật lại chính dữ liệu này trên bảng  Tbldieuchuyedi_chitiet. bằng append query.
    Một vài góp ý nhỏ, nếu chưa đúng xin các Tiền bối góp ý hướng dẫn.

    Best Regards,
    DooHoaangPhuuc
  • RE: Tự động cập nhật mã khi thay đổi thông tin trên bảng khác

    ongke0711 > 17-06-23, 09:59 PM

    Việc sửa lại khoá chính và các khoá phụ khá là nguy hiểm khi đã có các giao dịch liên quan đến khoá đó phát sinh. Do đó bạn phải bẫy lỗi thật kỹ để tránh các giao dịch, các record con lạc loài, không biết nó thuộc cha/mẹ nào.
    - Đối với khoá chính (Primary Key), nếu bạn có thiết lập Relationship với tuỳ chọn "Cascade Update Related Fields" thì khi bạn thay đổi khoá chính, nó sẽ tự động cập nhật khoá đó ở các table con liên quan. Trong ví dụ trên của thớt là [MaHH].
    - Đối với việc thay đổi [SoLo], [HanSuDung] --> nó liên quan đến việc tạo khoá ngoại (Foreign Key) là [MaPhu], mà mã này được tạo ra từ sự kết hợp các Fields nên nó sẽ không tự động thay đổi được. Do đó trước khi thay đổi [MaPhu], bạn phải tìm [MaPhu] cũ ở tất cả các table liên quan đã phát sinh mà cập nhật với [MaPhu] mới (Update query).

    (Không dùng bảng tạm mã phụ gì hết nhé, mất công phải update thêm table mà dữ liệu lại trùng lặp)
  • RE: Tự động cập nhật mã khi thay đổi thông tin trên bảng khác

    longkd_bvct@yahoo.com.vn > 17-06-23, 10:22 PM

    Em cũng lấy maphu trực tiếp từ tblnhaphoadon_chitiet. Nhưng khi cập nhât 
     nhật lại solo và handung thì maphu trên bang tbldieuchuyendi_chitiet k tự cập nhật lại ạ.