Đánh giá chủ đề:
  • 5 Votes - 3 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Tạo số phiếu tăng theo mẫu : date+STT
#1
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ữ ký của Noname 020
ღღღღღTài sản của Noname (View All Items) ღღღღღ
Reply
Những người đã cảm ơn domfootwear , nhunguyet0103 , thanhtruong , tieu_ngao
#2
(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
Chữ ký của thanhtruong Xin chào, mình là thanhtruong, Tham gia http://thuthuataccess.com/forum từ ngày 23-06 -14.
Reply
Những người đã cảm ơn
#3
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
Chữ ký của thanhtruong Xin chào, mình là thanhtruong, Tham gia http://thuthuataccess.com/forum từ ngày 23-06 -14.
Reply
Những người đã cảm ơn
#4
sao không có ai chỉ dẫn cho mình vậy nhỉ?
Chữ ký của thanhtruong Xin chào, mình là thanhtruong, Tham gia http://thuthuataccess.com/forum từ ngày 23-06 -14.
Reply
Những người đã cảm ơn
#5
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
Chữ ký của maidinhdan * Để được hỗ trợ tốt nhất, nhấn vào link dưới đây để xem.
1. [Hướng dẫn] Kiểu file gửi lên để được giúp đỡ
2. [Hướng dẫn] Nội quy diễn đàn
3. [Hướng dẫn] Cách Đưa file và hình vào diễn đàn
4.[Hướng dẫn] Để xây dựng một ứng dụng hoàn hảo và lời cảm tạ
5. Cần tìm Demo hay ứng dụng sử dụng thanh tìm kiếm phía trên cùng, bên phải của diễn đàn.
* Nếu muốn cảm ơn, hãy nhấn nút thank, không cần viết thêm bài nào nửa.



ღღღღღTài sản của maidinhdan (View All Items) ღღღღღ
Reply
Những người đã cảm ơn thanhtruong
#6
(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 đỡ.
Chữ ký của tieu_ngao Xin chào, mình là tieu_ngao, Tham gia http://thuthuataccess.com/forum từ ngày 20-04 -15.
Reply
Những người đã cảm ơn
#7
(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.
Chữ ký của maidinhdan * Để được hỗ trợ tốt nhất, nhấn vào link dưới đây để xem.
1. [Hướng dẫn] Kiểu file gửi lên để được giúp đỡ
2. [Hướng dẫn] Nội quy diễn đàn
3. [Hướng dẫn] Cách Đưa file và hình vào diễn đàn
4.[Hướng dẫn] Để xây dựng một ứng dụng hoàn hảo và lời cảm tạ
5. Cần tìm Demo hay ứng dụng sử dụng thanh tìm kiếm phía trên cùng, bên phải của diễn đàn.
* Nếu muốn cảm ơn, hãy nhấn nút thank, không cần viết thêm bài nào nửa.



ღღღღღTài sản của maidinhdan (View All Items) ღღღღღ
Reply
Những người đã cảm ơn tieu_ngao , tranthanhan1962
#8
(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.
Chữ ký của tieu_ngao Xin chào, mình là tieu_ngao, Tham gia http://thuthuataccess.com/forum từ ngày 20-04 -15.
Reply
Những người đã cảm ơn
#9
(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!
Chữ ký của maidinhdan * Để được hỗ trợ tốt nhất, nhấn vào link dưới đây để xem.
1. [Hướng dẫn] Kiểu file gửi lên để được giúp đỡ
2. [Hướng dẫn] Nội quy diễn đàn
3. [Hướng dẫn] Cách Đưa file và hình vào diễn đàn
4.[Hướng dẫn] Để xây dựng một ứng dụng hoàn hảo và lời cảm tạ
5. Cần tìm Demo hay ứng dụng sử dụng thanh tìm kiếm phía trên cùng, bên phải của diễn đàn.
* Nếu muốn cảm ơn, hãy nhấn nút thank, không cần viết thêm bài nào nửa.



ღღღღღTài sản của maidinhdan (View All Items) ღღღღღ
Reply
Những người đã cảm ơn tieu_ngao , tranthanhan1962
#10
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
Chữ ký của chuvoicon Xin chào, mình là chuvoicon, Tham gia http://thuthuataccess.com/forum từ ngày 18-11 -13.
Reply
Những người đã cảm ơn maidinhdan , tranthanhan1962 , tieu_ngao


Có thể liên quan đến chủ đề
Chủ đề: Tác giả Trả lời: Xem: Bài mới nhất
  [Thủ Thuật] [Video+Demo] 2 Cách Tạo Số tăng dần và Reset theo nhu cầu maidinhdan 24 1,429 14-11-17, 11:07 PM
Bài mới nhất: maidinhdan
  [Help] Hỏi về cách lưu dư liệu từ bảng vba vào file excell theo mong muốn HoangManh 5 434 19-05-17, 04:27 PM
Bài mới nhất: ongke0711
  [Thủ Thuật] Ẩn record trong table theo ngày tháng tvn_hut 6 953 24-04-16, 01:00 AM
Bài mới nhất: tvn_hut
  Tạo số chứng từ tăng dần và reset lại theo yêu cầu người dùng Noname 10 6,570 03-09-14, 11:22 PM
Bài mới nhất: tqcuong
Question [Help] Giúp mình tạo backup database theo ngày tháng chỉ định hugox03 3 1,025 05-02-14, 11:34 PM
Bài mới nhất: morosumo

Chuyển nhanh:


User(s) browsing this thread: 1 Guest(s)
Diễn Đàn Thơ Văn Thi Ẩm Lâu|Nhà Hàng Sông Thơ