2015-11-17 76 views
0

當我將字符串設置爲和我已預先寫入SSMS中的SQL語句時,我似乎不斷遇到問題。訪問VBA錯誤3075語法錯誤(缺少運算符)

我有兩個問題都是相關的。首先,在處理更復雜的查詢(幾個連接,其中條件,相關的子查詢和case語句)與簡單查詢相反時,我似乎遇到了問題。任何人都有很好的資源,可以在SSMS向VBA編寫查詢時閱讀有關語法「規則」的內容?

其次,下面是我在AdventureWorks示例數據庫中編寫的查詢示例,它給了我在此問題標題中列出的錯誤。我的T-SQL語句是:

「運行時錯誤3075語法錯誤(缺少:上線 「設置RS = db.OpenRecordset(sSQL,dbOpenDynaset,dbSeeChanges)」,這說發生

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;" 

錯誤(CASE WHEN ba.BusinessEntityID> THEN (SELECT pp.FirstName FROM [Person]。[Person] pp WHERE pp.BusinessEntityID = ba.BusinessEntityID Else'AA'END)AS' TEST'「

回答

1

試試這個

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;" 

不需要在別名中使用引號。如果你必須的話,那麼還有其他方法(比如drop AS或使用雙引號),但不建議。

+0

謝謝你的迴應,但沒有奏效。仍然有完全相同的錯誤信息。 – xJustin8

+0

嘗試用'Person.Person'替換'[Person]。[Person]'' – Utsav

+0

仍然沒有好處.. – xJustin8

相關問題