Fonction non définie dans l'expression

allroadspp Messages postés 38 Date d'inscription samedi 16 juin 2007 Statut Membre Dernière intervention 31 octobre 2008 - 31 janv. 2008 à 21:21
allroadspp Messages postés 38 Date d'inscription samedi 16 juin 2007 Statut Membre Dernière intervention 31 octobre 2008 - 7 mars 2008 à 11:54
Bonsoir,

je bute depuis pas mal de temps ça :

Lorsque je veux faire exécuter une fonction j'ai ce message :

fonction "xxxx" non définie dans l'expression....

J'ai beau coher et décocher les références, rien à faire....à priori pas d'erreur dans le code.....j'ai suivi les tutoriels...help me!!! (access 2007, WXP)

Function Date_convocation3(strDécision As String) As Date
Dim DtmConvocation As Date
'Décision(1) = "Apte 1 an"
'Décision(2) = "Apte 2 ans"
'Décision(3) = "Mis en attente de révision par le médecin-chef"
'Décision(4) = "Inapte opérationnel 1 mois"
'Décision(5) = "Inapte opérationnel 2 mois"
'Décision(6) = "Inapte opérationnel 3 mois"
'Décision(7) = "Inapte opérationnel 6 mois"
'Décision(8) = "Inapte opérationnel 12 mois"
'Décision(9) = "Inapte opérationnel définitif"
'Décision(10) = "Inapte secours à personnes temporaire"
'Décision(11) = "Inapte Secours à personnes définitif"
'Décision(12) = "Inapte incendie temporaire"
'Décision(13) = "Inapte incendie définitif"
'Décision(14) = "Inapte aux sports statutaires temporaire"
'Décision(15) = "Inapte aux sports statutaires définitif"
'Décision(16) = "Adaptation personnelle au sport"
'Décision(17) = "Apte avec restrictions (préciser)"
'Décision(18) = "A revoir"




Select Case strDécision
Case "Apte 1 an": DtmConvocation = (Date + 365)
Case "Apte 2 ans": DtmConvocation = (Date + 730)
Case "Mis en attente de révision par le médecin-chef": DtmConvocation = (Date + 30)
Case "Inapte opérationnel 1 mois": DtmConvocation = (Date + 30)
Case "Inapte opérationnel 2 mois": DtmConvocation = (Date + 60)
Case "Inapte opérationnel 3 mois": DtmConvocation = (Date + 90)
Case "Inapte opérationnel 6 mois": DtmConvocation = (Date + 180)
Case "Inapte opérationnel 12 mois": DtmConvocation = (Date + 365)
Case "Inapte opérationnel définitif": DtmConvocation = (Date + 365)
Case "Inapte secours à personnes temporaire": DtmConvocation = (Date + 90)
Case "Inapte Secours à personnes définitif": DtmConvocation = (Date + 365)
Case "Inapte incendie temporaire": DtmConvocation = (Date + 90)
Case "Inapte incendie définitif": DtmConvocation = (Date + 365)
Case "Inapte aux sports statutaires temporaire": DtmConvocation = (Date + 90)
Case "Inapte aux sports statutaires définitif": DtmConvocation = (Date + 365)
Case "Adaptation personnelle au sport": DtmConvocation = (Date + 365)
Case "Apte avec restrictions (préciser)": DtmConvocation = (Date + 90)
Case "A revoir": DtmConvocation = (Date + 30)
Case Else: DtmConvocation = "Vérifier la date de convocation !"
End Select
Date_convocation3 = DtmConvocation
End Function

64 réponses

allroadspp Messages postés 38 Date d'inscription samedi 16 juin 2007 Statut Membre Dernière intervention 31 octobre 2008
3 févr. 2008 à 00:41
Donc j'ai écrit :
Convocation : Date-convocation3([Visite d'aptitude]![Décision])

Toujours même binz !
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
3 févr. 2008 à 00:45
Personnellement je ferais ça :
Accroches-toi :
IIf(strDécision="Apte 1 an",(Date + 365),IIf(strDécision="Apte 2 an",(Date + 730),
IIf(strDécision="Mis en attente de révision par le médecin-chef" ,(Date + 30),
IIf(strDécision="Inapte opérationnel 1 mois": ,(Date + 60),...etc..))))))))))))))))
ça va ? t' as pas le vertige ?

Pour le regroupement je parlais du genre Somme, Premier etc...
0
allroadspp Messages postés 38 Date d'inscription samedi 16 juin 2007 Statut Membre Dernière intervention 31 octobre 2008
3 févr. 2008 à 00:46
C'est : Expression pour le regroupement.
0
allroadspp Messages postés 38 Date d'inscription samedi 16 juin 2007 Statut Membre Dernière intervention 31 octobre 2008
3 févr. 2008 à 00:49
Au début j'ai fait ce que tu proposes. Malheureusement, je ne peux entrer que 250 caractères et là gros pb, car je ne peux pas mettre les 18 items. Au début il y en avait 26 !

C'est insomniant !

Bonne nuit, et peut être à bientôt.
En tout cas merci à tous les deux.

Je m'accroche et ne perds pas espoir....
0

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

Posez votre question
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
3 févr. 2008 à 00:51
et donc c' est :
Convocation : Date_convocation3(Premier([TaTable]![Décision)])
avec en dessous Expression.

TaTable étant la table ou est tiré le champ décision puisque tes deux tabls sont liées.
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
3 févr. 2008 à 00:52
sinon comme tu dis..Bonne nuit, et peut être à bientôt.
On espère .
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
3 févr. 2008 à 00:53
[auteur/ALLROADSPP/1088959.aspx allroadspp]
,
Si c'était possible, je te suggérerais VB6, mais comme il n'existe à peu près plus sur le marché, j'irais timidement vers VB.Net ... sans trop savoir... ou encore Excel qui est un bon compromis à VB6... mais il s'agit là d'Automation... dont tu peux faire la recherche pour comprendre le sens... Access ne sert que d'outil dans ce cas et non pas de logiciel.

Pour le reste de ton problème, je te laisse entre les mains de LIBRE_MAX qui semble beaucoup plus en mesure de t'aider que moi...

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0
allroadspp Messages postés 38 Date d'inscription samedi 16 juin 2007 Statut Membre Dernière intervention 31 octobre 2008
3 févr. 2008 à 00:55
Que veut dire "Premier" ?
.....marche pas non plus !
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
3 févr. 2008 à 00:55
LIBRE_MAX est déjà dans les mains de morphée :-)
Sûrement demain.
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
3 févr. 2008 à 01:01
Premier veut dire First.
Le générateur va traduire.
ta requete étant un regroupent, il faut qu' il y' ait une fonction pour ça.
Mais puisque tu as choisis Expression il faut que cette fonction soit dans
la définition du champ généré.
Ne m' en veux pas si je m' exprime mal.
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
3 févr. 2008 à 01:06
Amuse-toi bien avec Morphée...

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
3 févr. 2008 à 08:42
Bonjour tout le monde,
Un conseil porté par la nuit .
Et si tu ajoutais une table dont la structure serait:


*DECISIONS
   #Decision (Texte) Clé primaire
      Convocation (Date)


Tu auras ainsi:
Decision                                       Convocation
"Apte 1 an"                                 Date + 365
"Apte 2 ans"                               Date + 730
"Mis en attente de révision .."  Date + 30
"Inapte opérationnel 1 mois"    Date + 30


Ta clé #Decision etant cle secondaire dans ta table Visite_d_aptitude,
tu lies les deux tables sur ce champ .
Ajoutes cette nouvelle table à ta requete, et tu fais glisser le champ
Decision de la table Visite et le champ Convocation. de la table DECISIONS.
La relation étant, tu n' auras aucun mal à avoir l' equivalent de decision
sans devoir le génèrer.
Pour la liste de choix des items , tu proposes  directement le champ Décision
à partir de la table DECISIONS.

                
<hr />
... Il y' en a même qui m' ont vu voler.
<hr />
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
3 févr. 2008 à 09:13
Réctification:
*DECISIONS
   #Decision   (Texte) Clé primaire
      I_Convocation   (Entier)


Tu auras ainsi:
Decision                                 I_Convocation
"Apte 1 an"                               365
"Apte 2 ans"                              730
"Mis en attente de révision .."       30
"Inapte opérationnel 1 mois"         30


Quand à ton champ Convocation , il sera bien génèrer mais comme ceci:



Convocation : [DECISIONS]![I_Convocation]+Date

                
<hr />
... Il y' en a même qui m' ont vu voler.
<hr />
0
allroadspp Messages postés 38 Date d'inscription samedi 16 juin 2007 Statut Membre Dernière intervention 31 octobre 2008
3 févr. 2008 à 12:48
Salut,

C'est certainement une solution....pour l'instant j'ai pas tout compris, mais je vois à peu près ce que tu me proposes :
Une nouvelle table consacrée aux décisions, contenant 2 champs :
1° les motifs de décision
2° les nombres correspondants au nombre de jours de délais (à ajouter à la date du jour dans la requête)

Mais j'ai pas compris comment relier ces deux champs pour qu'à une décision corrseponde un chiffre.

Je vais suivre tes conseils et tenter la manip.
Par contre, je suis sur le départ, je rentre dans ma lointaine contrée (un département français d'amérique du Sud...)
Je te donnerai des nouvelles dans le courant de la semaine, peut être mercredi.
En tout cas un grand MERCI !!
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
3 févr. 2008 à 14:52
Salut,
..Comment relier ces deux champs pour qu'à une décision corrseponde un chiffre ?

 *VISITES                  *DECISIONS
    #IdVisite       |---->  #Decision
      Decision ----|            I_Convocation

Bonne route...et a+...
<hr />
... Il y' en a même qui m' ont vu voler.
<hr />
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
4 févr. 2008 à 21:43
+
il faut que ton champ Convocation soit calculé à compté d' une date
et non sur la base de la date du jour.
Sinon la requete te ressortira à chaque fois une date à venir, à chaque fois que tu l' éxécutes.
Essaies plutôt d' avoir dans la table VISITES (si ce n' est pas déjà fait) une date_visite ou une date_decision à partir de laquelle tu calculeras ta
date convocation.
Convocation:[VISITE]![Date_visite]+[DECISION]![I_Convocation]

<hr />
... Il y' en a même qui m' ont vu voler.
<hr />
0
allroadspp Messages postés 38 Date d'inscription samedi 16 juin 2007 Statut Membre Dernière intervention 31 octobre 2008
5 mars 2008 à 02:02
Bonjour,

Ta méthode fonctionne très bien, merci.
Mais nouveau problème : dans ma requête, je voudrais voir apparaitre seulement la date progrmmée par la dernière visite pour chaque agent. Or toutes les dates de toutes les visites de chaque agent apparaissent, ce qui rend ma requête inutile, et ma contrarie au plus haut point......une idée ?
La fonction DernDom ne peut pas m'aider à priori.

A bientôt.
0
allroadspp Messages postés 38 Date d'inscription samedi 16 juin 2007 Statut Membre Dernière intervention 31 octobre 2008
5 mars 2008 à 02:02
Bonjour,

Ta méthode fonctionne très bien, merci.
Mais nouveau problème : dans ma requête, je voudrais voir apparaitre seulement la date progrmmée par la dernière visite pour chaque agent. Or toutes les dates de toutes les visites de chaque agent apparaissent, ce qui rend ma requête inutile, et ma contrarie au plus haut point......une idée ?
La fonction DernDom ne peut pas m'aider à priori.

A bientôt.
0
allroadspp Messages postés 38 Date d'inscription samedi 16 juin 2007 Statut Membre Dernière intervention 31 octobre 2008
5 mars 2008 à 02:02
Bonjour,

Ta méthode fonctionne très bien, merci.
Mais nouveau problème : dans ma requête, je voudrais voir apparaitre seulement la date progrmmée par la dernière visite pour chaque agent. Or toutes les dates de toutes les visites de chaque agent apparaissent, ce qui rend ma requête inutile, et ma contrarie au plus haut point......une idée ?
La fonction DernDom ne peut pas m'aider à priori.

A bientôt.
0
LIBRE_MAX Messages postés 1402 Date d'inscription mardi 1 mai 2007 Statut Membre Dernière intervention 7 octobre 2012 6
5 mars 2008 à 15:37
Salut,
le voyage a été long à ce que je vois


Quoi qu' il en soit, ravi de te retrouver.
Pour ta question,  à priori il faudra passer par une requete regroupement sur ta table VISITES,Genre GROUP BY AGENT, LAST(IdVisite) pour n' avoir qu' une ligne par agent.
Et c' est cette nouvelle requete que tu dois lier à ta table DECISION.
Je dis à priori parce que je crains fort de ne plus savoir ou on était.
Rappelles-moi déjà ce que tu as fait .

A ce soir...peut être.







<hr />

... Y'en a même qui disent qu'ils l'ont vu voler.



<hr />





/PRE>
0
Rejoignez-nous