Pb affichage requete

Le
Dolten Altgor
Bonjour à tous,

J'ai un souci da'ffichage de données issues d'une requete sql, que voici:

SELECT RIGHT(factures.date_facture, 4) AS ANNEE, ref, COUNT(*) AS
[NOMBRE IMAGES]
FROM table1
GROUP BY RIGHT(factures.date_facture, 4), ref
ORDER BY ANNEE


Ensuite j'ai ma page aspx qui contient ceci:

<table id="Table1">
<tbody>
<tr>
<asp:Repeater id="Repeater1" runat="server"
DataSourceID="ObjectDataSource1">
<ItemTemplate>
<td>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("ANNEE")
%>'></asp:Label>
</td>
</ItemTemplate>
</asp:Repeater>
</tr>
<tr>
<asp:Repeater id="Repeater2" runat="server"
DataSourceID="ObjectDataSource1">
<ItemTemplate>
<td>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("REF") %>'></asp:Label>
</td>
</ItemTemplate>
</asp:Repeater>
</tr>
<tr>
<asp:Repeater id="Repeater3" runat="server"
DataSourceID="ObjectDataSource1">
<ItemTemplate>
<td>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("NOMBRE IMAGES")
%>'></asp:Label>
</td>
</ItemTemplate>
</asp:Repeater>
</tr>
</tbody>
</table>

Mon pb: la page s'ffiche comme ceci:

2003 2003 2003 2004 2004 2004 2005 2005 2005
ref1 ref2 ref3 ref1 ref2 ref3 ref1 ref2
ref3
23 44 35 35 134 78 90 88
117

Alors qu'il me faudrait:

2003 2003 2003
ref1 ref2 ref3
23 44 35

2004 2004 2004
ref1 ref2 ref3
35 134 78

2005 2005 2005
ref1 ref2 ref3
90 88 117


Merci de vos idées!
A +
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Gilles TOURREAU
Le #12150861
Le Mon, 15 Oct 2007 15:32:50 +0200, Dolten Altgor
Bonjour à tous,

J'ai un souci da'ffichage de données issues d'une requete sql, que voici:

SELECT RIGHT(factures.date_facture, 4) AS ANNEE, ref, COUNT(*) AS
[NOMBRE IMAGES]
FROM table1
GROUP BY RIGHT(factures.date_facture, 4), ref
ORDER BY ANNEE


Ensuite j'ai ma page aspx qui contient ceci:

<table id="Table1">
<tbody>
<tr>
<asp:Repeater id="Repeater1" runat="server"
DataSourceID="ObjectDataSource1">
<ItemTemplate>
<td>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("ANNEE")
%>'></asp:Label>
</td>
</ItemTemplate>
</asp:Repeater>
</tr>
<tr>
<asp:Repeater id="Repeater2" runat="server"
DataSourceID="ObjectDataSource1">
<ItemTemplate>
<td>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("REF")
%>'></asp:Label>
</td>
</ItemTemplate>
</asp:Repeater>
</tr>
<tr>
<asp:Repeater id="Repeater3" runat="server"
DataSourceID="ObjectDataSource1">
<ItemTemplate>
<td>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("NOMBRE IMAGES")
%>'></asp:Label>
</td>
</ItemTemplate>
</asp:Repeater>
</tr>
</tbody>
</table>

Mon pb: la page s'ffiche comme ceci:

2003 2003 2003 2004 2004 2004 2005 2005 2005
ref1 ref2 ref3 ref1 ref2 ref3 ref1
ref2
ref3
23 44 35 35 134 78 90 88
117

Alors qu'il me faudrait:

2003 2003 2003
ref1 ref2 ref3
23 44 35

2004 2004 2004
ref1 ref2 ref3
35 134 78

2005 2005 2005
ref1 ref2 ref3
90 88 117


Merci de vos idées!
A +








Quelle est le type de votre source de données qui alimente
l'ObjectDataSource ? DataSet/TableAdapter ou Tableau de Classe perso ?

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Rogério Altman
Le #12150851
"Gilles TOURREAU"
Le Mon, 15 Oct 2007 15:32:50 +0200, Dolten Altgor écrit:

Bonjour à tous,

J'ai un souci da'ffichage de données issues d'une requete sql, que voici:

SELECT RIGHT(factures.date_facture, 4) AS ANNEE, ref, COUNT(*) AS
[NOMBRE IMAGES]
FROM table1
GROUP BY RIGHT(factures.date_facture, 4), ref
ORDER BY ANNEE


Ensuite j'ai ma page aspx qui contient ceci:

<table id="Table1">
<tbody>
<tr>
<asp:Repeater id="Repeater1" runat="server"
DataSourceID="ObjectDataSource1">
<ItemTemplate>
<td>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("ANNEE")
%>'></asp:Label>
</td>
</ItemTemplate>
</asp:Repeater>
</tr>
<tr>
<asp:Repeater id="Repeater2" runat="server"
DataSourceID="ObjectDataSource1">
<ItemTemplate>
<td>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("REF")
%>'></asp:Label>
</td>
</ItemTemplate>
</asp:Repeater>
</tr>
<tr>
<asp:Repeater id="Repeater3" runat="server"
DataSourceID="ObjectDataSource1">
<ItemTemplate>
<td>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("NOMBRE IMAGES")
%>'></asp:Label>
</td>
</ItemTemplate>
</asp:Repeater>
</tr>
</tbody>
</table>

Mon pb: la page s'ffiche comme ceci:

2003 2003 2003 2004 2004 2004 2005 2005 2005
ref1 ref2 ref3 ref1 ref2 ref3 ref1
ref2
ref3
23 44 35 35 134 78 90 88
117

Alors qu'il me faudrait:

2003 2003 2003
ref1 ref2 ref3
23 44 35

2004 2004 2004
ref1 ref2 ref3
35 134 78

2005 2005 2005
ref1 ref2 ref3
90 88 117


Merci de vos idées!
A +








Quelle est le type de votre source de données qui alimente
l'ObjectDataSource ? DataSet/TableAdapter ou Tableau de Classe perso ?




Il s'agit d'un DataSet/TableAdapter effectivement...
Merci
Dolten Altgor
Le #12150801
Il s'agit d'un DataSet/TableAdapter effectivement...
Merci

"Gilles TOURREAU"
Le Mon, 15 Oct 2007 15:32:50 +0200, Dolten Altgor écrit:

Bonjour à tous,

J'ai un souci da'ffichage de données issues d'une requete sql, que voici:

SELECT RIGHT(factures.date_facture, 4) AS ANNEE, ref, COUNT(*) AS
[NOMBRE IMAGES]
FROM table1
GROUP BY RIGHT(factures.date_facture, 4), ref
ORDER BY ANNEE


Ensuite j'ai ma page aspx qui contient ceci:

<table id="Table1">
<tbody>
<tr>
<asp:Repeater id="Repeater1" runat="server"
DataSourceID="ObjectDataSource1">
<ItemTemplate>
<td>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("ANNEE")
%>'></asp:Label>
</td>
</ItemTemplate>
</asp:Repeater>
</tr>
<tr>
<asp:Repeater id="Repeater2" runat="server"
DataSourceID="ObjectDataSource1">
<ItemTemplate>
<td>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("REF")
%>'></asp:Label>
</td>
</ItemTemplate>
</asp:Repeater>
</tr>
<tr>
<asp:Repeater id="Repeater3" runat="server"
DataSourceID="ObjectDataSource1">
<ItemTemplate>
<td>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("NOMBRE IMAGES")
%>'></asp:Label>
</td>
</ItemTemplate>
</asp:Repeater>
</tr>
</tbody>
</table>

Mon pb: la page s'ffiche comme ceci:

2003 2003 2003 2004 2004 2004 2005 2005 2005
ref1 ref2 ref3 ref1 ref2 ref3 ref1
ref2
ref3
23 44 35 35 134 78 90 88
117

Alors qu'il me faudrait:

2003 2003 2003
ref1 ref2 ref3
23 44 35

2004 2004 2004
ref1 ref2 ref3
35 134 78

2005 2005 2005
ref1 ref2 ref3
90 88 117


Merci de vos idées!
A +








Quelle est le type de votre source de données qui alimente
l'ObjectDataSource ? DataSet/TableAdapter ou Tableau de Classe perso ?

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr


Gilles TOURREAU
Le #12150791
Le Tue, 16 Oct 2007 14:18:06 +0200, Dolten Altgor
Il s'agit d'un DataSet/TableAdapter effectivement...
Merci

"Gilles TOURREAU" news:

Le Mon, 15 Oct 2007 15:32:50 +0200, Dolten Altgor écrit:

Bonjour à tous,

J'ai un souci da'ffichage de données issues d'une requete sql, que
voici:

SELECT RIGHT(factures.date_facture, 4) AS ANNEE, ref, COUNT(*) AS
[NOMBRE IMAGES]
FROM table1
GROUP BY RIGHT(factures.date_facture, 4), ref
ORDER BY ANNEE


Ensuite j'ai ma page aspx qui contient ceci:

<table id="Table1">
<tbody>
<tr>
<asp:Repeater id="Repeater1" runat="server"
DataSourceID="ObjectDataSource1">
<ItemTemplate>
<td>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("ANNEE")
%>'></asp:Label>
</td>
</ItemTemplate>
</asp:Repeater>
</tr>
<tr>
<asp:Repeater id="Repeater2" runat="server"
DataSourceID="ObjectDataSource1">
<ItemTemplate>
<td>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("REF")
%>'></asp:Label>
</td>
</ItemTemplate>
</asp:Repeater>
</tr>
<tr>
<asp:Repeater id="Repeater3" runat="server"
DataSourceID="ObjectDataSource1">
<ItemTemplate>
<td>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("NOMBRE IMAGES")
%>'></asp:Label>
</td>
</ItemTemplate>
</asp:Repeater>
</tr>
</tbody>
</table>

Mon pb: la page s'ffiche comme ceci:

2003 2003 2003 2004 2004 2004 2005 2005 2005
ref1 ref2 ref3 ref1 ref2 ref3 ref1
ref2
ref3
23 44 35 35 134 78 90
88
117

Alors qu'il me faudrait:

2003 2003 2003
ref1 ref2 ref3
23 44 35

2004 2004 2004
ref1 ref2 ref3
35 134 78

2005 2005 2005
ref1 ref2 ref3
90 88 117


Merci de vos idées!
A +








Quelle est le type de votre source de données qui alimente
l'ObjectDataSource ? DataSet/TableAdapter ou Tableau de Classe perso ?

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr








2 solutions :
- Soit vous ajoutez à votre DataSet une DataTable ("Années") contenant une
colonne "Année" qui est liée et parent de votre table (par l'intermédiaire
de la clé enfant).
Ainsi vous créez 2 Repeater imbriqué :
* L'un lié à la table "Années"
* L'autre Repeater imbriqué lié aux enfants de l'année en cours...

- L'autre solution est de programmer soit même 2 fonctions :
* L'une renvoyant les différentes années possible (2003, 2004,
2005,...etc) : int[] GetAnnées(MonDataSet ds)
* L'autre renvoyant vos différentes données en fonction d'une année :
MonDataSet.MaTableRow[] GetDonnées(MonDataSet ds, int année)
Ensuite vous créez 2 Repeater imbriqué.
Repeater1 : La source de données du premier est le tableau des années.
Repeater2 : Créer à chaque item de Repeater1 et initialisé avec la
source résultante de GetDonnées()

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Dolten Altgor
Le #12150741
>>>> J'ai un souci da'ffichage de données issues d'une requete sql, que
voici:

SELECT RIGHT(factures.date_facture, 4) AS ANNEE, ref, COUNT(*) AS
[NOMBRE IMAGES]
FROM table1
GROUP BY RIGHT(factures.date_facture, 4), ref
ORDER BY ANNEE


Ensuite j'ai ma page aspx qui contient ceci:

<table id="Table1">
<tbody>
<tr>
<asp:Repeater id="Repeater1" runat="server"
DataSourceID="ObjectDataSource1">
<ItemTemplate>
<td>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("ANNEE")
%>'></asp:Label>
</td>
</ItemTemplate>
</asp:Repeater>
</tr>
<tr>
<asp:Repeater id="Repeater2" runat="server"
DataSourceID="ObjectDataSource1">
<ItemTemplate>
<td>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("REF")
%>'></asp:Label>
</td>
</ItemTemplate>
</asp:Repeater>
</tr>
<tr>
<asp:Repeater id="Repeater3" runat="server"
DataSourceID="ObjectDataSource1">
<ItemTemplate>
<td>
<asp:Label ID="Label1" runat="server" Text='<%# Eval("NOMBRE IMAGES")
%>'></asp:Label>
</td>
</ItemTemplate>
</asp:Repeater>
</tr>
</tbody>
</table>

Mon pb: la page s'ffiche comme ceci:

2003 2003 2003 2004 2004 2004 2005 2005 2005
ref1 ref2 ref3 ref1 ref2 ref3 ref1
ref2
ref3
23 44 35 35 134 78 90
88
117

Alors qu'il me faudrait:

2003 2003 2003
ref1 ref2 ref3
23 44 35

2004 2004 2004
ref1 ref2 ref3
35 134 78

2005 2005 2005
ref1 ref2 ref3
90 88 117


Merci de vos idées!
A +



Quelle est le type de votre source de données qui alimente
l'ObjectDataSource ? DataSet/TableAdapter ou Tableau de Classe perso ?





2 solutions :
- Soit vous ajoutez à votre DataSet une DataTable ("Années") contenant une
colonne "Année" qui est liée et parent de votre table (par l'intermédiaire
de la clé enfant).
Ainsi vous créez 2 Repeater imbriqué :
* L'un lié à la table "Années"
* L'autre Repeater imbriqué lié aux enfants de l'année en cours...

- L'autre solution est de programmer soit même 2 fonctions :
* L'une renvoyant les différentes années possible (2003, 2004,
2005,...etc) : int[] GetAnnées(MonDataSet ds)
* L'autre renvoyant vos différentes données en fonction d'une année :
MonDataSet.MaTableRow[] GetDonnées(MonDataSet ds, int année)
Ensuite vous créez 2 Repeater imbriqué.
Repeater1 : La source de données du premier est le tableau des années.
Repeater2 : Créer à chaque item de Repeater1 et initialisé avec la
source résultante de GetDonnées()



Merci, je me lance dans la premiere solution:

1. j'ai ajouté à mon dataset une datatable ("années") avec une colonne
"année"
2. J'ai relié cette colonne à la colonne "Année" que j'ai crééé dans mon
tableadapter contenant la datatable qui contient la requête me retournant
les données.
Or, si je ne créé pas de requête pour ma nouvelle datatable ("années") elle
n'aparait pas lorsque je créé mon objectdatasource dans ma page aspx...

Bref, je ne suis pas sûr d'avoir tout saisi...
A+
Gilles TOURREAU
Le #12150731
Le Wed, 17 Oct 2007 13:43:56 +0200, Dolten Altgor

Merci, je me lance dans la premiere solution:

1. j'ai ajouté à mon dataset une datatable ("années") avec une colonne
"année"
2. J'ai relié cette colonne à la colonne "Année" que j'ai crééé dans mon
tableadapter contenant la datatable qui contient la requête me retournant
les données.
Or, si je ne créé pas de requête pour ma nouvelle datatable ("années")
elle
n'aparait pas lorsque je créé mon objectdatasource dans ma page aspx...

Bref, je ne suis pas sûr d'avoir tout saisi...
A+





Excuse-moi de n'avoir pas plus détaillé cette méthode...

Oui il faudrait executer une deuxième requête... Mais pour ton cas, je ne
te le conseille pas... (c'est inutile pour la quantité de données
retourné).
Il faut remplir manuellement les années en fonction des résultats obtenu
de la requête (tout ceci dans la couche métier).

Il faut faire (pseudo-code) :

MonDataSet.EnforceContrains = false; //Sinon cela lèvera une exception
ExecuteRequête(MonDataSet.MaTable);

Pour chaque Ligne de MaTable
Si Ligne["Année"] n'est pas présent dans MonDataSet.Année
Ajouter Ligne["Année"] dans MonDataSet.Année
Fin Si
Fin Pour

MonDataSet.EnforceContrains = true;

Il est vrai que cela prend 5-10 lignes en plus, mais cela ne consomme rien
du tout au niveau des ressources... Contrairement à une petite requête
"SELECT Année ... GROUP BY Année"

En utilisant cette solution tu verras, c'est un vrai régal au niveau du
DataBinding !!!

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Dolten Altgor
Le #12150691
"Gilles TOURREAU"
Le Wed, 17 Oct 2007 13:43:56 +0200, Dolten Altgor écrit:


Merci, je me lance dans la premiere solution:

1. j'ai ajouté à mon dataset une datatable ("années") avec une colonne
"année"
2. J'ai relié cette colonne à la colonne "Année" que j'ai crééé dans mon
tableadapter contenant la datatable qui contient la requête me retournant
les données.
Or, si je ne créé pas de requête pour ma nouvelle datatable ("années")
elle
n'aparait pas lorsque je créé mon objectdatasource dans ma page aspx...

Bref, je ne suis pas sûr d'avoir tout saisi...
A+





Excuse-moi de n'avoir pas plus détaillé cette méthode...

Oui il faudrait executer une deuxième requête... Mais pour ton cas, je ne
te le conseille pas... (c'est inutile pour la quantité de données
retourné).
Il faut remplir manuellement les années en fonction des résultats obtenu
de la requête (tout ceci dans la couche métier).

Il faut faire (pseudo-code) :

MonDataSet.EnforceContrains = false; //Sinon cela lèvera une exception
ExecuteRequête(MonDataSet.MaTable);

Pour chaque Ligne de MaTable
Si Ligne["Année"] n'est pas présent dans MonDataSet.Année
Ajouter Ligne["Année"] dans MonDataSet.Année
Fin Si
Fin Pour

MonDataSet.EnforceContrains = true;

Il est vrai que cela prend 5-10 lignes en plus, mais cela ne consomme rien
du tout au niveau des ressources... Contrairement à une petite requête
"SELECT Année ... GROUP BY Année"




merci, mais je galère encore pour m'y retrouver: je pensais devoir mette le
pseudo-code dans les propriétés de mon dataset.xsd mais je me retrouve dans
un fichier xml...donc ce n'est pas là. Si je mets le code dans ma page cs de
la page qui traite les données, ça ne le fait pas non plus.
ben oui, j'ai du pain sur la planche...
Publicité
Poster une réponse
Anonyme