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 :

Reprendre la main sur une base ACCESS


Sujet :

VBA Access

  1. #1
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut Reprendre la main sur une base ACCESS
    Bonjour à tous.

    Je rencontre un souci sur lequel je me bat régulièrement et je ne comprends toujours pas le fonctionnement : l'accès admin.

    Par exemple, je lance une procedure qui contient cette ligne de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set rsDJFTemp = CurrentDb.OpenRecordset("SELECT * FROM JourFerieTemp")
    Et il me dit :
    Nom : accès interdit.png
Affichages : 295
Taille : 21,6 Ko

    Le code c'est ma machine, mais je sais que quelqu'un d'autre à ouvert également la base ACCESS et c'est normal, il doit bosser avec les outils que je lui programme.

    Ce que je ne comprends pas malgré toute la lecture de doc que j'ai fait c'est comment je peux prendre ou reprendre le pas sur les autres pour mettre à jour des données dans une table ou modifier un formulaire ?

    Pouvez-vous m'aider ?

    Merci et bonne journée.
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Deouis les versions 2000 il me semble il n'est plus possible de modifier (physiquement) une BD pendant que quelqu'un d'autre s'en sert.
    On peut évidement modifier les données mais pas le code ou les formulaires par exemple.

    La solution est de découper la BD en frontale (tous sauf les tables et les relations) et dorsale (les tables et les relations seulement).Il y a un assistant pour cela.
    Ensuite quand tu développes, tu travailles sur une copie de la frontale et de la dorsale.
    Une fois au point tu pousses la frontale en prod et tu la lies aux données de prod.

    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
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Merci pour ton aide.

    Ce principe de Dorsale et Frontale, je le fait déjà.

    Donc, ok pour le développement en lui-meme, je vais modifier ma façon de bosser.
    Par contre, le cas que j'ai donné dans le premier message avec le montage d'un Recordset, c'est le fonctionnement normal de la base de donnée.
    J'ai pointé cette ligne car c'est elle qui a généré le message d'erreur. Mais ce morceau de code est censé s'exécuter en mode normal, en production en somme.

    C'est en fait le premier pas de ma procedure de mise à jour des données. Du coup, si, dés qu'il y a plus d'un utilisateur sur le fichier, ACCESS ne peut plus mettre lui-même à jour ses données, je suis dans la mouise.

    Vois tu ce que je veux dire ?
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    OK, désolé d'avoir mal identifié ton problème.

    Non à priori tu peux modifier tes données, c'est en soit l'essence même d'une BD :-).

    Est-ce que tu as du code qui est en train de changer la structure de ta BD en même temps (ex : création dynamique de formulaire, de table, de requête ?).

    Parce que sur la simple ligne que tu as mise tu n'aurais pas du avoir d'erreur.

    Aussi valide que cela se produit quand tu fermes et que tu réouvres ta BD. Parfois Access garde cette notion de blocage même si apparemment plus personne ne fait de modification de structure.

    Actuellement je travaille à cheval sur 2 versions et je fais des modifs dans les 2 donc il me faut faire des copies d'objet d'une version à l'autre et parfois (j'ai pas encore compris pourquoi) l'une ou l'autre de mes BD refuse de glisser/coller.
    J'ai bien compilé et sauvegardé tout des 2 côtés mais la BD destinatrice m'indique qu'elle est verrouillée par Admin/MaMachine.
    Je ferme la récalcitrante et je l'ouvre à nouveau et, là, je peux maintenant faire ma copie.

    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.

  5. #5
    Membre extrêmement actif
    Avatar de zooffy
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Août 2004
    Messages
    3 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2004
    Messages : 3 895
    Points : 1 434
    Points
    1 434
    Par défaut
    Non, je n'ai pas de code qui modifie la structure des données ou même un quelconque autre objet dans la base.

    Ma procedure de mise à jour des données est assez simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    DataDb.Execute ("DELETE FROM MaTable")
    DoCmd.TransferText acImportDelim, , "MaTable", "\\mon.server\GroupShares\Folder\ROBOTS_Data.csv", True
    Parfois je fais un truc en plus, du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    DataDb.Execute ("UPDATE MaTable SET STATUS = 'Z' WHERE IsNull(STATUS)")
    Et je lance aussi une grosse procédure car une de mes tble doit être remplie avec un gros traitement de donnée en provenance d'une autre table qui vient juste d'être remplie.
    Je met le code pour info, ça pourait même intéresser des gens, c'est pour intégrer des dates à partir de chaines de caratères qui sont monté avec quatre chiffre pour chaque date.
    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
     
    Sub TraitementTablejourFerie()
    Dim rsDJFTemp As Recordset
    Set rsDJFTemp = CurrentDb.OpenRecordset("SELECT * FROM JourFerieTemp")
    Do While Not rsDJFTemp.EOF
        Dim CodeMonnaie, Annee, LibPays  As String
        Annee = rsDJFTemp.Fields("ANNEE")
        CodeMonnaie = rsDJFTemp.Fields("MONNAIE")
        LibPays = rsDJFTemp.Fields("TBDES1")
        LibPays = Replace(LibPays, "'", " ")
        Dim strDate As String
        strDate = rsDJFTemp.Fields("DESCRIP")
        If Right(strDate, 4) = "0000" Then
            strDate = Left(strDate, Len(strDate) - 4)
        End If
        Do While Len(strDate) > 3
            Dim strExtrDate As String
            strExtrDate = Right(strDate, 4)
            Dim intMonth, intDay As Integer
            Dim dteJourFerie As Date
            intMonth = Right(strExtrDate, 2)
            intDay = Left(strExtrDate, 2)
            dteJourFerie = DateSerial(Annee, intMonth, intDay)
            CurrentDb.Execute ("INSERT INTO JourFerie (CodeMonnaie, LibPays, DateJourFerie) VALUES ('" & CodeMonnaie & "','" & LibPays & "','" & dteJourFerie & "')")
            strExtrDate = ""
            intMonth = 0
            intDay = 0
            dteJourFerie = 0
            strDate = Left(strDate, Len(strDate) - 4)
        Loop
        Annee = 0
        CodeMonnaie = 0
        rsDJFTemp.MoveNext
    Loop
    End Sub

    Je vais regarder de plus prêt les condition de plantage.

    Merci pour ton aide.
    Mon blog de création d'univers : Qualhiryann
    Mon site qui parle de moi www.ozouf.com
    Pour les joueurs de WOW je suis sur Ysondres et mon perso est Ablanore.

  6. #6
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 593
    Points : 34 256
    Points
    34 256
    Par défaut
    Salut,

    a toute fin utile, pense a fermer ton recordset en fin de processus
    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 :
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

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

    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

Discussions similaires

  1. [ASP.NET]Problème de droits sur une base access
    Par dacid dans le forum ASP.NET
    Réponses: 8
    Dernier message: 25/11/2006, 11h04
  2. [VBA-E] Requetes depuis Excel sur une Base Access sécurisée
    Par DhiSan dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 31/05/2006, 18h44
  3. Pb d'index sur une base Access
    Par chakir dans le forum Bases de données
    Réponses: 1
    Dernier message: 09/03/2006, 12h24
  4. Pb de connexion sur une base access
    Par xave dans le forum ASP
    Réponses: 9
    Dernier message: 17/01/2006, 17h26
  5. requetes BUSINESS OBJECT sur une base ACCESS
    Par greatmaster1971 dans le forum Deski
    Réponses: 1
    Dernier message: 06/10/2004, 14h10

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