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

Requêtes et SQL. Discussion :

concaténation suite à une analyse croisée [AC-2003]


Sujet :

Requêtes et SQL.

  1. #1
    Membre régulier
    Inscrit en
    Février 2009
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 188
    Points : 89
    Points
    89
    Par défaut concaténation suite à une analyse croisée
    bonjour,
    j'ai créé une analyse croisée avec :
    entête de colone : les lignes de bus
    entête de ligne : les arrêts de bus
    valeur : les lignes de bus

    donc je me retrouve avec pour chaque arrêts les lignes qui y passent et forcément je me retrouve avec des champ vides puisque toutes les lignes ne passent pas aux mêmes arrêts

    exemple résultat:
    arret1 : 02 vide vide 65 vide vide vide 78 49 vide 56
    arret2 : 04 89 vide T75

    comment faire pour concaténer en supprimant les champs vide pour que le résultat donne

    arret1 : 02 65 78 49 56 avec ( 02 65 78 49 56 dans un même champ )
    arret2 : 04 89 T75

    j'ai regarder les différents posts sur la concaténation ou les tuto mais je n'arriva pas à adapter tout cela à mon cas !?

    merci par avance

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 643
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 643
    Points : 34 351
    Points
    34 351
    Par défaut
    salut,
    dans un premier temps tu stockes le résultat de ton analyse croisée dans une table temporaire
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * INTO TableTempo FROM NomdeMaRequeteCroisee;
    à partir de laquelle tu pourras faire une concaténation en utilisant le script proposé dans la
    http://access.developpez.com/sources...QLLigneColonne

  3. #3
    Membre régulier
    Inscrit en
    Février 2009
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 188
    Points : 89
    Points
    89
    Par défaut
    merci mais je n'arrive pas à adapter le script de la faq à mon cas

    en pièce jointe un imprim écran de la table tampon et le but est :

    champ1 champ2
    ABATT 04
    ALSAC 07
    ANDRE 04 06
    ANSAL 03

    merci

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 643
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 643
    Points : 34 351
    Points
    34 351
    Par défaut
    c'est encore plus simple alors :

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT ARGE_CODE, Replace(Nz([03],'') & ' ' & Nz([04],'') & ' ' & Nz([05],'') ... , '  ', ' ') AS Concat FROM TableTempo0

    par contre, je doute que passer par la table d'analyse croisée soit forcément utile pour concaténer ensuite les champs... d'autant plus que c'est fastidieux de se taper tous les champs de cette manière dans la requête de concaténation...

  5. #5
    Membre régulier
    Inscrit en
    Février 2009
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 188
    Points : 89
    Points
    89
    Par défaut
    bon ok

    je suis reparti d'une table plus classique ( voir pièce jointe )

    voici mon module

    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
    Public Function RecupLignesArrets(ARRE_CODE As String) As String
    Dim res As DAO.Recordset
    Dim Db As DAO.Database
    Dim SQL As String
    'Selectionne les lignes
    SQL = "SELECT LIGN_CODE FROM Tabl_0 WHERE ARRE_CODE=" & ARRE_CODE
    Set res = CurrentDb.OpenRecordset(SQL)
    'Concatene les différents enregistrement
    While Not res.EOF
    RecupLignesArrets = RecupLignesArrets & res.Fields(0).Value & " "
    res.MoveNext
    Wend
    'Enleve le dernier espace
    RecupLignesArrets = Left(RecupLignesArrets, Len(RecupLignesArrets) - 1)
    'libere la mémoire
    Set res = Nothing
    End Function
    voici ma requête sql:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT DISTINCT Tabl_0.ARRE_CODE, RecupLignesArrets(ARRE_CODE) AS Lignes
    FROM Tabl_0;
    mais voici le résultat:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Erreur d'exécution '3061
    Trop peu de paramètres. 1 attendu
    suite au débogage ça bloque sur:
    CODE]Set res = CurrentDb.OpenRecordset(SQL)[[/CODE]

    DAO 3.6 est bien cocher dans les préférences

    que manque-t'il alors ?

    merci

  6. #6
    Membre régulier
    Inscrit en
    Février 2009
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 188
    Points : 89
    Points
    89
    Par défaut
    ok il manquait Chr(34)

    voici la modif:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SQL = "SELECT LIGN_CODE FROM Tabl_0 WHERE ARRE_CODE=" & _
    Chr(34) & ARRE_CODE & Chr(34)
    merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2007] Etat a partir d'une analyse croisée
    Par aida75 dans le forum VBA Access
    Réponses: 3
    Dernier message: 07/10/2009, 04h27
  2. Code inverser une analyse croisée issu de la FAQ
    Par xycoco dans le forum VBA Access
    Réponses: 3
    Dernier message: 09/10/2008, 09h08
  3. Delta entre deux années pour une Analyse croisée.
    Par xodblux dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 29/08/2008, 19h45
  4. création d'1 table à partir du resultat d'une analyse croisée
    Par lauri dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 27/10/2007, 14h45
  5. Comment faire une analyse croisée sous MySQL ?
    Par jcachico dans le forum Requêtes
    Réponses: 1
    Dernier message: 05/12/2005, 18h32

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