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 :

Regroupement de données issues de plusieurs tables


Sujet :

VBA Access

  1. #1
    Membre habitué Avatar de taz devil
    Homme Profil pro
    Responsable d'un système d'information métier
    Inscrit en
    Avril 2012
    Messages
    298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Responsable d'un système d'information métier
    Secteur : Alimentation

    Informations forums :
    Inscription : Avril 2012
    Messages : 298
    Points : 141
    Points
    141
    Par défaut Regroupement de données issues de plusieurs tables
    Bonsoir
    Voila je possède 3 tables similaire en tout point et issue de 3 opérateurs différents .
    Ces 3 tables possèdent chacune un champ: date_derniére_modif ; un champ : numcarte " Qui est sans doublons " ; un champ : nom ; un champ : prénom
    en faite , je voudrais regroupé les données des 3 tables en 1 seule de manière a ce que les données qui seront sur la table soit la derniére donnée enregistrer
    des 3 tables .
    exemple
    table 1 : 06/07/2015 14:40:05 3 Nabhane chris

    table 2 : 06/07/2015 10:40:05 3 Nabhane christou

    table 3 : 06/07/2015 20:40:05 3 Nabhane christophe

    La table de regroupement dois avoir

    06/07/2015 20:40:05 3 Nabhane christophe

    merci a vous
    il faut de tout pour faire un monde

  2. #2
    Membre expérimenté Avatar de bernardmichel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2004
    Messages
    1 181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 181
    Points : 1 591
    Points
    1 591
    Par défaut
    Bonjour !

    En tout premier lieu, je suis étonné:

    • De la définition de ton champ "NumCarte" à "Sans doublon". En effet n'est-il pas possible à un client d'effectuer plusieurs paiements ?
    • De l'absence d'un numéro d'identification du client (qui, lui, est unique)


    Actuellement, c'est donc sur la base du champ "NumCarte" que tu vas faire la sélection afin que tu puisses t’assurer que le nom soit complet (Christophe et non pas Chris ni Christou). Je suppose ici que tu disposes d'une "tblClient" où ce "NumCarte" est relié aux champs Nom & Prénom.

    Suggestion :
    Chaque client peut être amené à effectuer plusieurs paiements. Cela implique que le NumCarte sera dupliqué autant de fois qu'il y aura de paiement. Je suppose donc que dans ta 4ème table, ce champ n'est pas "Sans doublon" ?
    Dès lors, je te suggère – dans les 4 tables - d'insérer un d’insérer un champ supplémentaire « IdClient » qui sera un « Numéroauto » et surtout, qui sera la clé de ta table.

    Solutions :

    1. Soit tu crées trois requêtes ajout avec des critères évitant les doublons de paiement,
    2. Soit - ce serait mon choix - tu passes par un code employant des Recordset qu'il est parfois plus facile de régler avec finesse


    En espérant que tout cela te soit utile...

    Cordialement,

    Bernard
    Nous n'héritons pas la Terre de nos ancêtres, nous l'empruntons à nos enfants, prenons-en soin !
    (proverbe amérindien)

  3. #3
    Membre habitué Avatar de taz devil
    Homme Profil pro
    Responsable d'un système d'information métier
    Inscrit en
    Avril 2012
    Messages
    298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Responsable d'un système d'information métier
    Secteur : Alimentation

    Informations forums :
    Inscription : Avril 2012
    Messages : 298
    Points : 141
    Points
    141
    Par défaut J ai mal décrit ma demande
    Bonjour Bernard
    en faite je dispose dans la sociéte ou je travail d un systéme qui s appel Diayma qui est un systeme de payement numérique
    on est confronté a un probléme nous avons beaucoup de carte en circulation qui ne sont pas identifié d ou la présence des 3 tables chacune des tables correspondant a un site de vente.

    les tables sont pas des recueilles des transactions effectué mais juste des tables d identifications des clients
    idée étant que lorsqu un client se présente avec sa carte que l opérateur a la caisse puisse entré les données simples qui sont:

    Nom prénom téléphone et émail tout en sachant que lorsque ce client va effectué son achat son numéro de carte sera connu
    c est la raison pour laquelle j ai stipulé que le numcarte soit unique il peut aussi représenté idclient . Je pense pas qu il soit néccessaire de creer un
    champ numauto .

    dans exemple
    table 1 : 06/07/2015 14:40:05 3 Nabhane chris

    table 2 : 06/07/2015 10:40:05 3 Nabhane christou

    table 3 : 06/07/2015 20:40:05 3 Nabhane christophe

    La table de regroupement dois avoir

    06/07/2015 20:40:05 3 Nabhane christophe


    le regroupement se fait a partir de la date . Je part dans option que le dernier enregistrement saisie des 3 est le bon ici dans l exemple en sa basant sur la plus veille date "06/07/2015 20:40:05" c est enregistrement qui doit figuré dans la table de regroupement .

    Bien sur aprés le traitement de cette nouvelle table cette table de regroupement va écrasé les tables des points de ventes cela dans un soucis harmonisé les différentes bases

    merci
    il faut de tout pour faire un monde

  4. #4
    Membre expérimenté Avatar de bernardmichel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2004
    Messages
    1 181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 181
    Points : 1 591
    Points
    1 591
    Par défaut
    Donc, si je comprend bien, tu souhaites simplement faire une compilation des tes 3 tables dans une 4ème sur la base de la dernière entrée pour chaque "numcarte".
    Ceci pour pouvoir renvoyer la "table officielle" à chaque point de vente et "écraser" la leur ?

    Si c'est bien le cas, les solutions que je te donnais sont applicables.
    Nous n'héritons pas la Terre de nos ancêtres, nous l'empruntons à nos enfants, prenons-en soin !
    (proverbe amérindien)

  5. #5
    Membre habitué Avatar de taz devil
    Homme Profil pro
    Responsable d'un système d'information métier
    Inscrit en
    Avril 2012
    Messages
    298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Responsable d'un système d'information métier
    Secteur : Alimentation

    Informations forums :
    Inscription : Avril 2012
    Messages : 298
    Points : 141
    Points
    141
    Par défaut c est exactement sa
    Solutions :

    Soit tu crées trois requêtes ajout avec des critères évitant les doublons de paiement,
    Soit - ce serait mon choix - tu passes par un code employant des Recordset qu'il est parfois plus facile de régler avec finesse


    Moi probléme c est que question vba je suis proche du zéro pourrait tu m indique ou trouvé un code employant le recordset car j ai essaye les requuéte ajout
    ce fut un désastre

    merci encore
    il faut de tout pour faire un monde

  6. #6
    Membre expérimenté Avatar de bernardmichel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2004
    Messages
    1 181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 181
    Points : 1 591
    Points
    1 591
    Par défaut
    J'ai besoin:
    • Du nom de tes 4 tables,
    • Des noms de tous les champs, avec leur formats respectifs (String, Integer, Long, etc.)
    Nous n'héritons pas la Terre de nos ancêtres, nous l'empruntons à nos enfants, prenons-en soin !
    (proverbe amérindien)

  7. #7
    Membre expérimenté Avatar de bernardmichel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2004
    Messages
    1 181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 181
    Points : 1 591
    Points
    1 591
    Par défaut
    Hello !

    J'ai bien reçu tes bases et les ai reliées à la base Maj.
    Par contre, je ne vois pas de champ pour stocker une date, dans aucune table... là, je ne comprends plus ???

    Car, je te cite:
    le regroupement se fait a partir de la date
    Où vais-je, où courre-je et dans quel état j'hère... :-)
    Nous n'héritons pas la Terre de nos ancêtres, nous l'empruntons à nos enfants, prenons-en soin !
    (proverbe amérindien)

  8. #8
    Membre habitué Avatar de taz devil
    Homme Profil pro
    Responsable d'un système d'information métier
    Inscrit en
    Avril 2012
    Messages
    298
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Responsable d'un système d'information métier
    Secteur : Alimentation

    Informations forums :
    Inscription : Avril 2012
    Messages : 298
    Points : 141
    Points
    141
    Par défaut Mille millard de sabor c l effet cervolant
    bonsoir
    je plaide coupable les bases doivent toutes avoir le champ "date_modif " pour qu on puisse savoir laquelle est la derniére modif

    mille excuse
    il faut de tout pour faire un monde

  9. #9
    Membre expérimenté Avatar de bernardmichel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2004
    Messages
    1 181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 181
    Points : 1 591
    Points
    1 591
    Par défaut
    Alors, aurais-tu un exemple de table - avec données - où figurent lesdites dates ?
    Merci d'avance !

    C'est l'effet cerf-volant qui a encore frappé :-)
    Nous n'héritons pas la Terre de nos ancêtres, nous l'empruntons à nos enfants, prenons-en soin !
    (proverbe amérindien)

  10. #10
    Membre expérimenté Avatar de bernardmichel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2004
    Messages
    1 181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 181
    Points : 1 591
    Points
    1 591
    Par défaut
    Pour clore ce post, voici le code qui fonctionne:
    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
    Public Function MajMainTbl()
    Dim rstSrce     As DAO.Recordset
    Dim rstDest     As DAO.Recordset
    Dim sql         As String
    Dim Z           As Integer
    Dim I           As Integer
     
    ' Mise à jour du champ "Modif" de la "tblBasePrincipale" depuis les 3 autres...
        For Z = 1 To 3
     
            ' On ouvre le recordset de la table de destination (tblBasePrincipale)
            Set rstDest = CurrentDb.OpenRecordset("SELECT * FROM tblBasePrincipale ORDER BY NumCarte")
            rstDest.MoveLast
            rstDest.MoveFirst
     
            ' On ouvre le recordset de la table source (tblBase_2)
            Set rstSrce = CurrentDb.OpenRecordset("SELECT * FROM tblBase_" & Z & " ORDER BY NumCarte")
     
            ' On explore la table source (tblBase_1 à _3)
            With rstSrce
                While Not .EOF
                    ' On teste si la ligne de la table source existe déjà dans la table de destination
                    For I = 1 To rstDest.RecordCount
                        If !NumCarte = rstDest!NumCarte Then
                            If !Modif > rstDest!Modif Then  ' On teste si la "modif" source est > que la "modif" destination
                                rstDest.Edit                ' Si la valeur de la source est supérieure à celle de la destination, on modifie
                                    rstDest!Modif = !Modif
                                rstDest.Update
                            End If
                        End If
                        rstDest.MoveNext
                    Next I
    Suite:
                rstDest.MoveFirst   ' On retourne au premier enregistrement de la table de destination
                .MoveNext           ' On passe à l'enregistrement suivant dans la table source
                Wend
            End With
        Next Z
     
    ' Ajout de nouveaux clients à la "tblBasePrincipale" depuis les 3 autres...
        For Z = 1 To 3
            sql = "INSERT INTO tblBasePrincipale ( NumCarte, Montants, Modif ) " & _
                  "SELECT tblBase_" & Z & ".NumCarte, tblBase_" & Z & ".Montants, tblBase_" & Z & ".Modif " & _
                  "FROM tblBase_" & Z & " " & _
                  "WHERE (((tblBase_" & Z & ".[NumCarte]) Not In (Select [NumCarte] From tblBasePrincipale)))"
            CurrentDb.Execute (sql)
        Next Z
     
    ' Rapport visuel pour indiquer le nombre de lignes ajoutées
        I = DCount("NumCarte", "tblBasePrincipale", "isnull(Nom)")
        If I > 0 Then
            MsgBox "Après la mise à jour de la base principale, " & I & _
                   IIf(I > 1, " lignes sont ", " ligne est ") & "à compléter."
            ' ... et là, tu peux ouvrir le formulaire de tes clients
            ' pour renseigner les différents champs de ta tblBasePrincipale
        End If
    End Function
    Merci de cliquer
    Nous n'héritons pas la Terre de nos ancêtres, nous l'empruntons à nos enfants, prenons-en soin !
    (proverbe amérindien)

Discussions similaires

  1. [MySQL] Intercallage et affichage avec des données issues de plusieurs tables SQL
    Par vinceom92 dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 02/03/2014, 14h37
  2. [MySQL] des données affichées issues de plusieurs tables
    Par paillon dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 25/06/2013, 14h00
  3. Réponses: 2
    Dernier message: 21/02/2007, 11h22
  4. Réponses: 1
    Dernier message: 27/10/2006, 12h17
  5. faire un menu contextuel pour données issue d'1 table
    Par electrosat03 dans le forum Access
    Réponses: 2
    Dernier message: 27/02/2006, 19h41

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