13

データベース(.accdb)としてvb.netとAccess2010を使用しています

これは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ステートメントはアクセスが異なると思いますか、それともアクセスにはその機能がありますか?

PSis_enable
はブール値です

4

5 に答える 5

17

理解した:
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に感謝します。

于 2013-02-09T07:06:03.553 に答える
10

またはIIF

IIF(is_enable = 1 , 'YES', 'NO')
于 2013-02-09T06:29:57.540 に答える
2

Chooseは、クエリで使用できる別のAccess(実際にはVBA)関数であり、Switchに似ていますが、回答のリストにインデックスを返します。たとえば、Choose([Choice]、 "A"、 "B"、 "C")は、Choiceが2の場合、"B"を返します。これは過去に便利でした。

于 2013-02-09T20:47:49.177 に答える
1

これは実際には表示の問題であり、SQL以外の場所で行うのが最適です。is_enabled明らかにブール/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を参照してください

于 2013-02-09T12:08:41.497 に答える
0

これを試して

yourColumnName=case when is_enable=1 then 'Yes' ELSE 'No' END
于 2013-02-09T06:35:46.193 に答える