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

VBA Access Discussion :

Empêcher modification dans une DB attachée à celle en cours d'utilisation [AC-2010]


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 371
    Par défaut Empêcher modification dans une DB attachée à celle en cours d'utilisation
    Bonjour,

    La base que je développe ouvre des tables liées appartenant à une autre DB.
    Cette base que je développe écrit dans certaines des tables liées de cette autre DB.

    Je voudrais être certain que personne ne peut modifier les tables en question de cette autre DB tant que je n'ai pas fermé ma base en cours.

    Avez-vous une piste ou des liens montrant comment faire cela?

    J'ai cherché comment faire mais je ne vois pas/comprends pas trop bien les solutions trouvées et comment les appliquer :/

    Merci pour vos suggestions/propositions

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 410
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 410
    Par défaut
    Bonjour.

    Tu peux peut-être aller dans le menu des fichiers, puis options et paramètres du client.
    Grosso modo au 3/4 de la liste affichée, tu un chapitre "Avancé" et dans ce chapitre "Verrouillage par défaut", parmis les 3 choix offerts tu as Tous les enregistrements.
    Mais je t'invite à reconsidérer cette exigence qui peut être très pénible pour les utilisateurs si ils sont supposés utiliser la BD pendant que tu fais tes manips.
    Parmis les choix tu as à l'enregistrement, en fait un petit mensonge d'Access car il bloque 2 000 octets et donc ça peut faire plus d'un enregistrement, mais plus délicat qu'un verrouillage complet.

    Tu peux aussi voir avec la notion de transaction qui te permet de garantir que soit toutes les modifications sont faites, soient aucune n'est faite.
    Une note de prudence, les infos utilisées par la transaction, sont gardée dans le front-end et peuvent conduire à une saturation à 2 Go de celui-ci sans avertissement préalable ... je l'ai vécu, pas cool.

    En passant tu aussi les options d'overture des recordsets de Access :

    https://learn.microsoft.com/en-us/of...numeration-dao

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    Bonjour,

    c'est techniquement faisable de plusieurs façons, comme tu as du le lire sur les différentes solutions proposées en ligne.

    Le principal est d'une part que la solution te donne le résultat attendu, mais également qu'elle soit évolutive et que tu la comprennes (ne serait-ce que pour la désactiver si nécessaire).

    Afin de bien comprendre ton cas, est-ce que tu peux nous confirmer les choses suivantes :

    - tu disposes d'une base A, qui contient des tables liées issues de la table B ?

    - tu souhaites empêcher qu'un utilisateur accède (ou modifie?) à une ou plusieurs tables de la base B tant que tu utilises l'application ?

    - ta base A est-elle la seule qui utilise des données de la base B, ou bien y a-t-il plusieurs autres bases qui s'y connectent ?
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  4. #4
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 371
    Par défaut
    Bonjour Jean-Philippe, Bonjour marot_r,
    Merci de vous pencher sur mon questionnement :-)

    Je vais voir les pistes que tu me suggères marot_r. A priori, un blocage complet de la base B ne serait pas nécessaire mais faut voir si ça corresponds bien à mon besoin... A suivre...

    Jean-philippe,
    Citation Envoyé par Jean-Philippe André Voir le message
    Afin de bien comprendre ton cas, est-ce que tu peux nous confirmer les choses suivantes :
    - tu disposes d'une base A, qui contient des tables liées issues de la table B ?
    Exact

    Citation Envoyé par Jean-Philippe André Voir le message
    - tu souhaites empêcher qu'un utilisateur accède (ou modifie?) à une ou plusieurs tables de la base B tant que tu utilises l'application ?
    Exact

    Citation Envoyé par Jean-Philippe André Voir le message
    - ta base A est-elle la seule qui utilise des données de la base B, ou bien y a-t-il plusieurs autres bases qui s'y connectent ?
    La base A est la seule qui utilise les données de la B

    Voilà ce que je peux en dire pour le moment :-) A suivre donc et merci d'avance si vous avez d'autres pistes.

    Peut-être pour préciser mon besoin, en fait ma base A crèe un nouvel enregistrement dans la base B.
    Et je souhaiterai, que ce soit impossible pour une autre utilisateur de créer en même temps un nouvel enregistrement dans la base B, tant que la A y travaille.

  5. #5
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    Salut,
    Ok, mais est-ce que cela signifie que le seul moyen d'insérer une ligne dans ta table de la base B se fait en utilisant la base A ?

    Si tel est le cas, "l'intelligence" peut se situer directement dans la base A, avec les solutions suggérées par marot_r
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  6. #6
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 371
    Par défaut
    Rebonjour Jean-Philippe,

    Non, dans la base B, un utilisateur peut y insérer manuellement un nouvel enregistrement à n'importe quel moment.

    Par exemple, on pourra avoir un utilisateur qui travaille sur la base B et un qui travaille sur la A. L'utilisateur de la B peut se connecter n'importe quand. Idem pour l'utilisateur de la A.
    Mais lorsque la A est utilisée, elle peut (à un moment indéterminé, et en fonction de ce que fait l'utilisateur A) créer une nouvelle ligne dans la B.
    Je voudrais juste éviter que lorsque A crée cette ligne, il soit impossible d'en créer une dans B tant qu'on n'a pas rendu la main.

  7. #7
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    OK,

    dans un tel cas, ma piste la plus probable serait d'avoir
    - d'une part une table de paramètre qui permet de déterminer le moment où oui ou non l'insertion d'une ligne est possible
    - d'autre part de travailler avec les macros de données dans lesquelles on trouvera un test déterminant si oui ou non la mise à jour ou l'insertion de donnée est autorisée.
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

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

Discussions similaires

  1. [AC-2007] Empêcher les modifications dans une table
    Par MarieRoy dans le forum Sécurité
    Réponses: 1
    Dernier message: 30/05/2017, 21h04
  2. Réponses: 3
    Dernier message: 07/02/2006, 13h26
  3. Afficher une dropdownlist lors de modif dans une DataGrid
    Par MiJack dans le forum C++Builder
    Réponses: 2
    Dernier message: 08/11/2004, 17h42
  4. screenshot dans une résolution > a celle affichée
    Par cemoi dans le forum DirectX
    Réponses: 8
    Dernier message: 29/12/2003, 18h16
  5. [JDialog] Modification dans une fenêtre
    Par cefabien dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 01/10/2003, 13h18

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