salut à tous
comment Imprimer une table créée par ConstruitTableFichier()?
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)
Puis sur le bloc du corps, clic bouton droit "Code du bloc"
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
23gnNb_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
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
3POUR i = 1 A gnNb_col {"RUB_COL_SansNom"+i} = {"FEN_SansNom4.TABLE_SansNom1._COL"+i} FIN
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.
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)
Merci Mr laurent30s
voilà c'est très simple
je voulais te montrer le code mais tu la publié avant moi
EDIT :
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)
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())?
*
Tu peux déplacer les colonnes avec
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())?
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...
je sais que TableDéplaceColonne() déplace les colonnes mais si en veut qu'une colonne reste toujours a droite
Il y a 2 façons de faire
soit tu déplaces les colonnes
soit dans la requête qui te sert à remplir la table avec ConstruitTableFichier()
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)
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...
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)
-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:
-comment changer la largeur de chaque rubrique?
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
Quand je te dis de changer l'ordre des colonnes dans le SELECT
Je parle de la requête qui permet de remplir la table de la fenêtre, rien à voir avec l'état.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...
L'état se construira comme la table est affichée...
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)
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)
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
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)
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 ?
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
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 !
Partager