2017-07-04 109 views
0

我正在使用VBA在我的Access表中的一列中寫入0/1。 如果包含在兩列[IsYTD?]和[SO Tarihi])中的日期之間的差異是< 365,我希望在[IsYTD?]中寫入1,而在另一種情況下爲0。這是我目前的代碼,但它似乎不起作用。你可以幫我嗎?在ACCESS中使用VBA以運行帶CASE語句的SQl

SQL3 = "UPDATE [1 - CURRENT RAW DATA SOURCE] SET [IsYTD?] = CASE " & _ 
    "WHEN ([IsYTD?]-[SO Tarihi])<365 THEN 1 " & _ 
    "ELSE 0 " & _ 
    "END" 
    DoCmd.RunSQL SQL3 
+1

Access不支持CASE表達式,你需要使用['IIF'(https://開頭WWW .techonthenet.com/access/functions/advanced/iif.php)pr ['SWITCH'](https://www.techonthenet.com/access/functions/advanced/switch.php)。 [Access中的Case表達式](https://stackoverflow.com/q/772461/1048425)中可能的重複。 – GarethD

+1

[Access中的Case表達式]的可能重複(https://stackoverflow.com/questions/772461/case-expressions-in-access) – Andre

回答

1

CASE WHEN在MS Access SQL中無效。二者必選其一switchiif()

既然你只有2例,iif是簡單的代碼

SQL3 = "UPDATE [1 - CURRENT RAW DATA SOURCE] SET [IsYTD?] = iif(([IsYTD?]-[SO Tarihi])<365, 1,0)"