Crystal Report - J'en peux plus ...

Signaler
Messages postés
90
Date d'inscription
mercredi 11 juin 2003
Statut
Membre
Dernière intervention
3 février 2011
-
Messages postés
1182
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
6 septembre 2011
-
Bon, suite à certains messages qui m'ont un peu aidé, je n'ai pas encore désarmé face à Crystal Report. M'enfin, c'en est pas loin.
A y'est, j'ai pu créer un dataset et mon état, et même que, Ô miracle, je peux l'afficher ou l'imprimer.

Je dis ça, mais ça n'a pas été une mince affaire. Trouver plus ou moins à tatons comment créer le dataset sur une procédure stockée et le reste... Bon bref.

Je mets en forme et tout, j'arrive à renommer les champs, mettre même des logos. Je me sentirais presque intelligente si à l'affichage, comme à l'impression, aucune donnée ne s'affiche sans qu'aucun, et je dis bien aucun, message d'erreur ne m'injurie.

Dans l'explorateur de champs, j'ai tous les champs issus de la procédure stockée, etc ... etc... Je suis dessus depuis ce matin et toujours rien, et aucune piste non plus.

J'EN PEUX PLUS !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

10 réponses

Messages postés
199
Date d'inscription
lundi 22 juillet 2002
Statut
Membre
Dernière intervention
14 juin 2006

slt,

je te comprends bien,

mais pour t'aider un peu voici un tuto plutot sympa

http://www.supinfo-projects.com/fr/2005/crystal%5Freports%5Fnet%5Ffr/

dans l'article tu as aussi un lien vers un tuto orienté plus asp.net pas mal aussi !

8-) :-p

Trinita,

(Nous savons tous lire, alors passons un peu de temps sur les documentations. Pensons aux personnes qui les rédigent :big) ;) )
Messages postés
1182
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
6 septembre 2011
14
alors en theorie tu rempli ton dataset avant de lancer l'impression...
Pour une impression direct tu peux faire :

//JE REMPLI MON DATASET AVANT TOUT CA ....

MonNomDeReport Monreport = new MonNomDeReport();

//Je file le dataset rempli a mon etat crystal(attention le nom des colonne doit correpondre a celle qui ont servi a générer le report

MonReport.SetDataSource(MonDataSet);
//Je lance l'impression et je fais une petite priere au dieu bilou pour que ca marche...
MonReport.PrintToPrinter(1,true, 0, 0);



Voila je pense que ton pb vient du setdatasource omis...
ou alors les colonnes de ton dataset rempli pas identique à celle du daaset qui a servi a generer le report...

ne desespere pas ca vaut le coup de perseverer la dessus...

Arthenius

"Ce qui ne me tue pas, me rend plus fort..."
Messages postés
90
Date d'inscription
mercredi 11 juin 2003
Statut
Membre
Dernière intervention
3 février 2011

Je sais pas, je dois avoir le QI qui a chuté d'un coup avec les températures, mais j'arrive à rien.

J'ai procédé en 3 étapes :
1- j'ai créé un dataset, de telle manière que je peux voir instantanément qu'il va bien chercher les champs de ma procédure stockée, dans l'ordre, avec toutes les infos. Etc...
2- j'ai créé un état crystal, dans lequel je défini le dataset précédent comme source de donnée. Idem, je vois bien s'afficher la liste des champs et je peux joyeusement jouer avec.
3- sur un bouton dans mon code, je fais ça :
conn.sqlconn.Open();
CR_repartition r = new CR_repartition();
System.Data.DataSet s = new DataSet();
System.Data.SqlClient.SqlDataAdapter d = new SqlDataAdapter("SP_REPARTITION_FICHIERS",conn.sqlconn);
d.Fill(s,"Sp_repartition_fichiers");
r.Load();
r.SummaryInfo.ReportTitle = "Impression des lignes du fichier de répartition JKFTAB";
r.SetDataSource(s);
this.crystalReportViewer1.ReportSource = r;

Et ben, y'a pas d'erreur, mais y'a pas de données non plus, sauf que je sais parfaitement que dans les deux cas, je vais chercher les même infos. Par contre, je n'utilise pas la même connexion car conn est une instance d'une classe C_connexion que j'ai créée.

Bouououoouh...

Lawra C.
Messages postés
1182
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
6 septembre 2011
14
tu as essayer :

r.SetDataSource(s.Tables["Sp_repartition_fichiers"]);


Arthenius

"Ce qui ne me tue pas, me rend plus fort..."
Messages postés
90
Date d'inscription
mercredi 11 juin 2003
Statut
Membre
Dernière intervention
3 février 2011

Vi.

Lawra C.
Messages postés
1182
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
6 septembre 2011
14
et au lieu de faire un dataset s = new dataset();

faire plutot un

LeDataSetQueJaiCreerPourLeReport s = new LeDataSetQueJaiCreerPourLeReport();


ca irais pas mieux...
en faisant juste un

d.Fill(s);


Arthenius

"Ce qui ne me tue pas, me rend plus fort..."
Messages postés
90
Date d'inscription
mercredi 11 juin 2003
Statut
Membre
Dernière intervention
3 février 2011

Désolée du retard.

En fait, c'est ce que j'avais fait au départ, sans plus de succès.

Lawra C.
Messages postés
1182
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
6 septembre 2011
14
et ta procedure stockée retourne bien des valeurs pour tout tes champs de ton dataset dans le bon ordre ....

et question bête mais bon a ce stade je sais plus quoi trouver.... y a des valeurs dans ta table ???
:blush)

j'ai utiliser cette méthode pour créer des reports et je n'ai pas eu de pb....
dans mon dataset je créai une table identique en tout point(nom, nb colonne, etc...) avec celle que je voulais afficher de ma base.
puis je faisais un select .......tout mes champs....from Matable (on une SP au choix) je remplissait un dataset que je fournissait a mon report....
et VS se chargait de faire le lien avec le report et le dataset que je lui fournissait...

et en plus que je ne faisait qu'un simple Dataset ds = new Dataset(); Report.SetDataSource(ds);
.....

bon le delta avec toi c que je ne faisait pas de report.load(); et de modification du titre....

je pense qui doit y avoir un binz au niveau de ton dataset et ta procedure stockee....peut etre....

mais la je bloque un peu....
:-p

fait peut etre un essai avec une table toute simple style 2 / 3 champs avec un dataset(=copier coller de la structure de la table de la base), et remplissage d'un dataset non typé...et report qui va avec....

d'apres ce que je vois ton code est bon...
...mais ca marche pas....c pour ca que je pense au dataset et a ta SP...

Arthenius

"Ce qui ne me tue pas, me rend plus fort..."
Messages postés
90
Date d'inscription
mercredi 11 juin 2003
Statut
Membre
Dernière intervention
3 février 2011

Alors, voilà le truc :

-je ne passe pas par un dataset
-je crée mon état en configurant une connexion oledb.
- et dans mon code, je mets juste ça :

CR_repartition r = new CR_repartition();
r.Load();
this.crystalReportViewer1.ReportSource = r;

Et ça marche nickel!!!!!!!!!!!!!!! :big)

Merci pour tout quand-même !!!!

Lawra C.
Messages postés
1182
Date d'inscription
mercredi 21 janvier 2004
Statut
Membre
Dernière intervention
6 septembre 2011
14
ok ca roule comme ca mais tu est lie a ta connection oledb....

l'avantage du dataset c'est que tu peux le remplir depuis n'importe ou (sql serveur, mysql, fichier texte, etc...)

mais après c'est en fonction de ce que tu a vraiment besoin....
:o)))

si tu n'as qu'une connexion oledb dans ton appli...alors ca roule :o)))

ps:peux tu marquer ta solution comme acceptez histoire que cela serve a d'autre...

@+

Arthenius

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