Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Pb affichage requete

7 réponses
Avatar
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 +

7 réponses

Avatar
Gilles TOURREAU
Le Mon, 15 Oct 2007 15:32:50 +0200, Dolten Altgor a é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
Avatar
Rogério Altman
"Gilles TOURREAU" a écrit dans le message de news:

Le Mon, 15 Oct 2007 15:32:50 +0200, Dolten Altgor a
é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
Avatar
Dolten Altgor
Il s'agit d'un DataSet/TableAdapter effectivement...
Merci

"Gilles TOURREAU" a écrit dans le message de news:

Le Mon, 15 Oct 2007 15:32:50 +0200, Dolten Altgor a
é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


Avatar
Gilles TOURREAU
Le Tue, 16 Oct 2007 14:18:06 +0200, Dolten Altgor a écrit:

Il s'agit d'un DataSet/TableAdapter effectivement...
Merci

"Gilles TOURREAU" a écrit dans le message de
news:

Le Mon, 15 Oct 2007 15:32:50 +0200, Dolten Altgor a
é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
Avatar
Dolten Altgor
>>>> 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+
Avatar
Gilles TOURREAU
Le Wed, 17 Oct 2007 13:43:56 +0200, Dolten Altgor a é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"

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
Avatar
Dolten Altgor
"Gilles TOURREAU" a écrit dans le message de news:

Le Wed, 17 Oct 2007 13:43:56 +0200, Dolten Altgor a
é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...