GETUID代码限制在1000如何克服这个问题

问题描述 投票:1回答:3

我有以下简单的代码。我认为我们不会在问题上如此快速地达到1K但是代码在1000处停止工作。我将来如何避免遇到这个问题?

Public Function GetUID() As String

    GetUID = "SCR" & Right("000" + CStr((CInt(Right(DMax("[SCR ID]", "Master Shared Compliance Review"), 3)) + 1)), 5)

End Function
vba ms-access
3个回答
0
投票

假设您想保留现有的SCRnnnnn格式,您可以执行以下操作:

Public Function GetUID() As String

    GetUID = "SCR" & Format(CLng(Mid(DMax("[SCR ID]", "Master Shared Compliance Review"), 4)) + 1, "00000")

End Function

0
投票

使用Format(Number,"#0000") ' Format minimum 4 digit

在你的情况下

Format(nz(DMax("[SCR ID]", "Master Shared Compliance Review"),0),"#0000")

usage:
?format(1,"#0000")
0001
?format(100,"#0000")
0100
?format(1001,"#0000")
1001
?format(10001,"#0000")
10001

0
投票

如果有人需要完成同样的事情,我选择了这个解决方案。

我在主表中添加了三个字段:[年份],[信函],[序列]

[TheYear]表上的默认值为:= DatePart(“yyyy”,Date())[TheLetter]表中的默认值为:=“SCR”---或者您需要的任何字母。 [TheSequence]是您为记录分配的#。

在我使用的表单上的beforeinsert事件中:

[TheSequence] = Nz(Dmax(“[TheSequence]”,“TableName”,“[TheYear] = DatePart(”yyyy“,Date)和[TheLetter] =”SCR“),0)+1

在我做的表单上的按钮的Click事件:

me.tchtSKRID = [TheLetter]& “ - ” &[的某些地方]和[TheSekyenke]

代码:Private Sub Command67_Click()

Me.btnSave.Visible = True

Met.RTM.RTM.RTM。= [Themeter]

结束子

Private Sub Form_BeforeInsert(取消为整数)

[TheSequence] = Nz(DMax(“[TheSequence]”,“Master Shared Compliance Review”,[TheYear] = DatePart(“yyyy”,Date)和[TheLetter] =“SCR”),0)+ 1

结束子

最终结果是ID号“SCRID”:SCR-20173等等。

如果您发现此方法存在任何缺陷,请与我们联系。谢谢大家的帮助!

© www.soinside.com 2019 - 2024. All rights reserved.