Toujours il m'affiche "# Erreur" !! De l'aide SVP

KIBEYA Messages postés 10 Date d'inscription vendredi 15 octobre 2004 Statut Membre Dernière intervention 6 janvier 2005 - 5 janv. 2005 à 14:39
madbob Messages postés 285 Date d'inscription dimanche 14 décembre 2003 Statut Membre Dernière intervention 13 mars 2012 - 12 janv. 2005 à 13:45
Une zone de contrôle placée sur un formulaire d'Access 2000 et dont la source de données est une fonction me retourne la valeur "#Erreur" à l'ouverture du dit formulaire avant même que le focus l'atteigne. Mais après toute opération le résultat affiché dans cette zone de contrôle est correct. Que faire pour ne plus avoir "#Erreur" dans cette zone?

Je ne peux que vous en remercier.

6 réponses

madbob Messages postés 285 Date d'inscription dimanche 14 décembre 2003 Statut Membre Dernière intervention 13 mars 2012
5 janv. 2005 à 21:57
Je sais pas comment t'aider comme ça... Je croyai que tu avais résolu ton problème.



Montre moi le corps de ta fonction et précise moi d'ou elle est appelée

a+

madbob
madbob Messages postés 285 Date d'inscription dimanche 14 décembre 2003 Statut Membre Dernière intervention 13 mars 2012
6 janv. 2005 à 09:20
En attendant

As tu essayé de positionner un parametre facultatif dans les arguments de ta fonction :


function mafunction(optional byval P_Ok as boolean)

dim Mavar as variant

Mavar = ""

if P_Ok = 1 then




'*** ton traitement avec valorisation de Mavar




endif



'* on retourne soit rien soit la valeur

mafunction = Mavar

endfunction





Bien sûr il faut changer les appels de mafunction en écrivant mafunction(1) là ou c'est util.

N'oublie pas qu'il est possible d'appeler les fonctions depuis les macro en plus de la gestion evennementielle



Si ça ne marche pas il faudra en dire plus j'ai bien peur
madbob
madbob Messages postés 285 Date d'inscription dimanche 14 décembre 2003 Statut Membre Dernière intervention 13 mars 2012
6 janv. 2005 à 11:25
je viens de reproduire ton erreur...

C'est la méthode d'alimentation qui veut ça et la fonction doit effectuer une division par 0

parceque les valeurs surlesquelles il s'appuie n'existent pas ...



Pour corriger il suffit qu'au chargement de ton formulaire tu initialises tes valeurs ...

ou que systematiquement tu sois positionné sur le premier enregistrement

ou que tu crées un enregistrement null de référence sur lequel tu te positionnes

ou tu changes la métode d'alimentation en utilisant les evennements


madbob
KIBEYA Messages postés 10 Date d'inscription vendredi 15 octobre 2004 Statut Membre Dernière intervention 6 janvier 2005
6 janv. 2005 à 12:13
madbob


Merci de vouloir bien concourir à mon problème. Merci des votre contribution.


Je vais essayer les astuces dont vous me faites et je vous ferez la suite.
Mais quelque part j'avais déjà essayé d'initialiser mes variables mais en vain le
contrôle n'acceptait pas de valeur initiale parcequ'il était déjà lié à une fonction
qui doit nécessairement retourner une valeur.

Supposons que dans un formulaire vous devez entrer une date de livraison et
que vous ayez prévu une autre zone de contrôle du format date qui doit calculer
la date de l'échéance par la fonction ci-après : =AjDate("a";(+7);[Datelivraison]
insérée dans la propriété "Donnée" / "Source de Contrôle" .

Je vous ferez la suite par après.

Encore une fois merci

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
madbob Messages postés 285 Date d'inscription dimanche 14 décembre 2003 Statut Membre Dernière intervention 13 mars 2012
6 janv. 2005 à 12:42
le fait de charger le champs par la source le verrouille... au moins dans le cas de la fonction

il faut que date de livraison soit initialisée...


madbob
madbob Messages postés 285 Date d'inscription dimanche 14 décembre 2003 Statut Membre Dernière intervention 13 mars 2012
12 janv. 2005 à 13:45
J'ai trouvé ta solution !!!



Tu mets 0 en default value à ton champ [Datelivraison]

via les propriétés des controles pour que la valeur soit prise au
moment du chargement du formulaire qui appellera la fonction de calcul
de date de livraison.


Ensuite tu modifies ta fonction qui testera la valeur corecetement [Datelivraison] (en parametre ici P_date)



dim Mavar as variant


Mavar = ""



'* initialisation du formulaire

if P_date = 0 then

msgbox "init"



'* calcul de la période

else

mavar = P_date + 7

Endif



'* retourne la valeur


AjDate = Mavar



Je ne pense pas que tu ais d'autre choix pour le gruger
au vu de la méthode que tu utilise pour mettre à jour ton champ date de
livraison...



Bon code




madbob
Rejoignez-nous