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

    khongcanbiet486 > 16-01-17, 03:39 PM

    Em muốn tạo một hàm đánh số phiếu tự động. Cụ thể như sau:
    PN01-000001
    PN01-000002
    …..
    PN01-999999
    Trong đó:
    -         PN: Là mặc định không đổi
    -         01: Thay đổi theo ngày tháng hiện tại. 01 là tháng 01, ….
    -         000001: Tự động tăng lên 1 đơn vị. Số này tự động đánh lại khi tháng thay đổi.
    Ví dụ: Sang tháng 2 thì nó sẽ là:
    PN02-000001
    PN02-000002
    …..
    PN02-999999
    Và cứ như vậy nếu tháng thay đổi.

    Nhờ mọi người hỗ trợ em nhé!

    Cám ơn mọi người nhiều!

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

    maidinhdan > 16-01-17, 09:24 PM

    (16-01-17, 03:39 PM)khongcanbiet486 Đã viết: Em muốn tạo một hàm đánh số phiếu tự động. Cụ thể như sau:
    PN01-000001
    PN01-000002
    …..
    PN01-999999
    Trong đó:
    -         PN: Là mặc định không đổi
    -         01: Thay đổi theo ngày tháng hiện tại. 01 là tháng 01, ….
    -         000001: Tự động tăng lên 1 đơn vị. Số này tự động đánh lại khi tháng thay đổi.
    Ví dụ: Sang tháng 2 thì nó sẽ là:
    PN02-000001
    PN02-000002
    …..
    PN02-999999
    Và cứ như vậy nếu tháng thay đổi.

    Nhờ mọi người hỗ trợ em nhé!

    Cám ơn mọi người nhiều!

    Tải file

    Trên diễn đàn có ít nhất 10 bài viết về chủ đề này rồi, bạn sử dụng thanh tìm kiếm và tự làm nhé!
    Thân mến!
  • RE: Hàm tạo số phiếu tự động

    khongcanbiet486 > 17-01-17, 11:40 AM

    Em đã làm như vầy:
    Mã PHP:
    Function TaoSP() As String
        Dim Num 
    As Integer
       Dim loai 
    As String
       Num 
    Nz(DMax("Dem""tblDuLieu""NgayCT=Date()"))
       loai DLookup("KyHieu""tblLoaiPhieu""ID=1")
       dem.Value Num 1
       TaoSP 
    loai Format(NgayCT"mm") & "-" Format(dem"00000")
    End Function

    Private 
    Sub cmdDong_Click()
       DoCmd.Close
    End Sub

    Private Sub cmdLuu_Click()
       If IsNull(Me.SoCTThen
           MsgBox 
    "Vui long nhap so chung tu!"vbCritical vbCritical"Access"
           Me.SoCT.SetFocus
       Else
           DoCmd
    .RunCommand acCmdSaveRecord
           If IsNull
    (Me.SoCTThen
               SoCT
    .Value TaoSP
           End 
    If
       End If
    End Sub

    Private Sub cmdMoi_Click()
       DoCmd.GoToRecord , , acNewRec
       If IsNull
    (Me.SoCTThen
           SoCT
    .Value TaoSP
       End 
    If
    End Sub 
    Nhưng khi em chọn tạo mới không chạy được và báo lỗi Dem.
    Em muốn khi chọn nút Mới nó tự động thêm mới và đánh số phiếu tăng; và khi em chọn nút Lưu cũng vậy ạ!
    Nhờ mọi người hướng dẫn em thêm ạ!
    Tải file update
  • RE: Hàm tạo số phiếu tự động

    maidinhdan > 17-01-17, 04:02 PM

    Sai dòng này:
    Mã PHP:
    Num = Nz(DMax("Dem", "tblDuLieu", "NgayCT=Date()")) 
    Chính xác là sai:
    Mã PHP:
    "NgayCT=Date()" 

    Tập viết lại cho đến khi nào đúng thì chép vào chương trình mà chạy.
  • RE: Hàm tạo số phiếu tự động

    khongcanbiet486 > 17-01-17, 04:45 PM

    Anh và mọi người chỉ cụ thể cho em nhé! Thú thật em không biết sữa chỗ đó ra sao nữa?
  • RE: Hàm tạo số phiếu tự động

    cpucloi > 18-01-17, 10:56 AM

    Xin lỗi, nhưng đọc cái nick của bạn mình hơi dị ứng "Không cần biết"
  • RE: Hàm tạo số phiếu tự động

    khongcanbiet486 > 19-01-17, 07:55 PM

    Đến hôm nay rồi em vẫn không sửa được chỗ lỗi đó ạ! Mong mọi  người chỉ thêm cho em ạ!
  • RE: Hàm tạo số phiếu tự động

    maidinhdan > 19-01-17, 09:06 PM

    (19-01-17, 07:55 PM)khongcanbiet486 Đã viết: Đến hôm nay rồi em vẫn không sửa được chỗ lỗi đó ạ! Mong mọi  người chỉ thêm cho em ạ!

    Chỉnh lại cái hàm TaoSP như sau:
    Mã PHP:
    Function TaoSP() As String
        Dim SoMax 
    As Double
        SoMax 
    DMax("Dem""tblDuLieu"  'Lấy số lớn nhất cột Dem
        TaoSP = "PN" & Month(Date) & "-" & Format(SoMax + 1, "000000")  ' 
    Số lớn nhất cộng thêm 1Còn tháng thì lấy tháng theo máy tính
    End 
    Function 

    * Bạn nên thiết kế lại table cho nó hợp lý hơn, nếu không hàm này bạn dùng cũng không được.
    Ví dụ: table tblDulieu, + Cột Dem: nên để là Autonumber
    Lý do: hàm TaoSP dựa vào số lớn nhất cột đếm để tăng số lên


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

    khongcanbiet486 > 20-01-17, 11:23 AM

    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
  • RE: Hàm tạo số phiếu tự động

    thanhtruong > 22-01-17, 08:44 PM

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