2017-07-04 106 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)"