• Tạo số phiếu tăng theo mẫu : date+STT
  • Tạo số phiếu tăng theo mẫu : date+STT

    Noname > 26-08-10, 08:32 PM

    Hôm trước mình giới thiệu thủ thuật tạo số phiếu tăng tự động theo đoạn code của anh phatnq2002 trang Dân Kế Toán
    Tạo số chứng từ tăng dần và reset mỗi tháng

    Hôm nay, mình giới thiệu đoạn code tạo số chứng từ tăng dần theo mẫu dạng: dd/mm/yy + số TT
    Để số thứ tự tự động tăng dần để trường STT là Text. Đồng thời ta thêm 1 trường couter kiểu Number - Integer để đếm số phiếu trong ngày. Trường này sẽ tăng khi bạn nhập phiếu mới với giá trị = max giá trị ngày đó.
    Trường STT của bạn sẽ được set giá trị = Date & "-" & format(Couter,"000")

    * Chú ý: để biết 1 record có phải được thêm mới hay không, bạn xét ở sự kiện Form_Current() của form. Nếu STT của bạn là null thì nó là record mới.

    Mã:
    Private Sub Form_Current()
        'Kiểm Tra số thứ tự, nếu Null thì đó là recodr mới
        If IsNull(Me.STT) Then
        STT.Value = SoTT
        End If
        End Sub

        Function SoTT() As String
        Dim so As Integer
        so = Nz(DMax("[Couter]", "BangChi", "[Date]= date()"))
        Couter.Value = so + 1
        SoTT = Date & "-" & Format(Couter, "000")
        End Function

    Mời các bạn xem demo về xem:
    DownLoad
  • RE: Tạo số phiếu tăng theo mẫu : date+STT

    thanhtruong > 22-01-15, 02:06 PM

    (26-08-10, 08:32 PM)Noname Đã viết: Hôm trước mình giới thiệu thủ thuật tạo số phiếu tăng tự động theo đoạn code của anh phatnq2002 trang Dân Kế Toán
    Tạo số chứng từ tăng dần và reset mỗi tháng

    Hôm nay, mình giới thiệu đoạn code tạo số chứng từ tăng dần theo mẫu dạng: dd/mm/yy + số TT
    Để số thứ tự tự động tăng dần để trường STT là Text. Đồng thời ta thêm 1 trường couter kiểu Number - Integer để đếm số phiếu trong ngày. Trường này sẽ tăng khi bạn nhập phiếu mới với giá trị = max giá trị ngày đó.
    Trường STT của bạn sẽ được set giá trị = Date & "-" & format(Couter,"000")

    * Chú ý: để biết 1 record có phải được thêm mới hay không, bạn xét ở sự kiện Form_Current() của form. Nếu STT của bạn là null thì nó là record mới.

    Mã:
    Private Sub Form_Current()
        'Kiểm Tra số thứ tự, nếu Null thì đó là recodr mới
        If IsNull(Me.STT) Then
        STT.Value = SoTT
        End If
        End Sub

        Function SoTT() As String
        Dim so As Integer
        so = Nz(DMax("[Couter]", "BangChi", "[Date]= date()"))
        Couter.Value = so + 1
        SoTT = Date & "-" & Format(Couter, "000")
        End Function

    Mời các bạn xem demo về xem:
    DownLoad

    Chào bạn, cho mình hỏi? nếu sang năm 2016 Số thứ tự này có tự động quay về 001 không vậy bạn!
    Ví dụ: 1/1/2015-001, 1/1/2015-02................1/1/2016-001
  • RE: Tạo số phiếu tăng theo mẫu : date+STT

    thanhtruong > 27-01-15, 08:44 AM

    Bạn ơi. code của bạn mỗi ngày đều về lại 001. vậy cho mình hỏi? giờ mình muốn sau một năm số thứ tự mới reset lại 00001, thì làm sao
    code của mình như sau, bạn chỉnh lại giúp mình với. 2014001, 2014002.....2015001...

    Mã:
    Private Sub Form_Current()
        'Kiểm Tra số thứ tự, nếu Null thì đó là recodr mới
        If IsNull(Me.STT) Then
        STT.Value = SoTT
        End If
        End Sub

        Function SoTT() As String
        Dim so As Integer
        so = Nz(DMax("[Couter]", "BangChi", "[Date]= date()"))
        Couter.Value = so + 1
        SoTT = format(year(Date)) & "" & Format(Couter, "000")
        End Function
  • RE: Tạo số phiếu tăng theo mẫu : date+STT

    thanhtruong > 27-01-15, 11:11 AM

    sao không có ai chỉ dẫn cho mình vậy nhỉ?
  • RE: Tạo số phiếu tăng theo mẫu : date+STT

    maidinhdan > 27-01-15, 04:11 PM

    Bạn tham khảo đoạn code dưới đây: Số TT tự động Reset khi sang năm mới.

    Ờ sự kiển mở
    Mã:
    Private Sub Form_Open(Cancel As Integer)
    If IsNull(SoBN) Then
    Docmd.GoToRecord , , acNewRec
    Me.SoBN.Value = "1"
    Me.SoLuu.Value = "1" & "/" & Year(Now) & "/GBN-TTPY"
    msgBoxOK DLookup("[NDUNG1]", "tblTHONGBAO", "[SOTB] = 16"), vbInformation, DLookup("[TIEUDE]", "tblTHONGBAO", "[SOTB] = 16")
    Me.Tennguoinhan.SetFocus
    End If
    End Sub

    Ở sự kiện thêm mới
    Mã:
    Private Sub cmdthem_Click()
    Dim SoAo
    If Year(Now) = DLast(Year([Ngaynhan]), "tbl_BBGiaoNhan_Main") Then  ' Đây là đoạn mỗi năm reset một lần nè
        Docmd.GoToRecord , , acNewRec
        SoAo = DLast("[SoBN]", "tbl_BBGiaoNhan_Main")
        SoBN = Format(SoAo + 1, "#")
        Me.SoLuu.Value = Me.SoBN.Value & "/" & Year(Now) & "/GBN-TTPY"
        Me.Dienthoaidelienhe.Value = DLast("[Dienthoaidelienhe]", "tbl_BBGiaoNhan_Main")
        Me.Tennguoinhan.SetFocus
    Else
        Docmd.GoToRecord , , acNewRec
        Me.SoBN.Value = "1"
        Me.SoLuu.Value = "1" & "/" & Year(Now) & "/GBN-TTPY"
        Me.Tennguoinhan.SetFocus
        End If
    End Sub

    demo: https://sites.google.com/site/congthucas...ects=0&d=1
  • RE: Tạo số phiếu tăng theo mẫu : date+STT

    tieu_ngao > 21-05-17, 05:34 PM

    (26-08-10, 08:32 PM)Noname Đã viết: Hôm trước mình giới thiệu thủ thuật tạo số phiếu tăng tự động theo đoạn code của anh phatnq2002  trang Dân Kế Toán
    Tạo số chứng từ tăng dần và reset mỗi tháng

    Hôm nay, mình giới thiệu đoạn code tạo số chứng từ tăng dần theo mẫu dạng: dd/mm/yy + số TT
    Để số thứ tự tự động tăng dần để trường STT là Text. Đồng thời ta thêm 1 trường couter kiểu Number - Integer để đếm số phiếu trong ngày. Trường này sẽ tăng khi bạn nhập phiếu mới với giá trị = max giá trị ngày đó.
    Trường STT của bạn sẽ được set giá trị = Date & "-" & format(Couter,"000")

    * Chú ý: để biết 1 record có phải được thêm mới hay không, bạn xét ở sự kiện Form_Current() của form. Nếu STT của bạn là null thì nó là record mới.

       
    Mã:
    Private Sub Form_Current()
       'Kiểm Tra số thứ tự, nếu Null thì đó là recodr mới
       If IsNull(Me.STT) Then
       STT.Value = SoTT
       End If
       End Sub

       Function SoTT() As String
       Dim so As Integer
       so = Nz(DMax("[Couter]", "BangChi", "[Date]= date()"))
       Couter.Value = so + 1
       SoTT = Date & "-" & Format(Couter, "000")
       End Function

    Mời các bạn xem demo về xem:
    DownLoad

    Cho mình hỏi là nếu dùng Dmax để lấy số lớn nhất + 1
    Nhưng mình muốn lấy số trên nó 1 dòng ( vì mình dùng làm số biên lai tăng dần nên khi chưa lấy thì dòng cuối chưa có số Biên lai nào hết)
    Mình dùng Dlast nhưng nó hiểu là dòng cuối cùng chưa có số nên + 1 nó sẽ ko ra.
    Vậy thì dùng cách nào để lấy, mong dc giúp đỡ.
  • RE: Tạo số phiếu tăng theo mẫu : date+STT

    maidinhdan > 22-05-17, 12:02 AM

    (21-05-17, 05:34 PM)tieu_ngao Đã viết:
    (26-08-10, 08:32 PM)Noname Đã viết: Hôm trước mình giới thiệu thủ thuật tạo số phiếu tăng tự động theo đoạn code của anh phatnq2002  trang Dân Kế Toán
    Tạo số chứng từ tăng dần và reset mỗi tháng

    Hôm nay, mình giới thiệu đoạn code tạo số chứng từ tăng dần theo mẫu dạng: dd/mm/yy + số TT
    Để số thứ tự tự động tăng dần để trường STT là Text. Đồng thời ta thêm 1 trường couter kiểu Number - Integer để đếm số phiếu trong ngày. Trường này sẽ tăng khi bạn nhập phiếu mới với giá trị = max giá trị ngày đó.
    Trường STT của bạn sẽ được set giá trị = Date & "-" & format(Couter,"000")

    * Chú ý: để biết 1 record có phải được thêm mới hay không, bạn xét ở sự kiện Form_Current() của form. Nếu STT của bạn là null thì nó là record mới.

       
    Mã:
    Private Sub Form_Current()
       'Kiểm Tra số thứ tự, nếu Null thì đó là recodr mới
       If IsNull(Me.STT) Then
       STT.Value = SoTT
       End If
       End Sub

       Function SoTT() As String
       Dim so As Integer
       so = Nz(DMax("[Couter]", "BangChi", "[Date]= date()"))
       Couter.Value = so + 1
       SoTT = Date & "-" & Format(Couter, "000")
       End Function

    Mời các bạn xem demo về xem:
    DownLoad

    Cho mình hỏi là nếu dùng Dmax để lấy số lớn nhất + 1
    Nhưng mình muốn lấy số trên nó 1 dòng ( vì mình dùng làm số biên lai tăng dần nên khi chưa lấy thì dòng cuối chưa có số Biên lai nào hết)
    Mình dùng Dlast nhưng nó hiểu là dòng cuối cùng chưa có số nên + 1 nó sẽ ko ra.
    Vậy thì dùng cách nào để lấy, mong dc giúp đỡ.

    Hàm hôm trước viết cho anh sao không lấy ra mà dùng.
    Hàm ở trên chỉ thiếu hàm if thôi.
  • RE: Tạo số phiếu tăng theo mẫu : date+STT

    tieu_ngao > 22-05-17, 05:36 AM

    (22-05-17, 12:02 AM)maidinhdan Đã viết:
    (21-05-17, 05:34 PM)tieu_ngao Đã viết:
    (26-08-10, 08:32 PM)Noname Đã viết: Hôm trước mình giới thiệu thủ thuật tạo số phiếu tăng tự động theo đoạn code của anh phatnq2002  trang Dân Kế Toán
    Tạo số chứng từ tăng dần và reset mỗi tháng

    Hôm nay, mình giới thiệu đoạn code tạo số chứng từ tăng dần theo mẫu dạng: dd/mm/yy + số TT
    Để số thứ tự tự động tăng dần để trường STT là Text. Đồng thời ta thêm 1 trường couter kiểu Number - Integer để đếm số phiếu trong ngày. Trường này sẽ tăng khi bạn nhập phiếu mới với giá trị = max giá trị ngày đó.
    Trường STT của bạn sẽ được set giá trị = Date & "-" & format(Couter,"000")

    * Chú ý: để biết 1 record có phải được thêm mới hay không, bạn xét ở sự kiện Form_Current() của form. Nếu STT của bạn là null thì nó là record mới.

       
    Mã:
    Private Sub Form_Current()
       'Kiểm Tra số thứ tự, nếu Null thì đó là recodr mới
       If IsNull(Me.STT) Then
       STT.Value = SoTT
       End If
       End Sub

       Function SoTT() As String
       Dim so As Integer
       so = Nz(DMax("[Couter]", "BangChi", "[Date]= date()"))
       Couter.Value = so + 1
       SoTT = Date & "-" & Format(Couter, "000")
       End Function

    Mời các bạn xem demo về xem:
    DownLoad

    Cho mình hỏi là nếu dùng Dmax để lấy số lớn nhất + 1
    Nhưng mình muốn lấy số trên nó 1 dòng ( vì mình dùng làm số biên lai tăng dần nên khi chưa lấy thì dòng cuối chưa có số Biên lai nào hết)
    Mình dùng Dlast nhưng nó hiểu là dòng cuối cùng chưa có số nên + 1 nó sẽ ko ra.
    Vậy thì dùng cách nào để lấy, mong dc giúp đỡ.

    Hàm hôm trước viết cho anh sao không lấy ra mà dùng.
    Hàm ở trên chỉ thiếu hàm if thôi.
    Hi maidinhdan. Hom trước hàm Dân viết cho là lấy số TT, còn bây giờ mình muốn lấy số hóa đơn tự tăng khi nhập số hóa đớn đầu tiên. Mình dùng dmax cũng dc nhưng thấg ko ổn, còn dlast thì thua.
  • RE: Tạo số phiếu tăng theo mẫu : date+STT

    maidinhdan > 22-05-17, 10:28 AM

    (22-05-17, 05:36 AM)tieu_ngao Đã viết:
    (22-05-17, 12:02 AM)maidinhdan Đã viết:
    (21-05-17, 05:34 PM)tieu_ngao Đã viết:
    (26-08-10, 08:32 PM)Noname Đã viết: Hôm trước mình giới thiệu thủ thuật tạo số phiếu tăng tự động theo đoạn code của anh phatnq2002  trang Dân Kế Toán
    Tạo số chứng từ tăng dần và reset mỗi tháng

    Hôm nay, mình giới thiệu đoạn code tạo số chứng từ tăng dần theo mẫu dạng: dd/mm/yy + số TT
    Để số thứ tự tự động tăng dần để trường STT là Text. Đồng thời ta thêm 1 trường couter kiểu Number - Integer để đếm số phiếu trong ngày. Trường này sẽ tăng khi bạn nhập phiếu mới với giá trị = max giá trị ngày đó.
    Trường STT của bạn sẽ được set giá trị = Date & "-" & format(Couter,"000")

    * Chú ý: để biết 1 record có phải được thêm mới hay không, bạn xét ở sự kiện Form_Current() của form. Nếu STT của bạn là null thì nó là record mới.

       
    Mã:
    Private Sub Form_Current()
       'Kiểm Tra số thứ tự, nếu Null thì đó là recodr mới
       If IsNull(Me.STT) Then
       STT.Value = SoTT
       End If
       End Sub

       Function SoTT() As String
       Dim so As Integer
       so = Nz(DMax("[Couter]", "BangChi", "[Date]= date()"))
       Couter.Value = so + 1
       SoTT = Date & "-" & Format(Couter, "000")
       End Function

    Mời các bạn xem demo về xem:
    DownLoad

    Cho mình hỏi là nếu dùng Dmax để lấy số lớn nhất + 1
    Nhưng mình muốn lấy số trên nó 1 dòng ( vì mình dùng làm số biên lai tăng dần nên khi chưa lấy thì dòng cuối chưa có số Biên lai nào hết)
    Mình dùng Dlast nhưng nó hiểu là dòng cuối cùng chưa có số nên + 1 nó sẽ ko ra.
    Vậy thì dùng cách nào để lấy, mong dc giúp đỡ.

    Hàm hôm trước viết cho anh sao không lấy ra mà dùng.
    Hàm ở trên chỉ thiếu hàm if thôi.
    Hi maidinhdan. Hom trước hàm Dân viết cho là lấy số TT, còn bây giờ mình muốn lấy số hóa đơn tự tăng khi nhập số hóa đớn đầu tiên. Mình dùng dmax cũng dc nhưng thấg ko ổn, còn dlast thì thua.

    Hôm trước em đã giải thích ý nghĩa từng dòng code cho anh rồi.
    Từ đoạn code ấy anh chế thành bất cứ thì gì cũng được, vì thế em mới ngồi giải thích anh hiểu.

    Anh nên tập đọc và hiểu cách vận hành của nó, rồi tự ắt sẽ viết ra cho mình 1 hàm.
    Chứ viết cho anh thì nó không khó, và như thế lại mất đi ý nghĩa của diễn đàn này.

    Anh tự viết cho mình như em từng viết cho anh, rồi post lên đây chỗ nào chưa được thì sẽ viết bổ sung cho anh.

    Thân ái!
  • RE: Tạo số phiếu tăng theo mẫu : date+STT

    chuvoicon > 24-05-17, 10:23 AM

    Gửi bạn Tieu_Ngao
    Mình có code này hiện nay đang sử dụng bạn xem có giúp gì được bạn không nhé, mình cũng đang sử dụng hàm dlast và reset theo tháng, bạn tham khảo và tùy biến vào ứng dụng của mình

    Private Sub moi_Click()
        Modulieu
         dau.Enabled = False
         truoc.Enabled = False
         sau.Enabled = False
         cuoi.Enabled = False

    Dim Ma
        
        If IsNull(masoxuat) = True Or DLast("Mid(masoxuat, 7, 2)", "tblxuathang") <> Format(Month(Date), "00") = True Then
            DoCmd.GoToRecord , , acNewRec
            masoxuat = "PXK" & Format(Right(Year(Date), 2), "00") & "-" & Format(Month(Date), "00") & Format(Ma + 1, "0000")
        Else
            
            DoCmd.GoToRecord , , acNewRec
            Ma = DLast("Right([masoxuat], 4)", "tblxuathang")
            masoxuat = "PXK" & Right(Year(Date), 2) & "-" & Format(Month(Date), "00") & Format(Ma + 1, "0000")
            ngaylap.SetFocus
        End If
    End Sub