Vba Access在表单中添加文本ID字段
我已经从一个excel文件创建了一个数据库,其中一列(PK)是许可证号,但这是文本格式XX/XX/XXXX 创建新记录时,我希望表单使用包含文本和数字的类似ID自动填充license number字段。这必须随着每个新记录(仅数字部分)而递增 这正是我想要实现的,但是我得到的错误如下所示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
任何帮助将不胜感激,我有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”),它更容易理解并符合我的要求。