Giúp mình tạo số chứng từ tự động tăng theo tháng năm hiện tại

  • Thread starter xiketuan
  • Ngày gửi
X

xiketuan

Sơ cấp
8/12/08
22
0
0
Binh Thuan
Mình có 1 forms nhập kho, xuất kho, thu, chi. mình muốn số chứng từ tăng theo tháng năm tương ứng với ngày hoạch toán trong tháng, mình có thảm khảo 1 số code nhưng đều tăng dần chứ không theo tháng năm.

Mình ví dụng : ngày tháng năm hoạch toán : 10/08/2009, thì tháng hiện tại là tháng 9. nếu khi nhấn nút thêm trên form nhập kho, xác định tháng hiện tại là tháng 8, thì dò trong csdl nếu trong tháng 8 chưa có số CT thì gán số CT =1 và nếu có thì cứ cho số CT tăng lên theo thứ tự số đã có. và như thế khi đến tháng 9 thì số CT này bắt đầu quay lại từ đầu.

ví dụ :
SoCT : 001, ngayHT : 01/08/09
002 ngayHT : 10/08/09
001 ngayHT : 02/09/09
002 ngayHT : 30/09/09
 
Khóa học Quản trị dòng tiền
H

hochoi1

Guest
17/12/05
8
1
0
44
kkk
Dim vdata As DAO.Database
Dim vrs As Recordset
Dim vsql As String
Dim i As Integer
Dim vsoct As String

' txtngayct: la textbox chua ngay chung tu
' tblxuatnhap la Table chua du lieu co cac truong : Ngayct, sochungtu
Set vdata = CurrentDb
vsql = "Select * from tblxuatnhap where month(ngayct)=" & Month(txtngayct)
vsql = vsql & " and year(ngayct) = " & Year(txtngayct)
Set vrs = vdata.OpenRecordset(vsql)
If Not vrs.EOF Then
vrs.MoveLast
i = vrs.RecordCount + 1
Else
i = 1
End If
' tim xem soCT nay da co hay chua
vsoct = Right("000" & i, 3)
vsql = "Select * from tblxuatnhap where month(ngayct)=" & Month(txtngayct)
vsql = vsql & " and year(ngayct) = " & Year(txtngayct)
vsql = vsql & " and Sochungtu ='" & vsoct & "'"
Set vrs = vdata.OpenRecordset(vsql)
While Not vrs.EOF
i = i + 1
vsoct = Right("000" & i, 3)
vsql = "Select * from tblxuatnhap where month(ngayct)=" & Month(txtngayct)
vsql = vsql & " and year(ngayct) = " & Year(txtngayct)
vsql = vsql & " and Sochungtu ='" & vsoct & "'"
Set vrs = vdata.OpenRecordset(vsql)

Wend
vrs.Close
Set vdata = Nothing

MsgBox vsoct
 
  • Like
Reactions: Pherotao
P

Pherotao

Sơ cấp
8/11/16
7
0
1
38
Bạn ơi, cho mình hỏi thêm: nếu Số Chứng từ tăng theo ngày, qua ngày thì tính lại từ đầu thì sao? Và nếu Số Chứng từ tăng theo năm, qua năm tính lại thì thế nào? Nếu được thì bạn hướng dẫn 3 loại Số chứng từ lần lượt tăng dần theo NGÀY, THÁNG, NĂM giúp luôn. Ở phần tăng theo THÁNG mình đã làm được theo bạn (tuy chưa hiểu lắm đoạn code bạn viết). Tham khảo trên các diễn đàn khác, thấy đoạn code của bạn là ổn và ưng ý nhất. Rất cảm ơn đoạn code này của bạn!
 
N

nguoiconxunui

Khách vãng lai
29/6/04
1,280
215
63
Bình Định
aso2pc.co.cc
@Pherotao Lấy cái code trên sửa điều kiện lại , ngày thì dùng hàm day, năm thì dùng year
 
P

Pherotao

Sơ cấp
8/11/16
7
0
1
38
Dim vdata As DAO.Database
Dim vrs As Recordset
Dim vsql As String
Dim i As Integer
Dim vsoct As String

' txtngayct: la textbox chua ngay chung tu
' tblxuatnhap la Table chua du lieu co cac truong : Ngayct, sochungtu
Set vdata = CurrentDb
vsql = "Select * from tblxuatnhap where month(ngayct)=" & Month(txtngayct)
vsql = vsql & " and year(ngayct) = " & Year(txtngayct)
Set vrs = vdata.OpenRecordset(vsql)
If Not vrs.EOF Then
vrs.MoveLast
i = vrs.RecordCount + 1
Else
i = 1
End If
' tim xem soCT nay da co hay chua
vsoct = Right("000" & i, 3)
vsql = "Select * from tblxuatnhap where month(ngayct)=" & Month(txtngayct)
vsql = vsql & " and year(ngayct) = " & Year(txtngayct)
vsql = vsql & " and Sochungtu ='" & vsoct & "'"
Set vrs = vdata.OpenRecordset(vsql)
While Not vrs.EOF
i = i + 1
vsoct = Right("000" & i, 3)
vsql = "Select * from tblxuatnhap where month(ngayct)=" & Month(txtngayct)
vsql = vsql & " and year(ngayct) = " & Year(txtngayct)
vsql = vsql & " and Sochungtu ='" & vsoct & "'"
Set vrs = vdata.OpenRecordset(vsql)

Wend
vrs.Close
Set vdata = Nothing

MsgBox vsoct
Đoạn code trên có nảy sinh một vấn đề thế này: nếu tôi có thêm một nút command botton: Sửa, khi nhấn nút Sửa, thì txtngayct tự động cộng thêm 1, mặc dù đâu có sửa ngày tháng gì đâu??? Nhờ bạn xem lại giúp. Xin cảm ơn rất nhiều!
 
N

nguoiconxunui

Khách vãng lai
29/6/04
1,280
215
63
Bình Định
aso2pc.co.cc
Ơ hay, cái code trên để cho chức năng thêm mới mà, sửa thì đem code trên vô làm gì?
 
P

Pherotao

Sơ cấp
8/11/16
7
0
1
38
Ơ hay, cái code trên để cho chức năng thêm mới mà, sửa thì đem code trên vô làm gì?
Vì có vấn đề thế này: nếu ngày 30/10/2017, phát sinh 08 phiếu nhập, nhưng qua tới ngày 03/11/2017 kiểm tra thì thấy chỉ có thể nhập 07 phiếu thôi, 01 phiếu là nhập cho ngày 29/10/2017... nên khi bấm nút 'Sửa', thì code xảy ra vấn đề ngay. Nhờ bạn xem và chỉ giáo thêm. Xin cảm ơn!
 
N

nguoiconxunui

Khách vãng lai
29/6/04
1,280
215
63
Bình Định
aso2pc.co.cc
Vì có vấn đề thế này: nếu ngày 30/10/2017, phát sinh 08 phiếu nhập, nhưng qua tới ngày 03/11/2017 kiểm tra thì thấy chỉ có thể nhập 07 phiếu thôi, 01 phiếu là nhập cho ngày 29/10/2017... nên khi bấm nút 'Sửa', thì code xảy ra vấn đề ngay. Nhờ bạn xem và chỉ giáo thêm. Xin cảm ơn!
Ủa cái code trên bạn vứt nó vào đâu thế? Post tấm hình lên xem thử.
 
N

nguoiconxunui

Khách vãng lai
29/6/04
1,280
215
63
Bình Định
aso2pc.co.cc
Sửa lần cuối:
N

nguoiconxunui

Khách vãng lai
29/6/04
1,280
215
63
Bình Định
aso2pc.co.cc
.
 

Xem nhiều

Webketoan Zalo OA