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