• Mã Số Hóa Đơn Tăng Dần theo Ngày - Tháng - Năm
  • Mã Số Hóa Đơn Tăng Dần theo Ngày - Tháng - Năm

    pherotao > 02-11-17, 04:39 PM

    Xin chào Diễn đàn!
    Tôi có một vướng mắt về Mã số Hóa Đơn trong Access như sau:
    - Ví dụ: MaHD, Ngay, DienGiai,...
    Tôi muốn, khi nhấn nút "Ghi", thì MaHD sẽ tự điền : 20171101HD0001, phát sinh thêm thì sẽ là: 20171101HD0002, 20171101HD0003, 20171101HD0004, v.v... đối với các hóa đơn phát sinh trong ngày 01/11/2017. Nếu ngày 09/11/2017 sẽ là: 20171109HD0001, 20171109HD0002, 20171109HD0003,...
    Nghĩa là: trong một ngày có nhiều phiếu nhập, thì phiếu nhập đó tự đánh số từ 1 - 2 - 3,....; qua ngày hôm sau, thì tính lại từ đầu.
    Nếu được, thì cho tôi xin code: "qua ngày tính lại từ đầu", "qua tháng tính lại từ đầu", "qua năm tính lại từ đầu".

    Xin chân thành cảm ơn!
  • RE: Mã Số Hóa Đơn Tăng Dần theo Ngày - Tháng - Năm

    cpucloi > 02-11-17, 04:50 PM

  • RE: Mã Số Hóa Đơn Tăng Dần theo Ngày - Tháng - Năm

    pherotao > 02-11-17, 10:27 PM

    (02-11-17, 04:50 PM)cpucloi Đã viết: Bạn không chịu search trước khi hỏi
    http://thuthuataccess.com/forum/thread-9993.html
    http://thuthuataccess.com/forum/thread-127.html
    http://thuthuataccess.com/forum/thread-9777.html
    ... và còn nhiều nữa. big green

    Cám ơn bạn đã quan tâm trả lời. Nhưng ý tôi là:
    1. Tôi có 3 trường, gồm: 'Mã HĐ', 'Ngày', 'Diễn Giải'. Tôi muốn Mã HĐ tự động điền như sau:
    - Phát sinh Nhập ngày 01/11/2017, có tất cả 4 phiếu, thì 'Mã HĐ' là:
    N20171101HH0001, N20171101HH0002, N20171101HH0003, N20171101HH0004;
    - Phát sinh Nhập ngày 05/11/2017, có tất cả 2 phiếu, thì 'Mã HĐ' là:
    N20171105HH0001; N20171105HH0002;
    - Phát sinh Nhập ngày 14/11/2017, có tất cả 3 phiếu, thì 'Mã HĐ' là:
    N20171114HH0001, N20171114HH0002, N20171114HH0003;
    v.v....
    Tức là, qua ngày mới thì 'Mã HĐ' sẽ tính lại từ đầu. Nhưng vì lí do nào đó, đã qua ngày 18/11/2017, tôi mới nhập thêm 02 hóa đơn Nhập vào ngày 05/11/2017. Vì vậy, sẽ phát sinh thêm 02 hóa đơn với mã là: N20171105HH003, N20171105HH004.
    2. Ở trên Form, 'Mã HĐ' sẽ để trống (để code tự điền), 'Ngày' mặc định là Date(), nhưng cũng có thể nhập tay khi mình muốn nhaaph ngày khác (ngày cũ hơn).

    Xin chân thành cảm ơn!
  • RE: Mã Số Hóa Đơn Tăng Dần theo Ngày - Tháng - Năm

    pherotao > 04-11-17, 11:13 PM

    Không ai giúp mình hết................. huhuhu............................
  • RE: Mã Số Hóa Đơn Tăng Dần theo Ngày - Tháng - Năm

    ongke0711 > 05-11-17, 01:54 PM

    (04-11-17, 11:13 PM)pherotao Đã viết: Không ai giúp mình hết................. huhuhu............................

    Bạn cpuloi đã gợi ý bạn 3 cái link trên đã đầy đủ các kiểu tạo STT tăng dần rồi sao bạn không bắt tay vô làm thử mà ngồi đó than thở? 
    - Tự làm trước, chỗ nào không chạy thì post lên mọi người hướng dẫn tiếp.
    - Về phần muốn nhập lại hóa đơn các ngày trước đó thì trong các hàm tạo STT ở mấy link trên, bạn thay thế hàm Date() trong đó thành cái textbox chứa ngày mà bạn gõ tay vào là được rồi.
  • RE: Mã Số Hóa Đơn Tăng Dần theo Ngày - Tháng - Năm

    pherotao > 07-11-17, 05:11 PM

    Bạn cpuloi đã gợi ý bạn 3 cái link trên đã đầy đủ các kiểu tạo STT tăng dần rồi sao bạn không bắt tay vô làm thử mà ngồi đó than thở? 
    - Tự làm trước, chỗ nào không chạy thì post lên mọi người hướng dẫn tiếp.
    - Về phần muốn nhập lại hóa đơn các ngày trước đó thì trong các hàm tạo STT ở mấy link trên, bạn thay thế hàm Date() trong đó thành cái textbox chứa ngày mà bạn gõ tay vào là được rồi.
    [/quote]

    Không được bạn ơi. Mình đã thử đủ kiểu. Như mình đã nói: Số Hóa Đơn phải tăng dần theo ngày.
    Ví dụ:
    - Tháng 10, có PHIẾU NHẬP phát sinh:
       + ngày 03, có 05 phiếu: 'N 2017 10 03 001', 'N 2017 10 03 002', 'N 2017 10 03 003', 'N 2017 10 03 004', 'N 2017 10 03 005';
       + ngày 13 có 03 phiếu: 'N 2017 10 13 001', 'N 2017 10 13 002', 'N 2017 10 13 003';
       + ngày 30 có 1 phiếu: 'N 2017 10 30 001'.
    - Tháng 11, có PHIẾU NHẬP phát sinh:
       + ngày 09, có 03 phiếu: 'N 2017 11 09 001', 'N 2017 11 09 002'; 'N 2017 11 09 003';
       + ngày 28, có 04 phiếu: 'N 2017 11 28 001', 'N 2017 11 28 002', 'N 2017 11 28 003', 'N 2017 11 28 004'
       v.v....
    Trong quá trình kiểm tra, thấy rằng:
    - tháng 10, có thêm 3 phiếu mà chưa nhập lên máy: lần lượt: 01 phiếu ngày 14/10/2017; 02 phiếu ngày 18/10/2017;
    - tháng 11, vào ngày 09/11/2017, có phiếu 'N 2017 11 09 002' phải sửa lại nhập cho 30/10/2017. Vì vậy mong muốn là: 'N 2017 11 09 002' sẽ thành 'N 2017 10 30 002' (lúc đầu 30/10 chỉ có 1 phiếu, giờ tăng lên 2 phiếu); còn 09/11 từ 03 giảm còn 2: 'N 2017 11 09 003' sẽ tự điều chỉnh thành 'N 2017 11 09 002';

    Trong quá trình làm Form, mình có thêm các nút: Thêm - Sửa - Ghi - Không để phục vụ nhập liệu.


    Xin mọi người giúp mình với! Xin cảm ơn!
  • RE: Mã Số Hóa Đơn Tăng Dần theo Ngày - Tháng - Năm

    ongke0711 > 07-11-17, 07:35 PM

    Bạn đưa cái dữ liệu mẫu và những gì bạn đã làm lên đây, mọi người xem sửa cho nhanh.
  • RE: Mã Số Hóa Đơn Tăng Dần theo Ngày - Tháng - Năm

    cpucloi > 07-11-17, 08:18 PM

    Bạn nghiên cứu UnBround form nhé
  • RE: Mã Số Hóa Đơn Tăng Dần theo Ngày - Tháng - Năm

    pherotao > 08-11-17, 11:32 PM

    (07-11-17, 07:35 PM)ongke0711 Đã viết: Bạn đưa cái dữ liệu mẫu và những gì bạn đã làm lên đây, mọi người xem sửa cho nhanh.

    STT theo Ngày
    STT theo Tháng
  • RE: Mã Số Hóa Đơn Tăng Dần theo Ngày - Tháng - Năm

    ongke0711 > 09-11-17, 01:04 AM

    (07-11-17, 05:11 PM)pherotao Đã viết:    v.v....
    Trong quá trình kiểm tra, thấy rằng:
    - tháng 10, có thêm 3 phiếu mà chưa nhập lên máy: lần lượt: 01 phiếu ngày 14/10/2017; 02 phiếu ngày 18/10/2017;
    - tháng 11, vào ngày 09/11/2017, có phiếu 'N 2017 11 09 002' phải sửa lại nhập cho 30/10/2017. Vì vậy mong muốn là: 'N 2017 11 09 002' sẽ thành 'N 2017 10 30 002' (lúc đầu 30/10 chỉ có 1 phiếu, giờ tăng lên 2 phiếu); còn 09/11 từ 03 giảm còn 2: 'N 2017 11 09 003' sẽ tự điều chỉnh thành 'N 2017 11 09 002';

    Trong quá trình làm Form, mình có thêm các nút: Thêm - Sửa - Ghi - Không để phục vụ nhập liệu.

    Vấn đề thay đổi lại mã số HĐ này của bạn đơn giản nhưng một vấn đề quan trong hơn nữa bạn phải nghĩ đến khi thực hiện việc “Sửa” mã HĐ của nghiệp vụ này là nó có ảnh hưởng đến dữ liệu báo cáo kế toán của bạn không? tính đúng đắn của qui trình, nguyên tắc nhập liệu dữ liệu quan trọng như hóa đơn nhập xuất này. 
    Bạn cần tính đến:
    - Mã HD này sẽ làm khóa ngoại cho các table khác liên quan. khi sửa đổi nó cũng sẽ ảnh hưởng. Nếu bạn đã thiết lập Relationship cho Mã HD này với các table khác là  “Cascading update…” thì ok.
    - Mã HD tạo tự động dùng để định danh (primary key) một dòng (1 record) để phân biệt các dòng khác và thường là không cho sửa đổi mà bây giờ bạn lại muốn sửa đổi hàng loạt các Primary Key [mã HD] như hóa đơn tháng 11 trong ví dụ của bạn. Như vậy không đảm bảo tính toàn vẹn dữ liệu. Vd: Tháng 11 bạn đã làm nghiệp vụ thanh toán cho nhà cung cấp các Mã HD đó rồi, in chứng từ, lưu trữ kế toán v.v.. Sau đó tự nhiên phát sinh sửa mã HD hàng loạt vậy mấy chứng từ đã xử lý rồi sai thông tin hết…Do vậy nếu Mã HD đã có phát sinh liên quan đến dữ liệu, nghiệp vụ khác, bạn sửa nó sẽ ảnh hưởng đến tính nhất quán của dữ liệu. Thường thì Kế toán không cho nghiệp vụ nhập ngược trở về tháng trước sau khi đã khóa sổ. Tốt nhất cho trường hợp sửa mã HD về tháng khác thì chỉ cập nhật nó thôi, các Mã HD đã tồn tại của tháng đó rồi, không được thay đổi.
    - Một vấn đề bạn phải tính tới nữa khi code cho việc sửa Mã HD này - code cho nút [Sửa]: Phải xét xem có sửa Field  [tháng] không, nếu có thì chạy code cập nhật lại mã HD, nếu không thì chỉ cập nhật thông thường.

    Code tạo số tt tăng dần trong demo của bạn cũng hay là nó tự tìm nhưng số nào chưa có (có thể là nhỏ hơn số tt đã cấphiện tại) để cấp lại. Thay vì dùng vòng lặp while... trong Recordset thì dùng Dlookup sẽ nhanh hơn.

    Mã PHP:
    ' tim xem soCT nay da co hay chua'
    [/font]
       k 1
       Do Until k 
    0
           vsoct 
    Right("000" i3)
           k Len(Nz(DLookup("SoChungTu""tblxuatnhap""[NgayCT]=#" Format(Me.txtngayct"mm/dd/yyyy") & "# AND SoChungTu ='" vsoct "'"), ""))
           i 1
       Loop

       vrs
    .Close
       Set vdata 
    Nothing

    [font=Tahoma]   SoChungTu vsoct