2009-12-01 3 views
1

Voici un extrait de code VB6:Comment supprimer correctement toutes les connexions à une base de données d'accès

myProjectDaoDB.Close 
FileCopy myName, TempFile 

où myName est le chemin d'une base de données. Cette base de données est vraisemblablement fermée à la première ligne. Il semble que la simple fermeture de la base de données ne suffit pas pour supprimer correctement tous les accès à la base de données car lorsque j'exécute le programme, j'obtiens une erreur d'exécution de '70': Autorisation refusée. Je sais qu'il n'y a pas de problèmes réels avec les permissions de l'utilisateur. Cette erreur se produit seulement après l'enregistrement à la base de données, donc je suis sûr que quelque chose n'est pas fermé correctement. Lorsque la base de données est ouverte, un fichier de verrouillage est créé. Si j'exécute ce code sans apporter de modifications à la base de données, le fichier de verrouillage est supprimé après l'exécution de la première ligne. Lorsque j'apporte des modifications à la base de données, le fichier de verrouillage n'est pas supprimé. Il n'y a pas d'erreur quand il essaie de fermer la base de données, alors pourquoi est-il toujours là?

Mise à jour: J'ai suivi les étapes here pour savoir qui a une connexion à la base de données pendant l'erreur. Selon les résultats, Lorsque j'essaie de fermer la connexion sans apporter de modifications à la base de données, c'est seulement mon connecté. Lorsque je fais des changements, je suis connecté deux fois. Il semble alors que myProjectDaoDB.Close ne ferme pas toutes les connexions. Ce qui donne?

+1

Outre la fermeture de la base de données externe, avez-vous également défini sa variable de base de données sur Nothing? Si vous ne le faites pas, le pointeur non nettoyé peut maintenir le LDB ouvert. –

Répondre

1

Avez-vous fermé tous les enregistrements et définir leur objet à rien?

Questions connexes