Bonjour
je n'arrive pas utiliser une fonction VBA ecrite dans un module dans une requete (il me dit qu'elle n'est pas définie). Comment puis-je résoudre cela?
merci d'avance
Bonjour
je n'arrive pas utiliser une fonction VBA ecrite dans un module dans une requete (il me dit qu'elle n'est pas définie). Comment puis-je résoudre cela?
merci d'avance
Hello,
Est-elle dans un module accessible : donc pas dans un module de classe ?
Passe-t-elle à la compilation ?
Peux tu y accéder par le générateur d'expression ?
oui pour les trois mais dans l'ecriture sql ca ne marche pas...
donne nous ton code en désespoir de cause ... on verra si une faute apparaît ...
voici ma fonction mis dans un module appelé RecupFamille
et voici ma requete
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 Option Compare Database Public Function RecupFamille(Nom As Long) As String Dim res As DAO.Recordset Dim SQL As String 'Selectionne les participant du projet SQL = "SELECT Prénom FROM T_Enfant WHERE Nom=" & Nom Set res = CurrentDb.OpenRecordset(SQL) 'Concatene les différents enregistrement While Not res.EOF RecupFamille = RecupFamille & res.Fields(0).Value & " " res.MoveNext Wend 'Enleve le dernier espace RecupFamille = Left(RecupFamille, Len(RecupFamille) - 1) 'libere la mémoire Set res = Nothing End Function
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT DISTINCT T_Enfant.Nom, RecupFamille(Nom) AS Prénom FROM T_Enfant;
Bonjour,
Cette requête est-elle exécutée à partir d'une application Access ou bien utilises-tu la bibliothèque DAO à partir d'un autre environnement ?Envoyé par exter666
Dans le premier cas (application Access) ça devrait fonctionner.
Dans le deuxième cas (application non Access utilisant DAO), ça ne peut pas marcher (et c'est bien dommage).
Il y a des moyens de contouner le pb, par exemple en remplissant une table de travail composée d'un champ [Nom] et d'un deuxième champ contenant la concaténation des prénoms, et en modifiant la requête pour effectuer une jointure avec cette table de travail, sur le champ [Nom].
Bon courage.
=JBO=
Salut,
Ne donne pas le même nom au module et à la fonction, ça provoque des conflits.
merci Arkham46 c'etait un probleme de nom (en renommant module1 ca marche) mais now j'ai un autre probleme:
il me dit que le type du paramètre n'est pas le meme pourtant le champ nom entré comme paramètre dans la methode est bien un string (texte de 255caractères max)???
voici mon code un peu modifié
et ma requete est
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 Public Function RecupPrenom2(Nom As String) As String Dim res As DAO.Recordset Dim SQL As String 'Selectionne les projet du partcipant SQL = "SELECT Prénom FROM T_Enfant WHERE Nom=" & Chr(34) & Nom & Chr(34) Set res = CurrentDb.OpenRecordset(SQL) 'Concatene les différents enregistrement While Not res.EOF RecupProjet = RecupProjet & res.Fields(0).Value & ";" res.MoveNext Wend 'Enleve le dernier ; RecupProjet = Left(RecupProjet, Len(RecupProjet) - 1) 'libere la mémoire Set res = Nothing End Function
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT DISTINCT T_Enfant.Nom, RecupPrenom2(Nom) AS LesPrenoms FROM T_Enfant;
en faisant des recherches j'ai trouvé que le probleme ne venait pas de mon code mais bien de ma requete... tout fonctionne si je retire le distinct (mais alors j'ai plusieurs fois le nom ce que je ne veux pas). visiblement le distinct et ma methode ou fonction ne s'apprécie pas... quelqu'un a une idée?
Bonjour,
Un truc bizarre...
Si on regarde tes dernières lignes de code, tu utilises ta fonction RecupPrenom2 et dans les lignes de code tu mets les prénoms dans RecupProjet.
Résultat : ta fonction retourne une chaine vide dans ce cas.
Tu dois déjà remplacer RecupProjet par RecupPrenom2 dans tes lignes.
Salut,
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager