bouv
Messages postés1411Date d'inscriptionmercredi 6 août 2003StatutMembreDernière intervention 3 mars 2019
-
23 mars 2006 à 12:01
Dalida
Messages postés6728Date d'inscriptionmardi 14 mai 2002StatutContributeurDernière intervention11 janvier 2016
-
23 mars 2006 à 19:16
J'ai un léger problème.
Je travaille actuellement sur une ancienne application faite en VB6 + DAO.
La base (ACCESS) est aujourd'hui assez grosse (76 Mo).
J'ai donc insérer une fonction de compactage de la base à l'aide :
Microsoft Jet And Replication Objects 2.6 Library
Code :
Dim JRO As JRO.JetEngine
Set JRO = New JRO.JetEngine
JRO.CompactDatabase srcConnectString, destConnectString
Le problème c'est qu'à partir du moment où le poste serveur effectue un compactage, les autres postes du réseau ne veulent plus se connecter à la base disant qu'il y a un utilisateur exclusif sur la base.
Seul le poste serveur veut bien se connecter en DAO.
J'ai fait un essai avec l'ADO sur les autres poste et là pas de problème, mais l'appli est bien trop grosse pour que je puisse tout passer en ADO.
'# Fermeture de la connexion, si ouverte...
If Not mDBCon Is Nothing Then
If mDBCon.State = adStateOpen Then
mDBCon.Close
bWasConnected = True
End If
Set mDBCon = Nothing
End If
oJRO.CompactDatabase sSource, sDest
Kill mDBPath
Name mDBPath & "~" As mDBPath
'# Si la connexion etait ouverte, la réouvre
If bWasConnected Then
DoEvents
ConnectTo mDBPath
End If
TOExceptErr:
End Sub
ce que je veux dire par "prenne bien le fait"
c'est que si ton appli detecte que la base est ouverte en exclusif (ton erreur, quoi) on patiente un peu, jusqu'a ce que les choses rentrent dans l'ordre...
Dalida
Messages postés6728Date d'inscriptionmardi 14 mai 2002StatutContributeurDernière intervention11 janvier 2016 23 mars 2006 à 19:16
salut,
en vb.net
j'ai eu un problème avec ADOX mais pour la création d'une base. une
fois créée il était impossible de l'ouvrir, c'est balot quand même !
ma
connexion était bien fermée et l'objet était bien détruit mais pas
moyen, elle existait encore en mémoire donc aucun autre accés possible.
j'ai cru trouvé une solution du côté du moteur Jet, en me disant que le
fantôme de ma connexion devait être là.
je n'ai rien trouvé mais j'ai finalement réussi en forçant le nettoyage du Garbage Collector.
c'est étrange car c'est le seul type de connexion qui m'ai posé problème et je pense donc que cela vient d'ADOX.
tu peux essayer de nettoyer la mémoire utilisée par ta connexion de compactage. mais en vb6 je ne suis vraiment pas compétent !
[ Dalida ]<hr> pensez à indiquer le langage utilisé et sa version !