Pouvez-vous utiliser des expressions case
dans Access? J'essaie de déterminer la date maximale des colonnes du formulaire 2, mais je continue à obtenir des erreurs de syntaxe dans le code suivant:
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
Vous pouvez utiliser la fonction IIF()
à la place.
IIF(condition, valueiftrue, valueiffalse)
condition
est la valeur que vous souhaitez tester.
valueiftrue
est la valeur renvoyée si la condition est évaluée à TRUE.
valueiffalse
est la valeur renvoyée si la condition est évaluée à FALSE.
Il existe également la fonction Switch
qui est plus facile à utiliser et à comprendre lorsque vous avez plusieurs conditions à tester:
Switch( expr-1, value-1 [, expr-2, value-2 ] … [, expr-n, value-n ] )
La liste des arguments de la fonction Switch se compose de paires d'expressions et de valeurs. Les expressions sont évaluées de gauche à droite et la valeur associée à la première expression à évaluer sur True est renvoyée. Si les pièces ne sont pas correctement appariées, une erreur d'exécution se produit. Par exemple, si expr-1 est True, Switch renvoie la valeur-1. Si expr-1 est False, mais expr-2 est True, Switch renvoie la valeur-2, etc.
Switch renvoie une valeur Null si:
Aucune des expressions n'est vraie.
La première expression True a une valeur correspondante qui est Null.
REMARQUE: Switch évalue toutes les expressions , même s'il n'en renvoie qu'une seule. Pour cette raison, vous devez surveiller les effets secondaires indésirables. Par exemple, si l'évaluation d'une expression entraîne une division par zéro, une erreur se produit.
Il n'y a aucune déclaration de cas dans Access. À la place, vous pouvez utiliser l'instruction switch. Il ressemblera à celui ci-dessous:
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])
Pour plus de lecture, consultez: http://www.techonthenet.com/access/functions/advanced/switch.php
Ou pour l'exemple d'implémentation de fonction de cas dans VBA:
http://ewbi.blogs.com/develops/2006/02/adding_case_to_.html
Cordialement, J.