MS Access查询自定义函数接受表单文本输入作为值

用户名

大家好!

直到今天整整一天,我都一直在想这个问题,但我一直没有找到任何答案,因此,感谢您的帮助。

我有的:

  • 包含文本字段的Access表单
  • 查询是表单的数据源
  • 在模块中定义的称为RegExp的自定义函数

RegExp接受两个值作为输入:字符串(从表中获取)和模式(从表单中获取)。RegExp返回一个布尔值,该布尔值又使查询结果变稀。

该功能可以正常工作,并且符合预期,但是,只有当用户填写文本字段时,才会出现这种情况。如果将该字段留空,则不会返回任何结果(在这种情况下,甚至不会调用该函数)。

因此,查询中的特定语句如下所示:

... AND (RegExp(tblRole.Description,Trim([Forms]![frmFindRole]![txtRegExp]))<>False) AND ...

(总而言之,用户在文本字段中输入一个值,该值将修剪掉前导空格和尾随空格,将其转换为VBA模块内的正则表达式,然后根据函数返回的布尔值过滤查询结果)。

此表单上有许多控件,在我添加txtRegExp文本字段之前,它们已经起作用。现在,查询仅在填写txtRegExp时返回结果,我不知道为什么。我尝试添加更多检查,但是查询已经太复杂了,但是我没有成功。

如果需要其他代码示例才能做出答案,我明天就可以提供它们。

先感谢您。

PS Nz会帮忙吗?如果是,那么我将如何使用它?

托马斯·G

根据您在评论中给出的一些解释

假设这是在KeyUp事件上触发的代码:

Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)

    Me.Requery

End Sub

将表单记录源的默认SQL存储在局部变量中的某个位置。在此示例中,我认为您将其存储在SQLdefault字符串中。

在重新查询之前,请检查文本框是否为空,如果是,则相应地更改表单的记录源SQL:

private SQLdefault as string

Private Sub Form_KeyUp(KeyCode As Integer, Shift As Integer)

    Dim SQL As String

    If Nz(txtRegExp, "") = "" Then
        SQL = SQLdefault 
        SQL = Replace(SQL, "AND (RegExp(tblRole.Description,Trim([Forms]![frmFindRole]![txtRegExp]))<>False)", "")
        Me.RecordSource = SQL ' Normally this is enought to requery, if not uncomment below
        'Me.Requery
    Else
        Me.RecordSource = SQLdefault ' Normally this is enought to requery, if not uncomment below
        ' Me.Requery
    End If

End Sub

在此示例中,我只删除了包含以下内容的SQL部分:

AND (RegExp(tblRole.Description,Trim([Forms]![frmFindRole]![txtRegExp]))<>False)

如果不正确,请以其他方式替换。

显然,这不是最优雅的解决方案,但是很难提供您所展示的最佳解决方案。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

自定义数字格式 Ms Access

来自分类Dev

MS Word:相互更新的自定义文本字段

来自分类Dev

无法使Today()函数在MS Access 2016自定义Web应用程序中正常工作

来自分类Dev

在MS Access中自定义使用计数功能

来自分类Dev

MS Access查询语法

来自分类Dev

MS Access:查询

来自分类Dev

更新 MS Access 查询?

来自分类Dev

ms access - 查询空行

来自分类Dev

MS Access表单,其值自动插入

来自分类Dev

MS Excel数据验证器不接受对自定义宏的调用

来自分类Dev

在查询中查询?(MS Access)

来自分类Dev

如何在MS Access中将从表单上的文本框(对象)获取的值插入到“ LIKE”查询中

来自分类Dev

使用IFF比较值的MS Access查询

来自分类Dev

MS Access字段作为列

来自分类Dev

ms access:输入参数值

来自分类Dev

MS Access SQL插入查询

来自分类Dev

MS Access 2013查询条件

来自分类Dev

MS Access SELECT查询DatePart

来自分类Dev

MS Access查询多个条件

来自分类Dev

MS Access查询中的性能

来自分类Dev

MS-Access查询参数

来自分类Dev

MS Access多联接查询

来自分类Dev

MS Access直通查询更新

来自分类Dev

MS Access查询多个条件

来自分类Dev

MS Access查询中的性能

来自分类Dev

MS Access VBA 运行查询

来自分类Dev

Ms Access 查询以获取总和

来自分类Dev

MS Access 加入子查询

来自分类Dev

MS Access 2010-如何使用另一个表单元素中的条件为表单ComboBox设置自定义行源?