Accessでcase
式を使用できますか?私は最大日付フォーム2列を決定しようとしていますが、次のコードで構文エラーを取得し続けます:
CASE
WHEN dbo_tbl_property.LASTSERVICEDATE > Contour_dates.[Last CP12 Date]
THEN dbo_tbl_property.LASTSERVICEDATE
ELSE Contour_dates.[Last CP12 Date]
END AS MaxDate
代わりにIIF()
関数を使用できます。
IIF(condition, valueiftrue, valueiffalse)
condition
は、テストする値です。
valueiftrue
は、条件がTRUEと評価された場合に返される値です。
valueiffalse
は、条件がFALSEと評価された場合に返される値です。
Switch
関数もあり、テストする複数の条件がある場合に使いやすく、理解しやすくなります。
Switch( expr-1, value-1 [, expr-2, value-2 ] … [, expr-n, value-n ] )
Switch関数の引数リストは、式と値のペアで構成されています。式は左から右に評価され、Trueと評価される最初の式に関連付けられた値が返されます。パーツが適切にペアリングされていない場合、実行時エラーが発生します。たとえば、expr-1がTrueの場合、Switchはvalue-1を返します。 expr-1がFalseで、expr-2がTrueの場合、Switchはvalue-2を返します。
次の場合、スイッチはNull値を返します。
どの式もTrueではありません。
最初のTrue式には、Nullという対応する値があります。
注:スイッチは、1つの式のみを返しますが、すべての式を評価します。このため、望ましくない副作用に注意する必要があります。たとえば、式の評価の結果、ゼロによる除算エラーが発生した場合、エラーが発生します。
Accessにはcaseステートメントはありません。代わりに、switchステートメントを使用できます。以下のようなものになります。
switch(dbo_tbl_property.LASTSERVICEDATE > Contour_dates.[Last CP12 Date],dbo_tbl_property.LASTSERVICEDATE,dbo_tbl_property.LASTSERVICEDATE <= Contour_dates.[Last CP12 Date],Contour_dates.[Last CP12 Date])
詳細については、以下を参照してください。 http://www.techonthenet.com/access/functions/advanced/switch.php
または、VBAでのケース関数の実装例:
http://ewbi.blogs.com/develops/2006/02/adding_case_to_.html
よろしく、J。