Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 将Access查询的大小写转换为IIF_Sql Server_Ms Access_Vba_Case_Iif - Fatal编程技术网

Sql server 将Access查询的大小写转换为IIF

Sql server 将Access查询的大小写转换为IIF,sql-server,ms-access,vba,case,iif,Sql Server,Ms Access,Vba,Case,Iif,我似乎找不到如何将下面用T-SQL编写的查询转换为access查询,以便在vba中使用。我读过使用IIF而不是CASE的文章,因为Access的SQL不支持CASE,但尝试了许多不同的方法,但无法使其工作 sSQL = "SELECT ba.BusinessEntityID,ba.AddressID ,(CASE WHEN ba.BusinessEntityID > 5 THEN (SELECT pp.FirstName

我似乎找不到如何将下面用T-SQL编写的查询转换为access查询,以便在vba中使用。我读过使用IIF而不是CASE的文章,因为Access的SQL不支持CASE,但尝试了许多不同的方法,但无法使其工作

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;"`
在尝试运行上述查询时,我得到如下错误消息

运行时错误3075语法错误查询中缺少运算符 当ba.BusinessEntityID>5时的表达式大小写,然后选择 pp.FirstName来自[Person].[Person]pp其中pp.BusinessEntityID= ba.BusinessEntityID其他“AA”结束为“TEST”

IIF语法:

IIF(condition, if_true_part, if_false_part)   
此外,如果没有MS Access中的AS,则不能使用假名

所以,试试下一步

sSQL = "SELECT ba.BusinessEntityID,ba.AddressID
          ,IIF(ba.BusinessEntityID > 5
            ,(SELECT pp.FirstName FROM Person pp
            WHERE pp.BusinessEntityID = ba.BusinessEntityID)
            ,'AA') AS 'TEST'
    FROM BusinessEntityAddress AS ba
    INNER JOIN AddressType AS at ON at.AddressTypeID = ba.AddressTypeID
    WHERE ba.BusinessEntityID < 11;"
还有两种其他方式:

1创建一个VBA函数,该函数将返回FirstName

2连接左侧或内部,您需要的是table Person

IIF语法:

IIF(condition, if_true_part, if_false_part)   
此外,如果没有MS Access中的AS,则不能使用假名

所以,试试下一步

sSQL = "SELECT ba.BusinessEntityID,ba.AddressID
          ,IIF(ba.BusinessEntityID > 5
            ,(SELECT pp.FirstName FROM Person pp
            WHERE pp.BusinessEntityID = ba.BusinessEntityID)
            ,'AA') AS 'TEST'
    FROM BusinessEntityAddress AS ba
    INNER JOIN AddressType AS at ON at.AddressTypeID = ba.AddressTypeID
    WHERE ba.BusinessEntityID < 11;"
还有两种其他方式:

1创建一个VBA函数,该函数将返回FirstName


2向左或向内连接,使用Access时您需要的是table Person

,请使用切换功能:

其他部分只是通过说明条件为真来完成

sSQL = "SELECT ba.BusinessEntityID, ba.AddressID, 
         SWITCH(ba.BusinessEntityID > 5, 
        (SELECT pp.FirstName FROM [Person].[Person] 
        WHERE pp.BusinessEntityID = ba.BusinessEntityID), 
        TRUE, 'AA') AS 'TEST'
        FROM Person.BusinessEntityAddress ba
        INNER JOIN person.AddressType at ON at.AddressTypeID = ba.AddressTypeID
        WHERE ba.BusinessEntityID < 11"

使用Access时,请使用开关功能:

其他部分只是通过说明条件为真来完成

sSQL = "SELECT ba.BusinessEntityID, ba.AddressID, 
         SWITCH(ba.BusinessEntityID > 5, 
        (SELECT pp.FirstName FROM [Person].[Person] 
        WHERE pp.BusinessEntityID = ba.BusinessEntityID), 
        TRUE, 'AA') AS 'TEST'
        FROM Person.BusinessEntityAddress ba
        INNER JOIN person.AddressType at ON at.AddressTypeID = ba.AddressTypeID
        WHERE ba.BusinessEntityID < 11"


谢谢你的答复。。但是,我在查询表达式IIFba.BusinessEntityID>5中遇到语法错误,请从[Person]中选择pp.FirstName![Person]pp其中pp.BusinessEntityID=ba.BusinessEntityID,'AA'。。如果IIF语句支持子查询,我找不到任何信息,这就是我来这里的原因。lol。如果没有,你能给我展示一个使用你提到的联接的示例吗?1你检查过表名吗?2.难道你忘了按要求写吗?如果。。。。作为测试?我已经检查过IIF1表名中的子查询是否正常工作,我已经通过使用debug检查sSQL进行了测试,然后将其粘贴到SQL Server SSMS 2中,我确实有[TEST],我甚至尝试过作为“TEST”和“TEST”或只是[TEST],但仍然没有运气……我不明白您对SQL Server的看法,但如果我像以前一样删除字段笔名,我会得到同样的错误。你能准确地粘贴你所使用的吗?我的意思是,我在SQL Server中测试了这个查询,结果很好。谢谢你的回复。。但是,我在查询表达式IIFba.BusinessEntityID>5中遇到语法错误,请从[Person]中选择pp.FirstName![Person]pp其中pp.BusinessEntityID=ba.BusinessEntityID,'AA'。。如果IIF语句支持子查询,我找不到任何信息,这就是我来这里的原因。lol。如果没有,你能给我展示一个使用你提到的联接的示例吗?1你检查过表名吗?2.难道你忘了按要求写吗?如果。。。。作为测试?我已经检查过IIF1表名中的子查询是否正常工作,我已经通过使用debug检查sSQL进行了测试,然后将其粘贴到SQL Server SSMS 2中,我确实有[TEST],我甚至尝试过作为“TEST”和“TEST”或只是[TEST],但仍然没有运气……我不明白您对SQL Server的看法,但如果我像以前一样删除字段笔名,我会得到同样的错误。你能准确地粘贴你所使用的吗?我的意思是,我在SQL Server中测试了该查询,它工作正常。Access将不接受来自[Person].[Person]、Person.BusinessEntityAddress或Person.AddressType的查询。仅使用Access中显示的表名,不使用架构或数据库名限定表名。我是通过SQL Server Native Client 11.0执行此操作的。。我使用Set db=OpenDatabaseAdventureWorks,False,False,sConnStr。我还试着把它们改成FROM[个人]![人],来自[人]![BusinessEntityAddress],以及来自[Person]![AddressType]此简单查询是否与您尝试修复的查询在相同的上下文中工作?从Person.BusinessEntityAddress中选择ba.*BAHMMMMM,它不起作用。。。我发现错误运行时3024找不到文件“C:\Users\…”,但从[BusinessEntityAddress]中选择*是否有效该查询存在多个问题。建议您在查询的其余部分正常工作之前忽略大小写。Access是否接受这一点而没有任何抱怨?从BusinessEntityAddress中选择ba.BusinessEntityID,ba.AddressID。在at.AddressTypeID=ba.AddressTypeID中,ba.BusinessEntityID<11的位置处选择ba.BusinessEntityID,ba.AddressID;访问将不接受来自[Person].[Person]、Person.BusinessEntityAddress或Person.AddressType的访问。仅使用Access中显示的表名,不使用架构或数据库名限定表名。我是通过SQL Server Native Client 11.0执行此操作的。。我使用Set db=OpenDatabaseAdventureWorks,False,False,sConnStr。我还试着把它们改成FROM[个人]![人],来自[人]![BusinessEntityAddress],以及来自[Person]![AddressType]此简单查询是否与您尝试修复的查询在相同的上下文中工作?从Person.BusinessEntityAddress中选择ba.*BAHMMMMM,它不起作用。。。我得到了错误的答案
n-Time 3024找不到文件“C:\Users\…”,但从[BusinessEntityAddress]中选择*是否有效该查询存在多个问题。建议您在查询的其余部分正常工作之前忽略大小写。Access是否接受这一点而没有任何抱怨?从BusinessEntityAddress中选择ba.BusinessEntityID,ba.AddressID。在at.AddressTypeID=ba.AddressTypeID中,ba.BusinessEntityID<11的位置处选择ba.BusinessEntityID,ba.AddressID;谢谢你的答复。。但是,我得到的语法错误与我在上面的评论中得到的语法错误相同。。查询表达式IIFba.BusinessEntityID>5出错,请从[Person]中选择pp.FirstName![Person]pp其中pp.BusinessEntityID=ba.BusinessEntityID,'AA'@xJustin8-此答案中没有IIF。。。你确定你复制了他的area9解决方案吗?谢谢你的回复。。但是,我得到的语法错误与我在上面的评论中得到的语法错误相同。。查询表达式IIFba.BusinessEntityID>5出错,请从[Person]中选择pp.FirstName![Person]pp其中pp.BusinessEntityID=ba.BusinessEntityID,'AA'@xJustin8-此答案中没有IIF。。。你确定你复制了他的区域9的解决方案吗?