[C#][Crystal reports][DataAdapter] Impossible d'afficher des données
Caelum
Messages postés8Date d'inscriptionmercredi 29 novembre 2000StatutMembreDernière intervention19 avril 2006
-
16 janv. 2006 à 15:26
Arthenius
Messages postés1182Date d'inscriptionmercredi 21 janvier 2004StatutMembreDernière intervention 6 septembre 2011
-
30 janv. 2006 à 08:56
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);
ç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).
Arthenius
Messages postés1182Date d'inscriptionmercredi 21 janvier 2004StatutMembreDernière intervention 6 septembre 201114 17 janv. 2006 à 17:47
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 ??
Caelum
Messages postés8Date d'inscriptionmercredi 29 novembre 2000StatutMembreDernière intervention19 avril 2006 18 janv. 2006 à 09:10
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);
Arthenius
Messages postés1182Date d'inscriptionmercredi 21 janvier 2004StatutMembreDernière intervention 6 septembre 201114 18 janv. 2006 à 09:40
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 ) ??
Arthenius
Messages postés1182Date d'inscriptionmercredi 21 janvier 2004StatutMembreDernière intervention 6 septembre 201114 18 janv. 2006 à 09:41
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...
Caelum
Messages postés8Date d'inscriptionmercredi 29 novembre 2000StatutMembreDernière intervention19 avril 2006 18 janv. 2006 à 14:56
"(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^^
Caelum
Messages postés8Date d'inscriptionmercredi 29 novembre 2000StatutMembreDernière intervention19 avril 2006 23 janv. 2006 à 09:01
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? ; )
Arthenius
Messages postés1182Date d'inscriptionmercredi 21 janvier 2004StatutMembreDernière intervention 6 septembre 201114 30 janv. 2006 à 08:56
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 :)