私はvb.netとAccess 2010をデータベース(.accdb)として使用しています
これはMySQLで機能します。
SELECT user_id, username, first_name, middle_name, last_name,
CASE is_enable WHEN 1 THEN 'Yes' ELSE 'No' END
FROM tbl_user_accounts ORDER BY user_id
しかし、同じクエリをAccessに渡すと、次のエラーが表示されます。
Unrecognized keyword WHEN.
CASEステートメントのアクセスは異なると思いますか、それともアクセスにはその機能がありますか?
追伸.
is_enableはブール値です
理解した:
Access 2010にはCASE機能がありません。代わりにSWITCHを使用します。
SELECT user_id, username, first_name, middle_name, last_name, SWITCH(is_enable=True,'Yes',is_enable=False,'No') FROM tbl_user_accounts ORDER BY user_id
チャフとJWに感謝します。
または、 IIF
を使用できます
IIF(is_enable = 1 , 'YES', 'NO')
Chooseは、Switchに似ていますが、回答のリストにインデックスを返す、クエリで使用できる別のAccess(本当にVBA)関数です。たとえば、Choice([Choice]、 "A"、 "B"、 "C")は、Choiceが2の場合に "B"を返します。これは過去に役に立ちました。
これは実際には表示の問題であり、SQL以外の場所で行うのが最適です。 is_enabled
は明らかにBoolean/YesNoデータ型なので、フォーマットするだけです。
SELECT Format(AYesNo,'Yes/No') As ATextYN FROM table1
または
Format(AYesNo,'True/False')
Format(AYesNo,'On/Off')
すべてがVB.Netで機能し、ブール値ではなくテキストを返します。
http://msdn.Microsoft.com/en-us/library/office/gg251755.aspx を参照してください
これを試して
yourColumnName=case when is_enable=1 then 'Yes' ELSE 'No' END