ms-access - 标准中的 OnlyDigits 函数
问题描述
我的数据库有一个由年+月/序列号+类型组成的工作编号字段。可以有多个具有相同作业编号的作业:
201812/6门
201812/6楼梯
201812/6衣柜
当用户想要更改任何/所有这些记录的日期时,我希望所有 201812/6 工作都显示在表单中。
我已成功使用下面的 OnlyDigits 函数从文本字段中仅提取数字:OnlyDigits(JobNumber) = 2018126。但我不知道如何过滤表单以显示包含 2018126 的所有工作。
我尝试使用此查询,但收到错误消息,表示表达式输入错误或太复杂。
SELECT onlydigits(jobnumber) AS JobNumberDigits, tbldelivery.DelDateDoors, tbldelivery.Lag, tbldelivery.ProductionDate, tbldelivery.OrderNumber, tbldelivery.JobNumber
FROM tbldelivery
WHERE (((onlydigits(jobnumber))=OnlyDigits([Forms]![tblDelivery]![JobNumber])));
我还尝试在 Docmd.OpenForm 中使用 where 表达式,但这也不起作用。谁能建议我如何使用此功能进行过滤?
Public Function OnlyDigits(ByVal pInput As String) As String
Static objRegExp As Object
If objRegExp Is Nothing Then
Set objRegExp = CreateObject("VBScript.RegExp")
With objRegExp
.Global = True
.Pattern = "[^\d]"
End With
End If
OnlyDigits = objRegExp.Replace(pInput, vbNullString)
End Function
解决方案
尝试指定参数以使 Access 免于猜测:
PARAMETERS
[Forms]![tblDelivery]![JobNumber] Text;
SELECT
OnlyDigits(JobNumber) AS JobNumberDigits,
tbldelivery.DelDateDoors,
tbldelivery.Lag,
tbldelivery.ProductionDate,
tbldelivery.OrderNumber,
tbldelivery.JobNumber
FROM
tbldelivery
WHERE
OnlyDigits(JobNumber)=OnlyDigits([Forms]![tblDelivery]![JobNumber]);
或者:
WHERE
OnlyDigits(CStr(Nz(JobNumber, 0)))=OnlyDigits([Forms]![tblDelivery]![JobNumber]);
推荐阅读
- node.js - Node.js 和 amcharts4 - 使用 TypeSript 或 ES6 导入错误“意外令牌导出”
- c++ - 更简洁的方式来声明高维向量
- java - 使用 java cv 时在 android studio 上出现构建错误
- reactjs - 在我的反应原生项目中显示没有互联网连接
- angular - Angular 5:新数据与旧数据合并
- r - 警告:`pkgname` 既不是文件也不是目录,跳过
- php - 使用带有 set_time_limit 和 sleep 的 phpmailer 批量发送电子邮件
- java - 等待任务完成而不阻塞 javafx 中的 UI
- selenium-webdriver - 需要实时体验
- performance - Docker容器性能降级