Pb fermeture connexion Access avec ADODC

Résolu
Signaler
Messages postés
31
Date d'inscription
mardi 11 janvier 2005
Statut
Membre
Dernière intervention
29 juillet 2010
-
Messages postés
31
Date d'inscription
mardi 11 janvier 2005
Statut
Membre
Dernière intervention
29 juillet 2010
-
Bonjour a tous, j'ai un petit probleme avec des connexions ADODC
En fait, je fais une appli qui gère des contacts d'une entreprise, a partir d'une base access contenant les données (mise sur le réseau) et d'un petit programme en VB qui gère les données.
Je me connecte à la base à l'aide de connection ADO, ADODC exactement.
Mais le problème, c'est que mon prog est installé sur plusieurs machines, dont une qui n'est jamais arrêtée, et au bout d'un moment, la base de données est saturée de connexion, car les liens adodc ne se ferme jamais.
Lorsque je voudrais fermer mes connexions, je fais du :
Adodc1.RecordSource = ""
Adodc1.Recordset.Close
Adodc1.ConnectionString = ""
Mais ca ne change rien.
Si vous avez des idées, sur comment fermer ces connexions, merci de m'aider.
Merci d'avance

11 réponses

Messages postés
31
Date d'inscription
mardi 11 janvier 2005
Statut
Membre
Dernière intervention
29 juillet 2010

Bon, ben c bon...
Ca marche !!
Merci beaucoup...
Et maintenant, il me ferme bien ma connexion. J'ai plus qu'à généraliser ça sur tout mon projet, car je dois bien avoir mis une vingtaine de ADODC caché partout...
Merci à mfritsch alias [mailto:M@X M@X] et à MAX68
Bye a tous
3
Merci

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

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

Messages postés
46
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
3 mai 2005

Bonjour,


Tu dois surement avec une variable "connection". Et bien tu la fermes (la variable bien sur ;) en faisant connection.close, ou sinon ptete Adodc1.close


Voila


[mailto:M@x M@x]
Messages postés
31
Date d'inscription
mardi 11 janvier 2005
Statut
Membre
Dernière intervention
29 juillet 2010

Merci de ta réponse, mais il n'y a pas de variable connection sur ces controles, et adodc1.close plante.

Je ne sais vraiment plus quoi faire, et je n'ai pas envie de changer tous mes controles, car mon prog commence à devenir gros, il y en a beaucoup, et je n'ai plus tellement de temps...

Merci de continuer à donner des idées.
Messages postés
46
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
3 mai 2005

Tu peux alors faire de l'ado avec oledb, et ainsi ne pas utiliser un controle datasource.
Messages postés
31
Date d'inscription
mardi 11 janvier 2005
Statut
Membre
Dernière intervention
29 juillet 2010

Heu... La, je suis pas contre, mais je ne sais pas comment ca marche. Je suis sur la marche débutant.
Donc, si tu peux éclairer un peu ce que je dois déclarer pour utiliser ca...
Merci d'avance, et surtout merci de te donner la peine de m'aider.
Messages postés
30
Date d'inscription
samedi 13 mars 2004
Statut
Membre
Dernière intervention
20 juin 2008

Donc vala, je te mets le code en VB 6. Au cas où tu es sous .net, pas de pb, je te le traduis:

A rajouter dans les références ou composants, je sais plus : Microsoft ADO 2.6

Dans un module:

public co as connection
public rs as recordset

Dans ta feuille:

'Initialisation de la connexion
set co = new connection
co.provider = "Microsoft.jet.OLEDB.4.0" 'pour access 2000, sinon c'est 4.1 pour 2003

co.connectionstring = "c:\mabase.mdb"
co.open

'Initialisation d'un recordset
set rs = new recordset
rs.open "table", co, adOpenDynamic 'tu peux remplacer table par une requete SQL ou existante dans la table

'Pour atteindre une valeur
var = rs.fields("table").value

'Pour rentrer une nouvelle valeur
rs.fields("table").value = var

'Fermer co et rs
rs.close
co.close

Voila, si tu veux + de recordset un recordset par table ou par requete, il faut le déclaré dans le module, pour qu'il soit accessible dans tout le projet.

Si tu as b'soin encore d'aide, je suis la. Ca me plait d'aider en VB now que je m'y connais un peu, avant c'était d'autres qui m'aidaient, c'est un peu la destinée de chacun à quiconque qui est passé par vbfrance ... lol

M@x
Messages postés
31
Date d'inscription
mardi 11 janvier 2005
Statut
Membre
Dernière intervention
29 juillet 2010

Ok, ben merci beaucoup.
Je teste ça, et je te tiens au courant.
Messages postés
31
Date d'inscription
mardi 11 janvier 2005
Statut
Membre
Dernière intervention
29 juillet 2010

Heu, question comme ça, pour savoir...Faudrait pas faire du "set rs nothing" et "set co nothing" avant de faire les .close ?
Messages postés
31
Date d'inscription
mardi 11 janvier 2005
Statut
Membre
Dernière intervention
29 juillet 2010

Voila des news du front :
Lorsque j'execute, il me dit : utilisation incorrecte du mot clé New, sur la ligne set co = new connection
et si je met
set co = New ADODB.Connection
Il plante sur co.provider
Que faire ?
Le pb vient il d'une librairie ?
La librairie ADO 2.6, c'est bien le ActiveX Data Object 2.6 ?
Ou c'est une référence qu'il me faut aller chercher dans le fin fond du system32 de mon poste ?
Messages postés
46
Date d'inscription
lundi 17 novembre 2003
Statut
Membre
Dernière intervention
3 mai 2005

Normalement, c'est:
co.Provider = "Microsoft.jet.OLEDB.4.0"

Tu as quoi comme base de données?

M@x
Messages postés
31
Date d'inscription
mardi 11 janvier 2005
Statut
Membre
Dernière intervention
29 juillet 2010

Petit message posté après la fermeture du topic, au cas ou quelqu'un ai le même problème.
Je n'ai pas tout modifié comme on me l'a proposé ci dessus, mais j'ai trouvé ce qui faisait que mes connexions restaient ouvertes...
En fait, j'utilisais des connexions adodc pour ouvrir la base dedonnées, et des textbox pour gérer les données.
Mes text box étaient configurées en mode graphique, dans les propriétés, datasource, j'avais mis adodc1.
Et c'est ça le problème.
Maintenant, je fais, dans les form_load :
Set TexteBox.DataSource = adodc1
et dans les form_unload :
Set TextBox = Nothing
Et toutes mes connexions se ferment sans problèmes.
Voila, si ça peut aider quelqu'un d'autre...