我有一些组合框需要用户输入。在 Access 2000 中,我通过 ODBC 链接到我们的 ERP 数据库 (FoxPro)。所以,我根本无法修改表结构。无论出于何种原因,许多字段都有前导零。我在组合框中将限制到列表设置为是。
组合框示例:
如果用户不必输入前导零,我希望它。但是,如果用户输入 47009,他们会收到错误:
The text you entered isn't an item in the list.
这些字段是文本,我的行源如下所示:
SELECT recid, recnum FROM receiver ORDER BY recnum;
我绑定(bind)到第一列。
有没有办法可以强制用户选择列表中的内容而不要求他们输入前导零?
最佳答案
对于组合框的行源,您可以使用一个查询来丢弃 recnum
字段字符串值中的前导零。使用自定义 VBA 函数中的正则表达式可以轻松去除这些零。这是下面包含的 StripLeadingZeros()
函数的立即窗口演示。
? StripLeadingZeros("000000AV1-00011")
AV1-00011
? StripLeadingZeros("000000TI1-00035")
TI1-00035
因此您可以在像这样的查询中使用该函数...
SELECT recid, StripLeadingZeros(recnum) FROM receiver ORDER BY 2;
使用该查询作为组合框的行源,用户将看不到前导零。如果他们确实需要查看但不需要键入前导零,您可以再次添加 recnum
本身作为第三列。
如果您的字符串值仅包含数字,则任务会更简单。您可以使用 Val()
函数将这些字符串转换为数字。您仍然可以使用 StripLeadingZeros()
,但 Val()
应该更快。
SELECT recid, Val(recnum) FROM receiver ORDER BY 2;
Public Function StripLeadingZeros(ByVal pstrInput As String) As String
Static re As Object
If re Is Nothing Then
Set re = CreateObject("VBScript.RegExp")
re.pattern = "^0*"
End If
StripLeadingZeros = re.Replace(pstrInput, vbNullString)
End Function
关于ms-access - 在组合框中输入时不需要前面的零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18451134/