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 : Cet enregistrement a été modifié par un


Sujet :

Access

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2005
    Messages : 218
    Points : 85
    Points
    85
    Par défaut Conflit d'écriture : Cet enregistrement a été modifié par un
    Bonjour,

    j'aimerais savoir s'il est possible de générer l'erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Conflit d'écriture : Cet enregistrement a été modifié par un autre utilisateur...
    avec du codeVB, en utilisant des recordset ADO par exemple.
    Je pense le coder à la main en vérifiant par exemple les champs avant la miseà jour.
    Mais je me demande s'il n'existe pas une fonctionnalité des objets Recordset qui génère cet erreur.. ainsi je n'aurai plus qu'à la récupérer.

    Merci

    Anikeh!

  2. #2
    Membre expérimenté
    Avatar de Frank
    Homme Profil pro
    Chef de projet Informatique
    Inscrit en
    Avril 2002
    Messages
    1 095
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Chef de projet Informatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Avril 2002
    Messages : 1 095
    Points : 1 392
    Points
    1 392
    Par défaut
    Merci d'utiliser la recherche avancée du forum avec les mots clés
    Conflit d'écriture
    .

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2005
    Messages : 218
    Points : 85
    Points
    85
    Par défaut
    merci.
    mais je l'avais déja fait et cela ne correspond à ce que je demande.
    Je veux pouvoir générer cette erreur au travers un recordset.

  4. #4
    Membre éprouvé
    Avatar de keita
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Novembre 2002
    Messages : 881
    Points : 1 121
    Points
    1 121
    Par défaut
    anikeh a écrit:
    Je veux pouvoir générer cette erreur au travers un recordset.
    Mon pb à moi est que je voudrais savoir si c'est véritablement une erreur, auquel cas puis-je avoir le code de cette erreur, ou si ce n'est qu'une sorte d'avertissement.
    par ailleurs je me dis que si Anikeh cherche à recuperer l'erreur, c'est cela lui arrive assez souvent.A mon avis ce n'est pas la meilleure solution; il serait peut etre bon:
    1/de verifier tes recordsets;
    2/surtout quand un recordset intervient à l'interieur d'un autre et que les SQL à la base de l'un et l'autre font reference à la meme table;A ce moment le conflit d'écriture se posera;les 2 utilisateurs ici etant les 2 recordsets;on rejoint donc ce qui est expliqué dans la FAQ.
    J'observe aussi que si par extraordinaire Anikeh reussissait à intercepter et donc à l'annihiler(est ce le mot exact?) il va se poser un probleme si son appli devrait tourner sur un reseau; oui;on peut imaginer ici 2 vrais utilistauers cette fois, chacun sur son poste,qui serait ammener par coincidence le meme enregistrement;l'avertissement ne fonctionnant plus, lequel des 2 serait à accepter?
    j'ai dit par extraordinaire parce que je pense que cela fait parti du systeme de verouillage des données:vérouillage optimiste et vérouillage pessimiste.
    pour plus d'info, je crois qu'il faut aller chercher La propriété Verrouillage (RecordLocks) dans l'aide d'access.
    @+

  5. #5
    Faw
    Faw est déconnecté
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    1 169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 169
    Points : 1 383
    Points
    1 383
    Par défaut
    Salut,
    Je crois qu'il y a un tutoriel sur la gestion d'erreurs mais pas sûr

  6. #6
    Membre éprouvé
    Avatar de keita
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Novembre 2002
    Messages : 881
    Points : 1 121
    Points
    1 121
    Par défaut
    Dans ce cas, est ce qu'on pourrait faire comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    On Error go to Erreur
     
     
     
    Erreur:
    If Err.Number=3197 then
       ' Faire quelque chose 
    End If
    @+

  7. #7
    Membre éprouvé
    Avatar de keita
    Homme Profil pro
    Inscrit en
    Novembre 2002
    Messages
    881
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations forums :
    Inscription : Novembre 2002
    Messages : 881
    Points : 1 121
    Points
    1 121
    Par défaut
    Dans ce cas, est ce qu'on pourrait faire comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    On Error go to Erreur
     
     
     
    Erreur:
    If Err.Number=3197 then
       ' Faire quelque chose 
    End If
    @+

  8. #8
    Faw
    Faw est déconnecté
    Membre expérimenté

    Profil pro
    Inscrit en
    Juin 2004
    Messages
    1 169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 169
    Points : 1 383
    Points
    1 383
    Par défaut
    On Error go to Erreur

    Erreur:
    If Err.Number=3197 then
    ' Faire quelque chose
    End If
    Oui tout à fait.
    Pour ce qui concerne le problème d'anikeh et pour le peu que j'en sache,
    Error et ses attributs (sauf On_Error) sont en lecture seule...

  9. #9
    Expert éminent sénior

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Points : 32 311
    Points
    32 311
    Par défaut
    Citation Envoyé par keita
    Dans ce cas, est ce qu'on pourrait faire comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    On Error go to Erreur
     
     
     
    Erreur:
    If Err.Number=3197 then
       ' Faire quelque chose 
    End If
    @+
    Bof, le mieux est de faire ce que tu as dit au début : à savoir revoir la politique de la gestion des accès simultanés

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2005
    Messages : 218
    Points : 85
    Points
    85
    Par défaut
    Merci à tous.
    Quelques reponses :

    par ailleurs je me dis que si Anikeh cherche à recuperer l'erreur, c'est cela lui arrive assez souvent
    en fait, ca ne m'arrive pas et j'aimerais que ca m'arrive. C'est pour tester mon appli.
    Je m'explique :

    j'ai developpé une appli avec 2 mdb, un pour les données et un autre pour les programmes. Classique.

    Je travaille avec des formulaires indépendants des tables et des recordsets ADO.

    Mon problème est ceci:

    Deux utilisateurs, chacun sur son poste, sont tous les deux sur la même ligne d'un table. L'un modifie une données de cette ligne. L'autre aussi veut la modifier,mais entre le moment où il a affiché cette donné sur son ecran et le moment où il fait effectivement la modification, cette ligne a été modifiée par le premier utilisateur.
    Donc je voudrais l avertir de ce fait : ce qu'il voit à l'écran n'est plus ce qu'il y a dans la base.
    Du coup, je cherchais à savoir s'il existe une fonctionnalité qui servirait à ca au niveau des recordsets.

    J espere que tout ca est clair.

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 710
    Points : 847
    Points
    847
    Par défaut
    Salut,

    Ce que moi je fais c'est que quand un utilisateur rentre dans un formulaire où il est suceptible de modifier des données, j'enregistre la clef de cet enregistrement et le nom du formulaire dans une table verrou. Avant d'accéder à un formulaire, je test si l'enregistrement n'est pas déjà en cours de modif par qq'un d'autre. Ainsi je n'ai jamais 2 personnes en même temps sur le même enregistrement.

    Si ça t'interesse, j'ai des fonction qui vérrouille, dé-verrouille et observe les verrous.

    A+

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Février 2005
    Messages
    218
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Février 2005
    Messages : 218
    Points : 85
    Points
    85
    Par défaut
    oui, ça m'interesse.

  13. #13
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    710
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 710
    Points : 847
    Points
    847
    Par défaut
    Voila :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
     
    Public Function fVerrouOBS(arg_table As String, arg_code As Variant, Optional arg_new As Boolean = False) As String
    'Observe le verrouillage
     
        Dim RS As Recordset
     
        On Error GoTo fVerrouOBS_Error
     
        gstr_sql = "SELECT * FROM T_verrou" _
                & " WHERE table_en_cours = """ & arg_table & """" _
                & " AND   code_en_cours  = """ & arg_code & """;"
        Set RS = CurrentDb.OpenRecordset(gstr_sql, dbOpenDynaset)
        If Not (RS.BOF And RS.EOF) Then
            If arg_new = False Then fMsg Traduction_Text("X86"), Traduction_Text("X87"), 0
            fVerrouOBS = "LOCK"
        Else
            fVerrouOBS = "UNLOCK"
        End If
     
     
    fVerrouOBS_Error:
        Select Case err
            Case 0
            Case Else
                fMsg err, err.Description, 3
        End Select
     
    End Function
     
    Public Function fVerrouLOCK(arg_table As String, arg_code As Variant)
    'Met un verrou
     
     
        On Error GoTo fVerrouLOCK_Error
     
     
        gstr_sql = "INSERT INTO T_verrou" _
                & " VALUES(""" & CurrentUser & """, """ & arg_table & """,""" & arg_code & """);"
        CurrentDb.Execute gstr_sql
     
     
    fVerrouLOCK_Error:
        Select Case err
            Case 0
            Case Else
                fMsg err, err.Description, 3
        End Select
     
    End Function
     
    Public Function fVerrouUNLOCK(arg_table As String, arg_code As Variant)
    'Retire un verrou
     
     
        On Error GoTo fVerrouUNLOCK_Error
     
     
        gstr_sql = "DELETE * FROM T_verrou" _
                & " WHERE login          = """ & CurrentUser & """" _
                & " AND   table_en_cours = """ & arg_table & """" _
                & " AND   code_en_cours  = """ & arg_code & """;"
        CurrentDb.Execute gstr_sql
     
     
    fVerrouUNLOCK_Error:
        Select Case err
            Case 0
            Case Else
                fMsg err, err.Description, 3
        End Select
     
    End Function
     
    Public Function fVerrouDeverrouillerUtilisateur(arg_user As String, arg_message As Boolean)
    'Permet de supprimer tous les enregistrements de la table T_verrou pour un utilisateur
    'Paramètre  :   arg_user    : utilisateur à "déverrouiller"
     
     
        On Error GoTo fVerrouDeverrouillerUtilisateur_Error
     
     
        If fFormsOuverts = True Then
            fMsg "Vous devez fermer tous les formulaires avant d'effectuer cette opération.", "", 0
        Else
            If arg_message = True Then
                If fMsg("Confirmez-vous la réinitialisation du verrouillage ?", "", 1) = vbYes Then
                    gstr_sql = "DELETE * FROM T_verrou" _
                            & " WHERE login = """ & arg_user & """"
                    CurrentDb.Execute gstr_sql
                    fMsg "Operation terminée.", "", 0
                End If
            Else
                gstr_sql = "DELETE * FROM T_verrou" _
                        & " WHERE login = """ & arg_user & """"
                CurrentDb.Execute gstr_sql
            End If
        End If
     
     
    fVerrouDeverrouillerUtilisateur_Error:
        Select Case err
            Case 0
            Case Else
                fMsg err, err.Description, 3
        End Select
     
    End Function
    Bon courage (il y a des petites fonctions que je n'ai pas mise genre traduction_text qui traduit en texte en fonction de la langue choisie, fmsg qui fait un msgbox pré-paramétré .... si tu les veux aussi, y a qu'a demander)

    A+

Discussions similaires

  1. Conflit d'écriture
    Par Manu0086 dans le forum Access
    Réponses: 23
    Dernier message: 05/02/2021, 12h24
  2. [Access] [VBA] Conflit d'écriture
    Par Yanmeunier dans le forum Access
    Réponses: 9
    Dernier message: 09/12/2016, 00h52
  3. Message d'avertissement : Conflit d'écriture
    Par snoopy69 dans le forum Access
    Réponses: 6
    Dernier message: 12/07/2006, 11h21
  4. Conflit d'écriture
    Par samlepiratepaddy dans le forum Access
    Réponses: 1
    Dernier message: 21/11/2005, 11h21
  5. Conflit d'écriture
    Par grisounette dans le forum Access
    Réponses: 3
    Dernier message: 26/10/2004, 01h19

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