|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Nouveau Membre du Club
![]() Inscription : octobre 2007 Messages : 49 ![]() |
Bonjour,
J'ai un problème "conflit d'écriture" sur une base Access. Les tables sont des tables liées par ODBC 3.51 sur une base mysql (5.0.27). Pour le moment, je suis seul à utiliser la base, suite aux différents postes traitant ce problème sur ce forum et à la faq, j'ai vérifié: - que la base n'était pas ouverte en mode exclusif - que le formulaire n'est ouvert qu'une seule fois - que j'ai pas de requêtes qui accèdent à la base de donnée en même temps Le formulaire a les propriétés type recordset "feuille de réponse dynamique", verrouillage "aucun". j'ai tenté sur le driver odbc de cocher l'option "Return Matching rows" (et relier les tables dans access). Dans le VBA de mon formulaire, j'ai tenté Code :
Je n'ai le problème de conflit d'écriture uniquement lorsque je tente de remplacer la valeur d'un champs par la même valeur. Si je modifie la valeur du champs titre "test" par "test" j'ai le message de conflit d'écriture, si je modifie la valeur "test" par "test2" aucun problème... Certaines modifications de ma base de données sont interdites (tel que modifier le type de document en "archives" si l'utilisateur ne fait pas partie du groupe "responsable", par contre même si il ne fait pas partie du groupe responsable l'utilisateur pourrait changer le type de document (changer le type "Document" en "Matériel multimédia" par exemple en cas d'erreur d'encodage)) Je gère dès lors le problème en stockant le type de document dans une variable, before_update je teste les droits de l'utilisateur et en cas de problème, je réinitialise le type de document avec celui qu'il y avait avant le changement ==> message d'erreur "conflit d'écriture". merci d'avance |
||
|
|
00
|
|
|
#2 |
![]() ![]() ![]() |
question : ton formulaire a une source TABLE ou bien est-ce une forme de REQUËTE ?
__________________
1formaxion, une formation de qualité, des formateurs compétents Mes tutoriels et vidéos : Tableaux croisés dynamiques, Access les Bases, et les autres ! |
|
00
|
|
|
#3 | ||
|
Nouveau Membre du Club
![]() Inscription : octobre 2007 Messages : 49 ![]() |
Une requête.
Code :
Tous les recordsets dans le VBA sont fermés... J'ai tenté de viré tout le code VBA de mon formulaire, j'ai toujours le même soucis de conflit d'écriture uniquement sur "faux changement" (remplacer la valeur d'un champs par elle-même). Lors d'une vrai modification de valeur, aucun soucis de mise à jour de la table. Etant donné, que j'ai le même soucis sans code VBA, j'élimine celui-ci comme source du problème mais du coup, je ne sais plus où chercher. Je pense que le problème se situe au niveau de la requête, si je l'ouvre en mode feuille de données et que j'effectue une "fausse modification" j'ai le message d'erreur "conflit d'écriture". Ma requête a les propriétés suivantes: Tous les champs - oui Premieres valeur - tout Valeurs distinctes - non Enregistrements uniques - non Exécuter autorisations - celles du propriétaire Verrouillage - Aucun Type de recordset - feuille de réponse dynamique Temporisation ODBC - 60 Et pour les paramètres de l'ODBC dans l'onglet "advanced", j'ai juste coché les options "Return matching rows" et "Enable auto_increment NULL search". ------------------------------------------- J'ai été vérifié dans mes tables mysql, aussi en mode console que via l'interface "phpmyadmin", je peux sans aucun soucis faire une "fausse modification". Le problème se situe donc soit dans mon ODBC soit dans ma requête ------------------------------------------- Merci beaucoup de t'intéresser à mon problème, parceque là je sèche vraiment... Lionel |
||
|
|
00
|
|
|
#4 |
|
Nouveau Membre du Club
![]() Inscription : octobre 2007 Messages : 49 ![]() |
Bonjour,
J'ai creusé un peu plus du côté ODBC. J'ai mis le driver à jour (3.51.21 à la place du 3.51.17). Et en lisant plus attentivement la documentation je pense que je devrais tenté de mettre OPTION=2 ou OPTION=3 mais je ne trouve pas l'endroit où on indique cela. Je n'ai pas de champs Option dans l'interface ODBC, j'ai pas trouvé comment le mettre de l'ODBC.ini (simplement séparé par un point virgule, cela ne fonctionne pas). Lorsque je clique droit sur une table pour voir les paramètres ODBC en mode création, j'obtiens: ODBC;DATABASE=centredoc;DSN=centredoc-mysql;OPTION=0;PORT=0;SERVER=localhost;;TABLE=documents A quel endroit puis-je aller modifier cette OPTION? merci d'avance lionel |
|
|
00
|
|
|
#5 |
![]() ![]() ![]() |
erf !
Je vais te dire un truc à ne pas faire (normalement) : Essaie de modifier ta table system msysObjects (pour la voir : Outils/Options/Affichage/Afficher les objets systèmes) Tu vas voir des champs, dont l'un présente le lien ODBC de ta table liée. Essaie de modifier en direct... Mais, le mieux, ce serait d'essayer de modifier lors de l'attache, dans les options ODBC, si tu y accèdes.
__________________
1formaxion, une formation de qualité, des formateurs compétents Mes tutoriels et vidéos : Tableaux croisés dynamiques, Access les Bases, et les autres ! |
|
00
|
|
|
#6 |
|
Nouveau Membre du Club
![]() Inscription : octobre 2007 Messages : 49 ![]() |
Merci
Les paramètres de la connexion ODBC se trouvent bien dans la table system msysObjects mais je n'ai pas les droits d'écriture dessus. Je ne sais donc pas tester le changement d'option Merci pour le coup de main, google m'a bien laissé tombé sur ce coup là. Lionel |
|
|
00
|
|
|
#7 |
|
Nouveau Membre du Club
![]() Inscription : octobre 2007 Messages : 49 ![]() |
J'ai trouvé
Au lieu de créer mon ODBC, via une source de données utilisateurs, j'ai créér une source de données fichier avec les mêmes paramètres que précédement mais en rajoutant OPTION = 3. Merci Lionel |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com