Я не могу найти, как преобразовать приведенный ниже запрос, написанный в T-SQL, в запрос доступа, который будет использоваться в vba. Я читал, что с использованием IIF вместо CASE (поскольку случай не поддерживается Access SQL), но он пробовал много разных способов и не может заставить его работать.Преобразование CASE в IIF для запроса доступа
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;"`
Я получаю сообщение об ошибке, как следует при попытке запустить приведенный выше запрос ..
Run-Time Error 3075 Ошибка синтаксиса (отсутствующий оператор) в запросе выражения «(случай, когда ба. BusinessEntityID> 5 ТОГДА (SELECT pp.FirstName из [Человек] [Человек] С. ГДЕ pp.BusinessEntityID = ba.BusinessEntityID.) Else 'АА' END) AS 'TEST'
Доступ не принимается 'FROM [Person]. [Person]', 'FROM Person.BusinessEntityAddress' или' FROM person.AddressType'. Используйте только имена таблиц, как они отображаются в Access --- не квалифицируйте имена таблиц с именем схемы или базы данных. – HansUp
Я делаю это через собственный клиент SQL Server 11.0. Я использовал «Установить db = OpenDatabase (« AdventureWorks », False, False, sConnStr)». Я также попытался изменить их на 'FROM [Person]! [Person], FROM [Person]! [BusinessEntityAddress] и FROM [Person]! [AddressType]' – xJustin8
Выполняет ли этот простой запрос тот же контекст, что и запрос вы пытаетесь исправить? 'SELECT ba. * FROM Person.BusinessEntityAddress ba' – HansUp