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 :

Mise à jour conccurrents d'un r ecord [AC-365]


Sujet :

Access

  1. #1
    Membre éprouvé
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2017
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 355
    Par défaut Mise à jour conccurrents d'un r ecord
    Bonjour,

    j'ai une question basique, mais j'ai besoin d'une piste pour y répondre, je n'ai aucune expérience sur ACCESS

    Tout d'abord je maitrise bien VBA Excel et j'ai écris une application (600 macros environ) basée exclusivement sur des fichiers Excel

    Pour optimiser maintenant je voudrai remplacer certains fichiers demandant à être partagés par une base, pour comprendre j'ai donc créé une base ACCESS sur un serveur avec un record contenant la valeur 1

    Ma macro Excel sait maintenant accèder à la base, faire + 1 sur la valeur, la mettre à jour et l'afficher (= 2)

    Mon problème est le suivant : si je lance simultanément la même macro sur un second PC il n'y a pas de blocage de la mise à jour et à la fin des exécutions les valeurs affichées sont = 2

    Ce qui dans mon application crééra un doublon sur le N°

    A mon sens l'avantage d'une base comme ACCESS est justement de gérer les accès concurrents, il doit bien y avoir un paramètre ou une action à faire pour cela (je n'ai rien vu dans les docs que j'ai lus)

    Merci

  2. #2
    Rédacteur/Modérateur


    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 720
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 720
    Billets dans le blog
    67
    Par défaut
    Bonjour,

    Normalement en choisissant :

    Fichier > Options > Paramètres du client > section Avancé > Cocher "Ouvrir avec enregistrements verrouillés".

    Deux personnes ne peuvent techniquement pas modifier la même ligne en même temps.

    Après dans le cas de l'exécution simultanée de deux macros VBA par 2 utilisateurs (avec conflits), il faudrait le gérer en VBA avec un message d'erreur :

    "Erreur d'exécution : L'Enregistrement est verrouillé par un autre utilisateur"

    Cdlt
    Vous trouverez dans la FAQ, les sources ou les tutoriels, de l'information accessible au plus grand nombre, plein de bonnes choses à consulter sans modération

    Des tutoriels pour apprendre à créer des formulaires de planning dans vos applications Access :
    Gestion sur un planning des présences et des absences des employés
    Gestion des rendez-vous sur un calendrier mensuel


    Importer un fichier JSON dans une base de données Access :
    Import Fichier JSON

  3. #3
    Membre éprouvé
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2017
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 355
    Par défaut
    Bonjour,

    J'ai bien : Fichier > Options > Paramètres du client > section Avancé > "Ouvrir avec enregistrements verrouillés" est bien coché

    Ma base de test contient 4 tables (1 à 4) avec chacune un seul record (un numéro)
    Le but est de faire + 1 sur le numéro du record d'une table ("table1") à partir d'une macro en interdisant la modification de cette table par un autre utilisateur pendant ce temps d'exécution, sans bloquer les macros ssur les autres tables
    La table est accédée dans une macro Excel

    Voici mon code VBA Excel accèdant à ACCESS
    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
     
    Sub ConnectAccess()
     
    Dim cn As String, rst As Object, BDaccess As String
     
    BDaccess = "\\xxx\Test.accdb"
     
    cn = GenereCSTRING(ACCESS, Base:=BDaccess)
    Set rst = OpenRecordset("SELECT num FROM table1 WHERE rech = 'Arg'", cn)
    Set rst = ExecuteRequete("UPDATE table1 SET num = num + 1 WHERE rech = 'Arg'", cn)
     
    'rst.Close
    Set rst = Nothing
     
    End Sub
    Je lance la macro Excel sur mon PC 1 avec un point d'arrêt juste avant "Set rst = ExecuteRequete("UPDATE table1 SET num = num + 1 WHERE rech = 'Arg'", cn)"
    Ensuite je lance la même macro sur mon second PC 2, elle s'exécute correctement
    Je continue l'exécution la macro sur le PC1, elle se termine bien
    Je m'attendai à ce que la macro sur le PC 2 soit bloquée

  4. #4
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 662
    Par défaut
    bonjour,
    le verrouillage des lignes sur une requête update est quasiment impossible Vu le furtivité de la chose.

    d'ailleurs la chronologie des faits le montre bien tu passes d'un PC a l'autre. il faudrait que l'expérience soit synchronisée au millième de seconde près.

    seule les enregistrements en édition dans Access peuvent être verrouillé.

    du reste la requête fonctionnera même après une journée de repos.

    seule solution signé numériquement les enregistrements. quel user a le droit de modifier tél enregistrement.

    personnellement je travaillais avec un userform.
    chaque fois que je sélectionnais un enregistrement je le signerai pour éviter que d'autres l'utilise.

  5. #5
    Membre Expert Avatar de Nain porte koi
    Homme Profil pro
    peu importe
    Inscrit en
    Novembre 2023
    Messages
    1 603
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : peu importe

    Informations forums :
    Inscription : Novembre 2023
    Messages : 1 603
    Par défaut
    Si c'est pour faire +1, pourquoi pas un champ numéroauto ?
    JièL
    Membre des AMIS
    Anti Macro Inutilement Superfétatoire

  6. #6
    Membre éprouvé
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2017
    Messages
    1 355
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2017
    Messages : 1 355
    Par défaut
    #5

    je vais commencer par regarder ce que c'est "numéroauto" mais le nom parait bien sympathique pour ce que je veux faire

  7. #7
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 662
    Par défaut
    Citation Envoyé par retraite83 Voir le message
    #5

    je vais commencer par regarder ce que c'est "numéroauto" mais le nom parait bien sympathique pour ce que je veux faire
    bonjour,
    un numéroauto es un champ qui permet d'identifier de façon unique et sans possibilité de doublon même après suppression.

    ligne1=1
    ligne2=2 etc

    c'est un identifiant unique. rien a voir avec ce qui te préoccupe.

    comment dit sur l'autre forum la seul solution étant de verrouillé l'enregistrement via un recorset en mode édition {dynamique}

    https://www.developpez.net/forums/d2...r-dedie-excel/

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

Discussions similaires

  1. [AC-2003] Problème de mise jour à des données avec ADO
    Par @omzo dans le forum VBA Access
    Réponses: 2
    Dernier message: 24/06/2010, 13h25
  2. Collation et mise jour
    Par jfphan dans le forum MS SQL Server
    Réponses: 0
    Dernier message: 01/07/2008, 15h54
  3. [WD10] Verification de mise jour de version
    Par philippe30 dans le forum WinDev
    Réponses: 2
    Dernier message: 27/05/2008, 09h21
  4. Mise jour des champs avec formulaires
    Par tetsuoo dans le forum Requêtes et SQL.
    Réponses: 9
    Dernier message: 09/09/2007, 20h35
  5. [VBA-EXcel] Timer pour mise jour automatique
    Par Dos dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 12/09/2006, 20h36

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