Création code dans un module et relation avec requête

chrisorry Messages postés 5 Date d'inscription mercredi 4 août 2010 Statut Membre Dernière intervention 5 août 2010 - 4 août 2010 à 11:11
c148270 Messages postés 303 Date d'inscription mercredi 12 janvier 2005 Statut Membre Dernière intervention 3 octobre 2013 - 9 août 2010 à 08:52
Bonjour

j'ai un problème avec une requête.
j'ai créer un code dans un module :
Public Function Mafonction(NphraseR As Integer) As Integer

Select Case [NphraseR]
[Case Is = 1, 2, 3, 4, 5, 6, 7, 8]
Mafonction = 2
[Case Is = 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41]
Mafonction = 3
[Case Is = 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68]
Mafonction = 4
[Case Is = 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89]
Mafonction = 5
[Case Is = 90]
Mafonction = 1
End Select

End Function

et après dans ma requête j'ai mis ce code :
danger2:mafonction([phrasesR]![NphraseR])
et quand j'execute ma requête il me met un message d'erreur "fonction "mafonction" non défini dans l''expression.
J'ai beau tourner les choses dans tous les sens je ne comprends pas ce qui ne fonctionne pas!
j'ai lu qu'il fallait aller dans "outil" et "reference" dans le module pour cocher les bibliothèque concernée mais j'avoue que je ne sais pas quoi cocher !!
merci beaucoup par avance pour l'aide que vous pourrez m'apporter

15 réponses

cs_christoni Messages postés 140 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 1 novembre 2010 7
4 août 2010 à 22:11
Bonsoir, est ce du VB.net?
Si oui je verrais la fonction comme cela :
    Public Function Mafonction(ByVal NphraseR As Integer) As Integer

        Select Case NphraseR
            Case Is = 1, 2, 3, 4, 5, 6, 7, 8
                Mafonction = 2
            Case Is = 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41
                Mafonction = 3
            Case Is = 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68
                Mafonction = 4
            Case Is = 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89
                Mafonction = 5
            Case Is = 90
                Mafonction = 1
        End Select
    End Function


et pour l'appeler :
Mafonction(11)

"11" pour l'exemple, ce doit être un integer, le résultat de la requête.
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
4 août 2010 à 23:59
Salut

Il faut compendre
et après dans ma requête j'ai mis ce code :
danger2:mafonction([phrasesR]![NphraseR])

c'est quoi ta requete ?
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
5 août 2010 à 00:00
Ou plus optimisé :

Public Function Mafonction(ByVal NphraseR As Integer) As Integer
        Select Case NphraseR
            Case 1 To 8
                Return 2
            Case 9 To 41
                Return 3
            Case 42 To 68
                Return 4
            Case 69 To 89
                Return 5
            Case 90
                Return 1
        End Select
    End Function


Question référence, non. Aucune référence n'est à ajouter pour ce code, le message d'erreur survient à cause des erreur de syntaxe de ton code, comme te l'a suggéré christoni.

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
0
c148270 Messages postés 303 Date d'inscription mercredi 12 janvier 2005 Statut Membre Dernière intervention 3 octobre 2013 1
5 août 2010 à 08:03
Bonjour
faire une recherche générale sur mafonction pour vérifier s'il n'y a pas une variable du même nom

Bonne journée
0

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

Posez votre question
chrisorry Messages postés 5 Date d'inscription mercredi 4 août 2010 Statut Membre Dernière intervention 5 août 2010
5 août 2010 à 09:20
Bonjour à tous, merci beaucoup pour vos réponses mais ::

christoni, j'ai essayé ta formule mais ça me met toujours ce message d'erreur "fonction "mafonction" non définie!
et je ne comprend pas quand tu me dis ma fonction (11) ? qu'est-ce-qu'il faut que je nomme comme ça? mon module, ma requête


shayw: en fait après avoir créér un module avec une fonction, je voulais l'insérer dans un champ calculé d'un requête? mais au final la question c'est est-ce-possible ? parce que je ne peux pas rentrer les codes ditrectement dans la requête parce qu'il y a trop de caractéres !! donc je suis obligé de créer un module!
mais en fait ce qui ne va pas c'est le lien entre le module et ce que je met dans mon champ calculé de ma requete!!

Mayzz : j'ai également essayé ta formule mais sans succès , j'ai toujours le message d'erreur dan sma reqûete

est-ce-que quelqu'un pourrait me dire ce que je dois mettre dans mon champ calculé de ma requete !

merci par avance
0
cs_christoni Messages postés 140 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 1 novembre 2010 7
5 août 2010 à 09:50
Bonjour,
n'est ce pas du VBA ?
(Que je ne connais pas bien).
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
5 août 2010 à 10:10
Bonjour je comprend de --

Tu as la fonction Mafonction
sans parler de requete si tu appelle Mafonction
dim result as integer
result = Mafonction(30)
aussi tu obtiens l'erreur "fonction "mafonction" non défini dans l''expression
0
cs_christoni Messages postés 140 Date d'inscription mardi 25 novembre 2003 Statut Membre Dernière intervention 1 novembre 2010 7
5 août 2010 à 11:12
Toujours mes doutes.
Le module n'est t'il pas un module sous Acces?
Et nous raisonnons en VB.Net
0
chrisorry Messages postés 5 Date d'inscription mercredi 4 août 2010 Statut Membre Dernière intervention 5 août 2010
5 août 2010 à 11:32
Christoni : oui j'ai créer un module sous access dans ma base de données

shayw : le message d'erreur "fonction "mafonction" non défini dans l''expression apparait quand je veux éxecuter ma requête. ce qui me fait dire que le lien entre la requête et le module créer n'est pas bon !
je dois mal m'y prendre !!

si je récapitule :
1- j'ai créer un module dans ma base de données access que je suis en train de developper
2- je veux que ma formule écrite dans le module apparraisse dans une reqûete donc pour cela il faut que je créer un lien entre le module et la requete mais j'y arrive pas !! est-ce-possible d'après vous ?

puisque en gros je veux que suivant les valeurs de mon paramètre tester (dans la formule écrite dans mon module) appraisse dans ma reqûéte les valeurs que j'ai défini dans mon module!!

j'espère que je suis claire!!
0
c148270 Messages postés 303 Date d'inscription mercredi 12 janvier 2005 Statut Membre Dernière intervention 3 octobre 2013 1
5 août 2010 à 13:20
Voici ce que j'ai fait.
J'ai crée une table phrasesR contenant le champ NphraseR en numérique.

J'ai crée le module que tu décrit avec la modification suivante :
suppression des crochets pour chaque case

J'ai crée la requête suivante : SELECT mafonction([phrasesR]![NphraseR]) AS danger2 FROM phrasesR;

Celà fonctionne
0
chrisorry Messages postés 5 Date d'inscription mercredi 4 août 2010 Statut Membre Dernière intervention 5 août 2010
5 août 2010 à 14:10
bonjour

tu as de la chance parce que moi non !!
0
c148270 Messages postés 303 Date d'inscription mercredi 12 janvier 2005 Statut Membre Dernière intervention 3 octobre 2013 1
5 août 2010 à 14:15
Pour info j'ai fait celà sous access 2003 sp3
0
chrisorry Messages postés 5 Date d'inscription mercredi 4 août 2010 Statut Membre Dernière intervention 5 août 2010
5 août 2010 à 14:23
AH
c'est peut être ça parce que moi j'ai 2007
0
c148270 Messages postés 303 Date d'inscription mercredi 12 janvier 2005 Statut Membre Dernière intervention 3 octobre 2013 1
6 août 2010 à 08:04
Bonjour

Je vais essayer sous 2007 ce WE car il est chez moi.
Au boulot je n'ai que 2000 et 2003.
En septembre on me rajoute 2010

Bonne journée
0
c148270 Messages postés 303 Date d'inscription mercredi 12 janvier 2005 Statut Membre Dernière intervention 3 octobre 2013 1
9 août 2010 à 08:52
Bonjour
Dans un premier temps j'ai ouvert la base crée en access 2003 sous 2007.
J'ai eu le message d'erreur.
J'ai regardé les références. Outre celles propres à 2007 il y avait aussi DAO 3.6 et ADO 2.1
J'ai remplacé ADO 2.1 par la plus récente ADO 2.8.
Aprés compilation : plus d'erreur et fonctionnement normal.

Dans un deuxième temps j'ai crée une base 2007 et importé table, requête et module.
Après compilation : fonctionnement normal.

Reste la troisième possibilté, tout créer sous 2007.Je vais essayer ce soir mais sans garanti, je part en congés bientôt.

Bonne journée
0
Rejoignez-nous