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 :

[TUTO] Application ACCESS et Cloud Storage


Sujet :

Access

  1. #1
    Rédacteur/Modérateur

    [TUTO] Application ACCESS et Cloud Storage
    Découvrez une solution d'application ACCESS sur Cloud Storage.

    Ce tuto est réservé à un public averti. En effet de solides notions de VBA, de Classe, d'attachement et de gestion des conflits sont obligatoires.

    http://loufab.developpez.com/tutorie...rage_msaccess/

    Bonne lecture.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  2. #2
    Expert confirmé
    Bonjour Fabrice,

    Parfait, tuto très complet

    Comme tu l'indiques, cette méthode est malheureusement limitée à une utilisation monoposte ce qui est souvent rédhibitoire Par contre cela règle définitivement tout souci de sauvegarde

    Cela fait un an que j'ai placé ma dorsale dans une dropbox sans autre précaution et ça marche très bien aussi (car je suis le seul utilisateur). La gestion fine des conflits est un gros plus !
    Utilisez Planet, gestion d'entreprise gratuite pour TPE / PME

  3. #3
    Rédacteur/Modérateur

    Merci Nico.

    J'utilise cette soluce pour une petite assoc. pur l'instant pas de gros problèmes parce que les utilisateurs ont peu d'activité.

    Je vais étudier un moyen de détection des conflits, à posteriori.
    ça devrait pas être trop complexe à gérer.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  4. #4
    Responsable Arduino et Systèmes Embarqués

    Super tutoriel avec des essais concluants
    Je me suis juste fait engue#@¤* par un collègue qui partage la DropBox avec moi et qui a vu sa notification de mise à jour clignoter une partie de l'après-midi sur son poste

  5. #5
    Rédacteur/Modérateur

    Merci Fabien !
    Comme je le disais c'est déjà en exploitation dans une asso.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  6. #6
    Rédacteur/Modérateur

    Bonjour
    Bravo pour ce tuto très bien expliqué. Sur le coup, on regrette bien sûr les limites d'accès du système, mais à y bien réfléchir, pour les petites assocs, ce ne doit pas être bien gênant. C'est donc une bonne solution intermédiaire.
    Plus j'avance et plus je sais que je ne sais rien. Et comme j'essaie d'aller loin .....
    Pas de demande d'aide par Mp.... sinon
    Mes tutoriels sur http://jdgayot.developpez.com
    Beaucoup de réponses à vos questions dans la Faq ou dans les tutoriels


  7. #7
    Membre averti
    Super, ce tuto tombe à point nommé.

    J'ai déjà certaines feuilles de calcul (genre budget personnel) que je conserve sur DropBox, ce qui me permet d'en ouvrir de n'importe quel ordinateur la version la plus à jour sans me soucier de la synchro.

    Ça fait six mois que je veux faire la même chose avec la dorsale de ma base Access de gestion professionnelle (à laquelle je suis seul à accéder, mais de trois machines différentes), mais que je n'ai pas eu le temps. Ce tuto va m'épargner des heures de réflexion et de tâtonnements.
    Merci infiniment!

    PS : les liens vers le PDF, l'ePub, etc. semblent rompus ou inexistants...

    Philippe

  8. #8
    Rédacteur/Modérateur

    Merci St-Jean !

    En effet les liens sont rompus , je règle ça ce week-end.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  9. #9
    Nouveau membre du Club
    Bonjour,

    Tout d'abord merci pour tous vos tutos qui permettent de bien progresser...surtout quand on part de zero....

    Cet-fois-ci je bloque sur votre fonction fgAttache()

    j'ai un erreur : 3276 référence d'objet de base de données incorrecte.
    au niveau de la ligne :

    For Each tbl In db.TableDefs


    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
    Function fgAttache() As String
    '--------------------------------------------------------------------------------
    ' Procedure : pgAttache
    ' Author    : Fabrice CONSTANS (MVP)
    ' Date      : 18 / 07 / 2012
    ' Purpose   : Procédure standard d'attachement des tables
    '               Vérifie l'attachement ou le refait
    ' Parametres: Utilise strlstTable qui contient les tables
    '                     strFichierData qui contient le fichier des tables
    ' Return    : chemin de la dorsale
    '----------------------------------------------------------------------------------
    '
       On Error GoTo err_demarrage
     
        Dim db As DAO.Database
        Dim rst As DAO.Recordset        ' pour le test d'attache
        Dim lstTable() As String    ' contient les tables
        Dim i As Integer            ' the Compteur
        Dim tbl As DAO.TableDef
        Dim strChemin As String
        Dim eChemin As String
     
        eChemin = "C"
     
        ' utilise le chemin de la table des paramètres
          strChemin = CDropb.CheminPartage & strFichierData
        ' si le fichier Dorsal n'existe pas on le demande
        If Not FichierExiste(strChemin) Then
            MsgBox "La connexion à la base principale à échouée, " & vbCrLf & " Vous devez indiquer son nouvel emplacement.", vbInformation
            strChemin = SelectionFichier01
        Else
            strChemin = strChemin
        End If
     
        ' sauve le chemin dans la table des paramètres internes
        CDropb.CheminPartage = fFichierExt(strChemin, eChemin)
        ' si user local n'est pas user courant
       If CDropb.Occupe Then
            MsgBox "La base est actuellement utilisée par : " & CDropb.UtilisateurConnecte & vbCrLf & "Faites une tentative ultérieurement.", vbExclamation + vbOKOnly
            ' libération de la classe
            Set CDropb = Nothing
            DoCmd.Quit  'quitte l'application
        End If
        ' Création du fichier, réservation de l'application
        CDropb.CreerFichier
        ' à partir de là on commence les procédures d'attachement sur la dorsale
        lstTable = Split(strlstTable, ";")      ' la liste des tables à traiter
        Set db = CurrentDb
     
        For i = 0 To UBound(lstTable)           ' liste les tables et tente l'ouverture
            Set rst = db.OpenRecordset(lstTable(i), dbOpenSnapshot)
            rst.Close
            Set rst = Nothing
        Next
     
        db.TableDefs.Refresh
        If strChemin = "" Then
            strChemin = db.TableDefs(lstTable(0)).Connect
            strChemin = Right(strChemin, Len(strChemin) - InStr(1, strChemin, ";DATABASE=") - 9)
         End If
     
        fgAttache = fFichierExt(strChemin, eChemin)
     
        Exit Function
     
    err_demarrage:
     
     If err.Number = 3078 Then  ' ne trouve pas la table
            Set tbl = db.CreateTableDef(lstTable(i))
            tbl.Connect = "MS Access;PWD=" & strPassWordBD & ";DATABASE=" & strChemin    'Me.CheminBD '";DATABASE=" &
            tbl.SourceTableName = lstTable(i)
            db.TableDefs.Append tbl
            db.TableDefs(tbl.Name).RefreshLink
            Resume
        End If
     
       For Each tbl In db.TableDefs
          If tbl.Attributes = dbAttachedTable Then
                tbl.Connect = "MS Access;PWD=" & strPassWordBD & ";DATABASE=" & strChemin
                db.TableDefs(tbl.Name).RefreshLink
          End If
        Next
        Resume
     
    End Function


    Si vous avez 2 min pour regarder ça.... je suis preneur.

    Cordialement

  10. #10
    Rédacteur/Modérateur

    Bonjour et merci,

    Essaye de faire une première attache des tables manuellement avec la base en local.

    Ensuite déplace/renomme/supprime cette base et lance l'attache via la procédure.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  11. #11
    Nouveau membre du Club
    Re bonsoir,

    En faisant un "glissé/copié" de la dorsale pour la changer de repertoire : j'ai le message d'erreur.

    Mais en effet si je fais un copié/collé/suprimé tout marche très bien.

    Vraiment bravo. Je n'y comprends rien mais bravo.

    Concernant la détection des conflits (la encore je ne comprends pas l' idée du timer). Pourquoi ne pas mettre une détection unique à la fermeture et une à l'ouverture. Celle de l'ouverture avec un timer de" 15sec" le temps de synchronisation du fichier occupé et de la "création" de sa copie.

    Encore une fois merci de nous faire partager votre " savoir" et surement passion

    Cordialement

  12. #12
    Nouveau membre du Club
    Concernant mon erreur : 3276 référence d'objet de base de données incorrecte.
    En faite si je change l'emplacement de la dorsale 1 fois ça marche. Mais la deuxieme fois ça met l'erreur. Une "variable,objet..." qui ne se réinitialise pas???

    Cordialement.

  13. #13
    Rédacteur/Modérateur

    L'idée du Timer est de laisser le temps au cloud de créer les fichiers de données (du moins le nom du fichier). 15 sec est une valeur standard qui doit être réglé suivant le temps moyen constaté sur les postes et la taille de la base de données. On peut choisir de ne pas mettre de timer dans ce cas la detection du conflit ne sera pas faite.

    Concernant ce comportement, j'ai eu ce problème une fois j'ai decompilé et ça a réglé le problème. Je ne m'explique pas pourquoi à un moment il n'a pas retrouvé la dp.
    Essaye de supprimer carrèment les attaches et de laisser faire l'appli au démarrage.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  14. #14
    Nouveau membre du Club
    Bonjour,
    Pour arriver à ce que vous m'avez conseillé, j'ai tout importé depuis une nouvelle base. Ca marche nickel..
    Merci

  15. #15
    Nouveau Candidat au Club
    Tuto NICKEL
    Bonjour,

    Je suis entrain de jeter un coup d'oeil a ce tuto. Tres bien fait.
    Serait-il possible de poster le fichier "AgaData01.accdb" en brut pour pouvoir debbuger mieux ma petite base.

    Merci encore pour le tuto

    @+

  16. #16
    Rédacteur/Modérateur

    agadata01.accdb n'est qu'un fichier de données, il contient des tables et rien de plus. Je ne vois pas ce qu'il t'apportera. Tu peux le remplacer par n'importe quel fichier de données protégé contenant des tables.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  17. #17
    Membre habitué
    fichier lock ldb
    Bonjour et merci pour ce tuto et cette utilisation intéressante du cloud...
    Une petite question tout de même, pourquoi vous n'utilisez pas le fichier lock classique d'access, le .ldb ? Car si on est connecté à la dorsale qui est dans un espace cloud, le ldb est automatiquement créé et du coup déployé. il suffit donc de vérifier à l'ouverture que ce fichier n'existe pas...
    Et une autre question peut être...est-ce qu'il y a déjà des tutos qui ont été réalisés avec l'utilisation de SQL Azure avec une appli Access locale (et un mode mis en cache pour une utilisation hors connexion...). Je ne trouve pas grand chose là dessus (et le coût d'un hébergement SQL Azure...)
    Merci

    Guen

  18. #18
    Rédacteur/Modérateur

    Bonjour,

    Tu as raté le petit paragraphe IV-B.
    [EDIT] On peut effectivement utiliser le fichier "lock" natif, cependant comme je le stipule dans le paragraphe indiqué, j'ai préféré utiliser un simple fichier texte, non pas que le lock ne permette pas de voir l'utilisateur connecté mais parce que cela m'aurait obligé à embarquer cette gestion. Ce qui n'est pas l'objet du tuto. Libre à toi d'utiliser la méthode que tu souhaites, seule la méthode compte. [\EDIT]

    Pour Azure voir FMS inc ou gainingaccess.net. N'ayant pas l'accès ad-hoc sur Azure je n'ai pas pu tester cette solution. Espérons que cette année ça sera possible.

    Le cout est à l'utilisation, donc difficile à déterminer avec précision.

    Cordialement,
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

  19. #19
    Membre du Club
    Problème avec &
    Bonjour,

    Je suis nouvelle sur le forum et mettre en application votre tutoriel.

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Class_Initialize()
    ' démarre la classe
      vStationLocale = Environ("ComputerName")
      'on fixe le nom de l'utilisateur si celui-ci n'existe pas.
      If vUtilisateurLocal = "" Then
         UtilisateurLocal = vStationLocale & ";" & Environ("UserName")
      End If
    End Sub


    Le débogueur trouve un erreur sur la ligne 6. Et par la suite, à chaque fois que le &amp est utilisé, il y a un erreur. Je ne sais pas trop quoi faire...comment l'adapter. Je constate que personne n'a eu de problème avec ça sur le forum. Je ne comprend pas. J'utilise Access 2010, est-ce pour ça.

    Merci.

  20. #20
    Rédacteur/Modérateur

    Pinaise !!! (crisse de ciboire comme dit chez vous)

    C'est un problème de mise en page au moment de la conversion tutoriel.

    Tous les
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
     &

    doivent être remplacer par des
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
     &


    Il faut un espace avant et après.

    Je corrige ça.
    Miles excuses.
    Détecter les modifications formulaire Cloud storage et ACCESS
    Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
    Visitez mon Blog
    Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie

###raw>template_hook.ano_emploi###