【问题标题】:# in part of the field name, Access thinks it is a date# 部分字段名,Access认为是日期
【发布时间】:2021-02-17 19:19:46
【问题描述】:

我正在编写一个 VBA,如果 Parcel# 匹配 Me.Parcel 以使按钮上的字体为粗体。 # 是字段名称的一部分。 MS Access 认为这是一个约会。这是我的代码。它不断收到“查询表达式中日期的语法错误”。我知道它必须是我缺少的一些简单的东西。

Private Sub Form_Current()
    If DCount("*", "County Address Table", "Parcel#'='" & Me.Parcel) Then
        Me.[COUNTY ADDRESS HISTORY].FontBold = True
     Else
        Me.[COUNTY ADDRESS HISTORY].FontBold = False
    End If

【问题讨论】:

  • 试试"[Parcel#] = '" & Me.Parcel & "'"。最好不要在字段名中使用特殊字符。

标签: vba ms-access


【解决方案1】:

表名和列名可以有特殊字符,但是它们需要在查询中被引用,以免事情变南 - 就像 # 字符被解释为 Date 文字分隔符 = )

事实上,由于各种原因,引用字段名称应该是默认的处理方式。

使用[ 方括号] 引用标识符,as already suggested

If DCount("*", "[County Address Table]", "[Parcel#]'='" & Me.Parcel) Then

考虑在新表和新列名中避免使用空格和特殊字符:CountryAddressTableParcelNumber 等更易于使用。

【讨论】:

    【解决方案2】:

    "字符串的第一部分" & Chr(35) & "字符串的第二部分"

    【讨论】:

    • 修复了它。这是一个较旧的数据库,需要大量工作才能删除字符。谢谢
    • @dulster 请注意,它还掩盖了对象的实际名称,这不会让以后的维护变得更简单。
    【解决方案3】:

    您可以将其简化为:

    Private Sub Form_Current()
    
        Me.[COUNTY ADDRESS HISTORY].FontBold = _
            Not IsNull(DLookup("[Parcel#]", "[County Address Table]", "[Parcel#] = '" & Me.Parcel & "'"))
    
    End Sub
    

    如果 Parcel# 是数字,请删除单引号。

    【讨论】:

      猜你喜欢
      • 2018-04-15
      • 2018-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-10
      • 1970-01-01
      • 2019-08-19
      • 1970-01-01
      相关资源
      最近更新 更多