首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Access VBA错误3075语法错误(缺少运算符)

Access VBA错误3075语法错误(缺少运算符)
EN

Stack Overflow用户
提问于 2015-11-17 13:54:50
回答 2查看 1.7K关注 0票数 0

在将字符串设置为我在SSMS中预先编写的SQL语句时,我似乎不断遇到问题。

我有两个问题,它们都是相关的。首先,与简单查询相比,我似乎只在处理稍微复杂的查询(多个连接、where条件、相关子查询和case语句)时才会遇到问题。有没有什么好的资源可以让我在将SSMS中的查询写到VBA时读到语法“规则”?

其次,下面是我在AdventureWorks示例数据库中编写的查询示例,它给出了这个问题标题中列出的错误。我的T-SQL语句是:

代码语言:javascript
运行
复制
sSQL = "SELECT ba.BusinessEntityID,ba.AddressID
              ,(CASE WHEN ba.BusinessEntityID > 5
                THEN
                (SELECT pp.FirstName FROM [Person].[Person] pp
                WHERE pp.BusinessEntityID = ba.BusinessEntityID)
               Else 'AA' END) AS 'TEST'
        FROM Person.BusinessEntityAddress ba
        INNER JOIN person.AddressType at ON at.AddressTypeID = ba.AddressTypeID
        WHERE ba.BusinessEntityID < 11;"

错误出现在"Set rs = db.OpenRecordset(sSQL,dbOpenDynaset,dbSeeChanges)“行,该行为:

“运行时错误3075查询表达式中出现语法错误(缺少运算符) '(CASE WHEN ba.BusinessEntityID >5 THEN (SELECT pp.FirstName FROM Person.Person pp WHERE pp.BusinessEntityID = ba.BusinessEntityID) Else 'AA‘END) AS 'TEST'”

EN

回答 2

Stack Overflow用户

发布于 2015-11-17 14:14:13

尝尝这个

代码语言:javascript
运行
复制
sSQL = "SELECT ba.BusinessEntityID,ba.AddressID
          ,(CASE WHEN ba.BusinessEntityID > 5
            THEN
            (SELECT pp.FirstName FROM [Person].[Person] pp
            WHERE pp.BusinessEntityID = ba.BusinessEntityID)
           Else 'AA' END) AS TEST 
    FROM Person.BusinessEntityAddress ba
    INNER JOIN person.AddressType at ON at.AddressTypeID = ba.AddressTypeID
    WHERE ba.BusinessEntityID < 11;"

不需要在别名中使用引号。如果您必须这样做,那么还有其他方法(如删除AS或使用双引号),但不建议这样做。

票数 0
EN

Stack Overflow用户

发布于 2018-09-13 08:09:53

这里的问题是,您试图在需要Access SQL语句的地方使用TSQL语句。Access SQL不支持CASE WHEN,也不支持许多TSQL支持的结构。

OpenRecordset方法需要表名、保存的查询名或Access SQL语句。

您可以通过在Microsoft Access中创建并保存传递查询来解决此问题。创建传递查询时,可以使用TSQL语句,并在传递查询的属性中设置到SQL数据库的连接字符串。

顾名思义,Access将传递查询的分析和执行传递给SQL Server。

保存传递查询并对其进行测试后,可以按原样使用OpenRecordset命令,只需将第一个参数替换为传递查询的名称即可。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33750078

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档