[C#][Crystal reports][DataAdapter] Impossible d'afficher des données

Signaler
Messages postés
8
Date d'inscription
mercredi 29 novembre 2000
Statut
Membre
Dernière intervention
19 avril 2006
-
Messages postés
1182
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
6 septembre 2011
-
Bonjour à tous,

J'ai un petit problème sur l'utilisation du dataset puis du data adapter lorsqu'on a une requete sur plusieurs tables. Pour l'instant aucune donnée ne s'affiche lors du chargement de mon crystalreportviewer.

Voici mon code :

private void CB_nom_site_SelectedIndexChanged(object sender, EventArgs e)
{
monDataSet = new DataSet1();
monEtat = new Rapport2();

monDataSet.Reset();

monDA new OdbcDataAdapter("SELECT CODE_INTERNE, NOM_ORDINATEUR, UTILISAT.NOM, UTILISAT.PRENOM, LOCALISA.NOM FROM UC, LOCALISA, UTIUC, UTILISAT WHERE UC.UCCLEUNIK UTIUC.UCCLEUNIK AND UC.L0CLEUNIK = LOCALISA.L0CLEUNIK AND UTIUC.UTCLEUNIK = UTILISAT.UTCLEUNIK AND LOCALISA.NOM='" + CB_nom_site.Text + "'", maCnx);

monDA.Fill(monDataSet, "monDA");

monEtat.SetDataSource(monDataSet);

crystalReportViewer1.ReportSource = monEtat;
crystalReportViewer1.Refresh();
}

Merci d'avance a tous ce qui pourront m'aider :)
A voir également:

10 réponses

Messages postés
1182
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
6 septembre 2011
13
monEtat.SetDataSource(monDataSet.Tables["monDA"]);

peut etre ????

si tu fais un test dans une query standard ta requete te retourne bien des infos ??

<hr>Arthenius
http://blogs.developpeur.org/Arthenius/

"Ce qui ne me tue pas, me rend plus fort..."
Messages postés
8
Date d'inscription
mercredi 29 novembre 2000
Statut
Membre
Dernière intervention
19 avril 2006

monEtat.SetDataSource(monDataSet.Tables["monDA"]);

ça ne marche pas malheureusement :(
Le test avec une query standard me retourne en effet les bonnes informations.

Pour le moment j'ai réussi à faire ce que je voulais en créant dans mon DataSet une DataTable avec seulement les informations requises pour mon rapport (une vue en faite).
Messages postés
1182
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
6 septembre 2011
13
monDataSet = new DataSet1();

mondataset est donc le dataset typé qui ta permis de generer ton etat ???

perso j'ulise cette methode...

je creer un dataset dans ma solution (xsd)
Je creer mon report a partir de ce XSD et pas en pointant dirctement dans la BDD

dans mon programme qui va afficher le report :

je creer une instance de ce dataset => j'obtiens un dataset type...je peux acceder a mes tables grace a MonDataSet.NOMDEMATABLE
je charge avec un dataadapter les donnees dans mon dataset type..

je fais le setdatasource...et au miracle cela fonctionne, vu que la "base" est la meme a savoir le xsd de départ....

autre question...

dans ton report a tu des jointures avec d'autres tables ???
si oui est tu sur de ces jointures toutes les tables sont elles remplis ??

<hr>Arthenius
http://blogs.developpeur.org/Arthenius/

"Ce qui ne me tue pas, me rend plus fort..."
Messages postés
8
Date d'inscription
mercredi 29 novembre 2000
Statut
Membre
Dernière intervention
19 avril 2006

Je suis pas expert en programmation donc j'ai eu du mal à comprendre ta méthode mais finalement il me semble que c'est à peu près celle-ci que j'ai appliqué pour les vues.

Tu dis :
- "je charge avec un dataadapter les donnees dans mon dataset type..",
c'est à dire que tu lance une requete sur ta base de donnée afin de remplir ton dataset?

- "dans ton report as tu des jointures avec d'autres tables ???", je comprend pas bien, tout ce que je peux te dire c'est que j'utilise des données dans le rapport de plusieurs tables liées par des relations. J'ai fais apparaitre ces relations dans le dataset.

Voici le code de ma méthode :
1) Je crée un DataSet
2) Je crée un DataTable(avec les jointures)dans le DataSet avec les données du rapport

private void Fetat_Load(object sender, EventArgs e)
{
monDataSet = new DataSet1();
Rapportlocalisation monEtat = new Rapportlocalisation();

monDataSet.Reset();

monDataAdapter = new OdbcDataAdapter(maRequete, maCnx);
monDataAdapter.Fill(monDataSet, maVue);

monEtat.SetDataSource(monDataSet);

crystalReportViewer1.ReportSource = monEtat;
crystalReportViewer1.Refresh();
}
Messages postés
1182
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
6 septembre 2011
13
c'est à dire que tu lance une requete sur ta base de donnée afin de remplir ton dataset?

Oui c ca :)

tu as donc des tables avec des relations dans ton dataset...
peut etre que tes relation sont strict (pas de left outer join ou autre) donc si tes tables gravitant autour de la table principal ne sont pas rempli comme il faut alors il est normale que rien ne s'affiche...
dans ce cas il faut soit remplir tes tables, soit changer la relation afin quelle permette d'afficher des donnees de la table principale SANS les données des tables secondaires liées a cette table..

sinon peut tu me dire comment tu a creer ton report ?? a partir de la base ou de ton dataset ?????
au depart dans CR tu choisi une source de donnée ??? quoi tu a pris a ce moment (base ou dataset ) ??

<hr>Arthenius
http://blogs.developpeur.org/Arthenius/

"Ce qui ne me tue pas, me rend plus fort..."
Messages postés
1182
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
6 septembre 2011
13
tu peux aussi tenter de virer toutes les relations dans ton dataset et tenter d'afficher le report ainsi...et voir si'il se passe kkchose...
a ce moment si tu vois kkchose cela veut dire que tes jointures bloque l'affichage...

<hr>Arthenius
http://blogs.developpeur.org/Arthenius/

"Ce qui ne me tue pas, me rend plus fort..."
Messages postés
8
Date d'inscription
mercredi 29 novembre 2000
Statut
Membre
Dernière intervention
19 avril 2006

"(pas de left outer join ou autre)", qu'est ce que c'est que ça, lol je suis perdu? ;)

Mon rapport est créé à partir de la base quand je le fabrique sous Crystal Report XI puis je modifie la source de donnée en DataSet quand je le rapatrie sous VS.net

"tu peux aussi tenter de virer toutes les relations dans ton dataset et tenter d'afficher le report ainsi...et voir si'il se passe kkchose...
a ce moment si tu vois kkchose cela veut dire que tes jointures bloque l'affichage..."
Non ça ne change rien, aucun affichage avec ou sans jointure^^
Messages postés
1182
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
6 septembre 2011
13
ok par contre tu a generer le report a partir de la base de données..

reesaye d'en fazire un mais a partir du dataset que tu a creer...

peut etre y a -il une difference...

je ne sais po ^^

<hr>Arthenius
http://blogs.developpeur.org/Arthenius/

"Ce qui ne me tue pas, me rend plus fort..."
Messages postés
8
Date d'inscription
mercredi 29 novembre 2000
Statut
Membre
Dernière intervention
19 avril 2006

Très bonne idée, donc je résume c'est quasiment une nouvelle question^^

J'ai crée un dataset dans un de mes projet VS2005/VB.NET. Je désire maintenant créer un état à partir de Crystal Report XI mais je n'arrive pas à configurer crystal report sur ma source de donnée qui est un dataset.
Comment dois je faire? ; )
Messages postés
1182
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
6 septembre 2011
13
lol de retour de vacance...et je vois ta question....
ben en fait suffit de choisir la source de données comme etant un dataset..
cela marche quand tu creer un nouvel etat depuis VS2003

apres si tu utilise CR en programme a part je ne suis pas sur que cela fonctionne mais avec CR integre a VS ca marche :)

<hr>Arthenius
http://blogs.developpeur.org/Arthenius/

"Ce qui ne me tue pas, me rend plus fort..."