Probléme de table en mode exclusif
Fermé
novice06100
Messages postés
42
Date d'inscription
dimanche 14 décembre 2008
Statut
Membre
Dernière intervention
30 août 2016
-
27 août 2016 à 09:29
Utilisateur anonyme - 30 août 2016 à 21:19
Utilisateur anonyme - 30 août 2016 à 21:19
A voir également:
- Ebp la base de données est verrouillée et ouverte en mode exclusif
- Mode sécurisé samsung - Guide
- Mode d'emploi - Guide
- God mode - Guide
- Démarrer en mode sans echec - Guide
- Formules excel de base - Guide
5 réponses
Utilisateur anonyme
27 août 2016 à 20:26
27 août 2016 à 20:26
Bonjour,
manipules tu des objets dans ta base via vba ?
Si oui, tu penses bien à les libérer après chaque traitement par set tonobjet=nothing ?
A+
manipules tu des objets dans ta base via vba ?
Si oui, tu penses bien à les libérer après chaque traitement par set tonobjet=nothing ?
A+
novice06100
Messages postés
42
Date d'inscription
dimanche 14 décembre 2008
Statut
Membre
Dernière intervention
30 août 2016
Modifié par novice06100 le 27/08/2016 à 20:55
Modifié par novice06100 le 27/08/2016 à 20:55
et j'utilise des commandes de ce type pour afficher certain champs ou ouvrir certain formulaire en fonction d'une requête:
If DCount("*", "intervenant Requête") <> 0 And DCount("*", "versionbase") <> 0 Then
DoCmd.OpenForm "FormulaireMO", acNormal
ElseIf DCount("*", "intervenant Requête Tech") <> 0 And DCount("*", "versionbase") <> 0 Then
DoCmd.OpenForm "page principale", acNormal
DoCmd.OpenForm "alerte commande et devis en cours", acNormal
Else
DoCmd.OpenForm "erreur sur ouverture", acNormal
End If
If DCount("*", "datevalidite") > 0 And DCount("*", "b***") > 0 Then
DoCmd.OpenForm "datevaliditecompte", acNormal
End If
If DCount("*", "intervenant Requête") <> 0 And DCount("*", "versionbase") <> 0 Then
DoCmd.OpenForm "FormulaireMO", acNormal
ElseIf DCount("*", "intervenant Requête Tech") <> 0 And DCount("*", "versionbase") <> 0 Then
DoCmd.OpenForm "page principale", acNormal
DoCmd.OpenForm "alerte commande et devis en cours", acNormal
Else
DoCmd.OpenForm "erreur sur ouverture", acNormal
End If
If DCount("*", "datevalidite") > 0 And DCount("*", "b***") > 0 Then
DoCmd.OpenForm "datevaliditecompte", acNormal
End If
novice06100
Messages postés
42
Date d'inscription
dimanche 14 décembre 2008
Statut
Membre
Dernière intervention
30 août 2016
Modifié par novice06100 le 27/08/2016 à 20:56
Modifié par novice06100 le 27/08/2016 à 20:56
je ne sais même pas ce que c'est ce type de code
novice06100
Messages postés
42
Date d'inscription
dimanche 14 décembre 2008
Statut
Membre
Dernière intervention
30 août 2016
27 août 2016 à 20:59
27 août 2016 à 20:59
à savoir que je suis vraiment autodidacte sur access. J'utilise en grande partie l'interface de programmation.
novice06100
Messages postés
42
Date d'inscription
dimanche 14 décembre 2008
Statut
Membre
Dernière intervention
30 août 2016
Modifié par novice06100 le 27/08/2016 à 21:08
Modifié par novice06100 le 27/08/2016 à 21:08
Je pensais que le problème venait du rafraichissement du fichier ldb, qui ne se rafraichirait pas bien si on ferme access avec des formulaires ouverts. Mais je ne sais pas comment le vérifier. Quelque fois le ldb reste présent sur le serveur alors que tous les utilisateurs se sont déconnecté.
Utilisateur anonyme
27 août 2016 à 21:25
27 août 2016 à 21:25
Re,
tu ne sais pas ce qu'est ce code ? Ce n'est pas toi qui l'a fait ?
Si le .ldb ne s'efface pas, c'est qu'un utilisateur a mal fermé la base. Tu peux ouvrir ce ldb avec le bloc note, cela te permettra de savoir le poste et l'utilisateur.
Aussi, ça me fait mal aux yeux (très mal), je vois des noms de requêtes et de formulaires avec des " " (espaces). C'est franchement source de bugs.
Par contre, tu as rajouté des utilisateurs. Tous avec la même base que les 1ers ? Peux tu vérifier, dans chaque formulaire, sur chaque poste, dans les propriétés, que 'vérouillage' est bien sur 'aucun' ?
tu ne sais pas ce qu'est ce code ? Ce n'est pas toi qui l'a fait ?
Si le .ldb ne s'efface pas, c'est qu'un utilisateur a mal fermé la base. Tu peux ouvrir ce ldb avec le bloc note, cela te permettra de savoir le poste et l'utilisateur.
Aussi, ça me fait mal aux yeux (très mal), je vois des noms de requêtes et de formulaires avec des " " (espaces). C'est franchement source de bugs.
Par contre, tu as rajouté des utilisateurs. Tous avec la même base que les 1ers ? Peux tu vérifier, dans chaque formulaire, sur chaque poste, dans les propriétés, que 'vérouillage' est bien sur 'aucun' ?
novice06100
Messages postés
42
Date d'inscription
dimanche 14 décembre 2008
Statut
Membre
Dernière intervention
30 août 2016
29 août 2016 à 08:20
29 août 2016 à 08:20
Salut,
Oui, c'est moi qui l'ai fait, mais j'ai essentiellement travaillé via l'interface Access. Donc très peu de VBA. ça fait que quelques mois que j’insère des commandes VBA dans la base. Mais du coup je ne respecte pas forcement toutes les règles. Mais je peux déclarer les variables si ça peut régler mon problème.
Et ouai je sais. J'ai commencé il y a 6 ans, vraiment novice. Je ne connaissais pas toutes les règles de programmation et aujourd'hui la base est tellement grande, prés de 500 objets, que je n'ai pas le temps de tout reprendre. Mais c'est sur que pour la prochaine je ferais plus attention.
J'ai compris tes histoires de variable. Sur les codes que j'ai programmé, je ne les ai pas déclarés. Mes tous les codes générés par Access, ils déclarent bien toutes les variables.
En ce qui concerne le ldb dans notes j'ai des symboles cryptés, j'ai regardé un peu sur les forums et semblerait que les versions d'access 2007 et 2010 cryptes le ldb. Donc pas très utilisable. Il y a des programmes qui permettent de les décrypter. Mais je doute que mon administrateur réseau veuille me les installer.
Du coup que dois je faire pour libérer les objets?
set tonobjet=nothing doit être mis dans tous les objets?
Oui, c'est moi qui l'ai fait, mais j'ai essentiellement travaillé via l'interface Access. Donc très peu de VBA. ça fait que quelques mois que j’insère des commandes VBA dans la base. Mais du coup je ne respecte pas forcement toutes les règles. Mais je peux déclarer les variables si ça peut régler mon problème.
Et ouai je sais. J'ai commencé il y a 6 ans, vraiment novice. Je ne connaissais pas toutes les règles de programmation et aujourd'hui la base est tellement grande, prés de 500 objets, que je n'ai pas le temps de tout reprendre. Mais c'est sur que pour la prochaine je ferais plus attention.
J'ai compris tes histoires de variable. Sur les codes que j'ai programmé, je ne les ai pas déclarés. Mes tous les codes générés par Access, ils déclarent bien toutes les variables.
En ce qui concerne le ldb dans notes j'ai des symboles cryptés, j'ai regardé un peu sur les forums et semblerait que les versions d'access 2007 et 2010 cryptes le ldb. Donc pas très utilisable. Il y a des programmes qui permettent de les décrypter. Mais je doute que mon administrateur réseau veuille me les installer.
Du coup que dois je faire pour libérer les objets?
set tonobjet=nothing doit être mis dans tous les objets?
Re,
pour le .ldb, je ne savais pas, utilisant toujours 2003...
L'admin réseau, en lui expliquant, pourra au moins regarder sur le serveur où se trouve la base dorsale quel utilisateur l'a créé...
Le set = nothing "doit" être mis à chaque fois que tu libères un objet ou une variable que tu auras défini auparavant par un set machinchose=truc. A la fin, set machinchose=nothing.
Mais si tout fonctionnait bien, avant l'ajout des utilisateurs (il n'y a eu que cela comme "évolution" ?), il faut en premier investiguer de ce côté. Il s'agit d'utilisateurs ou de machines ou les 2 ?
A+
pour le .ldb, je ne savais pas, utilisant toujours 2003...
L'admin réseau, en lui expliquant, pourra au moins regarder sur le serveur où se trouve la base dorsale quel utilisateur l'a créé...
Le set = nothing "doit" être mis à chaque fois que tu libères un objet ou une variable que tu auras défini auparavant par un set machinchose=truc. A la fin, set machinchose=nothing.
Mais si tout fonctionnait bien, avant l'ajout des utilisateurs (il n'y a eu que cela comme "évolution" ?), il faut en premier investiguer de ce côté. Il s'agit d'utilisateurs ou de machines ou les 2 ?
A+
J'avais rencontré il y a des années, des soucis de fermeture (verrouillage de fichiers), mais cela ne concernait pas directement Access, mais les fermetures des sessions TSE.
Mais ça vaut le coup de tester. Regardes de ce côté : https://www.generation-nt.com/uph-clean-nettoyage-profil-utilisateur-nettoyer-telecharger-telechargement-25440.html
Si l'admin fait la gueule, dis lui que cela ne mange pas de pain, et pourra lui éviter des soucis dans le futur (j'avais galéré à trouver cette astuce).
A+
Mais ça vaut le coup de tester. Regardes de ce côté : https://www.generation-nt.com/uph-clean-nettoyage-profil-utilisateur-nettoyer-telecharger-telechargement-25440.html
Si l'admin fait la gueule, dis lui que cela ne mange pas de pain, et pourra lui éviter des soucis dans le futur (j'avais galéré à trouver cette astuce).
A+
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
novice06100
Messages postés
42
Date d'inscription
dimanche 14 décembre 2008
Statut
Membre
Dernière intervention
30 août 2016
30 août 2016 à 09:14
30 août 2016 à 09:14
J'ai remis le nez dans tous les codes VBA et ai trouvé deux requêtes que je ne refermait pas. J'ai donc utilisé un :
do Cmd .Close ac Query, "Ta Requete"
Après un docmd Openquery
J'ai également fait du tri. J'avais pas mal de macro via l'interface qui n'étaient pas forcément optimisés, je les ai programmé en VBA en déclarant les variables comme tu me l'as suggéré. Déjà ces exécutions sont plus rapides et je vais voir si le problème de mode exclusif se reproduit.
Mais je pense que ces requêtes en docmd Openquery sans les fermer dernière, ça ne devait pas être très bon. Ce qui expliquerait que les autres utilisateurs puissent continuer à travailler dans certains cas.
do Cmd .Close ac Query, "Ta Requete"
Après un docmd Openquery
J'ai également fait du tri. J'avais pas mal de macro via l'interface qui n'étaient pas forcément optimisés, je les ai programmé en VBA en déclarant les variables comme tu me l'as suggéré. Déjà ces exécutions sont plus rapides et je vais voir si le problème de mode exclusif se reproduit.
Mais je pense que ces requêtes en docmd Openquery sans les fermer dernière, ça ne devait pas être très bon. Ce qui expliquerait que les autres utilisateurs puissent continuer à travailler dans certains cas.
Modifié par novice06100 le 27/08/2016 à 20:32
je ne suis pas programmeur,donc oui je fait un certain nombre d'action en VBA ouverture de formulaire fermeture et quelques requêtes. mais non je ne les libères pas.
27 août 2016 à 20:40
docmd.open..............
Ou tu utilises des variables ou des objets déclarés par :
set
?
27 août 2016 à 20:48
Modifié par HDU le 27/08/2016 à 20:54
?