IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Access Discussion :

Conflit d'écriture sur remplacer une valeur par elle-même


Sujet :

Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 50
    Points : 53
    Points
    53
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  2. #2
    Expert éminent

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Points : 9 197
    Points
    9 197
    Par défaut
    question : ton formulaire a une source TABLE ou bien est-ce une forme de REQUËTE ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 50
    Points : 53
    Points
    53
    Par défaut
    Une requête.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 50
    Points : 53
    Points
    53
    Par défaut
    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

  5. #5
    Expert éminent

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Points : 9 197
    Points
    9 197
    Par défaut
    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.

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 50
    Points : 53
    Points
    53
    Par défaut
    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

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2007
    Messages : 50
    Points : 53
    Points
    53
    Par défaut
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2000] Remplacer une valeur par une autre à partir d'une requête
    Par tibogaet dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 10/08/2009, 14h23
  2. Remplacer une valeur par une autre valeur
    Par Prekestolen dans le forum Formules
    Réponses: 2
    Dernier message: 23/02/2009, 17h18
  3. comment remplacer une valeur par une autre?
    Par bling dans le forum Excel
    Réponses: 5
    Dernier message: 14/02/2009, 18h06
  4. Réponses: 3
    Dernier message: 20/11/2008, 16h53
  5. Remplacer une valeur par un autre
    Par zorro13 dans le forum ANT
    Réponses: 7
    Dernier message: 26/09/2007, 15h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo