【问题标题】:Missing an Operator缺少操作员
【发布时间】:2023-02-22 01:49:37
【问题描述】:

"SELECT Users.Email FROM [Users] WHERE ((Users.Role) Like 'AO' AND (Users.Organization) Like " & Me.boOrgs & ")"

我遇到了缺少运算符的错误,但我已经完成了这件事,但没有发现任何遗漏。我可能只是遗漏了一些简单的东西,但我找不到它,也没有人和我一起要求仔细检查。

【问题讨论】:

  • Me.bo0rgs 周围缺少单引号
  • ...如果你不打算在“AO”周围使用通配符,你也可以使用=而不是LIKE
  • 一旦我在 " & Me.boOks 和 " 周围添加了单引号,我就没有在记录集中得到任何东西。如果没有单引号访问,至少会用表单框中的内容填充变量。
  • 如果 boOrgs细绳,您将需要单引号。如果它是一个数字,则不需要引号,但是 like-operator 就没有意义了。
  • boOrgs 是表达式所来自的表单上的组合框。我有 10 个不同的组织,组合框允许用户选择一个,这个字符串正在拉动该选择以完成查询并获取属于该组织的各个用户的电子邮件。

标签: sql vba ms-access


【解决方案1】:

除非 Me.boOrgs 已经用单引号分隔,否则连接的查询字符串将像这样结束:

... AND (Users.Organization) Like MyOrganization)

应该是... AND (Users.Organization) Like 'MyOrganization')

为此,您需要将连接语句更改为"SELECT Users.Email FROM [Users] WHERE ((Users.Role) Like 'AO' AND (Users.Organization) Like '" & Me.boOrgs & "')"

两个旁注:

  • 由于您的搜索条件“AO”没有通配符,您应该将 Like 'AO' 更改为 = 'AO'
  • 连接查询可能容易受到SQL injection的影响;确保仔细清理 Me.boOrgs 的内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-22
    • 2013-03-19
    • 1970-01-01
    • 2013-10-11
    • 1970-01-01
    • 2021-09-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多