• LỖI TẠO MÃ TỰ ĐỘNG 2022
  • 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

    thanhtruong > 02-01-22, 02:35 PM

    (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.
  • 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") + 

    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") + 

    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 ạ