[VB6 + Access] Problème avec des requêtes dans un module

Résolu
NeT_SlipKnoT Messages postés 62 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 10 décembre 2005 - 29 juin 2005 à 10:32
cs_wape Messages postés 262 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 19 décembre 2010 - 30 juin 2005 à 18:39
Bonjour à tous!



Tout d'abord avant d'exposer plus en détail mon problème, j'aimerais
tout simplement savoir s'il était possible d'effectuer des requêtes
dans un module.

Je demande cela car dans mon programme j'ai plusieurs forms dans
lesquelles j'effectue plusieurs fois les même requêtes d'où l'intérêt
de mettre celle-ci dans un module. Mais le problème c'est que j'ai à
chaque fois un message d'erreur dans le module au niveau de mon code de
requête et je ne sais pas pourquoi. C'est d'autant plus bizarre que si
je fais un copier/coller de ce que j'ai dans mon module et que je le
copie dans mon form ça marche nickel !!!

D'où ma question: peut-on faire des requêtes dans un module dans VB6?



Merci d'avance pour votre aide.

10 réponses

cs_wape Messages postés 262 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 19 décembre 2010 12
29 juin 2005 à 19:31
Bonjour,

Essaye avec :

MaForm.lst_serviceA.AddItem req_ent!LibService

où MaForm correspond au nom de la form qui contient la listbox lst_serviceA

wape
3
cs_frop01 Messages postés 1352 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 19 novembre 2008 2
29 juin 2005 à 10:52
Salut,

Oui ! les modules, on s'en sert pour déclarer des variables des procédures et fonctions

Donc on peut bien faire une fonction d'update, une autre pour les ajout... en passant des paramètres commes les noms des tables, champs ...

Mets ton code ici pour ananlyser l'erreur !!

PS: N'oubliez pas de spécifier VB6 ou VB.NET
0
NeT_SlipKnoT Messages postés 62 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 10 décembre 2005
29 juin 2005 à 13:59
Voilà un exemple de code qui génère une erreur dans mon module:



Public Sub ListService(req_ent)



Call Fonctions.Connexion(cnx)



Set req_ent = New Recordset

req_ent.Open "select distinct LibService from
Service order by LibService", cnx, adOpenDynamic, adLockOptimistic

req_ent.MoveFirst

While req_ent.EOF = False

lst_serviceA.AddItem req_ent!LibService

req_ent.MoveNext

Wend



End Sub



Et donc lorsque le programme passe par le code il génère l'erreur "Un objet est requis" à la ligne écrite en bleu.

Dans mon form j'appelle mon module ainsi:



Call ListService(req_ent)



Voilà, si tu pouvais m'aider ça serait vraiment sympa de ta part...
0
cs_frop01 Messages postés 1352 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 19 novembre 2008 2
29 juin 2005 à 15:10
Si Tu utilises ADODB alors

Public Sub ListService(req_ent as ADODB.RecordSet)

Call Fonctions.Connexion(cnx)

Set req_ent = New ADODB.Recordset


-----------
Quel est le code dans Fonctions.Connexion(cnx) et puis quelles sont les déclarations de cnx (private ou public??)
0

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

Posez votre question
NeT_SlipKnoT Messages postés 62 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 10 décembre 2005
29 juin 2005 à 17:08
Alors j'ai changé la 1ère ligne et j'ai marqué comme t'as dit: Public Sub ListService(req_ent as ADODB.RecordSet) mais ça ne change rien au problème...



Voilà mon code pour la fonction Connexion (qui se trouve dans le même module intitulé "Fonctions" et qui fonctionne très bien):



Public Sub Connexion(cnx)



Dim RS As New ADODB.Recordset



Set cnx = New ADODB.Connection 'connection à la base

cnx.ConnectionString =
"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path &
"\Gestionnaire_de_licences.mdb"



cnx.Open

Set RS = New Recordset



End Sub



cnx est déclaré dans le Général de mon form de cette façon:



Dim cnx As New ADODB.Connection



J'espère que t'arriveras à m'aider...
0
NeT_SlipKnoT Messages postés 62 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 10 décembre 2005
30 juin 2005 à 09:29
Effectivement wape c'était ça... Il faut préciser le nom de la form devant. Merci pour ta réponse.



Du coup ça m'embête devant le principe de mon module... En effet, mon
prog effectue ce qu'il y a dans le module dans 3 forms différentes. Je
voulais donc faire un module pour que je n'ai pas à devoir taper le
même code dans les 3 forms en question et faire appel à la place à un
module. Mais étant donné que dans le module il faut préciser le nom du
form avant le nom de la Listbox, on ne peux pas faire un module pour
les 3 forms...



Quelqu'un aurait une alternative à mon problème? C'est-à-dire utiliser
le code d'un module pour trois froms différentes ou une autre astuce
pour ne pas à avoir à taper le même code dans 3 forms.



Merci.
0
tof008 Messages postés 695 Date d'inscription jeudi 5 mai 2005 Statut Membre Dernière intervention 5 janvier 2010 33
30 juin 2005 à 11:43
Je ne vois vraiment pas comment tu peux faire ca, mais je dois avouer que je suis bien curieux de savoir comment tu pourrais faire....


(Si la réponse vous convient, appuyez sur réponse acceptée...)

Il y a plusieurs facon d'être con ,mais un con choisit toujours la pire
0
NeT_SlipKnoT Messages postés 62 Date d'inscription samedi 18 novembre 2000 Statut Membre Dernière intervention 10 décembre 2005
30 juin 2005 à 17:22
Pour l'instant personne ne semble avoir de solution... :-(
0
cs_wape Messages postés 262 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 19 décembre 2010 12
30 juin 2005 à 18:26
Boinjour,

Tu peux appeler le même module depuis les 3 forms, en lui passant la form en question comme paramètre. Par exemple :

Dans Form1

Private Sub Command1_Click()


Call MonModule(Me)


End Sub

Dans Form2

Private Sub Command1_Click()


Call MonModule(Me)


End Sub

Dans Form3


Private Sub Command1_Click()


Call MonModule(Me)


End Sub

Dans un module

Sub MonModule(oFrm As Form)


oFrm.lst_serviceA.AddItem req_ent!LibService


End Sub

N.B. Cet exemple part du principe que la listbox lst_serviceA existe dans les 3 forms...

wape
0
cs_wape Messages postés 262 Date d'inscription samedi 21 décembre 2002 Statut Membre Dernière intervention 19 décembre 2010 12
30 juin 2005 à 18:39
Re,

Et pour faire du traitement différencié dans le module :

Sub MonModule(oFrm As Form)


Select Case oFrm.Name
Case "Form1"
'Traitement pour Form1
MsgBox "Je suis Form1"
Case "Form2"
'Traitement pour Form2
MsgBox "Je suis Form2"
Case "Form3"
'Traitement pour Form3
MsgBox "Je suis Form3"
End Select

End Sub

wape
0
Rejoignez-nous