J'utilise vb.net et Access 2010 comme base de données (.accdb)
Cela fonctionne avec 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
Mais lorsque la même requête est transmise à Access, j'obtiens l'erreur suivante:
Unrecognized keyword WHEN.
Donc, je suppose que la déclaration CASE est différente dans l'accès, ou est-ce que l'accès a cette fonction?
P.S.
est_enable est booléen
Deviner:
Access 2010 n’a pas la fonction CASE, nous utilisons plutôt 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
Merci à Chuff et JW.
Sinon, vous pouvez utiliser IIF
IIF(is_enable = 1 , 'YES', 'NO')
Choose est une autre fonction Access (vraiment VBA) disponible dans les requêtes, similaire à Switch, mais renvoie un index à une liste de réponses. Par exemple, Choisir ([Choice], "A", "B", "C") renverrait "B" si Choice avait 2. Je l'avais trouvé utile par le passé.
C’est vraiment un problème d’affichage, et il serait probablement préférable de le faire ailleurs que sous SQL. is_enabled
est clairement un type de données booléen/YesNo, vous pouvez donc simplement le formater:
SELECT Format(AYesNo,'Yes/No') As ATextYN FROM table1
Ou
Format(AYesNo,'True/False')
Format(AYesNo,'On/Off')
Tous fonctionnent en VB.Net et renvoient du texte, pas des booléens.
Voir http://msdn.Microsoft.com/en-us/library/office/gg251755.aspx
Essaye ça
yourColumnName=case when is_enable=1 then 'Yes' ELSE 'No' END