Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access
Access Forum d'entraide sur Microsoft Access. Avant de poster -> La F.A.Q Access
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/11/2007, 13h27   #1
Nouveau Membre du Club
 
Inscription : octobre 2007
Messages : 49
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 49
Points : 38
Points : 38
Par défaut Conflit d'écriture sur remplacer une valeur par elle-même

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 :
1
2
3
Private sub Form_Dirty(Cancel as Integer)
  Docmd.RunCommand acCmdSaveRecord
End Sub
Le seul autre code VBA que j'ai sur mon formulaire est sur l'activation, de simples tests de champs pour vérifier quels onglets doivent être affichés.

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
spitou_77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/11/2007, 13h59   #2
Rédacteur

 
Avatar de Maxence HUBICHE
 
Homme Maxence HUBICHE
Formateur et Développeur - Conseil en Informatique
Inscription : juin 2002
Messages : 3 687
Détails du profil
Informations personnelles :
Nom : Homme Maxence HUBICHE
Âge : 42
Localisation : France, Val d'Oise (Île de France)

Informations professionnelles :
Activité : Formateur et Développeur - Conseil en Informatique

Informations forums :
Inscription : juin 2002
Messages : 3 687
Points : 6 516
Points : 6 516
Envoyer un message via MSN à Maxence HUBICHE Envoyer un message via Skype™ à Maxence HUBICHE
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 !
Maxence HUBICHE est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/11/2007, 21h47   #3
Nouveau Membre du Club
 
Inscription : octobre 2007
Messages : 49
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 49
Points : 38
Points : 38
Une requête.

Code :
1
2
3
SELECT documents.*
FROM documents
ORDER BY documents.idDocument;
La requête est éditable par les utilisateurs, le formulaire sert à afficher les résultats.

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
spitou_77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 11/11/2007, 09h23   #4
Nouveau Membre du Club
 
Inscription : octobre 2007
Messages : 49
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 49
Points : 38
Points : 38
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
spitou_77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/11/2007, 09h09   #5
Rédacteur

 
Avatar de Maxence HUBICHE
 
Homme Maxence HUBICHE
Formateur et Développeur - Conseil en Informatique
Inscription : juin 2002
Messages : 3 687
Détails du profil
Informations personnelles :
Nom : Homme Maxence HUBICHE
Âge : 42
Localisation : France, Val d'Oise (Île de France)

Informations professionnelles :
Activité : Formateur et Développeur - Conseil en Informatique

Informations forums :
Inscription : juin 2002
Messages : 3 687
Points : 6 516
Points : 6 516
Envoyer un message via MSN à Maxence HUBICHE Envoyer un message via Skype™ à Maxence HUBICHE
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 !
Maxence HUBICHE est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/11/2007, 10h07   #6
Nouveau Membre du Club
 
Inscription : octobre 2007
Messages : 49
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 49
Points : 38
Points : 38
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
spitou_77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 12/11/2007, 11h37   #7
Nouveau Membre du Club
 
Inscription : octobre 2007
Messages : 49
Détails du profil
Informations forums :
Inscription : octobre 2007
Messages : 49
Points : 38
Points : 38
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
spitou_77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h29.


 
 
 
 
Partenaires

Hébergement Web