Sous-rapport trop pudique

Le
Gloops
Bonjour tout le monde,

Je suis en train d'essayer de pister la raison d'apparition du message
"Error: Subreport could not be shown" à la place d'un sous-rapport.

La requête du rapport principal contient une jointure avec une table
tabPoste d'une base Access. Elle ne fait apparaître de cette table que =

la clef, de type entier, et les clefs externes pour la jointure.

Le rapport transmet la clef du poste au sous-rapport par un paramètre d=
e
type Int32. Si je ne mets pas de requête au sous-rapport, je peux
afficher proprement le paramètre dans le sous-rapport.

Lorsque j'essaie d'afficher le tout avec le sous-rapport basé sur la
table tabPoste (du moins une DataTable basée dessus), j'obtiens le
message d'erreur que je mentionne en premier paragraphe ci-dessus. Bien
entendu, le but est d'afficher des champs d'autres tables avec une
jointure sur tabPoste, enfin on verra une fois que ça marchera a minima=

pour charger un peu plus la barque.

Quelle est la meilleure démarche pour trouver ce qui coince ?
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
Jérémy Jeanson
Le #19259591
Bonjour Gloops,

Peux tu nous en dire un peu plus sur le context, s'agit il de web ou de
winform?

La version web aillant un comportement "plutôt agacent" avec les
UpDatePanel par exemple (autant dire que ces controls ne sont pas
compatibles).
--
Jérémy JEANSON
MCP
http://www.jjeanson.fr
Gloops
Le #19262821
[Le SubReport n'a pas pu être affiché : est-ce en WinForm ou WebForm ?]

Bonjour Jérémy,

Pour le moment, je travaille sur une version web, à titre d'exercice,
sur une application dont ensuite, une fois que ça tournera, j'aurai
l'usage en version Windows, donc je la recommencerai, avec l'espoir que
j'y passerai moins de temps, ayant fait le tour des difficultés.

Je n'ai pas mis en œuvre de UpDatePanel, à moins que Monsieur Jourdai n
en ait fait aussi, ce n'est pas l'impression que m'a laissé un rapide
coup d'œil à l'aide ...



D'ailleurs j'ai écrit un peu de code pour gérer un DataSet, mais pour le
moment il n'est pas exploité dans l'interface, d'ailleurs j'ai
l'impression qu'il y a plus de fil à retordre sur une base Access que
SQL Server, à partir du moment où on veut avoir accès par code à une
requête mettant en œuvre plusieurs tables de la base. Il semble que
contrairement à SQL Server, avec Access on est obligé de déclarer c haque
champ de chaque table, ainsi que les champs des relations, enfin bon un
claquement de doigts, quoi ...

J'ai travaillé un peu ça parce que dans les premières recherches qu e
j'ai faites quelqu'un suggérait de gérer les DataSet par code en gé rant
les événements. Finalement, en creusant un peu plus, il me semble que
c'est surtout si on veut utiliser le même ReportViewer pour plusieurs
Reports qu'on a besoin de générer les DataSet par code.

Enfin ... si il m'est resté quelque chose d'exploitable de ce que j'ai
compris.

_____________________________________________
Jérémy Jeanson a écrit, le 04/05/2009 08:21 :
Bonjour Gloops,

Peux tu nous en dire un peu plus sur le context, s'agit il de web ou de
winform?

La version web aillant un comportement "plutôt agacent" avec les
UpDatePanel par exemple (autant dire que ces controls ne sont pas
compatibles).


Gloops
Le #19262811
Gloops a écrit, le 04/05/2009 14:53 :
j'ai
l'impression qu'il y a plus de fil à retordre sur une base Access que
SQL Server, à partir du moment où on veut avoir accès par code à une
requête mettant en œuvre plusieurs tables de la base. Il semble que
contrairement à SQL Server, avec Access on est obligé de déclarer chaque
champ de chaque table, ainsi que les champs des relations, enfin bon un
claquement de doigts, quoi ...



Ah oui j'ai oublié de préciser que je travaille sous Visual Studio 20 05.
Avec la version 2008 on peut utiliser un ADORecordset, et en transférer
la structure au Dataset, comme on fait depuis SQL Server avec FillShema
du DataAdapter.
Gloops
Le #19345021
Re,

Bon alors comme il faut bien tâtonner quelque part, je suis parti d'un
modèle qui fonctionne :

http://gotreportviewer.com/masterdetail/index.html

Je télécharge le premier exemple, celui avec un sous-état qui reç oit un
paramètre.

Avec les données d'origine de l'exemple, impeccable.

J'ajoute au projet les Datasets qui contiennent mes données, je les
affecte aux états, aux tableaux dedans, j'affecte les paramètres, les
champs ...

Surprise : quand je lance l'exécution, l'état m'affiche "A data sourc e
instance has not been supplied for the data source 'DataSetPoste_tabPoste '.

Ah, ben voilà du changement, avant c'était le sous-état qui ne
s'affichait pas, maintenant c'est l'état principal !

Pourtant, dans la fenêtre DatasetPoste.xsd, si je fais un clic droit su r
tabPoste et que je clique sur Preview data, puis sur Preview, j'ai bien
mes données qui s'affichent.

Ah, bon ... Mais alors comment est-ce qu'on crée une instance, d'un
Dataset dont on vient de vérifier qu'effectivement il fonctionne ?

A propos il y a un truc qui m'intrigue, si maintenant c'est dans la
fenêtre Data Sources que je fais un clic droit sur DataSetPoste_tabPost e
pour avoir un Preview, j'obtiens une liste avec deux exemplaires de
DataSetPoste qui apparaissent, et pas sélectionnées par défaut en p lus.
Si je sélectionne l'un ou l'autre (plus exactement les accesseurs en
dessous) les données s'affichent —semble-t-il les mêmes.

_____________________________________
Gloops a écrit, le 01/05/2009 01:08 :
Bonjour tout le monde,

Je suis en train d'essayer de pister la raison d'apparition du message
"Error: Subreport could not be shown" à la place d'un sous-rapport.

La requête du rapport principal contient une jointure avec une table
tabPoste d'une base Access. Elle ne fait apparaître de cette table qu e
la clef, de type entier, et les clefs externes pour la jointure.

Le rapport transmet la clef du poste au sous-rapport par un paramètre de
type Int32. Si je ne mets pas de requête au sous-rapport, je peux
afficher proprement le paramètre dans le sous-rapport.

Lorsque j'essaie d'afficher le tout avec le sous-rapport basé sur la
table tabPoste (du moins une DataTable basée dessus), j'obtiens le
message d'erreur que je mentionne en premier paragraphe ci-dessus. Bien
entendu, le but est d'afficher des champs d'autres tables avec une
jointure sur tabPoste, enfin on verra une fois que ça marchera a mini ma
pour charger un peu plus la barque.

Quelle est la meilleure démarche pour trouver ce qui coince ?




Gloops
Le #19557421
Gloops a écrit, le 16/05/2009 02:11 :
Surprise : quand je lance l'exécution, l'état m'affiche "A data sou rce
instance has not been supplied for the data source 'DataSetPoste_tabPos te'.




Sur ce coup-là on dirait que j'ai mal cherché et qu'un élément de
réponse se trouve là :

http://gotreportviewer.com/definedata/index.html

Defining Report Data Sources

Cinquième paragraphe (sans compter la liste) :

Report Designer cannot detect if your report is no longer using a
datasource that you previously added to the report. Even if you delete
all report items that use fields from a particular datasource, the
reference to the datasource remains in the .rdlc file. Then when you run
the report ReportViewer displays an error message such as this: A data
source instance has not been supplied for the data source
'AdventureWorks_Sales'. To fix the problem the datasource reference must
be manually removed from the .rdlc file using the Remove button of the
Report Data Sources dialog.
Publicité
Poster une réponse
Anonyme