Problème de déchargement avec ADO, VB6

Ammoniak Messages postés 37 Date d'inscription vendredi 1 février 2002 Statut Membre Dernière intervention 26 juillet 2007 - 20 juil. 2007 à 12:35
Ammoniak Messages postés 37 Date d'inscription vendredi 1 février 2002 Statut Membre Dernière intervention 26 juillet 2007 - 26 juil. 2007 à 13:11
Bonjour à tous, j'ai un problème que je n'arrive vraiment pas à résoudre concernant la fermeture d'une application ADO. Je vous donne le source complet.

Private con As ADODB.Connection
Sub Main()
Set con = New ADODB.Connection
con.CursorLocation = adUseClient
con.Open "Database=facdis@serveur;Driver=Tun32 Driver;PWD=informix;Server=192.4.215.1;ServerName=192.4.215.1;ServiceName=TUNODBC200.pro7;UID=informix;"
con.Close
con.ConnectionString = ""
Set con = Nothing
End Sub

L'erreur qui m'est retournée est la suivante :
L'instruction à "0x013f1cec" emploie l'adresse mémoire "0x01442131". La mémoire ne peut pas être "read".

Le problème est que ça ne plante qu'avec l'exécutable, pas en design et que l'erreur se produit après le Set con = Nothing donc je ne vois pas comment débugguer.

Si quelqu'un a une idée, merci de m'en faire part.

PS : je vous ai mis un code très réduit par rapport à l'appli que je développe, mais vu que même ce petit bout plante, ça ne sert à rien d'en mettre plus.

17 réponses

cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
20 juil. 2007 à 13:38
cette ligne est inutile : con.ConnectionString = ""
es-tu sûr que quelque chose d'autre n'utilise pas l'objet pendant ce temps ??
_______________________________________________________________________
VB.NETis good ...VB6is better <f></f>
0
Ammoniak Messages postés 37 Date d'inscription vendredi 1 février 2002 Statut Membre Dernière intervention 26 juillet 2007
20 juil. 2007 à 14:34
J'ai mis la ligne con.ConnectionString = "" parce que j'avais vu je ne sais plus trop où qu'éventuellement ça pouvait poser des problèmes et que ça optimisait le déchargement (mouais...).
Je ne vois pas où l'objet pourrait être occupé car le code que j'ai fournit est le code complet de l'appli. qui plante.
Ne faut-il pas dire à ADO de se décharger d'une autre façon ? (déréférencer la DLL ou un truc du genre)
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
20 juil. 2007 à 21:05
peut-être le driver ...
je fais exactement la même chose en M$-Access

_______________________________________________________________________
VB.NETis good ...VB6is better <f></f>
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
21 juil. 2007 à 11:18
salut,

probable en effet que con soit utilisé après le Main
si tu le détruis c'est qu'il n'est pas utilisé ailleurs (???)
alors pourquoi le déclarer en Général?

essaye aussi un con.cancel avant le con.close
++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
0

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

Posez votre question
Ammoniak Messages postés 37 Date d'inscription vendredi 1 février 2002 Statut Membre Dernière intervention 26 juillet 2007
23 juil. 2007 à 09:14
Merci pour vos réponses.

PCPT, j'ai essayé de mettre le Cancel et de déclarer con dans le Main() mais ça ne passe pas non plus. Je l'avais mis en Général car dans ma varitable application, con est déclaré en Public.

ghuysmans99, j'ai déjà pensé à ça, mais à ce moment, comment en être sûr, et comment régler le problème ? Comme tu vois j'utilise une vieille base Informix (et suis obligé de l'utiliser) et ne dispose que d'un type de driver : TUN32. Je ne sais pas où en trouver d'autres et si ça peut corriger le problème. Peux-tu détailler un peu tes explications ? Merci d'avance.
0
Ammoniak Messages postés 37 Date d'inscription vendredi 1 février 2002 Statut Membre Dernière intervention 26 juillet 2007
23 juil. 2007 à 11:06
Une autre chose à noter quand même : j'ai testé la même appli. mais développée en C++, en mode console et là, je n'ai pas d'erreur lorsque je quitte l'appli. L'embêtant c'est que j'aimerais vraiment utiliser VB plutôt que VC++.
0
Ammoniak Messages postés 37 Date d'inscription vendredi 1 février 2002 Statut Membre Dernière intervention 26 juillet 2007
24 juil. 2007 à 07:24
J'ai fait un petit programme pour détruire la fenêtre d'erreur à chaque fois qu'elle s'affiche. C'est bourrin, mais ça marche. Ce n'est pas très propre, donc je suis toujours preneur de la solution si quelqu'un la propose.
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
24 juil. 2007 à 11:14
utilises alors AVANT l'erreur : On Error Resume Next
et APRÈS : On Error GoTo 0
_______________________________________________________________________
VB.NETis good ...VB6is better <f></f>
0
Ammoniak Messages postés 37 Date d'inscription vendredi 1 février 2002 Statut Membre Dernière intervention 26 juillet 2007
24 juil. 2007 à 11:33
J'avais déjà essayé, mais ça ne marche pas non plus. En fait, l'erreur se produit après la dernière instruction du programme.
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
24 juil. 2007 à 11:51
on en revient à l'utilisation extérieure

le Main n'est sensé être utilisé qu'au démarrage de l'appli, çà doit venir d'ailleurs

++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
24 juil. 2007 à 15:04
je crois savoir qu'est-ce que c'est : c'est asynchrone ... donc, juste après :
con.Open "Database=facdis@serveur;Driver=Tun32 Driver;PWD=informix;Server=192.4.215.1;ServerName=192.4.215.1;ServiceName=TUNODBC200.pro7;UID=informix;"
, le con.Closeest executé.
Donc tu ne peux fermer con dansMain

_______________________________________________________________________
VB.NETis good ...VB6is better <f></f>
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
24 juil. 2007 à 22:57
le open étant synchrone, j'ai un doute...
surtout avec un cancel avant

sauf restriction particulière de TUN32 (??)
++

<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
0
Ammoniak Messages postés 37 Date d'inscription vendredi 1 février 2002 Statut Membre Dernière intervention 26 juillet 2007
25 juil. 2007 à 10:13
Open est synchrone, de toute façon je l'utilise comme ça dans mon appli., je n'ai aucun bout de code ADO asynchrone. Le fonctionnement est bien synchrone lors de l'exécution de l'appli. donc pas de problème de ce côté là.
Quelles pourraient être les restrictions de TUN32 qui me poseraient problème à votre avis ?
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
25 juil. 2007 à 10:36
à mon avis pas de restriction

on sais que DAO oblige un movelast movefirst avant un accès à plusieurs enregistrements pour replacer le pointeur, çà aurait peut-être été dans cet ordre d'idée...

question... tu as essayé en mettant ta base en local?
avec localhost ou 127.0.0.1 ?
au moins pour voir si çà ne serait pas l'accès distant qui poserait problème....

<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
0
Ammoniak Messages postés 37 Date d'inscription vendredi 1 février 2002 Statut Membre Dernière intervention 26 juillet 2007
26 juil. 2007 à 09:42
Le problème est que je ne peux pas installer de base Informix en local. Je ne peux pas non plus développer sur le serveur :(
J'ai essayé une connexion avec le driver ODBC MySQL sur une base MySQL locale et là il n'y a pas de problème évidemment. Je ne vois pas comment tester ce que tu me demandes ...
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
26 juil. 2007 à 11:39
fais et héberges un zip contenant la base, les pilotes/installeur TUN32, la source si possible etc...
un truc bien ficelé avec la récap des test que tu as fais

je regarderai çà vendredi (machines à dispo)
++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
0
Ammoniak Messages postés 37 Date d'inscription vendredi 1 février 2002 Statut Membre Dernière intervention 26 juillet 2007
26 juil. 2007 à 13:11
Désolé, mais je ne peux ni te donner les pilotes de TUN32, ni la base, tout est propriétaire et/ou propriété de l'entreprise où je bosse. Merci quand même pour cette proposition très sympa.
0
Rejoignez-nous