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

Signaler
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
-
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
-
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

Messages postés
6063
Date d'inscription
dimanche 13 avril 2003
Statut
Modérateur
Dernière intervention
15 juillet 2011
33
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
Messages postés
1540
Date d'inscription
lundi 26 mai 2003
Statut
Membre
Dernière intervention
1 août 2013
12
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