如果必须构建要连接的字符串,可能需要在一个字符串中嵌入另一个字符串,或在字符串中嵌入一个字符串变量。 在下列情况下,可能需要在一个字符串中嵌套另一个字符串:
为域聚合函数指定条件。
为 Find 方法指定条件。
为窗体的 Filter 或 ServerFilter 属性指定条件时。
创建 SQL 字符串时。
在所有这些实例中,Access 必须将字符串传递给 Access 数据库引擎。 例如,在为域聚合函数指定 criteria 参数时,Access 必须计算任何变量,将它们连接成一个字符串,然后将整个字符串传递给 Access 数据库引擎。
如果嵌入数值变量,Access 将计算该变量,并简单地将值连接到字符串中。 但是,如果变量是文本字符串,则生成的条件字符串将在字符串中包含一个字符串。 字符串中的字符串必须由字符串分隔符标识。 否则,Access 数据库引擎将无法确定字符串的哪一部分是要使用的值。
字符串分隔符实际上不是变量自身的某一部分,但是它们必须包含在 criteria 参数的字符串中。 可以用三种不同的方法来构造 criteria 参数的字符串。 每一种方法所产生的 criteria 参数应该如下列示例之一:
"[LastName] = 'Smith'"
"[LastName] = ""Smith"""
包含单引号
应该在 criteria 参数中包含单引号,这样在将变量值连接到字符串中时,它就会包含在单引号中。 例如,假设 criteria 参数必须包含名为 的 strName
字符串变量。 可以如下所示构建 criteria 参数:
"[LastName] = '" & strName & "'"
当计算变量 strName
并将其连接到 条件 字符串时, 条件 字符串将变为:
"[LastName] = 'Smith'"
注意
这种语法不允许在变量自身的值中使用单引号 (')。 如果字符串变量的值包含单引号,Access 将会产生一个运行时错误。 如果变量可能代表包含单引号的值,请考虑使用在下节中讨论的其他语法形式。
包含双引号
应该在 criteria 参数中包含双引号,这样在计算变量值时,其结果就会包含在双引号中。 在字符串中,必须使用两组双引号来代表一组双引号。 可以如下所示构建 criteria 参数:
"[LastName] = """ & strName & """"
当计算变量 strName
并将其连接到 criteria 参数时,每组两个双引号将替换为一个单引号。 criteria 参数将变为:
"[LastName] = 'Smith'"
此语法看起来可能比单引号语法更复杂,但它使您能够在 criteria 参数中嵌入包含撇号的字符串。 它还使你能够在嵌入的字符串中嵌套一个或多个字符串。
包含表示引号的变量
可以创建一个代表双引号的字符串变量,并将该变量与变量值一起连接到 criteria 参数中。 双引号的 ANSI 表示形式为 Chr$(34)
;可以将此值分配给名为 的 strQuote
字符串变量。 然后您可以如以下示例所示构建 criteria 参数:
"[LastName] = " & strQuote & strName & strQuote
当计算出变量值并将其连接到 criteria 参数中后,criteria 参数变为:
[LastName] = "Smith"
支持和反馈
有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。