Access 2013以

时间:2018-02-08 09:00:31

标签: vba ms-access runtime-error ms-access-2013 autonumber

我已经从excel文件创建了一个数据库,其中一列(PK)是许可证编号,但这是文本格式XX / XX / XXXX

创建新记录时,我希望表单能够使用包含文本和数字的类似ID自动填充许可证编号字段。这必须随每个新记录(仅数字部分)递增

这正是我想要的,但是我得到的错误如下所示; https://www.youtube.com/watch?v=kPz-n5w5YtE

enter image description here enter image description here

任何帮助将不胜感激,我有VB的经验,但我熟悉其他编程语言。

3 个答案:

答案 0 :(得分:2)

如果您的想法是取一个数字(8)并将其转换为" 0008",就像错误上方的注释一样,请尝试这样:

strNextNumber = Format(lngNextNumber, "0000")

或查看整个代码:

Public Sub TestMe()    
    Dim strNextNumber As String
    Dim lngNextNumber As Long
    lngNextNumber = 8
    strNextNumber = Format(lngNextNumber, "0000")
    Debug.Print strNextNumber        
End Sub

答案 1 :(得分:1)

如果lngNextNumber大于9999,则String - 函数的第一个参数将为-1或更小,因此无效。

因此,您可以先检查lngNextNumber的值。

If lngNextNumber < 10000 Then
    strNextNumber = String(4 - Len(CStr(lngNextNumber)), "0") & CStr(lngNextNumber)
Else
    strNextNumber = CStr(lngNextNumber)        
End If

甚至更简单,使用Format - 函数,就像Vityata的答案中已经提到的那样。

strNextNumber = Format(lngNextNumber, "0000")

答案 2 :(得分:1)

只需要一行:

' Old license like "WT/7634/2002".
' New license like "ABC2003"
Me![License Number].Value = Format(Val(Right(DMax("[License Number]", [Licenses]), 4)) + 1, "\A\B\C0000")