Ms access Access VBA中的通配符

Ms access Access VBA中的通配符,ms-access,vba,wildcard,ms-access-2013,Ms Access,Vba,Wildcard,Ms Access 2013,这是对这篇文章的一个后续问题:但我没有代表回答/评论,也没有代表在内部提问。我好奇的是这一行代码: If ![ACOD] = "*_X" Then '"$ICP_X" works Debug.Print ![ACOD] 'For testing '.Delete End If 我想知道这是否可以修改,以便在单击按钮时,它可以查看字段名为*\u New的表单中的所有字段(希望捕获名称以\u New结尾的所有字段),如果它们不是Null,则确认用户希望根据字段中指示

这是对这篇文章的一个后续问题:但我没有代表回答/评论,也没有代表在内部提问。我好奇的是这一行代码:

If ![ACOD] = "*_X" Then '"$ICP_X" works
        Debug.Print ![ACOD] 'For testing
        '.Delete
End If
我想知道这是否可以修改,以便在单击按钮时,它可以查看字段名为
*\u New
的表单中的所有字段(希望捕获名称以
\u New
结尾的所有字段),如果它们不是
Null
,则确认用户希望根据字段中指示的更改进行更改。我在想这样的事情:

If Not isNull(*_New.value) Then
   If Msgbox ("Do you want to make these changes?",vbOKCancel, "Confirm Changes") = 1 Then
      '### Do something with the record ###
   End If
End If
Dim re As RegExp
Set re = New RegExp
re.IgnoreCase = True
re.Global = True
re.Pattern = "*_New"
If ##Not sure on syntax to match all fields## Then
   Msgbox(##Same stuff as above MsgBox##)
End If
编辑

在发布上述信息时,我没有安装Microsoft VBScript正则表达式参考,目前我的版本是5.5(它是最新版本)。安装(参考?)并查看此站点的信息后,我想知道这样做是否更好:

If Not isNull(*_New.value) Then
   If Msgbox ("Do you want to make these changes?",vbOKCancel, "Confirm Changes") = 1 Then
      '### Do something with the record ###
   End If
End If
Dim re As RegExp
Set re = New RegExp
re.IgnoreCase = True
re.Global = True
re.Pattern = "*_New"
If ##Not sure on syntax to match all fields## Then
   Msgbox(##Same stuff as above MsgBox##)
End If
编辑2

这是我正在处理的表格的一个示例。右侧的每个字段都有以
\u New
结尾的名称。我想做的是单击按钮,检查并查看右侧的哪些字段已填写,并询问用户是否要确认对记录的更改


不确定您想要实现什么,但有一种方法可以访问表单中的控件集合。这是一个公共函数,您可以在其中循环所有控件并检查其名称

Public Function FN_CONFIRM_CHANGES(iSender As Form)
    Dim mCtl As control
    For Each mCtl In iSender
        If VBA.Right(mCtl.name, 4) = "_New" Then
            Debug.Print mCtl.name & " is a match and its a " & VBA.TypeName(mCtl)
        End If
    Next mCtl
End Function
像这样调用这个函数

FN_CONFIRM_CHANGES Me 'Where me is referencing the form you are in.

如果用户决定不保存您的更改或您试图实现的任何逻辑,您可以修改上述代码以返回一个布尔值,从而停止进一步执行。

您作为一个新问题提出这个问题是正确的-关于StackOverflow,所有问题都是独立的,可以单独搜索,而不是隐藏在另一个问题中。链接到相关问题是一个很好的开始方式!所有领域意味着什么?只是文本框或任何类型的控件?顺便说一句:上一个问题与SQL有关,它与在表单/对象中搜索控件完全不同。上一个问题是在SQL中回答和处理的,是的,但最初是针对VBA提出的(据我所知)。这看起来如何?我不想在自己的if语句中检查每个字段。我试图实现的是在表单中搜索名称以
\u New
结尾的字段,并检查这些字段中是否存在与
\u New
条件匹配的默认
Null
值以外的任何内容。由于我现在有更多的代表(当我发布问题时,我只有10个代表),我将编辑我的OP并附上我表格的截图。如果表单是有界表单,则所有更改都将自动保存。我认为为每个控件提示消息不是一个好主意。如果您有>10个控件,我个人不想单击10次来保存记录@特拉维斯帕特斯大声说,我也不会。我的意思是,最终它将成为一个消息框或其他东西,显示将被编辑为列表的字段(而不是每个控件的单个消息框),并带有一个取消按钮(
vbOKCancel
),允许他们返回并更改它。根据我与客户的工作经验,我可以告诉你一些事情。。您的最终用户永远不会费心阅读messagebox上的内容。他们将单击yes(是)表示任何内容,如果不想,则单击no(否)。只执行一个问题。是否要保存更改的是/否就是这样@特拉维斯帕特森