begin process at 2008 07 23 23:33:04
1 215 408 membres
545 nouveaux aujourd'hui
14 174 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : Probleme Crystal Report C# Passage Parametre [ Base de données / Oracle ] (spike62300)

Probleme Crystal Report C# Passage Parametre le 13/09/2007 08:54:18

spike62300
Bonjour à tous,

Je repose ma question car c'est urgent ! Désolé d'avance.

Je rencontre un soucis avec Crystal Report intégré à VS 2005
Je développe sous C# et je veux intégrer certains états Crystal ayant besoin de paramètres

Le soucis est qu'au lancement du formulaire contenant le crystal viewer, j'obtiens des messages d'erreurs liés à des fichiers temporaires .rpt
Je pense que mon code est bon vu qu'il fonctionne sur un autre projet C# mais sous VS 2003
Autres précisions :
            - L'application fonctionne sur une base Oracle
            - Les fichiers dll nécessaires à l'utilisation de Crystal Report fonctionnent avec le Framework 2.0
            - J'ai testé un état Crystal Report sans paramètre et j'obtiens également une erreur : "erreur dans le moteur de recherche"

                                    Voici Mon Code
// Déclaration
        private ParameterFields        mParameterFields = new ParameterFields();
        private ParameterField          mParameterField  = new ParameterField();
        private ParameterDiscreteValue mDiscreteVal  = new ParameterDiscreteValue();
        private string                                                       m_sParametre = "";

// Code appelé
                mParameterField.ParameterFieldName = "discreteVal";       // Nom de la valeur discrete de l'état
                mDiscreteVal.Value                              = m_sParametre;    // Valeur string récupérée en paramètre

                mParameterField.CurrentValues.Add(mDiscreteVal);
                mParameterFields.Add(mParameterField);
               
                CR_11_Edition_Devis         crt             = new CR_11_Edition_Devis();

                #region Log de l'état
                crt.SetDataSource("BaseTest");
                crt.SetDatabaseLogon("test", "test");
                #endregion

                mCrViewer.ReportSource = crt;

Si quelqu'un à une idée, parce que la je n'ai plus beaucoup de temps, il me reste cette intégration à finir pour mon projet.

Merci d'avance

spike

Re : Probleme Crystal Report C# Passage Parametre le 14/09/2007 09:09:53

spike62300
Mesdames et Messieurs,

J'ai trouvé la solution après maintes tentatives et recherches.
En fait, j'ai utilisé une classe spéciale en utilisant une classe nommé CachedReport

Je poste mon code pour ceux qui rencontre ou ont rencontré le probleme :

Classe CachedReport

using System;
using System.ComponentModel;
using System.Windows.Forms;

using CrystalDecisions.CrystalReports.Engine;
using CrystalDecisions.ReportSource;
using CrystalDecisions.Shared;

namespace IHM
{
    public class CachedReport : Component, ICachedReport
    {
        protected ReportDocument Report = new ReportDocument();
        protected bool isCacheable;
        protected bool shareDBLogonInfo;
        protected string reportName;
        protected ParameterDiscreteValue parametre = new ParameterDiscreteValue();
        protected TimeSpan cacheTimeOut;

        public CachedReport(string s, ParameterDiscreteValue param)
        {
            reportName       = s;
            parametre        = param;
        }

        public virtual Boolean IsCacheable
        {
            get
            {
                return isCacheable;
            }
            set
            {
                isCacheable = value;
            }
        }

        public virtual Boolean ShareDBLogonInfo
        {
            get
            {
                return shareDBLogonInfo;
            }
            set
            {
                shareDBLogonInfo = value;
            }
        }

        public virtual TimeSpan CacheTimeOut
        {
            get
            {
                return cacheTimeOut;
            }
            set
            {
                cacheTimeOut = value;
            }
        }

        public virtual ReportDocument CreateReport()
        {
            try
            {
                Report.Load
                   (reportName, OpenReportMethod.OpenReportByTempCopy);
                Report.Site = this.Site;
                Report.SetParameterValue("discreteVal", parametre);
                Report.SetDatabaseLogon("getec", "getec");
            }
            catch(SystemException exp)
            {
                MessageBox.Show(exp.Message.ToString());
            }

            return Report;
        }

        public virtual String GetCustomizedCacheKey(RequestContext request)
        {
            String key = null;

            key = RequestContext.BuildCompleteCacheKey(
                request,
                reportName,
                this.GetType(),
                this.ShareDBLogonInfo);
            return key;
        }
    }
}


Code appelant la classe :

            try
            {
                mParameterField.ParameterFieldName = "discreteVal";   // Champ de parametre
                mDiscreteVal.Value                 = m_sParametre;             // Je récupère la valeur d'un string et je le met dans la valeur discrete
                mParameterField.CurrentValues.Add(mDiscreteVal);
                mParameterFields.Add(mParameterField);

                CachedReport cr = new CachedReport(@"C:\test\2007\CR_test.rpt", mDiscreteVal);
                mCrViewer.ParameterFieldInfo = mParameterFields;
                mCrViewer.ReportSource = cr;
            }
            catch (Exception exc)
            {
                MessageBox.Show(exc.Message);
            }

Et voila

spike


Classé sous : crystal, report, private, crt, mparameterfield

Participer à cet échange

Pub



Appels d'offres

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS