Crystal et parametre

Résolu
cs_nonold Messages postés 22 Date d'inscription samedi 11 octobre 2003 Statut Membre Dernière intervention 23 octobre 2008 - 22 janv. 2008 à 11:47
cs_nonold Messages postés 22 Date d'inscription samedi 11 octobre 2003 Statut Membre Dernière intervention 23 octobre 2008 - 28 janv. 2008 à 14:26
Bonjour,

Je souhaite via c# ouvrir un rpt. J'ai reussi pour les rpt sans parametre.
Par contre pas moyen de fournir un parametre. (Mon rpt et créé via une procedure stocké qui doit recevoir un parametre)

J'ai trouvé autant de facon de procédé que de source postée sur les forum ... toutes essayées aucune passe
Si quelqu'un a la solution
Il est à noter que je n'utilise pas le crystalViewer, car mon but est de créer un PDF.

Voici mes essais:

<code>
// Declaration
ReportDocument rdoc =
new
ReportDocument();
rdoc.Load(ficRpt);






// Connexion

for
(

int
i = 0; i <= rdoc.Database.Tables.Count-1; i++)
{
      

TableLogOnInfo
logOnInfos =

new



TableLogOnInfo
();
      

//Informations requises pour s'authentifier
      
logOnInfos.ConnectionInfo.UserID =

"login"
;
      logOnInfos.ConnectionInfo.Password =

"mdp"
;

      

//Appliquer les informations pour la table dans laquelle on est rendu dans la boucle
      
rdoc.Database.Tables[i].ApplyLogOnInfo(logOnInfos);
}







// Parametres

/*
// Tentative 1 || resultat : exception au moment de l'export > attend le paramŠtre @ExpId
ParameterField pf = rdoc.ParameterFields["@ExpId"];
ParameterDiscreteValue pdv = new ParameterDiscreteValue();
pdv.Value = "22422";
pf.CurrentValues.Add(pdv);
*/








/*
// Tentative 2 || resultat : exception au moment de l'export > attend le paramŠtre @ExpId
ParameterField pf = rdoc.ParameterFields["@ExpId"];
ParameterDiscreteValue pdv = new ParameterDiscreteValue();
pdv.Value = "22422";
rdoc.SetParameterValue("@ExpId", pdv);
*/






// Tentative 3 || resultat : exception au moment de l'export > attend le paramŠtre @ExpId

ParameterValues
cpvs =

new



ParameterValues
();


ParameterDiscreteValue
currentDiscrete =

new



ParameterDiscreteValue
();
currentDiscrete.Value =

"22422"
;
cpvs.Add( currentDiscrete );


ParameterFieldDefinitions
pfds = rdoc.DataDefinition.ParameterFields;


ParameterFieldDefinition
pfd = pfds[

"@ExpId"
];
pfd.ApplyCurrentValues(cpvs);


// Visualisation de certaine variable en debug > On voit le parametre bien present !!!

string
toto = rdoc.ParameterFields[0].Name;


string
titi = rdoc.ParameterFields[

"@ExpId"
].CurrentValues[0].ToString();


ParameterDiscreteValue
buff = (

ParameterDiscreteValue
)rdoc.ParameterFields[0].CurrentValues[0];


string
value = buff.Value.ToString();


int
plop = rdoc.ParameterFields[0].CurrentValues.Count;


// Export

rdoc.ExportToDisk(CrystalDecisions.Shared.

ExportFormatType
.PortableDocFormat, ficPdf);


<\code>

Cordialement,
Sébastien.

4 réponses

cs_nonold Messages postés 22 Date d'inscription samedi 11 octobre 2003 Statut Membre Dernière intervention 23 octobre 2008
28 janv. 2008 à 14:26
Ca fonctionne !

Bon ba finalement, j'ai recu gentiment la maj vers visual studio 2008, donc je l'ai installé.
Ouverture du projet avec 2008, conversion auto, je compile et ca tourne ... sans rien changer au code.

bilan : ba ca devait être foireux sur l'ancienne version.

Voila, j'ai pas eu de réponse, mais mon post pourra peut être servir à quelqu'un
3
cs_nonold Messages postés 22 Date d'inscription samedi 11 octobre 2003 Statut Membre Dernière intervention 23 octobre 2008
22 janv. 2008 à 16:04
il semblerait qu'il faut changer le rdoc.Load(ficRpt) en rdoc.Load(ficRpt, OpenReportMethod.OpenReportByTempCopy)

Et la je gagne 2 magnifiques "Le type est defini dans un assembly qui n'est pas référencé"

il me faudrait un CrystalDecisions.Entreprise, Evidement je l'ai pas dans les lib .Net
0
cs_nonold Messages postés 22 Date d'inscription samedi 11 octobre 2003 Statut Membre Dernière intervention 23 octobre 2008
23 janv. 2008 à 09:59
*Fait une dance d'invocation du coq sauveur*
0
cs_nonold Messages postés 22 Date d'inscription samedi 11 octobre 2003 Statut Membre Dernière intervention 23 octobre 2008
25 janv. 2008 à 15:30
Personne ne connait l'homme qui a parlé avec l'homme qui avait vu l'homme qui savait faire fonctionner ce truc tout bisarre ?
meme une petite piste ridicule pourrait aider, j'ai l'impression d'avoir tout essayé
0
Rejoignez-nous