Microsoft Access 2007,宏问题,表单和带有电话号码的数据库

时间:2011-04-01 21:26:54

标签: ms-access

我正在尝试编写一个接受一些用户输入的小表单,并在某些逻辑的基础上显示两种可能的其他表单之一。如果我使用简单的,未格式化的数据,一切都工作正常,但如果有问题的数据有电话号码的输入掩码,我就遇到了问题。据推测,这里有一个技巧可以忽略格式化字符或其他一些?

实际逻辑在特定表中查找其值与输入数据匹配的记录。这样的事情减少了例子:

与任何特定表无关的表单,包含一个名为 FormFieldY 的数据输入字段,以及一个onClick调用宏的按钮,其条件查找表中的匹配数据。< / p>

     DCount("*","TableX","[MyColumn] = [FormFieldY] " ) > 0

现在,如果表格中的 MyColumn 包含简单的文字或数字值,这就可以了。但是,如果我将电话号码输入掩码应用于该列,我永远不会得到匹配。我已经尝试将输入掩码应用于我的表单字段,或者在表单字段中输入完全格式化的数字

    (1234) 56789012

既没有匹配。但是,如果相反,我破解宏并输入合适的硬编码格式值

         DCount("*","TableX","[MyColumn] = '(1234) 56789012'" ) > 0

它运作得很好。

1 个答案:

答案 0 :(得分:2)

我想你可能会遇到两个问题。第一个是当用户输入电话号码时,您的格式属性会显示括号,但这些括号不包含在FormFieldY的值中---它们仅供显示。

您可以通过将此代码分配给After Update事件来验证FormFieldY的值:

Private Sub FormFieldY_AfterUpdate()
    MsgBox Me.FormFieldY 
End Sub

如果您希望将括号存储为FormFieldY值的一部分,也许您可​​以通过使用输入掩码而不是格式来获得更多乐趣。使用Access 2003,我使用它作为我的文本框控件的输入掩码:

!\(999") "000\-0000;0;_

但最简单的方法是使用输入掩码向导(单击带有3个点的按钮,它位于控件属性表的“输入掩码”行的右侧)。在第一个向导页面上选择电话号码。在向导页面上询问“您希望如何存储数据?”,选择“使用掩码中的符号”单选按钮。

来自djna的评论:这是解决方案,下面的表达式更改似乎不需要

另一个问题是您的DCount表达式:

DCount("*","TableX","[MyColumn] = [FormFieldY] " ) > 0

我认为你应该使用FormFieldY的值而不是控件的名称。这可能不太清楚,所以这就是我的意思:

DCount("*","TableX","[MyColumn] = '" & Me.FormFieldY & "'" ) > 0