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

WinDev Discussion :

Imprimer une table créée par ConstruitTableFichier [WD17]


Sujet :

WinDev

  1. #1
    Membre très actif
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations forums :
    Inscription : Mai 2012
    Messages : 157
    Par défaut Imprimer une table créée par ConstruitTableFichier
    salut à tous
    comment Imprimer une table créée par ConstruitTableFichier()?

  2. #2
    Membre Expert Avatar de laurent30s
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    889
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 889
    Par défaut
    Citation Envoyé par hadaf Voir le message
    salut à tous
    comment Imprimer une table créée par ConstruitTableFichier()?
    Il faut créer un état sur table
    Quand tu es sur la fenêtre où figure la table, dans le menu "Insertion" / "Spécial" / "Bouton état sur table"

    En l'état cet état n'est pas fonctionnel puisqu'on ne peut pas savoir à l'avance les colonnes qui vont être créées par ConstruitTableFichier().

    Tu vas dans la description du tableau de l'état, sur la 1ère et seule colonne et assure toi qu'elle est de type texte.

    Sur la 1ère colonne on va y donner une largeur moyenne pour que toutes les colonnes entrent sur la largeur de l'état.
    Puis on va la cloner autant que la table à de colonne.
    Enfin on attribue le libellé d'entête et le cadrage des valeurs idem à la table d'origine (on ne peut pas récupérer le type puisque la propriété n'est pas disponible dans l'état).

    Dans l'état, clic bouton droit "Code de l'état"
    Dans la section de code "Ouverture de l'état" (pense d'adapter le code en fonction du nom de la fenêtre et de la table)
    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
    gnNb_col est un entier = TableOccurrence(FEN_SansNom4.TABLE_SansNom1,toColonne)
    gnLargeur_totale est un entier = 170
    gnLargeur_moyenne est un entier = PartieEntière(gnLargeur_totale / gnNb_col)
    i est un entier
    nXLib,nYLib,nXRub,nYRub sont des entiers
    nYLib = LIB_COL_SansNom1..Y
    nXLib = LIB_COL_SansNom1..X + gnLargeur_moyenne
    nYRub = RUB_COL_SansNom1..Y
    nXRub = RUB_COL_SansNom1..X + gnLargeur_moyenne
    
    LIB_COL_SansNom1 = {"FEN_SansNom4.TABLE_SansNom1._COL1"}..Libellé
    LIB_COL_SansNom1..Largeur = gnLargeur_moyenne
    RUB_COL_SansNom1..Largeur = gnLargeur_moyenne
    RUB_COL_SansNom1..CadrageHorizontal = {"FEN_SansNom4.TABLE_SansNom1._COL1"}..CadrageHorizontal
    
    POUR i = 2 A gnNb_col
    	ChampClone(LIB_COL_SansNom1,"LIB_COL_SansNom"+i,nXLib,nYLib)
    	nXLib = {"LIB_COL_SansNom"+i}..X + gnLargeur_moyenne
    	{"LIB_COL_SansNom"+i} = {"FEN_SansNom4.TABLE_SansNom1._COL"+i}..Libellé
    	ChampClone(RUB_COL_SansNom1,"RUB_COL_SansNom"+i,nXRub,nYRub)
    	nXRub = {"RUB_COL_SansNom"+i}..X + gnLargeur_moyenne
    	{"RUB_COL_SansNom"+i}..CadrageHorizontal = {"FEN_SansNom4.TABLE_SansNom1._COL"+i}..CadrageHorizontal
    FIN
    Puis sur le bloc du corps, clic bouton droit "Code du bloc"
    Dans la section de code "Avant impression du corps" (pareil pense d'adapter le code en fonction du nom de la fenêtre et de la table)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    POUR i = 1 A gnNb_col
    	{"RUB_COL_SansNom"+i} = {"FEN_SansNom4.TABLE_SansNom1._COL"+i}
    FIN

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2012
    Messages
    49
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Mai 2012
    Messages : 49
    Par défaut
    Bonjour

    Nous venons à l'instant de publier un composant permettant l'impression des tables. Une ligne de code permet d'imprimer n'importe quelle table, y compris donc celles créées par ConstruitTableFichier (qui a été principalement utilisé durant nos tests).

    Il s'appelle clapPrint et est disponible en téléchargement sur notre site.

    Espérant que ça réponde à votre besoin.

    Bon dev.

  4. #4
    Membre Expert Avatar de laurent30s
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    889
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 889
    Par défaut
    Beaucoup plus simple que ce que j'ai proposé hier soir avec la fonction TableImprime()

    Il suffit de placer ce code dans un bouton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    // Spécification des paramètres d'impression : 
    // avec aperçu, en mode paysage
    iAperçu(i100)
    iParamètre(iOrientation, iOrientation_Paysage)
     
    // Impression de la table, sans la date et avec le nombre de pages
    TableImprime(TABLE_SansNom1)

  5. #5
    Membre très actif
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations forums :
    Inscription : Mai 2012
    Messages : 157
    Par défaut
    Merci Mr laurent30s
    voilà c'est très simple
    je voulais te montrer le code mais tu la publié avant moi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    // Spécification des paramètres d'impression : 
    // avec aperçu, en mode paysage
    iAperçu(i100)
    iParamètre(iOrientation, iOrientation_Paysage)
     
    // Impression de la table, sans la date et avec le nombre de pages
    TableImprime(TABLE_SansNom1)
    EDIT :
    une petite remarque concernant les tables sur windev
    *l'ajout des colonnes se fait toujours à droite est ce que je peux le changer à gauche ?
    -est ce que je peux déplacer une colonne à droite (je parle d'une table créée par ConstruitTableFichier())?
    *

  6. #6
    Membre Expert Avatar de laurent30s
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    889
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 889
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    -est ce que je peux déplacer une colonne à droite (je parle d'une table créée par ConstruitTableFichier())?
    Tu peux déplacer les colonnes avec
    TableDéplaceColonne(<Nom de la table> , <Nom de la colonne> , <Indice de la colonne destination>)

    Penses que les colonnes créées par ConstruitTableFichier() portent les noms "_COL1", "_COL2", "_COL3", etc...

  7. #7
    Membre très actif
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations forums :
    Inscription : Mai 2012
    Messages : 157
    Par défaut
    je sais que TableDéplaceColonne() déplace les colonnes mais si en veut qu'une colonne reste toujours a droite

  8. #8
    Membre Expert Avatar de laurent30s
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    889
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 889
    Par défaut
    Citation Envoyé par hadaf Voir le message
    je sais que TableDéplaceColonne() déplace les colonnes mais si en veut qu'une colonne reste toujours a droite
    j'ai du mal à comprendre
    Tu parles de quoi ? de la position dans la cellule ?
    Si c'est ça regarde la propriété CadrageHorizontal...

  9. #9
    Membre très actif
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations forums :
    Inscription : Mai 2012
    Messages : 157
    Par défaut
    je travail toujours sur le même table que tu ma programmer j'ai ajouter quelque code pour l'adapter à mes besoins:
    voilà ma table:


    ce que je souhaite avoir :
    Images attachées Images attachées   

  10. #10
    Membre Expert Avatar de laurent30s
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    889
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 889
    Par défaut
    Il y a 2 façons de faire

    soit tu déplaces les colonnes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    nNb_col est un entier = TableOccurrence(TABLE_SansNom1)
     
    TableDéplaceColonne(TABLE_SansNom1,"_COL1",nNb_col+1)
    TableDéplaceColonne(TABLE_SansNom1,"_COL2",nNb_col)
    soit dans la requête qui te sert à remplir la table avec ConstruitTableFichier()
    dans le SELECT tu classes les colonnes dans l'ordre qui te convient (pense qu'il faut une "," après chaque colonne sauf la dernière)
    ConstruitTableFichier() créera dans la table les colonnes dans l'ordre que tu auras défini...

  11. #11
    Membre très actif
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations forums :
    Inscription : Mai 2012
    Messages : 157
    Par défaut
    Merci
    ce code marche très bien je vais essayé l'autre par ce que j'ai trouvé des problèmes sur l'etat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    nNb_col1 est un entier = TableOccurrence(Table1)
     
    		TableDéplaceColonne(Table1,"_COL2",nNb_col1+99)
    		TableDéplaceColonne(Table1,"_COL1",nNb_col1+100)

  12. #12
    Membre très actif
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations forums :
    Inscription : Mai 2012
    Messages : 157
    Par défaut
    -pour le déplacement des colonnes sur fenêtre ça marche très bien mais sur etat la table revient comme avant.

    j'ai utiliser le code d'impression que tu m'a donnée :

    code etat
    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
    gnNb_col est un entier = TableOccurrence(FEN_1.FI_SansNom1.Table1,toColonne)
    gnLargeur_totale est un entier = 170
    gnLargeur_moyenne est un entier = PartieEntière(gnLargeur_totale / gnNb_col)
    i est un entier
    nXLib,nYLib,nXRub,nYRub sont des entiers
    nYLib = LIB_Colonne1..Y
    nXLib = LIB_Colonne1..X + gnLargeur_moyenne
    nYRub = RUB_Colonne1..Y
    nXRub = RUB_Colonne1..X + gnLargeur_moyenne
     
    LIB_Colonne1 = {"FEN_1.FI_SansNom1.Table1._COL1"}..Libellé
    LIB_Colonne1..Largeur = gnLargeur_moyenne
    RUB_Colonne1..Largeur = gnLargeur_moyenne
    RUB_Colonne1..CadrageHorizontal = {"FEN_1.FI_SansNom1.Table1._COL1"}..CadrageHorizontal
     
    POUR i = 2 A gnNb_col
    	ChampClone(LIB_Colonne1,"LIB_Colonne"+i,nXLib,nYLib)
    	nXLib = {"LIB_Colonne"+i}..X + gnLargeur_moyenne
    	{"LIB_Colonne"+i} = {"FEN_1.FI_SansNom1.Table1._COL"+i}..Libellé
    	ChampClone(RUB_Colonne1,"RUB_Colonne"+i,nXRub,nYRub)
    	nXRub = {"RUB_Colonne"+i}..X + gnLargeur_moyenne
    	{"RUB_Colonne"+i}..CadrageHorizontal = {"FEN_1.FI_SansNom1.Table1._COL"+i}..CadrageHorizontal
    FIN

    code bloc:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    POUR i = 1 A gnNb_col
    	{"RUB_Colonne"+i} = {"FEN_1.FI_SansNom1.Table1._COL"+i}
    FIN
    -comment changer la largeur de chaque rubrique?

  13. #13
    Membre Expert Avatar de laurent30s
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    889
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 889
    Par défaut
    Quand je te dis de changer l'ordre des colonnes dans le SELECT
    soit dans la requête qui te sert à remplir la table avec ConstruitTableFichier()
    dans le SELECT tu classes les colonnes dans l'ordre qui te convient (pense qu'il faut une "," après chaque colonne sauf la dernière)
    ConstruitTableFichier() créera dans la table les colonnes dans l'ordre que tu auras défini...
    Je parle de la requête qui permet de remplir la table de la fenêtre, rien à voir avec l'état.

    L'état se construira comme la table est affichée...

  14. #14
    Membre très actif
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations forums :
    Inscription : Mai 2012
    Messages : 157
    Par défaut
    je m'excuse vraiment
    mais j'arrive pas à manipuler tous ses requêtes j'ai essayé mais je reçois des erreurs.

    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    LOCAL
     
    sMaRequete est une chaîne
    sdRQ1 est une Source de Données
    sdRQ2 est une Source de Données
     
     
    sMaRequete = [
    SELECT
    ROUND(TRUNC( ( MONTHS_BETWEEN(SYSDATE ,DatNss )/ 12) ),0) AS Age
    FROM
    C1
    WHERE 
    c1.situat NOT LIKE 'Q'
    AND	c1.situat NOT LIKE 'D'
    AND	c1.situat NOT LIKE 'N'
    AND  C1  NOT LIKE '%4%'
    GROUP BY Age 
    ORDER BY Age DESC
    ]
    // exécution de la requête 1
    SI PAS HExécuteRequêteSQL(sdRQ1,sMaRequete) ALORS Erreur(HErreurInfo); RETOUR
     
    sMaRequete = [
    SELECT
    Categ,	
    Genre,
    SUM(Total) AS TL,
    ]	
    POUR TOUT sdRQ1
    	sMaRequete += RC + "	Sum(Age_" + sdRQ1.Age + ") AS  Ó" + sdRQ1.Age + ","		
    FIN
    sMaRequete = Gauche(sMaRequete,Taille(sMaRequete)-1)
    sMaRequete += RC + [
     
    FROM
    (
    SELECT 
    Categ,	
    Genre,
    ]	
    POUR TOUT sdRQ1
    	sMaRequete += RC + "			Sum(CASE Age WHEN " + sdRQ1.Age + " THEN Compt_age ELSE 0 END) AS Age_" + sdRQ1.Age + ","		
    FIN
    sMaRequete += RC + [
    SUM(Compt_age) AS Total
    FROM
    (
    SELECT
    CASE C1
    WHEN 1 THEN 'Nouveaux'
    	WHEN 2 THEN 'Redoublants'
    		WHEN 3 THEN 'Triplants'
    		END AS Categ,
    		Genre,
    		TRUNC( ( MONTHS_BETWEEN(SYSDATE ,DatNss )/ 12) ) AS Age,
    		COUNT(*) AS Compt_age
    		FROM
    		C1
    		WHERE 
    		c1.situat NOT LIKE 'Q'
    		AND	c1.situat NOT LIKE 'D'
    		AND	c1.situat NOT LIKE 'N'
    		AND  C1  NOT LIKE '%4%'
    		GROUP BY Categ,Genre,age
    		) AS a
    		GROUP BY Categ,Genre
    		UNION
    		SELECT DISTINCT
    		'Nouveaux' AS Categ,
    		'G' AS Genre,
    		]	
    		POUR TOUT sdRQ1
    			sMaRequete += RC + "				0 AS Age_" + sdRQ1.Age + ","		
    		FIN
    		sMaRequete += RC + [
    		0 AS Total
    		FROM
    		C1
    		UNION
    		SELECT DISTINCT
    		'Nouveaux' AS Categ,
    		'F' AS Genre,
     
    		]	
    		POUR TOUT sdRQ1
    			sMaRequete += RC + "				0 AS Age_" + sdRQ1.Age + ","		
    		FIN
    		sMaRequete += RC + [
    		0 AS Total
    		FROM
    		C1	
    		UNION
    		SELECT DISTINCT
    		'Redoublants' AS Categ,
    		'F' AS Genre,
    		]	
    		POUR TOUT sdRQ1
    			sMaRequete += RC + "				0 AS Age_" + sdRQ1.Age + ","		
    		FIN
    		sMaRequete += RC + [
    		0 AS Total
    		FROM
    		C1	
    		UNION
    		SELECT DISTINCT
    		'Redoublants' AS Categ,
    		'G' AS Genre,
    		]	
    		POUR TOUT sdRQ1
    			sMaRequete += RC + "				0 AS Age_" + sdRQ1.Age + ","		
    		FIN
    		sMaRequete += RC + [
    		0 AS Total
    		FROM
    		C1	
    		UNION
    		SELECT DISTINCT
    		'Triplants' AS Categ,
    		'F' AS Genre,
    		]	
    		POUR TOUT sdRQ1
    			sMaRequete += RC + "				0 AS Age_" + sdRQ1.Age + ","		
    		FIN
    		sMaRequete += RC + [
    		0 AS Total
    		FROM
    		C1
    		UNION
    		SELECT DISTINCT
    		'Triplants' AS Categ,
    		'G' AS Genre,
    		]	
    		POUR TOUT sdRQ1
    			sMaRequete += RC + "				0 AS Age_" + sdRQ1.Age + ","		
    		FIN
    		sMaRequete += RC + [
    		0 AS Total
    		FROM
    		C1
    		)
    		GROUP BY Categ,Genre
    		]
     
    		// ajout de la ligne total
    		sMaRequete += RC + [
    		UNION
    		SELECT 
    		Categ,	
    		Genre2 AS Genre,
    		SUM(Compt_age) AS TL,
    		]	
    		POUR TOUT sdRQ1
    			sMaRequete += RC + "Sum(CASE Age WHEN " + sdRQ1.Age + " THEN Compt_age ELSE 0 END) AS Age" + sdRQ1.Age + ","		
    FIN
    sMaRequete = Gauche(sMaRequete,Taille(sMaRequete)-1)
    sMaRequete += RC + [
    FROM
    (
    SELECT
    'TOTAL' AS Categ,
    '' AS Genre2,
    TRUNC( ( MONTHS_BETWEEN(SYSDATE ,DatNss )/ 12) ) AS Age,
    COUNT(*) AS Compt_age
    FROM
    C1
    		WHERE 
    		c1.situat NOT LIKE 'Q'
    		AND	c1.situat NOT LIKE 'D'
    		AND	c1.situat NOT LIKE 'N'
    		AND  C1  NOT LIKE '%4%'
    GROUP BY Categ,Genre2,age
    ) AS a
    GROUP BY Categ,Genre
    ]
     
    // exécution de la requête 2
    SI PAS HExécuteRequêteSQL(sdRQ2,sMaRequete) ALORS Erreur(HErreurInfo); RETOUR
    // rempli la table
    ConstruitTableFichier(Table1,sdRQ2,taRemplirTable)
    TableAffiche(Table1,taCourantEnreg)

  15. #15
    Membre Expert Avatar de laurent30s
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    889
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 889
    Par défaut
    J'espère ne pas m'être trompé, je ne l'ai pas testé, dis moi si c'est bon...

    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    LOCAL
     
    sMaRequete est une chaîne
    sdRQ1 est une Source de Données
    sdRQ2 est une Source de Données
     
     
    sMaRequete = [
    SELECT
    	ROUND(TRUNC( ( MONTHS_BETWEEN(SYSDATE ,DatNss )/ 12) ),0) AS Age
    	FROM
    	C1
    WHERE 
    	c1.situat NOT LIKE 'Q'
    AND	c1.situat NOT LIKE 'D'
    AND	c1.situat NOT LIKE 'N'
    AND  	C1  NOT LIKE '%4%'
    GROUP BY Age 
    ORDER BY Age DESC
    ]
    // exécution de la requête 1
    SI PAS HExécuteRequêteSQL(sdRQ1,sMaRequete) ALORS Erreur(HErreurInfo); RETOUR
     
    sMaRequete = [
    SELECT
    	SUM(Total) AS TL,
    ]	
    POUR TOUT sdRQ1
    	sMaRequete += RC + "	Sum(Age_" + sdRQ1.Age + ") AS  Ó" + sdRQ1.Age + ","		
    FIN
    sMaRequete += RC + [
    	Categ,	
    	Genre
    FROM
    	(
    		SELECT 
    			Categ,	
    			Genre,
    ]	
    POUR TOUT sdRQ1
    	sMaRequete += RC + "			Sum(CASE Age WHEN " + sdRQ1.Age + " THEN Compt_age ELSE 0 END) AS Age_" + sdRQ1.Age + ","		
    FIN
    sMaRequete += RC + [
    			SUM(Compt_age) AS Total
    		FROM
    			(
    				SELECT
    					CASE C1
    						WHEN 1 THEN 'Nouveaux'
    						WHEN 2 THEN 'Redoublants'
    						WHEN 3 THEN 'Triplants'
    					END AS Categ,
    					Genre,
    					TRUNC( ( MONTHS_BETWEEN(SYSDATE ,DatNss )/ 12) ) AS Age,
    					COUNT(*) AS Compt_age
    				FROM
    					C1
    				WHERE 
    					c1.situat NOT LIKE 'Q'
    				AND	c1.situat NOT LIKE 'D'
    				AND	c1.situat NOT LIKE 'N'
    				AND  C1  NOT LIKE '%4%'
    				GROUP BY Categ,Genre,age
    			) AS a
    		GROUP BY Categ,Genre
    		UNION
    		SELECT DISTINCT
    			'Nouveaux' AS Categ,
    			'G' AS Genre,
    ]	
    POUR TOUT sdRQ1
    	sMaRequete += RC + "			0 AS Age_" + sdRQ1.Age + ","		
    FIN
    sMaRequete += RC + [
    			0 AS Total
    		FROM
    			C1
    		UNION
    		SELECT DISTINCT
    			'Nouveaux' AS Categ,
    			'F' AS Genre,
    ]	
    POUR TOUT sdRQ1
    	sMaRequete += RC + "			0 AS Age_" + sdRQ1.Age + ","		
    FIN
    sMaRequete += RC + [
    			0 AS Total
    		FROM
    			C1	
    		UNION
    		SELECT DISTINCT
    			'Redoublants' AS Categ,
    			'F' AS Genre,
    ]	
    POUR TOUT sdRQ1
    	sMaRequete += RC + "			0 AS Age_" + sdRQ1.Age + ","		
    FIN
    sMaRequete += RC + [
    			0 AS Total
    		FROM
    			C1	
    		UNION
    		SELECT DISTINCT
    			'Redoublants' AS Categ,
    			'G' AS Genre,
    ]	
    POUR TOUT sdRQ1
    	sMaRequete += RC + "			0 AS Age_" + sdRQ1.Age + ","		
    FIN
    sMaRequete += RC + [
    			0 AS Total
    		FROM
    			C1	
    		UNION
    		SELECT DISTINCT
    			'Triplants' AS Categ,
    			'F' AS Genre,
    ]	
    POUR TOUT sdRQ1
    	sMaRequete += RC + "			0 AS Age_" + sdRQ1.Age + ","		
    FIN
    sMaRequete += RC + [
    			0 AS Total
    		FROM
    			C1
    		UNION
    		SELECT DISTINCT
    			'Triplants' AS Categ,
    			'G' AS Genre,
    ]	
    POUR TOUT sdRQ1
    	sMaRequete += RC + "			0 AS Age_" + sdRQ1.Age + ","		
    FIN
    sMaRequete += RC + [
    			0 AS Total
    		FROM
    			C1
    	)
    GROUP BY Categ,Genre
    ]
     
    // ajout de la ligne total
    sMaRequete += RC + [
    UNION
    SELECT 
    	SUM(Compt_age) AS TL,
    ]	
    POUR TOUT sdRQ1
    	sMaRequete += RC + "	Sum(CASE Age WHEN " + sdRQ1.Age + " THEN Compt_age ELSE 0 END) AS Age" + sdRQ1.Age + ","		
    FIN
    sMaRequete += RC + [
    	Categ,	
    	Genre2 AS Genre
    FROM
    	(
    		SELECT
    			'TOTAL' AS Categ,
    			'' AS Genre2,
    			TRUNC( ( MONTHS_BETWEEN(SYSDATE ,DatNss )/ 12) ) AS Age,
    			COUNT(*) AS Compt_age
    		FROM
    			C1
    		WHERE 
    			c1.situat NOT LIKE 'Q'
    		AND	c1.situat NOT LIKE 'D'
    		AND	c1.situat NOT LIKE 'N'
    		AND  C1  NOT LIKE '%4%'
    		GROUP BY Categ,Genre2,age
    	) AS a
    GROUP BY Categ,Genre
    ]
     
    // exécution de la requête 2
    SI PAS HExécuteRequêteSQL(sdRQ2,sMaRequete) ALORS Erreur(HErreurInfo); RETOUR
    // rempli la table
    ConstruitTableFichier(Table1,sdRQ2,taRemplirTable)
    TableAffiche(Table1,taCourantEnreg)

  16. #16
    Membre très actif
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations forums :
    Inscription : Mai 2012
    Messages : 157
    Par défaut
    je ne trouve pas les mots pour te remercier

    -il me reste quelque retouche



    -Auparavant, je renomme ces deux colonne avec ce code:
    mais maintenant je pense que l'ordre des colonnes va poser des problèmes puis ce qu'il ne sera pas stable ?


    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
    SI {"TABLE1._COL1",indChamp}[Table1] = "TOTAL" ALORS
    	{"TABLE1",indChamp}[Table1]..CouleurFond = JauneClair
    	{"TABLE1._COL1",indChamp}[Table1] ="ÇáãÌãæÚ"
    FIN
     
    SI {"TABLE1._COL2"}[Table1] = "F" ALORS
    	{"TABLE1._COL2"}[Table1]..Couleur=iMagentaClair
    	 {"TABLE1._COL2"}[Table1]="ÅäÇË"
    FIN
     
    SI {"TABLE1._COL2"}[Table1] = "G" ALORS
    	{"TABLE1._COL2"}[Table1]..Couleur=BleuClair
    	{"TABLE1._COL2"}[Table1]="ÐßæÑ"
    FIN
    SI {"TABLE1._COL1"}[Table1] = "Nouveaux" ALORS
    	{"TABLE1._COL1"}[Table1]..CouleurFond=VertClair
    	{"TABLE1._COL1"}[Table1]="ÌÏÏ"
    FIN
    SI {"TABLE1._COL1"}[Table1] = "Redoublants" ALORS
    	{"TABLE1._COL1"}[Table1]..CouleurFond=RougePastel
    	{"TABLE1._COL1"}[Table1]="ãßÑÑæä"
    FIN
    SI {"TABLE1._COL1"}[Table1] = "Triplants" ALORS
    	{"TABLE1._COL1"}[Table1]..CouleurFond=GrisClair
    	{"TABLE1._COL1"}[Table1]="ãËáËæä"
    FIN

  17. #17
    Membre Expert Avatar de laurent30s
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    889
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 889
    Par défaut
    Toujours pas testé, dis moi si c'est bon...

    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    LOCAL
     
    sMaRequete est une chaîne
    sdRQ1 est une Source de Données
    sdRQ2 est une Source de Données
     
     
    sMaRequete = [
    SELECT
    	ROUND(TRUNC( ( MONTHS_BETWEEN(SYSDATE ,DatNss )/ 12) ),0) AS Age
    	FROM
    	C1
    WHERE 
    	c1.situat NOT LIKE 'Q'
    AND	c1.situat NOT LIKE 'D'
    AND	c1.situat NOT LIKE 'N'
    AND  	C1  NOT LIKE '%4%'
    GROUP BY Age 
    ORDER BY Age DESC
    ]
    // exécution de la requête 1
    SI PAS HExécuteRequêteSQL(sdRQ1,sMaRequete) ALORS Erreur(HErreurInfo); RETOUR
     
    sMaRequete = [
    SELECT
    	SUM(Total) AS TL,
    ]	
    POUR TOUT sdRQ1
    	sMaRequete += RC + "	Sum(Age_" + sdRQ1.Age + ") AS  Ó" + sdRQ1.Age + ","		
    FIN
    sMaRequete += RC + [
    	Genre,
    	Categ
    FROM
    	(
    		SELECT 
    			Categ,	
    			Genre,
    ]	
    POUR TOUT sdRQ1
    	sMaRequete += RC + "			Sum(CASE Age WHEN " + sdRQ1.Age + " THEN Compt_age ELSE 0 END) AS Age_" + sdRQ1.Age + ","		
    FIN
    sMaRequete += RC + [
    			SUM(Compt_age) AS Total
    		FROM
    			(
    				SELECT
    					CASE C1
    						WHEN 1 THEN 'Nouveaux'
    						WHEN 2 THEN 'Redoublants'
    						WHEN 3 THEN 'Triplants'
    					END AS Categ,
    					Genre,
    					TRUNC( ( MONTHS_BETWEEN(SYSDATE ,DatNss )/ 12) ) AS Age,
    					COUNT(*) AS Compt_age
    				FROM
    					C1
    				WHERE 
    					c1.situat NOT LIKE 'Q'
    				AND	c1.situat NOT LIKE 'D'
    				AND	c1.situat NOT LIKE 'N'
    				AND  C1  NOT LIKE '%4%'
    				GROUP BY Categ,Genre,age
    			) AS a
    		GROUP BY Categ,Genre
    		UNION
    		SELECT DISTINCT
    			'Nouveaux' AS Categ,
    			'G' AS Genre,
    ]	
    POUR TOUT sdRQ1
    	sMaRequete += RC + "			0 AS Age_" + sdRQ1.Age + ","		
    FIN
    sMaRequete += RC + [
    			0 AS Total
    		FROM
    			C1
    		UNION
    		SELECT DISTINCT
    			'Nouveaux' AS Categ,
    			'F' AS Genre,
    ]	
    POUR TOUT sdRQ1
    	sMaRequete += RC + "			0 AS Age_" + sdRQ1.Age + ","		
    FIN
    sMaRequete += RC + [
    			0 AS Total
    		FROM
    			C1	
    		UNION
    		SELECT DISTINCT
    			'Redoublants' AS Categ,
    			'F' AS Genre,
    ]	
    POUR TOUT sdRQ1
    	sMaRequete += RC + "			0 AS Age_" + sdRQ1.Age + ","		
    FIN
    sMaRequete += RC + [
    			0 AS Total
    		FROM
    			C1	
    		UNION
    		SELECT DISTINCT
    			'Redoublants' AS Categ,
    			'G' AS Genre,
    ]	
    POUR TOUT sdRQ1
    	sMaRequete += RC + "			0 AS Age_" + sdRQ1.Age + ","		
    FIN
    sMaRequete += RC + [
    			0 AS Total
    		FROM
    			C1	
    		UNION
    		SELECT DISTINCT
    			'Triplants' AS Categ,
    			'F' AS Genre,
    ]	
    POUR TOUT sdRQ1
    	sMaRequete += RC + "			0 AS Age_" + sdRQ1.Age + ","		
    FIN
    sMaRequete += RC + [
    			0 AS Total
    		FROM
    			C1
    		UNION
    		SELECT DISTINCT
    			'Triplants' AS Categ,
    			'G' AS Genre,
    ]	
    POUR TOUT sdRQ1
    	sMaRequete += RC + "			0 AS Age_" + sdRQ1.Age + ","		
    FIN
    sMaRequete += RC + [
    			0 AS Total
    		FROM
    			C1
    	)
    GROUP BY Categ,Genre
    ]
     
    // ajout de la ligne total
    sMaRequete += RC + [
    UNION
    SELECT 
    	SUM(Compt_age) AS TL,
    ]	
    POUR TOUT sdRQ1
    	sMaRequete += RC + "	Sum(CASE Age WHEN " + sdRQ1.Age + " THEN Compt_age ELSE 0 END) AS Age" + sdRQ1.Age + ","		
    FIN
    sMaRequete += RC + [
    	Genre2 AS Genre,
    	Categ
    FROM
    	(
    		SELECT
    			'TOTAL' AS Categ,
    			'' AS Genre2,
    			TRUNC( ( MONTHS_BETWEEN(SYSDATE ,DatNss )/ 12) ) AS Age,
    			COUNT(*) AS Compt_age
    		FROM
    			C1
    		WHERE 
    			c1.situat NOT LIKE 'Q'
    		AND	c1.situat NOT LIKE 'D'
    		AND	c1.situat NOT LIKE 'N'
    		AND  C1  NOT LIKE '%4%'
    		GROUP BY Categ,Genre2,age
    	) AS a
    GROUP BY Categ,Genre
    ]
     
    // exécution de la requête 2
    SI PAS HExécuteRequêteSQL(sdRQ2,sMaRequete) ALORS Erreur(HErreurInfo); RETOUR
    // rempli la table
    ConstruitTableFichier(Table1,sdRQ2,taRemplirTable)
    TableAffiche(Table1,taCourantEnreg)

  18. #18
    Membre très actif
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations forums :
    Inscription : Mai 2012
    Messages : 157
    Par défaut
    oui c bon pour le déplacement des colonnes

    -seulement réorganiser categ:
    -Nouveaux
    -Redoublants
    -Triplants
    -Auparavant, je renomme ces deux colonne avec ce code en haut:
    mais maintenant je pense que l'ordre des colonnes va poser des problèmes puis ce qu'il ne sera pas stable ?

  19. #19
    Membre Expert Avatar de laurent30s
    Homme Profil pro
    Inscrit en
    Novembre 2007
    Messages
    889
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 889
    Par défaut
    Je ne suis pas sur d'avoir compris ton besoin, mais si c'est l'adaptation du code que tu as envoyé ce matin. Voila à tester...

    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
    nNb_col est un entier = TableOccurrence(TABLE1,toColonne)
     
    SI {"TABLE1._COL"+nNb_col,indChamp}[Table1] = "TOTAL" ALORS
    	{"TABLE1",indChamp}[Table1]..CouleurFond = JauneClair
    	{"TABLE1._COL"+nNb_col,indChamp}[Table1] ="ÇáãÌãæÚ"
    FIN
     
    SI {"TABLE1._COL"+(nNb_col-1)}[Table1] = "F" ALORS
    	{"TABLE1._COL"+(nNb_col-1)}[Table1]..Couleur=iMagentaClair
    	 {"TABLE1._COL"+(nNb_col-1)}[Table1]="ÅäÇË"
    FIN
     
    SI {"TABLE1._COL"+(nNb_col-1)}[Table1] = "G" ALORS
    	{"TABLE1._COL"+(nNb_col-1)}[Table1]..Couleur=BleuClair
    	{"TABLE1._COL"+(nNb_col-1)}[Table1]="ÐßæÑ"
    FIN
    SI {"TABLE1._COL1"}[Table1] = "Nouveaux" ALORS
    	{"TABLE1._COL"+nNb_col}[Table1]..CouleurFond=VertClair
    	{"TABLE1._COL"+nNb_col}[Table1]="ÌÏÏ"
    FIN
    SI {"TABLE1._COL"+nNb_col}[Table1] = "Redoublants" ALORS
    	{"TABLE1._COL"+nNb_col}[Table1]..CouleurFond=RougePastel
    	{"TABLE1._COL"+nNb_col}[Table1]="ãßÑÑæä"
    FIN
    SI {"TABLE1._COL"+nNb_col}[Table1] = "Triplants" ALORS
    	{"TABLE1._COL"+nNb_col}[Table1]..CouleurFond=GrisClair
    	{"TABLE1._COL"+nNb_col}[Table1]="ãËáËæä"
    FIN

  20. #20
    Membre très actif
    Homme Profil pro
    Inscrit en
    Mai 2012
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations forums :
    Inscription : Mai 2012
    Messages : 157
    Par défaut
    oui c génial pour la nomination des colonnes
    mais après test je relève quelque bug


    -comme le montre l'image la colonne (categ) n'est pas stable comme avant en plus le classement est changer au lieu de (nouveaux-redoublants-triplants)
    -comment changer le titre de colonne ?
    Pardonnez-moi s'il vous plaît !

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 1
    Dernier message: 11/08/2011, 16h04
  2. Je n'arrive pas à supprimer une Table créée par VBA
    Par ac264 dans le forum VBA Access
    Réponses: 2
    Dernier message: 01/02/2010, 11h55
  3. Réponses: 4
    Dernier message: 24/07/2007, 13h12
  4. [REQUETE] Configuration de la table créée par une requete
    Par NiKoTiNe dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 08/05/2007, 09h37
  5. Inersert dans une table crée par les cardinalités [*,*]
    Par drasalmed dans le forum Langage SQL
    Réponses: 2
    Dernier message: 06/05/2007, 19h27

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