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 :

Evolution code sur plusieurs bases access


Sujet :

VBA Access

  1. #1
    Membre à l'essai
    Inscrit en
    Août 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 29
    Points : 18
    Points
    18
    Par défaut Evolution code sur plusieurs bases access
    Bonjour a tous,

    Je viens de "presque finir" un petit logiciel (ca me plait bien de dire comme ca) et je voudrais le mettre en test chez plusieurs personnes.

    Chaque personne aura donc la meme interface mais avec SES données dedans...
    Avec toutes leurs infos je vais continuer a faire évoluer une version de l'interface (je ne toucherai pas a la structure des tables).

    Je voudrais donc pouvoir une fois ces évolutions faites pouvoir transmettre la nouvelle interface mais que chacun puisse continuer a utiliser SES données.

    Mon soucis c'est que sous Access, données + interface = 1 fichier.
    Comment faire soit pour passer le fichier et continuer a utiliser les données (hors copier-coller des tables) ? et si possible comment automatiser ceci (on pourrait imaginer qu'a la premiere ouverture de la nouvelle base, on demande s'il y en avait une autre avant et si oui on recupere toutes les données ...)

    Est-ce possible?
    merci d'avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Il faut séparer ton application en deux, comme si on faisait un partage réseau, tout est là : http://dolphy35.developpez.com/artic.../basesreseaux/

    Sauf que la partie dorsale (avec les tables sera sur le poste de l'utilisateur).

    Starec

  3. #3
    Membre à l'essai
    Inscrit en
    Août 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 29
    Points : 18
    Points
    18
    Par défaut
    Merci je viens de regarder ca ...
    C'est ce qu'il me fallait mais je trouve pas ca tres simple (enfin il me semble) pour des utilisateurs ne sachant pas tres bien se servir d'access ...

    Si je comprend bien en fait il faudrait leur fournir 2 fichiers :
    -un fichier données.mbd
    -un fichier interface.mbd

    et a chaque mise a jour je renvoi juste le fichier interface.mbd et apres la j'ai pas trop compris si les utilisateurs devaient lier les tables a chaque fois ou non ...

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Tu as tout compris, voici un conseil :

    Mets la base dorsale avec les tables dans un répertoire nommé Data, et qui se trouve dans le même répertoire que ta base forntale.

    Ensuite dans ta base frontale tu mets un code comme celui-là.
    pour rétablir la liaison, en utilisant un chemin relatif.

    Starec

  5. #5
    Membre à l'essai
    Inscrit en
    Août 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 29
    Points : 18
    Points
    18
    Par défaut
    Bonsoir,

    C'est tres sympa de m'aider car ca m'enleve une bonne épine du pied. merci.

    Il fautr que je mette ce code sur le formulaire qui se lance automatiquement au demarrage c'est ca ? ou alors que je fasse un formulaire qui se lance au demarrage avec ce code et qu'ensuite ca me lance le formulaire qui se lance actuellement au demarrage ?

    Merci beaucoup en tout cas pour les réponses deja apportées et merci d'avance pour les suivantes

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Le mieux est de mettre le code dans une macro AutoExec : http://access.developpez.com/faq/?page=General#autoexec

    Starec

  7. #7
    Membre à l'essai
    Inscrit en
    Août 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 29
    Points : 18
    Points
    18
    Par défaut
    Je vais faire ca de suite....

    Franchement c'est tres sympa de m'aider merci beaucoup ...
    C'est pas comme ca sur tous les forums (enfin vous pouvez venir sur celui des nabaztag je vous assurerai le meme accueil )

  8. #8
    Membre à l'essai
    Inscrit en
    Août 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 29
    Points : 18
    Points
    18
    Par défaut
    De nouveau 2 questions...
    je vois qu'il faut activer : Microsoft DAO 3.x Object Library pas de soucis pour moi, mais est-ce que les personnes a qui je vais envoyer la base access devront l'activer aussi ou est-ce que ca sera automatiquement activer ??
    (sur mon office 2007 c'était activer par defaut )

    Lorsque j'execute le code comme dit ci dessus j'ai le message "la table <nom de la table> existe déjà" et ca m'interromp le code... (franchement je vous cache pas que je comprend absolument pas le code que je met dans mon programme ..)

    Edit : Oups c'est la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    oDb.TableDefs.Append oTbl
    qui coince le tout et genere le message d'erreur

  9. #9
    Membre à l'essai
    Inscrit en
    Août 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 29
    Points : 18
    Points
    18
    Par défaut
    Hello a tous.
    J'essaie toujours de regler ce soucis, est-ce que ca peut venir du fait que je ne mette pas de mot de passe a la base source ? (a priori, selon mes tests, non mais on ne sait jamais)

  10. #10
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Pourrais-t-on savoir comment tu as implémenter le code de la FAQ dans ta base ?

    Ce message "la table <nom de la table> existe déjà" indique que la table n'a pas été supprimée.

    Quand on mot de passe, il faut mettre la ligne que s'il y a un mot de passe, sinon ce n'est pas nécessaire.

    Starec

  11. #11
    Membre à l'essai
    Inscrit en
    Août 2008
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 29
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par Starec Voir le message
    Bonjour

    Pourrais-t-on savoir comment tu as implémenter le code de la FAQ dans ta base ?

    Ce message "la table <nom de la table> existe déjà" indique que la table n'a pas été supprimée.

    Quand on mot de passe, il faut mettre la ligne que s'il y a un mot de passe, sinon ce n'est pas nécessaire.

    Starec
    Bonjour j'ai mis le code comme ca :
    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
    Sub lierToutes()
    Dim strMotPasse As String
    Dim strCheminBd As String
    Dim strConnect As String
    Dim strNomsTables() As String
    Dim strTemp As String
    Dim i As Integer
    Dim oDb As DAO.Database
    Dim oDbSource As DAO.Database
    Dim oTbl As DAO.TableDef
    Dim oTblSource As DAO.TableDef
     
    'Définir mot passe et chemin base de données
    strMotPasse = ""
    ADRESSE = CurrentProject.Path
    ADRESSE = ADRESSE & "\datas\donneesCRM.mdb"
    strCheminBd = ADRESSE
    'Définit la chaine de connexion permettant la liaison des tables
    strConnect = "MS Access;pwd=" & strMotPasse & ";DATABASE=" & strCheminBd
    'Instancie l'objet Database de la base courante
    Set oDb = CurrentDb
    'Instancie l'objet Database de la base protégée
    Set oDbSource = DBEngine.OpenDatabase(strCheminBd, True, True, strConnect)
     
    'Parcours l'ensemble des tables de la base de données protégée
    'et stocke leur nom
    For Each oTblSource In oDbSource.TableDefs
        'ignore les tables system
        If (oTblSource.Attributes And dbSystemObject) = 0 Then
            strTemp = strTemp & oTblSource.Name & "|"
        End If
    Next
    'Ferme la base de données sources (impératif pour la liaison)
    oDbSource.Close: Set oDbSource = Nothing
    'parcours le tableau de noms de tables
    strNomsTables = Split(Left(strTemp, Len(strTemp) - 1), "|")
    For i = 0 To UBound(strNomsTables)
      'Crée une nouvelle table dans la base de données courante
      Set oTbl = oDb.CreateTableDef(strNomsTables(i))
      'Lie les deux tables
      oTbl.Connect = strConnect
      oTbl.SourceTableName = strNomsTables(i)
      'Ajoute la table à la base de données
      oDb.TableDefs.Append oTbl
    Next i
     
    'Rafraichit la liste des tables
    oDb.TableDefs.Refresh
    End Sub
    Avec un call lierToutes dans le code du premier formulaire qui se lance ... j'y suis pas trop arrivé avec la macro autoexec , enfin au lancement du premier formulaire (qui n'utilise aucune table -> 1 champs indépendants pour recuperer la date du jour en vba car il y a une requete sur le premier formulaire et j'avais besoin de cette valeur)

    J'ai fait une boulette quelque part ?

Discussions similaires

  1. [excel] même code sur plusieurs feuilles
    Par sabotage dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/11/2005, 12h23
  2. Requête sur plusieurs bases de données
    Par Oluha dans le forum ASP
    Réponses: 8
    Dernier message: 14/10/2005, 14h57
  3. Comment ecrire du code sur plusieurs lignes?
    Par tooneygirl dans le forum Access
    Réponses: 5
    Dernier message: 15/06/2005, 16h03
  4. requetes BUSINESS OBJECT sur une base ACCESS
    Par greatmaster1971 dans le forum Deski
    Réponses: 1
    Dernier message: 06/10/2004, 14h10
  5. triggers sur plusieurs bases de données
    Par Shabata dans le forum Langage SQL
    Réponses: 2
    Dernier message: 04/05/2004, 10h02

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