• Hàm tạo số phiếu tự động
  • RE: Hàm tạo số phiếu tự động

    khongcanbiet486 > 29-01-17, 10:15 PM

    Cách này mình thấy chưa ổn lắm! Nếu một chương trình viết xong và đưa vào sử dụng chẳng lẽ ai cũng biết vào đó để thực hiện ạ? Và người không biết về access cũng khó bạn ơi! Nhờ bạn và mọi người xem có cách nào khác tiện hơn?
  • RE: Hàm tạo số phiếu tự động

    maidinhdan > 29-01-17, 11:00 PM

    (22-01-17, 08:44 PM)thanhtruong Đã viết:
    (20-01-17, 11:23 AM)khongcanbiet486 Đã viết: Em đã sửa theo ý anh hướng dẫn ạ. Và em đã sửa lại một chút hàm cho phù hợp của em:
    Mã PHP:
    Function TaoSP() As String
       Dim SoMax 
    As Double
       SoMax 
    DMax("Dem""tblDuLieu")
       loai DLookup("KyHieu""tblLoaiPhieu""ID=1")
       TaoSP loai Format(Month(Date), "00") & "/" Format(SoMax 1"00000")
    End Function 
    Em đã sửa trường Dem=AutoNumber. Vậy cho em hỏi thêm 1 câu nữa:
    Nhưng hiện tại đây là dữ liệu giả lập. Em làm rùi em xóa đi. Cho đến khi áp dụng thực tế thì số phiếu của em đã nhảy lên đến số 99999 rùi ạ. Vậy em phải làm như thế này để ở bất cứ thời điểm nào em chi cần nhập vào là PN01/00001 thì nó sẽ nhảy tự động tăng dần lên?
    Nhời anh và mọi người hướng dẫn em thêm!
    Cám ơn mọi người nhiều!
    Tải file đính kèm

    Bạn xóa hết dữ liệu tại các table, rồi vào Tools/ database Utilities / Compact and Repair Data... là nó về lại từ đầu thôi.

    (29-01-17, 10:15 PM)khongcanbiet486 Đã viết: Cách này mình thấy chưa ổn lắm! Nếu một chương trình viết xong và đưa vào sử dụng chẳng lẽ ai cũng biết vào đó để thực hiện ạ? Và người không biết về access cũng khó bạn ơi! Nhờ bạn và mọi người xem có cách nào khác tiện hơn?

    Đơn gian nhất là bạn tạo query và dựa vào query này để lấy số thứ tự.

    Cách làm là bạn tạo 1 cột trong query, tách lấy 5 ký tự bên phải của PN01/00001, sau đó chuyển nó thành kiểu Number, rồi từ form ta dùng hàm mình hướng dẫn để lấy số thứ tự lơn nhất.

    * Ghi chú: Nếu bạn rành về sql thì có thể viết thẳng trong hàm thay cho cái query trên

    Thân mến!
  • RE: Hàm tạo số phiếu tự động

    chuvoicon > 04-02-17, 03:04 PM

    Dim sphieu

    If IsNull(masonhap) = True Or DLast("mid(masonhap,7,2)", "tblnhapthanhpham") <> Format(Month(Date), "00") = True Then
            DoCmd.GoToRecord , , acNewRec
            masonhap = "KTP" & Right(Year(Date), 2) & "-" & Format(Month(Date), "00") & Format(1, "000")
            Me.ngaylap.SetFocus
    Else
        DoCmd.GoToRecord , , acNewRec
        sphieu = DLast("Right([masonhap], 3)", "tblnhapthanhpham")
        masonhap = "KTP" & Right(Year(Date), 2) & "-" & Format(Month(Date), "00") & Format(sphieu + 1, "000")
        ngaylap.SetFocus

    End If

    Bạn tham khảo cấu trúc này xem có áp dụng được không, tự reset khi sang tháng mới luôn
    Cấu trúc này tạo ở nút thêm mới phiếu