-
LỖI TẠO MÃ TỰ ĐỘNG 2022
thanhtruong > 02-01-22, 10:36 AM
Đầu năm 2022 không biết sao cái mã này nó bị lỗi chổ nào mà k tạo mã được. mong mấy Bác giúp xem bị lỗi chổ nào ạ
Mã:Private Function fcTaoMaBN() As Long
Dim lngMaBN_Max As Long
Dim lngMaBN_New As Long
Dim datNgay_Max As Date
On Error GoTo ErrorHandler
lngMaBN_Max = Nz(DMax("[maso]", "tiepdon"), 0)
If lngMaBN_Max <> 0 Then
datNgay_Max = Format(Mid(lngMaBN_Max, 5, 2) & "/" & Mid(lngMaBN_Max, 3, 2) & "/" & Left(lngMaBN_Max, 2), "dd/mm/yy")
Debug.Print datNgay_Max
If datNgay_Max >= Date Then
If datNgay_Max > Date Then
MsgBox "Ngay thang tren he thong khong phu hop, vui long lien he Admin ", vbCritical, "Luu y"
End If
lngMaBN_New = lngMaBN_Max + 1
Else
lngMaBN_New = Val(Format(Date, "yymmdd") & "0000") + 1
End If
Else
lngMaBN_New = Val(Format(Date, "yymmdd") & "0000") + 1
End If
fcTaoMaBN = lngMaBN_New
Exit_ErrorHandler:
Exit Function
ErrorHandler:
MsgBox "Err Number: " & err.Number & vbCrLf & err.description, , "loi tao ma"
Resume Exit_ErrorHandler
End Function -
RE: LỖI TẠO MÃ TỰ ĐỘNG 2022
thanhtruong > 02-01-22, 10:39 AM
Chỉnh đoạn code này thành 3 "000" thì nó tạo mã được, còn 4 trở lên "0000" thì không.
Mã:Else
lngMaBN_New = Val(Format(Date, "yymmdd") & "0000") + 1
End If
Else
lngMaBN_New = Val(Format(Date, "yymmdd") & "0000") + 1
End If -
RE: LỖI TẠO MÃ TỰ ĐỘNG 2022
ongke0711 > 02-01-22, 01:18 PM
Mặt mũi cái trường [maso] của bạn như thế nào, kiểu dữ liệu, thiết lập Size cho trường này. Bạn cung cấp nhiều dữ liệu để người khác đỡ đoán, mò từ code. Theo như bạn nói thì nó vươt quá sức chứa kiểu Long. Giờ đổi sang kiểu Single/Double thử xem. -
RE: LỖI TẠO MÃ TỰ ĐỘNG 2022
thanhtruong > 02-01-22, 02:08 PM
(02-01-22, 01:18 PM)ongke0711 Đã viết: Mặt mũi cái trường [maso] của bạn như thế nào, kiểu dữ liệu, thiết lập Size cho trường này. Bạn cung cấp nhiều dữ liệu để người khác đỡ đoán, mò từ code. Theo như bạn nói thì nó vươt quá sức chứa kiểu Long. Giờ đổi sang kiểu Single/Double thử xem.
vâng: nó đây à
Data Type: Number
field Size: Long Integer
Theo như Bạn, mình đã chuyển field Size thành Double nhưng vẫn không tạo được mã. -
RE: LỖI TẠO MÃ TỰ ĐỘNG 2022
ongke0711 > 02-01-22, 02:17 PM
Đổi trong code luôn nhé. -
RE: LỖI TẠO MÃ TỰ ĐỘNG 2022
ongke0711 > 02-01-22, 05:16 PM
(02-01-22, 02:35 PM)thanhtruong Đã viết:
(02-01-22, 02:17 PM)ongke0711 Đã viết: Đổi trong code luôn nhé.
Trong code đâu có thấy chổ nào để đổi đâu nhỉ?
khi chuyển ngày giờ máy tính về năm 2020 hoặc 2019 thì nó vẫn tạo mã bình thường.
Vấn đề này của bạn thuộc dạng cơ bản là hiểu về DataType của dữ liệu khi thiết lập.
Cái dòng mã dưới đây của bạn nó sinh ra số bao nhiêu?
Mã PHP:lngMaBN_New = Val(Format(Date, "yymmdd") & "0000") + 1
Nếu tôi lấy ví dụ là ngày tháng hôm nay (02/01/2022):
-->Mã PHP:lngMaBN_New = 2201020001
Sức chứa của số Long là bao nhiêu? --> từ -2,147,483,647 đến 2,147,483,647
Vậy không phải cái mã trên bạn tạo nó đã vượt quá khả năng của số Long à.
Khi bạn đổi thành năm 2019, 2020, 2021 thì mã số được tạo ra vẫn trong pham vi của Long: 1912310001,2012310001,2112310001
Trong code của bạn, trong năm 2022, khi tạo ra dãy số trên thì các biến khai báo kiểu Long trong đó sau chứa nổi, nó sẽ báo tràn số "OverFlow" thôi.
Mã PHP:Private Function fcTaoMaBN() As Long
Dim lngMaBN_Max As Long
Dim lngMaBN_New As Long -
RE: LỖI TẠO MÃ TỰ ĐỘNG 2022
thanhtruong > 02-01-22, 05:25 PM
(02-01-22, 02:17 PM)ongke0711 Đã viết: Đổi trong code luôn nhé.
file lỗi đây ạ. tải file cứ thêm lên 4 số "0000" là nó lỗi. Mong ongke0711 xem giúp. Cảm ơn! -
RE: LỖI TẠO MÃ TỰ ĐỘNG 2022
thanhtruong > 02-01-22, 05:37 PM
(02-01-22, 05:16 PM)ongke0711 Đã viết:
(02-01-22, 02:35 PM)thanhtruong Đã viết:
(02-01-22, 02:17 PM)ongke0711 Đã viết: Đổi trong code luôn nhé.
Trong code đâu có thấy chổ nào để đổi đâu nhỉ?
khi chuyển ngày giờ máy tính về năm 2020 hoặc 2019 thì nó vẫn tạo mã bình thường.
Vấn đề này của bạn thuộc dạng cơ bản là hiểu về DataType của dữ liệu khi thiết lập.
Cái dòng mã dưới đây của bạn nó sinh ra số bao nhiêu?
Mã PHP:lngMaBN_New = Val(Format(Date, "yymmdd") & "0000") + 1
Nếu tôi lấy ví dụ là ngày tháng hôm nay (02/01/2022):
-->Mã PHP:lngMaBN_New = 2201020001
Sức chứa của số Long là bao nhiêu? --> từ -2,147,483,647 đến 2,147,483,647
Vậy không phải cái mã trên bạn tạo nó đã vượt quá khả năng của số Long à.
Khi bạn đổi thành năm 2019, 2020, 2021 thì mã số được tạo ra vẫn trong pham vi của Long: 1912310001,2012310001,2112310001
Trong code của bạn, trong năm 2022, khi tạo ra dãy số trên thì các biến khai báo kiểu Long trong đó sau chứa nổi, nó sẽ báo tràn số "OverFlow" thôi.
Mã PHP:Private Function fcTaoMaBN() As Long
Dim lngMaBN_Max As Long
Dim lngMaBN_New As Long
rồi. vậy mình phải thay biến "double" cảm ơn anh! để thử xem ạ