2009-04-21 14 views
24

Accessでcase式を使用できますか?私は最大の日付形式に2列を決定しますが、次のコードで構文エラーを取得維持しようとしている:あなたが代わりにIIF()機能を使用することができますアクセスのケース式

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 

答えて

41

IIF(condition, valueiftrue, valueiffalse) 

conditionは、テストする値です。

valueiftrueは、conditionがTRUEと評価された場合に返される値です。

valueiffalseは、条件がFALSEと評価された場合に返される値です。

+0

:私はからのオブジェクト・タイプのリストを持って

SELECT objectdesc, Count(*) AS Expr1 FROM msysobjects, AccessObjectTypeXref where type = objecttype group by objectdesc order by objectdesc 

:あなたが望む場合は明らかに、あなたはすべてのレコードを含めることができますか? –

+3

"dbo_tbl_property.LASTSERVICEDATE> Contour_dates。[Last CP12 Date]"はあなたの真偽です –

7

Accessには大文字小文字のステートメントはありません。代わりにswitch文を使用できます。 、

http://ewbi.blogs.com/develops/2006/02/adding_case_to_.html

よろしく: http://www.techonthenet.com/access/functions/advanced/switch.php

あるいはVBAでのケース機能の実装例:でさらに読書の外観については

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])

:それは、以下のいずれかのようになります J.

+3

'switch'関数は、複数の条件が評価されている場合にははるかに優れた関数です。ネストされた 'IIF'関数を使用するのと比較して、読み込み/理解/維持がより簡単になります。また、「すべての前の式が偽である」と評価される論理式を作成する代わりに、デフォルト値を実装する別の方法は、評価される最終式として「真」を使用することです。例: 'switch(dbo_tbl_property.LASTSERVICEDATE> Contour_dates。[Last CP12 Date]、dbo_tbl_property.LASTSERVICEDATE、true、Contour_dates。[Last CP12 Date])' –

-2

FWIW - IIFはドラッグであり、スイッチの解決策はSQLにとって有効ではないようです(何か問題が起きた可能性があります)。

IDのObjectType ObjectDesc 1 -32768フォーム2 -32766マクロ3 -32764レポート 4 -32761モジュール5 -32758ユーザー6 -32757 DB文献7:私はFionnualaがAccessObjectXrefという名前の新しいテーブルに提供された値を入力します1表8 2 DB 9 3容器10 5クエリー11 8サブデータシート

は、オブジェクト名とそのカウントのリストを作成するには、次のSQLを使用しました。私はあなたがそれを行うには、真のflaseの答えを持っていると思っていた Meaning of MsysObjects values