PB : Exécution requête Access en C# (fonctions dans module)

cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 - 19 juin 2006 à 17:26
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 - 20 juin 2006 à 09:31
Bonjour tout le monde,


Pour bien expliqué mon problème je vais commencer par un petit topo :

J'ai une base Access avec :

 - une tablePERSONNE (id, nom, prenom)

 - une tableRENDEZVOUS (id, idPersonne, dateDebut, dateFin)

 - un module VB contenant une fonction retournant le nombre de RENDEZVOUS pour un idPersonne donné : getCountRendezVous(idPers as Integer)

 - une requête Access qui prend toutes les infos de PERSONNE, et le total retourné par getCountRendezVous. La requêtePERSONNE_RENDEZVOUS a alors cette allure :
SELECT id, nom, prenom, getCountRendezVous(id) FROM PERSONNE
Et elle s'exécute correctement et retourn des valeurs cohérents.


Cependant lorsque je fais un "SELECT * FROM PERSONNE_RENDEZVOUS" depuis mon code C# j'obtiens l'erreur suivante :
Fonction 'getCountRendezVous' non définie dans l'expression.

Voilà, si quelqu'un a un idée je suis preneur

Merci d'avance


PS : Pour une fois j'ai pas cherché le thème pendant 5 minutes

2 réponses

nhervagault Messages postés 6063 Date d'inscription dimanche 13 avril 2003 Statut Membre Dernière intervention 15 juillet 2011 37
19 juin 2006 à 21:50
Salut,

Comment tu executes ta requete.

Les requetes access sont a executer comme des procedures stockée.

Transforme ta requete en procedure stockée
ie c'est a dire avec un parametre  en entree et
Le getcount sera peut être reconnue
et essai de le faire sans ton module

du genre
SELECT id,nom,prenom, count(id) as nb FROM PERSONNE
group by id,nom,prenom

Et tu declare un ado parameter de type int
dont  tu renseigne la valeur par C#

Le commandtype est storedprocedure

un petit exemple pour te guider

Dim cmd As OledbCommand()
Dim conn As OledbConnection
Dim rdr As OledbDataReader
conn = New OledbConnection(your connection string here)
cmd = New OledbCommand()
cmd.CommandType = CommandType.StoredProcedure
cmd.Connection = conn
cmd.CommandText = "myAccessQueryName"
cmd.Parameters.Add("@Table", SqlDbType.VarChar, 200)
cmd.Parameters("@Table").Direction = ParameterDirection.Input
cmd.Parameters("@Table").Value = "Orders"

cmd.ExecuteReader()

Voila
0
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
20 juin 2006 à 09:31
Merci bien l'ami,


Bon l'a tu me proposes une nouvelle requêtre qui n'utilise pas de fonction définie dans un module VB attaché à ma BdD Access.

Quand je dis "exécuter une requête Access" j'entend par là : faire un
SELECT * de la requête Access. Ce qui fonctionne très bien pour des
requêtes Access qui n'utilisent pas de fonction VB.


Merci quand même ;)

De plus j'ai trouvé une autre bidouille pour faire ce que je recherchais, donc une réponse n'est plus prioritaire :D
0
Rejoignez-nous