引号(')和双引号(“)-何时何地使用它们

背景

无论何时使用代码,都必须有一种方法将实际代码(应直接解释)与应解释为数据的文字字符串区分开。 数字通常不存在此问题,但日期也可以。

Debug.Print Me.ControlName
refers to a control on a form.  Whereas,
Debug.Print "Me.ControlName"
simply prints the literal text
Me.ControlName
每个报价类型(“或”)的使用位置

在某些地方(遵循详细信息),任何一个都可以工作。 我希望说服您,为了清楚和一致起见,在您使用的地方使用适当的类型将是您的最大利益。 清晰,因为在没有这种额外视觉提示的情况下,读取同时需要两种类型的字符串的代码可能会非常混乱(请参考很多以此为基础的帖子)。

VBA中的字符串需要使用双引号(“)来定界。单引号(')无法使用。

在大多数情况下,SQL中的字符串都可以使用。 SQL的ANSI标准指定它应该是单引号('),但是MS Access明智地决定更加灵活并支持两种引号类型。 这允许经验不足的用户进入并更轻松地使用它。 这也意味着他们在迷糊之前不能走得很远:(。

我强烈建议您保留此处的标准,因为它会使SQL SO的那些令人困惑的字符串操作更容易掌握。

嵌入式行情(常规)

有时,您会遇到要求指定一个字符串的要求,该字符串包含用于定界字符串的字符(“或”)。

推荐的处理方法是加倍使用的报价。

假设您要将方括号中的文本分配给strDisp字符串-[请从列表中选择“鲍勃”。],您会说:

strDisp = "Please select ""Bob"" from your list."
在某些情况下,也可以改用“其他”引号字符:
strDisp = "Please select 'Bob' from your list."
这比较容易,但是当涉及SQL或其他解释引擎时,我建议不要使用此方法。 为SQL构建字符串

但是在MS Access中,我们遇到了需要使用包含嵌入式字符串的字符串的情况。 特别是使用SQL代码。

要求是在VBA(SQL指令)中构建一个字符串,然后该字符串可能包含要由SQL解释的字符串文字。 SQL最终应类似于:

SELECT * FROM [TableName] WHERE ([AccountName]='Hieronymous')
使用正确的引号就足够简单了:
strSQL = "SELECT * FROM [TableName] WHERE ([AccountName]='Hieronymous')"
人们在建弦时开始感到困惑。 对此的典型要求是行继续(SQL字符串可能非常长且混乱),并使用表单中的字符串或日期项填充WHERE子句。

假设我们是从表单的模块中创建此字符串,并且有一个带有帐户名称的ComboBox(cboAccount),那么我们的代码将类似于以下内容(行尾的_表示将下一行视为当前版本的延续。):

strSQL = "SELECT *" & VbCrLf & _
         "FROM [TableName]" & VbCrLf & _
         "WHERE ([AccountName]='" & Me.cboAccount & "')"
假设从列表中选择了Hieronymous,这将导致将完全相同的字符串分配给strSQL。

然后可以将该字符串传递给SQL解释器

DoCmd.RunSQL strSQL
然后,SQL解释器将处理嵌入的文字字符串。

注意 其实

DoCmd.RunSQL仅适用于操作查询,因此不适用于此类SELECT SQL字符串,但这与该概念不太相关。 关键是,但是,如果您使用的是SQL,则现在已经准备好使用strSQL。 日期 (#)

这涉及更多一点,因此值得拥有自己的线程(

文字日期时间及其定界符(#)。 )。 调试

很容易出错,所以我总是建议在开发代码时,甚至在您知道某个地方存在问题的地方,在将字符串传递给SQL引擎之前,先执行“ Debug.Print strSQL”。 在VBA窗口中使用Ctrl-G来显示并转到显示字符串的立即窗格。

Debug.Print strSQL
DoCmd.RunSQL strSQL
注意 前面的示例仅执行动作查询SQL,不适用于所示的某些早期示例SQL。 它仅旨在作为说明性示例。

From: https://bytes.com/topic/access/insights/575414-quotes-double-quotes-where-when-use-them

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值