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 :

Interaction entre deux BD access


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 34
    Par défaut Interaction entre deux BD access
    Salut tout le monde

    Je viens de developper sous Access une application qui traite les données sur les deportations. On vient de m'apprendre qu'il doit y avoir une application centralisée et une application dans chaque region; il y a 4 regions. Les deux applications ont la meme structure de table, mais il n' y a que l'application regionale qui puisse saisir les donnees sur les deportations pour ensuite envoyer une mise a jour a l'application centralisée. Ce que je vous demande, comment je peux proceder ou si vous connaissez un truc qui pourrait me tirer d;affaire.

    Pour etre plus precis, comment exporter toutes les donnees de l'application regionale et les importer dans la''plication centralisee sans probleme?
    Merci

  2. #2
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Par défaut
    Voici comment je procède pour gérer un problème similaire :
    dans l’application régionale (Région_i_Soft.mdb)
    - les données « à centraliser » sont logées dans une Région_i_Data.mdb attachée à Région_i_Soft.mdb
    - un bouton dont le click provoque l’envoi d’un mail (OutLook) à l’adresse centrale avec, en fichier joint, la Région_i_Data.mdb


    dans l’application Centrale (CentraleSoft.mdb)
    - les données « à centraliser » sont logées dans une Région_i_Data.mdb attachée à CentraleSoft.mdb
    - un bouton dont le click provoque
    l’importation du fichier joint (en remplacement du précédent devenu caduc)
    l’ouverture d’un formulaire qui permet de filtrer les mises à jour « acceptables »

  3. #3
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 34
    Par défaut
    salut,

    Je suis ton raisonnement, mais je me demande si c'est valable pour les 4 regions. est-ce que c'est possible d'avoir des codes.
    merci

  4. #4
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Par défaut
    Bien sûr, sans problème.
    Je prépare, je te reviens après 20 heures.

  5. #5
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 34
    Par défaut
    merci beaucoup

  6. #6
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Par défaut
    Voici le code que j'emploie pour attacher les tables.
    J'appelle la fonction dans la macro Autoexec.
    Comme cela prend du temps, le processus ne s'accomplit que si on détecte que cela vaut la peine (par exemple si les DB ont changé de localisation)
    NB Dans xxxSoft.mdb, j'ai une requête qui s'appelle "QueryTechnique" (peu importe son contenu)

    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
    Public Function AttacheData()
    Dim Q As DAO.QueryDef
    Dim sql As String
    Dim db As Database
    Dim tdfLoop As TableDef
    Dim CheminSoft As String
    Dim CheminData As String
    Dim DbAttachéeActuelle As String
    On Error Resume Next ' ex si une table se trouvait dans Data sans être attachée dans soft
    CheminSoft = CurrentDb.Name
    CheminData = Left(CheminSoft, Len(CheminSoft) - 8) & "data.mdb"
    'Déterminer la Data attachée actuelle
    sql = "SELECT TOP 1 MSysObjects.Database  FROM MSysObjects ORDER BY MSysObjects.Database DESC;"
    Set Q = CurrentDb.QueryDefs("QueryTechnique")
    Q.sql = sql
    DbAttachéeActuelle = DLookup("Database", "QueryTechnique")
    If DbAttachéeActuelle = CheminData Then GoTo Fin  'le répertoire n'a pas été changé
    'pour attacher les tables de data
    Set db = OpenDatabase(CheminData)
    For Each tdfLoop In db.TableDefs
    If Left(tdfLoop.Name, 4) <> "MSys" Then
    DoCmd.DeleteObject acTable, tdfLoop.Name
    DoCmd.TransferDatabase acLink, "Microsoft Access", CheminData, acTable, tdfLoop.Name, tdfLoop.Name
    End If
    Next tdfLoop
    db.Close
    Fin:
    End Function
    Public Function CheminData()
    ' softXXX.mdb --> dataXXX.mdb ou 1 seule DB
    Dim db As Database
    Dim CheminSoft As String
    Dim i As Integer
     
    Set db = CurrentDb()
    CheminSoft = db.Name
    i = InStr(1, CheminSoft, "soft", 1)
    If i <> 0 Then
    CheminData = Left(CheminSoft, i - 1) & "Data" & _
                     Mid(CheminSoft, i + 4, Len(CheminSoft) - i - 3)
    Else
    CheminData = CheminSoft
    End If
     
    db.Close
     
    End Function
    Voici un exemple de code pour expédier la xxxdata par mail

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Envoyer_Click()
    Me.Requery
    Call EnvoyerData("claude.leloup@tvcablenet.be")
    End Sub
    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
    Public Function EnvoyerData(Adresse As String)
     '   EnvoyerData("claude.leloup@tvcablenet.be")
    'envoie une copie de la xxxDATA.mdb par mail à ClaudeLELOUP
      Dim MonOutlook As Object
      Dim MonMessage As Object
      Dim FichierAttaché As String
      Dim Response
      Dim Personalisation
      Dim i As Integer
      FichierAttaché = CheminData
     'ouvrir outlook
      Call OuvrirOutlook
      Set MonOutlook = CreateObject("Outlook.Application") 'ouvrir une session outlook
      Set MonMessage = MonOutlook.createitem(0) 'ouvrir une structure de message
      MonMessage.To = Adresse
      MonMessage.Subject = "Envoi d'une Data"
      MonMessage.Body = CheminData & " " & Now()
      MonMessage.Attachments.Add FichierAttaché
      MonMessage.send
    Set MonOutlook = Nothing
    End Function
    Public Sub OuvrirOutlook()
    On Error Resume Next
    Dim ret As Long
    ret = Shell("C:\Program Files\Microsoft Office\OFFICE11\OUTLOOK.EXE", vbNormalFocus) 'version 2003
    ret = Shell("outlook.exe", vbNormalFocus) 'version 2000
    End Sub
    Voici un exemple de code pour récupérer la xxxData.mdb reçue
    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
    Private Sub David_Click()
    On Error GoTo erreur
    Dim objoutlook As Outlook.Application
    Dim olns As Outlook.NameSpace
    Dim mItem As Outlook.MailItem
    Dim att As Outlook.Attachment
    Dim fld As Outlook.MAPIFolder
    'Création de l'objet Outlook
    Set objoutlook = CreateObject("Outlook.application")
    'Récupération de l'espace de nom d'outlook
    Set olns = objoutlook.GetNamespace("MAPI")
    'Récupération du répertoire "boite de réception" par défault
    Set fld = olns.GetDefaultFolder(olFolderInbox)
    'importer le fichier joint dans le répertoire actuel
    For Each mItem In fld.Items
        For Each att In mItem.Attachments
            If att.FileName = "BasketPersoDavidData.mdb" Then
            att.SaveAsFile CurrentProject.Path & "\" & att.FileName
            End If
        Next att
    Next mItem
    'supprimer les anciennes tables de David
    DoCmd.DeleteObject acTable, "SignalétiqueDavid"
    DoCmd.DeleteObject acTable, "PrestationsDavid"
    'attacher les tables de David
    DoCmd.TransferDatabase acLink, "Microsoft Access", _
                      CurrentProject.Path & "\BasketPersoDavidData.mdb", acTable, _
                      "Signalétique", "SignalétiqueDavid"
    DoCmd.TransferDatabase acLink, "Microsoft Access", _
                      CurrentProject.Path & "\BasketPersoDavidData.mdb", acTable, _
                      "Prestations", "PrestationsDavid"
    'détecter les différences éventuelles entre les signalétiques
    If DCount("clé", "DiffGabyDavidSignalétique") <> 0 Then
    DoCmd.OpenForm "ComparaisonSignalétique"
    End If
    'détecter les propositions d'équipe
    If DCount("Datum", "DiffGabyDavidPrestations") <> 0 Then
    DoCmd.OpenForm "PropositionEquipe"
    Else
    MsgBox "Il n'y a pas de proposition de David", vbExclamation, "Importation des Propositions d'équipe"
    End If
    Exit Sub
    erreur:
    Select Case err.number
    Case 2046 'la table xxxDavid n'existe pas
    Resume Next
    End Select
    End Sub
    NB J'ai récupéré ceci de diverses applications

    A ta disposition si besoin d'aide.

  7. #7
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 34
    Par défaut
    J'apprécie beaucoup et je vous en remercie. je vais implementer et je vous tiendrai au courant de tout

    Merci

  8. #8
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Par défaut
    Dans ma réponse, j'ai oublié de spécifier les références nécessaires et peut-être des API.
    Je suis occupé à créer un modèle réduit pour vérifier la complétude (Access 2000).
    Je te reviens

  9. #9
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Par défaut
    Le zip est trop lourd, j'essaye d'envoyer par message personnel.
    Bonne chance

  10. #10
    Membre averti
    Inscrit en
    Décembre 2007
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 34
    Par défaut
    Je vois qu'il y a deux problemes:

    1. c'est qu'en cliquant sur envoyer data, si la personne n'a pas un compte sur outlook, ca ne fonctionnera pas. est-ce qu'on ne peut pas utiliser hotmail ou yahoo au lieu d'outlook, ou du moins je prefere recuperer le fichier et l'envoyer soit par mail soit sur un support quelconque (cle usb, ou cd)

    2. il ya qu'une seule table avec un seul champs. dans mon application, j'ai plusieurs tables liees ayant plusieurs champs:
    Voici les tables que j'ai
    a. tblfich
    b. tblindividu,
    c. tbldeportation
    d. tblvoyage
    e. tbldominikani
    f.tblFemme
    g.tblenfant
    h.tblavoirenfant


    ce sont les tables de transaction

    si vous voulez avoir plus d'explication sur les champs et les relations qui lient les tables, je pourrai vous envoyer

  11. #11
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 596
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 80
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 596
    Par défaut
    1 La solution que je vous ai fait parvenir suppose Outlook comme logiciel de courrier. Si vos utilisateurs n’en disposent pas … oubliez.

    2 Ce qui est envoyé, ce n’est pas une table mais la totalité de la DB dans laquelle on a logé toutes les tables alimentées par la région.
    Je ne comprends pas : « tables de transaction ».

    Si c’est du bénévolat, vous pouvez m’envoyer la documentation. Je contribuerai volontiers.

Discussions similaires

  1. Interaction entre deux applications
    Par Josy dans le forum C++
    Réponses: 4
    Dernier message: 17/11/2006, 12h27
  2. [C#] interactions entre deux WebUserControl
    Par owtee dans le forum ASP.NET
    Réponses: 2
    Dernier message: 31/10/2006, 09h16
  3. Réponses: 1
    Dernier message: 15/09/2006, 16h23
  4. AdoQuery:Transfert d'enregistrements entre deux bases access
    Par jnc dans le forum Bases de données
    Réponses: 8
    Dernier message: 28/01/2006, 13h39
  5. [VB .Net][Forms] Interaction entre deux forms
    Par plasticgoat dans le forum Windows Forms
    Réponses: 7
    Dernier message: 24/08/2005, 13h14

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