2017-02-22 69 views
-1

我在MS Access下面的代码:无效的SQL语句;预计 “删除”

Set rs = con.Execute 

(SELECT PO_Number, PR_Number, PO_Creator_Number, PO_Creator_Name, PR_Creator_Number, PR_Creator_Name, 
    (CASE WHEN PO_Creator_Region <> "'IL'" 
    THEN 
    ((DATEDIFF(dd, PR_Creation_Date, PR_Approval_Date)+1) 
    -(DATEDIFF(wk, PR_Creation_Date, PR_Approval_Date)*2) 
    -(CASE WHEN DATENAME(dw, PR_Creation_Date) = "'Sunday'" THEN 1 ELSE 0 END) 
    -(CASE WHEN DATENAME(dw, PR_Approval_Date) = "'Saturday'" THEN 1 ELSE 0 END)), 
        ELSE 
        ((DATEDIFF(dd, PR_Creation_Date, PR_Approval_Date)+1) 
        -(DATEDIFF(wk, PR_Creation_Date, PR_Approval_Date)*2) 
        -(CASE WHEN DATENAME(dw, PR_Creation_Date) = "'Friday'" THEN 1 ELSE 0 END) 
        -(CASE WHEN DATENAME(dw, PR_Approval_Date) = "'Saturday'" THEN 1 ELSE 0 END)) 
        END) AS PR_Cycle_Time 

FROM PO_PR_INFO_TBL 

WHERE PR_Creation_Date ='" & txtnumb & "'", 
     PR_Approval_Date = '" & txtnumb & "'", 
     PO_Creation_Date ='" & txtnumb & "'" 

GROUP BY PO_Number, PR_Number, PO_Creator_Number, PO_Creator_Name, PR_Creator_Number, PR_Creator_Name) 

然后MS访问给我一个错误消息说

无效的SQL语句;预计 “删除”, “插入”, “程序”, “SELECT” 或 “UPDATE”

谁能帮助我解决这个问题?

+0

用SET删除该行 –

+1

您正在混合VBA和SQL。这是什么代码?我以为你把它放在查询窗口中,期望只有SQL,因为VBA会在编译的语法问题上用红色突出显示,因为代码显示文字没有换行符或引号。 – Parfait

+0

谢谢你看我的问题!是的,我把它放在SQL窗口中,只希望得到SQL结果,因为我真的没有VBA的经验...... – Ying

回答

0

如果幸运的话,用SELECT * FROM(代替set...行,最后加上)就可以了。

但是,这只是针对一个快速和肮脏的解决方案,因为查询似乎不完全正确形成。