#ERROR lorsque le sous formulaire n'a pas d'enregistrement.
Voici quelques observations au sujet du #ERROR qui est retourné
lorsque le formulaire n'a pas d'enregistrement. Dans les exemples, [Subf
field] réfère à la syntaxe correcte pour accéder à un champ du
sous formulaire depuis le formulaire principal.
1. Dans ce qui suit, le champ ne doit pas s'évaluer à Null : IsNull([Subf
field]) est Faux
2. Il s'évalue à une erreur sur le formulaire principal, mais non lorsque
fourni à un module global:
IsError([Subf
field]) sur le formulaire principal retourne Vrai
IsAnError([Subf
field]) retourne Faux, où la fonction suivante existe dans un module global:
Function IsAnError(testvalue as variant) as Boolean
IsAnError =
IsError(testvalue)
End Function
3. Il n'est pas numérique. IsNumeric([subf field]) retourne Faux.
J'ai trouvé ce test comme étant le meilleur, puisqu'on passe souvent un
total ou une autre valeur au formulaire principal. Si non, il se trouve
généralement un champ numérique dans le sous formulaire qu'on peut utiliser.
Ce test indique que s'il y a des enregistrements, IsNumeric sera Vrai;
si il n'y en a pas, IsNumeric sera Faux. Vous pouvez donc repérer qu'il
n'y a pas d'enregistrements et afficher votre propre message au lieu de #ERROR.
La fonction qui suit retourne zéro au lieu de #ERROR et est utilisée
comme suit: nnz([Subf field]) sur le formulaire principal. Je l'ai sauvegardée
dans un module global.
'***************** Code Start ***************
'This code was originally written by Keri Hardwick.
'It is not to be altered or distributed,
'except as part of an application.
'You are free to use it in any application,
'provided the copyright notice is left unchanged.
'Ce code fut originalement écrit par Keri Hardwick.
'Il ne doit être ni altéré, ni distribué'sauf comme partie intégrée à une application.'Vous êtes libre d'utiliser ce code 'à la condition de laisser cette note, sans modification.
'
'Code Courtesy of
'Keri Hardwick
'
Function nnz(testvalue As Variant) As Variant
'Not Numeric retourne zéro
If Not (IsNumeric(testvalue)) Then
nnz = 0
Else
nnz = testvalue
End If
End Function
'***************** Code End ****************