Bonjour à tous,
Voilà je bosse sous Delphi 7 j'ai un tableau (voir pièces jointes) et j'aimerai faire une différence de couleurs. A chaque commande différente je met change de couleurs.
Sur mon exemple en pièce jointe cela ferait :
1° ligne en blanc
3 lignes suivantes en gris
Voici ma requête me permettant d'afficher mon tableau :
Sergio Master m'a aidé dans cette discussion
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SQL.Add('SELECT colxcol, cdexent,CAST(0 AS SMALLINT) AS REGROUPER, NUMXCOL FROM ENTXRES E JOIN COLXRES C ON NUMXENT=NUMXCOL'); SQL.Add('WHERE CODXENT =:cod '); SQL.Add('and TOUXENT =:tou '); SQL.Add('and MARXENT =:mar '); SQL.Add('and FLAXCOL ='+QuotedStr('7') ); SQL.Add('and (REFXCOL is not null) group by CDEXENT, COLXCOL, NUMXENT, NUMXCOL');
A utiliser ma requête pour gérer une colonne couleur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 SQL.Add('WITH C1 AS (select CDEXENT,NUMXENT from ENTXRES GROUP BY CDEXENT,NUMXENT)'); SQL.Add(', C2 AS (SELECT CDEXENT,NUMXENT,ROWNUM AS RN FROM C1)'); SQL.Add('select COLXCOL, E.CDEXENT,CAST(0 AS SMALLINT) AS REGROUPER ,MAX(c2.RN) AS COLCOULEUR, NUMXCOL'); SQL.Add('from ENTXRES E JOIN COLXRES C ON E.NUMXENT=C.NUMXCOL JOIN C2 ON C2.CDEXENT=E.CDEXENT AND C2.NUMXENT=E.NUMXENT'); SQL.Add('JOIN C2 ON C2.NUMXENT=C1.NUMXENT'); SQL.Add('where CODXENT =:cod '); SQL.Add('and TOUXENT =:tou '); SQL.Add('and MARXENT =:mar '); SQL.Add('and refxcol is not null'); SQL.Add('and FLAXCOL ='+QuotedStr('7') ); // <-plus joli pour pas se planter avec les '' SQL.Add('group by E.CDEXENT, C.COLXCOL, E.NUMXENT, NUMXCOL'); SQL.Add('order by E.CDEXENT, C.COLXCOL');
POur qu'en fonction de cette colonne couleur je modifie les couleurs de mes lignes :
Cependant cela ne fonctionne pour le moment pas. Mais nous ne sommes pas sûr de l'utilisation de RowNum sous Oracle...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 if Odd(dbgrid_select.DataSource.DataSet.FieldByName('COLCOULEUR').asinteger) then dbgrid_select.Canvas.Brush.Color:=clRed else dbgrid_select.Canvas.Brush.Color:=clWindow; x_cmd := dbgrid_select.DataSource.DataSet.FieldByName('CDEXENT').AsString;
Avez vous des idées pour ma requête ?
Partager