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 :

Mise en forme des libellés de colonne dans une requête croisée


Sujet :

Requêtes et SQL.

  1. #1
    Membre actif
    Homme Profil pro
    Retraité
    Inscrit en
    février 2012
    Messages
    249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Bâtiment

    Informations forums :
    Inscription : février 2012
    Messages : 249
    Points : 266
    Points
    266
    Par défaut Mise en forme des libellés de colonne dans une requête croisée
    Bonjour,
    Je crée la requête RC composée de l'union de plusieurs requêtes et requêtes croisées.
    Je ne suis pas satisfait du libellé que j'obtiens pour les en-tête de colonnes (ligne grise).

    voici ce que j'obtiensNom : VueObtenue.png
Affichages : 44
Taille : 7,4 Ko
    voici ce que je désire obtebirNom : VueDesirée.png
Affichages : 42
Taille : 6,4 Ko
    c'est à dire passer la ligne 1 (titre1) à la place des libellés obtenus (créés automatiquement par la requête R0)

    Je joins ma base dans l'espoir que quelqu'un trouve une idée.

    Ici les données sont un peu abstraites mais en réalité les 'titre1' sont des compagnies d'assurance et les 'titre2' sont les biens assurés.

    Le libellé 'A - 1' obtenu devient : 'GROUPAMA - MAISON DANS LE VILLAGE', la requête me sort 32 colonnes en vrai, ça fait large !
    Mon objectif est de réduire la largeur des colonnes en écrivant dans le Libellé : 'GROUPAMA' et en dessous 'MAISON DANS LE VILLAGE'.

    Merci par avance pour vos solutions.
    Fichiers attachés Fichiers attachés
    Un travail qui plait est à moitié fait.

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    14 955
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 14 955
    Points : 22 747
    Points
    22 747
    Par défaut
    Bonjour.

    Access n'autorise pas que 2 colonnes ait le même nom.

    Solution suggérée, faire cela dans un tableau croisé Excel, 100 fois plus puissant et souple.

    Donc tu exportes tes données sources et après tu fais les regroupements dans Excel.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Modérateur

    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    14 955
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 14 955
    Points : 22 747
    Points
    22 747
    Par défaut
    Autre idée plus complexe selon moi.

    Faire un rapport alimenté par la requête. Tu peux mettre alors les étiquettes que tu veux en haut de tes colonnes.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  4. #4
    Membre actif
    Homme Profil pro
    Retraité
    Inscrit en
    février 2012
    Messages
    249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Bâtiment

    Informations forums :
    Inscription : février 2012
    Messages : 249
    Points : 266
    Points
    266
    Par défaut
    Merci Marot_r pour tes suggestions,
    j'ai oublié de préciser qu'en vrai cette requête est lancée en fonction de la compagnie d'assurance,
    mais je peux aussi demander toutes les compagnies,
    donc le nombre de colonnes comme les libellés ne sont pas figés,
    c'est en fonction de la demande.

    La solution Excel me fais peur, je ne maitrise pas du tout.

    La solution Rapport sera difficile à gérer ne serait-ce que par le nombre de colonnes et la largeur de celles-ci.

    Je ne perds pas espoir.
    Un travail qui plait est à moitié fait.

  5. #5
    Modérateur

    Homme Profil pro
    Inscrit en
    octobre 2005
    Messages
    14 955
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : octobre 2005
    Messages : 14 955
    Points : 22 747
    Points
    22 747
    Par défaut
    Pour la solution Rapport, est-ce que tu as un nombre maximal de colonnes connu ?

    Pour la solution Excel, les tableaux croisés ressemblent aux requêtes croisées dynamiques, en mieux et sont je trouve assez accessibles.
    L'interface se fait par glisser/déplacer et une fois montés ils gèrent eux-même les ajouts ou suppressions de lignes et de colonnes.
    Rien à programmer.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  6. #6
    Membre actif
    Homme Profil pro
    Retraité
    Inscrit en
    février 2012
    Messages
    249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Bâtiment

    Informations forums :
    Inscription : février 2012
    Messages : 249
    Points : 266
    Points
    266
    Par défaut
    Merci pour ta réponse,
    pour le rapport, j'ai 34 colonnes maxi aujourd'hui, mais ce n'est pas figé, si dans un mois je change d'assurance, il y aura une colonne en plus.
    Pour Excel je vais essayé le glisser/déplacer ça je devrai y arriver et puis voir ce que ça donne au point de vue modification.

    Sinon, j'avance du coté table et légende de champ,
    je m'explique, la table accepte des légendes identiques pour plusieurs champs,
    j'ai essayé en mettant des légendes identiques à tous les champs de la table T_0 la requête Rligne affiche en libellé ces légendes.
    En mettant la requête Rligne en premier dans la requête union RC, ça fonctionne Si je supprime R1 et R2 de cette requête.
    Là je bloque.

    Autre piste, la création d'une table avec les données de la requête RC sans R0 et en légende des champs de cette table la requête R0. Je pense y arriver avec des FOR et des MOVENEXT.

    Fini pour ce soir.
    Cordialement
    Un travail qui plait est à moitié fait.

  7. #7
    Membre actif
    Homme Profil pro
    Retraité
    Inscrit en
    février 2012
    Messages
    249
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Bâtiment

    Informations forums :
    Inscription : février 2012
    Messages : 249
    Points : 266
    Points
    266
    Par défaut
    Bonjour,
    Alors le glisser/déplacer c'est super, j'en ai profité pour relooker la requête, on dirait une œuvre d'art, MAIS c'est tout fait à la main.
    Ce que je cherche c'est du dynamicus automaticus.

    Bonne nouvelle car ce matin j'arrive à tromper Access, je lui fait écrire des colonnes qui ont le même libellé !
    Avec Excel j'avais en plus fusionné ces colonnes mais là bonjour pour le faire avec Access.

    Voilà le code à mettre dans un module de la base :
    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
     Sub Utilisation()
        If TestTable("T_RC") Then
            DoCmd.Close acTable, "T_RC"
            DoCmd.DeleteObject acTable, "T_RC"
        End If
        CurrentDb.Execute "SELECT RC.* INTO T_RC FROM RC;" '    crée la table "T_RC" à partir de la requête "RC"
        ChangeLegendeChamp "T_RC"
    End Sub
     
    Sub ChangeLegendeChamp(strNomTable As String)
    Dim Rs As DAO.Recordset
    Dim I As Integer
    Dim sChamp As String
    Dim sLegende As String
        Set Rs = CurrentDb.OpenRecordset(strNomTable)
            With Rs
                For I = 2 To .Fields.Count - 1
                    sChamp = .Fields(I).Name
                    sLegende = .Fields(I)
                    setCaption strNomTable, sChamp, sLegende
                Next
                .Delete '        supprime cette ligne, elle ne servait qu'à créer les légendes des champs.
                .Close
            End With
        Set Rs = Nothing
    End Sub
     
    Public Sub setCaption(strNomTable, strNomChamp, strLegende)
    Dim pr As DAO.Property
    On Error GoTo err_setCaption
        CurrentDb.TableDefs(strNomTable).Fields(strNomChamp).Properties("Caption").Value = strLegende
    exit_setCaption:
        Exit Sub
    err_setCaption:
        If Err.Number = 3270 Then
            Set pr = CurrentDb.TableDefs(strNomTable).Fields(strNomChamp).CreateProperty("Caption", dbText, strLegende)
            CurrentDb.TableDefs(strNomTable).Fields(strNomChamp).Properties.Append pr
        Else
            MsgBox Err.Number & ": " & Err.Description, vbCritical, "MyApp"
            Resume exit_setCaption
        End If
    End Sub
     
    Function TestTable(strNomTable As String) As Boolean
    Const TABLETYPE = 1
        If DLookup("Type", "MSysObjects", BuildCriteria("Type", dbInteger, TABLETYPE) & " AND " & BuildCriteria("Name", dbText, strNomTable)) = 1 Then
            TestTable = True
        Else
            TestTable = False
        End If
    End Function
    Les noms des champs restent différents, mais les légendes ont maintenant des noms identiques pour certaines.

    Merci Marot_r pour tes idées.
    A bientôt
    Cordialement
    Un travail qui plait est à moitié fait.

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

Discussions similaires

  1. ajouter colonne dans une requête croisée
    Par Mike1971 dans le forum Requêtes et SQL.
    Réponses: 14
    Dernier message: 05/04/2021, 14h43
  2. Renommer des colonnes dans une requête SQL en utilisant bcp
    Par Polochon_77 dans le forum Développement
    Réponses: 2
    Dernier message: 14/01/2012, 18h50
  3. Réponses: 1
    Dernier message: 25/01/2011, 14h52
  4. Utiliser des ALIAS de colonnes dans une jointure
    Par mbzhackers dans le forum SQL
    Réponses: 4
    Dernier message: 31/03/2008, 10h27
  5. Réponses: 4
    Dernier message: 26/03/2008, 09h43

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