Powerbuilder pour les completement Geeks !

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 26-09-2008 13:47:26

Nyphel  
Membre Power Geek
Lieu: Grenoble
Date d'inscription: 06-05-2008
Messages: 253
Pépites: 12
Banque: 529,705,333,097,693

[RESOLU] Problème de regroupement de donnés selon une date

Bonjour,

Dans ma datawindow, je reçois une liste de rows.
Pour chaque row, j'ai une colonne "date_passage" qui est du type datetime.
Je souhaite regrouper mes rows selon la "date_passage", en ne prenant en compte que la partie date et pas la partie time.

Voici mon jeu de données :

Code:

DAT_PASSAGE           A      B      C             
 
23/11/07 17:25:43     1     105     MTT
23/11/07 17:25:49     1     103     MTT         
23/11/07 17:25:49     2     223     MTT         
23/11/07 17:25:51     1     105     MTT         
23/11/07 17:25:56     2     213     MTT
...       
10/02/08 10:11:12     1     132     MTT         
10/04/08 10:11:12     1     132     MTT         
...           
21/06/08 03:00:00     1     132     MTT         
21/06/08 10:11:12     1     132     MTT         
...      
29/06/08 03:00:00     1     132     MTT         
29/06/08 10:11:12     1     132     MTT         
...        
16/07/08 03:00:00     1     132     MTT         
16/07/08 19:03:05     1     132     MTT                            
...

Voici comment est déclarée ma colonne :

http://www.nyphel.com/screens/columns.JPG



Et voici comment est construite ma datawindow :

http://www.nyphel.com/screens/design.JPG


Mon problème c'est que mes données ne sont pas regroupées correctement. J'ai 1 ligne affichée par row reçu de la base de données. En somme mes lignes semblent regroupées par "date_passage" et non pas par "date(dat_passage)"...
Or, comme vous pouvez le constater, j'ai bien des dates de passages qui ont lieu le même jour, mais à des heures différentes. C'est pourquoi j'essaie de regrouper sur la date uniquement, en mettant de coté les heures.

Si vous avez un conseil, je suis preneur !

Dernière modification par Nyphel (29-09-2008 08:38:11)

Hors ligne

 

#2 26-09-2008 14:02:54

nico  
Modérateur
Award: bf
Lieu: Plélan le grand
Date d'inscription: 08-02-2007
Messages: 273
Pépites: 13
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Problème de regroupement de donnés selon une date

Bonjour Nyphel,

Dans ton Group Sort tu devrais mettre date(dat_passage) au lieu de ton count(date(dat_passage) fro group 1)

Hors ligne

 

#3 26-09-2008 14:18:21

erasorz  
Admin
Lieu: Babylone
Date d'inscription: 23-11-2006
Messages: 5121
Pépites: 97,197
Banque: 2,147,483,647

Re: [RESOLU] Problème de regroupement de donnés selon une date

ajoute un champ date invisible qui ne prend que la partie date


N'envoyez jamais un humain faire le travail d'un programme.

Hors ligne

 

#4 26-09-2008 14:18:56

Nyphel  
Membre Power Geek
Lieu: Grenoble
Date d'inscription: 06-05-2008
Messages: 253
Pépites: 12
Banque: 529,705,333,097,693

Re: [RESOLU] Problème de regroupement de donnés selon une date

Ma foi... Ca fonctionne parfaitement !

Je pensais qu'ils s'agissait juste d'un tri et j'avais laissé ce que Pb m'avait proposé par défaut.
Je vais me renseigner sur ce Group Sort, merci beaucoup Nico

Hors ligne

 

#5 26-09-2008 14:23:14

nico  
Modérateur
Award: bf
Lieu: Plélan le grand
Date d'inscription: 08-02-2007
Messages: 273
Pépites: 13
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Problème de regroupement de donnés selon une date

De rien

Hors ligne

 

#6 26-09-2008 16:03:28

Nyphel  
Membre Power Geek
Lieu: Grenoble
Date d'inscription: 06-05-2008
Messages: 253
Pépites: 12
Banque: 529,705,333,097,693

Re: [RESOLU] Problème de regroupement de donnés selon une date

Ah bha en fait... Ca en regroupe bien quelques uns, mais pas tous
Je ne comprends rien !

Hors ligne

 

#7 26-09-2008 17:05:34

buck  
Modérateur
Lieu: Dijon
Date d'inscription: 31-07-2008
Messages: 747
Pépites: 1,028,843
Banque: 171,170,849,654

Re: [RESOLU] Problème de regroupement de donnés selon une date

Bonjour,

Tu m'as mis un doute j'ai fait l'essai sur une de mes tables je ne rencontre pas de problèmes. A part ton critère de tri qui est peu pertinent, il est inutile de trier un groupe sur la données de regroupement forcément identique pour chaque ligne.

Quelle est ta version de PB ?

En fait je procède rarement de cette façon, je ne met jamais de formule sur la définition du groupe. Tu peux essayer de contourner le problème de la façon suivante :

Tu crées une "computed column" de la façon suivante sur la requête SQL de ta datawindow :
SELECT dat_passage, ..., date(dat_passage) as critregroup FROM ...

(note : date = cette fonction SQL est peut être différente sur ta base, à adapter à ta situation)

Tu définis le critère de regroupement pour ton group 1 de datawindow sur la colonne : critregroup

Hors ligne

 

#8 27-09-2008 13:45:27

Nyphel  
Membre Power Geek
Lieu: Grenoble
Date d'inscription: 06-05-2008
Messages: 253
Pépites: 12
Banque: 529,705,333,097,693

Re: [RESOLU] Problème de regroupement de donnés selon une date

Je suis en Pb 10.5 et c'est une bonne idée : je teste ca dès lundi

Hors ligne

 

#9 29-09-2008 07:38:13

nico  
Modérateur
Award: bf
Lieu: Plélan le grand
Date d'inscription: 08-02-2007
Messages: 273
Pépites: 13
Banque: 9,223,372,036,854,776,000

Re: [RESOLU] Problème de regroupement de donnés selon une date

Essaie un Sort sur ta colonne dat_passage et recréer ton group par date(dat_passage) (pas un group by SQL)
J'ai testé chez moi et ça marche bien.

Logiquement tes données seront bien classées par dat_passage et groupées par date(dat_passage)

Code: :

DAT_PASSAGE           A      B      C             
 
23/11/07 17:25:43     1     105     MTT
23/11/07 17:25:49     1     103     MTT         
23/11/07 17:25:49     2     223     MTT         
23/11/07 17:25:51     1     105     MTT         
23/11/07 17:25:56     2     213     MTT
...       
10/02/08 10:11:12     1     132     MTT         
...
10/04/08 10:11:12     1     132     MTT         
...           
21/06/08 03:00:00     1     132     MTT         
21/06/08 10:11:12     1     132     MTT         
...      
29/06/08 03:00:00     1     132     MTT         
29/06/08 10:11:12     1     132     MTT         
...        
16/07/08 03:00:00     1     132     MTT         
16/07/08 19:03:05     1     132     MTT                            
...

.

Hors ligne

 

#10 29-09-2008 08:35:09

Nyphel  
Membre Power Geek
Lieu: Grenoble
Date d'inscription: 06-05-2008
Messages: 253
Pépites: 12
Banque: 529,705,333,097,693

Re: [RESOLU] Problème de regroupement de donnés selon une date

Cette fois-ci c'est la bonne !

J'ai donc agit selon vos conseils, et voilà le résultat :
- sous Oracle, ma date est maintenant tronquée avec trunc(), pour n'obtenir que les jours/mois/années
- sous Oracle, j'ai un group by (dat_passage), le tout trié selon (dat_passage)
- sous Pb, j'ai un groupe selon "date(dat_passage)", sans tri

J'ai conservé le group by sous Oracle, car ce n'est pas moi qui intervient sur la procédure. J'ai donc voulu faire un test avant de demander à retirer le group by, et ça a fonctionné ;)

Je vous remercie pour votre aide, je ne savais pas que l'ordre avait une influence sur le regroupement !

Dernière modification par Nyphel (29-09-2008 09:45:46)

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22