我有一个包含多个表的数据库,这些表包含记录电话号码的字段。他们的数据类型是短文本,允许零长度 - 不。我已经设置了输入掩码如下:
If Left(Phone, 3) = "011" Or Left(Phone, 3) = "030" Then
Me.Phone.InputMask = "0000 000 0000;;' '"
ElseIf Left(Phone, 3) = "020" Or Left(Phone, 4) = "0121" Then
Me.Phone.InputMask = "000 0000 0000;;' '"
ElseIf Left(Phone, 4) = "0191" Then
Me.Phone.InputMask = "000 000 0000;;' '"
Else
Me.Phone.InputMask = "00000 000000;;' '"
End If
在除了一个表之外的所有表上,这都可以。但是,对于一个表格,我收到错误消息'运行时错误13类型不匹配'。更奇怪的是,如果放置在同一表格上的未绑定控件中,输入掩码可以正常工作,例如data ='左(电话,3)'。
答案 0 :(得分:1)
您是否尝试过为Left
函数使用字符串变量?
Dim strPhone As String
strPhone = Nz(Me!Phone, "")
If Left(strPhone, 3) = "011" Or Left(strPhone, 3) = "030" Then
Me!Phone.InputMask = "0000 000 0000;;' '"
ElseIf Left(strPhone, 3) = ' etc.
<强>解决方案:强>
事实证明,表单上有一个名为Left
的文本字段,导致了这个奇怪的错误。
如果重命名字段不切实际,可以使用限定符VBA
来避免错误:
If VBA.Left(strPhone, 3) = "011" Then
但不使用reserved words字段名更好。 :)
答案 1 :(得分:0)
[Phone]
可以为空,因此请Nz
:
If Left(Nz(Phone), 3) = "011" Or Left(Nz(Phone), 3) = "030" Then
' etc.