"connection fermée ou non valide" [Résolu]

Signaler
Messages postés
158
Date d'inscription
vendredi 12 mars 2004
Statut
Membre
Dernière intervention
17 avril 2007
-
Messages postés
158
Date d'inscription
vendredi 12 mars 2004
Statut
Membre
Dernière intervention
17 avril 2007
-
bonjour,
voila mon probleme (en vb6) , pour remplir une combobox avec des données venant d'une base de données sql server, je fais ce code la :
Dim Rst_Sql As ADODB.Recordset
Set Cmd_PSSql = New ADODB.Command
Cmd_PSSql.ActiveConnection = Cls_Db_Me.Connexion----> l'erreur est ici
Cmd_PSSql.CommandType = adCmdStoredProc
Cmd_PSSql.CommandText = "PS_GET_ALL_ETAPES_ISO"
Set Rst_Sql = Cmd_PSSql.Execute
Set Cmd_PSSql = Nothing
If Not Rst_Sql.EOF Then
While Not Rst_Sql.EOF
Cbo_Etapes.AddItem Rst_Sql("ID_ETI"), Rst_Sql("LIBELLE_ETI")
Rst_Sql.MoveNext
Wend
End If
Rst_Sql.Close
Set Rst_Sql = Nothing
sachant que cls_db est déclaré dans option explicit en tant que module de classe pour la connection, et que je dois utiliser des procédures stockée (je suis en stage... ) et lorsque je lance mon appli, quand je clik sur ma combo, il me mlets cette erreur la : "impossible d'utiliser cette connexion pour effectuer cette opération, elle est fermée ou non valide pour ce contexte"
Et pourtant j'ai fais un copier collé de ce qui existait deja dans d'autres feuilles!
je ne comprends pas mon erreur, qqn peut -il m'aider???
merci d'avance....
sabrina
A voir également:

4 réponses

Messages postés
96
Date d'inscription
jeudi 10 juin 2004
Statut
Membre
Dernière intervention
22 mai 2007

Bonsoir Sabrina,

J'ai l'impression que tu te mélanges un peu les pinceaux ( Ne le prends pas mal...)
> Cls_Db_Me.Connexion = Cls_Db_Me.OpenDb
Lorsque tu affectes une valeur objet à une variable objet, tu dois utiliser Set ...
De plus, il faut que les objets soient de même type, sinon cela ne peut pas fonctionner. Ici, tu essaies d'affecter je ne sais trop quoi ( opendb n'est pas un objet mais une méthode ) à un objet connection... Donc problème

Je ne sais pas ce que représente Cls_Db_Me, mais si c'est un module de classe, je pense que c'est "du bricolage" que d'essayer d'externaliser un objet connection d'une classe.

Pour ma part, je reprendrais les choses à zéro et envisagerais deux possibilités :
1. Travailler avec un objet ADODB.Connection
Dans ce cas, tu peux travailler avec un objet connection générique, créé dans un module standard et initialisé, souvent, dans sub Main qui se lance au lancement de l'application ( le plus souvent, ...)
Pour cela, dans un module standard, dimensionne ton objet
Public MaConnexion as ADODB.Connection

Sub Main
Set MaConnexion = New ADODB.Connection
MaConnexion.Open "..." ' remplace les ... par la chaîne de connexion appropriée
...
End Sub

Lorsque tu veux remplir ton combobox, tu crées alors ton recordset comme dans le code de ton premier message, en mettant pour ta commande
.ActiveConnection = MaConnexion

2. Utilisation de DataEnvironnment
En utilisant un concepteur DataEnvironnement, tu peux créer une connexion, puis créer une commande pour cette connexion que tu lies à ta procédure stockée.
En utilisant des datacombo, tu auras la possiblité de les lier à la connexion et à la commande du dataenvironnment créé, et tu ne devras alors pas remplir ton combo par une boucle.

Cela te convient-il?

Pierre Fauconnier
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 195 internautes nous ont dit merci ce mois-ci

Messages postés
96
Date d'inscription
jeudi 10 juin 2004
Statut
Membre
Dernière intervention
22 mai 2007

Bonjour

En plus de déclarer ta connection, tu dois l'ouvrir avec une ligne du genre
Cls_Db_Me.Connexion.Open ChaîneDeConnexion

Cherche dans cls_db_me si tu trouves cette ligne ( chaineDeConnexion est une variable, tu dois donc cherche cls_db_me_connexion.open ) et recopie cette ligne avant la ligne
Cmd_PSSql.ActiveConnection = Cls_Db_Me.Connexion

A toi d'adapter pour que ta connexion soit ouverte avant d'y faire référence lors de l'utilisation d'une commande.

Ok?

Pierre Fauconnier
Messages postés
158
Date d'inscription
vendredi 12 mars 2004
Statut
Membre
Dernière intervention
17 avril 2007

merci mais ca n'a pas resout mon probleme! ca me met une autre erreur maintenant :
Cls_Db_Me.Connexion = Cls_Db_Me.OpenDb
"cet argument n'est pas facultatif"
j'ai mis ca car le connexion.open n'exite pas.... est il possible que l'erreur vienne du fait que la connexion soit mal fermée dans la feuille precedente?
merci.
sabrina
Messages postés
158
Date d'inscription
vendredi 12 mars 2004
Statut
Membre
Dernière intervention
17 avril 2007

Ok merci j'ai compris, ca marche nickel maintenant!
MERCI!
sabrina