2017-07-04 11 views
0

私はAccessで自分のテーブルの列に0/1を書き込むためにVBAを使用しています。 [IsYTD?]と[SO Tarihi]の2つの列に含まれる日付の差が< 365の場合、[IsYTD?]に1を書き、それ以外の場合には0を書きます。これは現時点での私のコードですが、うまくいかないようです。手伝って頂けますか?ACCESSのVBAを使用してSQlをCASEステートメントで実行する

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

アクセスはCASE式をサポートしていませんコーディングする単純である、switchまたはiif()

のいずれかを使用して、あなたは[ 'IIF'](httpsを使用する必要があります:// WWWを.techonthenet.com/access/functions/advanced/iif.php)pr ['SWITCH'](https://www.techonthenet.com/access/functions/advanced/switch.php)を参照してください。可能な[Case in expressions in Access]の複製(https://stackoverflow.com/q/772461/1048425)。 – GarethD

+1

[Case in expressions in Access]の重複可能性(https://stackoverflow.com/questions/772461/case-expressions-in-access) – Andre

答えて

1

CASE WHENは、MS Access SQLでは有効な構文ではありません。あなたが唯一の2例を持っているのでiif

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