Vba Access在表单中添加文本ID字段

Vba Access在表单中添加文本ID字段,vba,ms-access,runtime-error,ms-access-2013,autonumber,Vba,Ms Access,Runtime Error,Ms Access 2013,Autonumber,我已经从一个excel文件创建了一个数据库,其中一列(PK)是许可证号,但这是文本格式XX/XX/XXXX 创建新记录时,我希望表单使用包含文本和数字的类似ID自动填充license number字段。这必须随着每个新记录(仅数字部分)而递增 这正是我想要实现的,但是我得到的错误如下所示 任何帮助将不胜感激,我有VB的经验,但我熟悉其他编程语言 如果您的想法是获取一个数字(8)并将其转换为“0008”,如错误上方的注释所示,请尝试以下操作: strNextNumber = Format(ln

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

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

这正是我想要实现的,但是我得到的错误如下所示


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

如果您的想法是获取一个数字(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

如果您的想法是将数字(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

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

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

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

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

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

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

只需要一行:

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

只需要一行:

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

也许我遗漏了什么,但这似乎非常简单?你能举例说明这个“文本编号”包含什么类型的字符,以及它是如何递增的吗?我认为一个简单的
DMAX
DLAST
基本上就是您所需要的。看起来您尝试使用整数,但使用字符串。这是正确的还是我误解了代码?(很抱歉,我没有点击YouTube链接,你会发现这里的大部分内容也不麻烦。如果你能总结一下,让其他人更容易帮助你,这会有所帮助。)我设法找到了错误的原因,是以前的值在条款或格式上与新值不同。我手动插入了一个新格式的记录及其工作原理,如果您对此有任何更简单的建议,我将不胜感激。在格式方面有什么不同?保持不变是一件非常重要的事情!也许我遗漏了什么,但这似乎非常简单?你能举例说明这个“文本编号”包含什么类型的字符,以及它是如何递增的吗?我认为一个简单的
DMAX
DLAST
基本上就是您所需要的。看起来您尝试使用整数,但使用字符串。这是正确的还是我误解了代码?(很抱歉,我没有点击YouTube链接,你会发现这里的大部分内容也不麻烦。如果你能总结一下,让其他人更容易帮助你,这会有所帮助。)我设法找到了错误的原因,是以前的值在条款或格式上与新值不同。我手动插入了一个新格式的记录及其工作原理,如果您对此有任何更简单的建议,我将不胜感激。在格式方面有什么不同?保持不变是一件非常重要的事情!我最终使用了strNextNumber=Format(lngNextNumber,“0000”),它更容易理解并符合我的要求。我最终使用了strNextNumber=Format(lngNextNumber,“0000”),它更容易理解并符合我的要求。