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 :

Modification d'une requête pour enlever concaténer les lignes en semi-doublon


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de scully2501
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    184
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 184
    Par défaut Modification d'une requête pour enlever concaténer les lignes en semi-doublon
    Bonjour,

    J'ai créer une requête "ENVOIE_INVIT" qui récupére les données de la table "T_DONNEE_TESTEUR":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT TT.DATE_DATE, TT.NOM_LF, TT.TYPE_HORAIRE, CStr(TH.DEBUT_HORAIRE) AS Expr1, CStr(TH.FIN_HORAIRE) AS Expr2, TT.EMAIL_TESTEUR, TT.METIER, TT.ENTITE, CStr((TT.[EMAIL_CPL] & ";" & TT.[EMAIL_CPL_BINOME] & RecupEmailFacultatif())) AS EMAIL_FACUL
    FROM T_DONNEE_TESTEUR AS TT INNER JOIN T_HORAIRE AS TH ON TT.TYPE_HORAIRE = TH.TYPE_HORAIRE
    WHERE (((TH.DONNEE_HORAIRE) Is Not Null))
    ORDER BY TT.DATE_DATE;
    Cette requête me permet d'avoir la liste de personne par métier à qui je peux envoyer des emails d'invitation avec une date, un lieu, un horaire.
    Mais le résultat n'est pas comme je le voudrais:

    Exemple:
    Nom : Reference.jpg
Affichages : 169
Taille : 86,9 Ko

    Je n'ai pas réussi à trouver comment modifier la requête pour concaténer les emails de la colonne "QUI":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    SI Toute les colonnes sauf "QUI" de ligne 1 = Toute les colonnes sauf "QUI" de la ligne 2 alors
    QUI.value de ligne 1 = QUI.value de ligne 1 &";"& QUI.value de ligne 2
    Suppression de la ligne 2
    SINON
    NE RIEN FAIRE
    FIN SI
    J'ai regardé le FAQ et trouvé ce lien mais je n'arrive pas à manipuler les données de la requête:
    http://access.developpez.com/faq/?pa...es#CreerReqVBA

    J'ai fait un test de ce genre:
    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
    Sub Creation_Requete_Invit()
    Dim qdf As DAO.QueryDef
    Dim rcs As DAO.Recordset
    Dim SQL As String
     
    'SQL = "SELECT TT.DATE_DATE, TT.NOM_LF, TT.TYPE_HORAIRE, TH.DEBUT_HORAIRE, TH.FIN_HORAIRE, TT.EMAIL_TESTEUR, TT.METIER, TT.[EMAIL_CPL], TT.[EMAIL_CPL_BINOME]FROM T_DONNEE_TESTEUR AS TT INNER JOIN T_HORAIRE AS TH ON TT.TYPE_HORAIRE = TH.TYPE_HORAIRE WHERE (((TH.DONNEE_HORAIRE) Is Not Null))ORDER BY TT.DATE_DATE; "
     
     
      ' Référence à la requête
    Set qdf = CurrentDb.QueryDefs("R_ENVOI_INVIT")
     
    SQL = qdf.SQL
     
    Set rcs = qdf.OpenRecordset(SQL) '=> J'ai une erreur à cet endroit et je ne vois pas les données de ma requête donc je pense ne pas avoir compris comment manipuler la reqête
     
    While Not rcs.EOF
    T = rcs.Fields(0).Value
     
    rcs.MoveNext
     
    V = rcs.Fields(0).Value
     
    Wend
     
     
    ' Libération de la référence
    Set qdf = Nothing
     
    End Sub

  2. #2
    Membre Expert
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Par défaut
    Bonjour,
    Quel type d'erreur?
    devant le FROM et ORDER, il manque un espace.

  3. #3
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 135
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    Ce qu'il faut, c'est procéder en deux fois.

    1. Une passe pour trouver toutes les lignes groupées sans les "Qui"
    2. identifier chaque ligne dans la table ;
    3. récupérer et concaténer l'@ mail ;
    4. éliminer les doublons dans la chaine d'@ mail ;
    5. insérer chaque ligne complète dans une nouvelle table (qui est vidée avant chaque traitement) ;
    6. ouvrir la table ou le formulaire cible pour effectuer l'envoi ;
    7. et c'est fini.


    A Helas
    S'il y a un [ ou une ( ou bien une ) ou un ] devant / derrière un mot clé, l'erreur n'est pas levée.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT [MonChamp]FROM MaTable WHERE [ID]=1
    équivaut à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT [MonChamp] FROM MaTable WHERE [ID]=1
    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0

Discussions similaires

  1. [AC-2003] Requête pour sortir tous les enregistrements modifés depuis une date
    Par piercleo dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 07/01/2010, 15h08
  2. Réponses: 0
    Dernier message: 01/04/2009, 10h12
  3. Réponses: 3
    Dernier message: 30/09/2008, 08h42
  4. Réponses: 3
    Dernier message: 25/09/2008, 10h26
  5. une fonction pour enlever les doublons d'un array
    Par secteur_52 dans le forum Delphi
    Réponses: 1
    Dernier message: 27/06/2006, 13h45

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