使用IFF语句将SQL查询写入VBA,获取缺less的expression式错误

我一直在试图弄清楚这几天,没有任何运气。 我正在尝试在VBA中编写SQL行命令。

我得到“ORA-00936:mison expresson错误”

strSql4 = "SELECT FWLOTID, ENDDATETIME, ENDCODE, DRAW, IIF([ENDCODE]=""6"", ""MSNAG"",""0"") " ' Or ENDCODE='10' Or ENDCODE='11' Or ENDCODE='12' Or ENDCODE='14'" strSql3 = "FROM EVENTS.ODSWIND WHERE ENDDATETIME > to_date('" & Format(dtEndDate, "MM/dd/yyyy") & "','MM/DD/YYYY') " On Error Resume Next rsPRC.Close On Error GoTo ErrorHandler rsPRC.CursorLocation = adUseClient rsPRC.CursorType = adOpenStatic rsPRC.LockType = adLockOptimistic rsPRC.Open strSql4 & strSql3, cnPRC 

检查您的数据types是否为[ENDCODE]。 如果它是一个文本字段,然后试试这个:

 strSql4 = "SELECT FWLOTID, ENDDATETIME, ENDCODE, DRAW, IIF([EVENTS].[ODSWIND].[ENDCODE]=""6"", ""MSNAG"",""0"") as IsItSix " 

如果[ENDCODE]是数字,那么试试这个:

 strSql4 = "SELECT FWLOTID, ENDDATETIME, ENDCODE, DRAW, IIF([EVENTS].[ODSWIND].[ENDCODE]=6, ""MSNAG"",""0"") as IsItSix " 

另外,让我们知道你正在发送这个代码的数据库。 它是一个Access Jet数据库吗? Access ACE数据库? 一个SQL Server数据库? 所有额外的信息,你可以让我们更好地帮助你。

编辑

另外… IIF将只能使用Access Sql查询。

你的错误看起来像一个Oracle错误。

假设你正在发送到Oracle,试试这个:

 strSql4 = "SELECT FWLOTID, ENDDATETIME, ENDCODE, DRAW, CASE WHEN [ENDCODE]= '6' THEN 'MSNAG' ELSE '0' END as IsItSix " 

再次编辑

试试这个:(如果不行的话,让我知道确切的错误信息。)

 strSql4 = "SELECT FWLOTID, ENDDATETIME, ENDCODE, DRAW, CASE ENDCODE WHEN '6' THEN 'MSNAG' ELSE '0' END AS ISITSIX " 

试试这个,看看是否可以工作:

 strSql4 = "SELECT FWLOTID, ENDDATETIME, ENDCODE, DRAW, IIF(""ENDCODE""='6', 'MSNAG','0') " ' Or ENDCODE='10' Or ENDCODE='11' Or ENDCODE='12' Or ENDCODE='14'"