Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > Crystal Reports > SDK
SDK Forum sur l'utilisation de Crystal Reports par des API (VB, C++, Delphi, Java, etc.)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 12/09/2007, 15h01   #1
Invité de passage
 
Inscription : septembre 2007
Messages : 8
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 8
Points : 4
Points : 4
Par défaut [XI][C#][vs2005] Problème passage paramètre.

Bonjour à tous,

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
Arkan6262 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2007, 09h38   #2
Rédactrice
 
Avatar de Fleur-Anne.Blain
 
Inscription : juillet 2006
Messages : 2 662
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 2 662
Points : 5 590
Points : 5 590
"Le soucis est qu'au lancement du formulaire contenant le crystal viewer, j'obtiens des messages d'erreurs liés à des fichiers temporaires .rpt"


lol j'ai eu cette erreur tout comme toi, CR report à une mémoire cache assez chiante..mais vraiment chiante la seule chose à faire est gérer dans ton code la mémoire cache de crystal. Il me semble que j'avais aussi modifier le source de la dll crystal mais je n'utilisais pas le crystal intégré.

Meme en supprimant a la main les reports temporaires de ton répertoire temp ca ne marchera pas je te le dis tout de suite. Il faut que tu gères dans ton code directement les problemes de mémoire cache.
__________________
la culture c'est comme la confiture moins on en a plus on l'étale.

Vous souhaitez contribuer aux rubriques Solutions d'entreprises ou BI, contactez-moi

Mes tutos
Fleur-Anne.Blain est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2007, 12h08   #3
Invité de passage
 
Inscription : septembre 2007
Messages : 8
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 8
Points : 4
Points : 4
Merci de m'avoir répondu.

Mais comment fais tu pour gérer dans ton code la mémoire cache de crystal? C'est très urgent, je bloque sur ça depuis 3 jours alors que c'est la dernière étape pour finir mon projet.

Encore merci.
Arkan6262 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/09/2007, 12h15   #4
Rédactrice
 
Avatar de Fleur-Anne.Blain
 
Inscription : juillet 2006
Messages : 2 662
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 2 662
Points : 5 590
Points : 5 590
je code en VB.net dans mon cas...et c'est une grosse magouille...je te le dis tout de suite

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
Imports Microsoft.VisualBasic
 
''' <summary>
''' Manages the cache of display
''' </summary>
''' <remarks></remarks>
Public Class CacheManagement
 
    Private Shared _LastCacheRebuild AS DateTime = DateTime.Now
    ''' <summary>
    ''' When the cache was built FOR the last time
    ''' </summary>
    ''' <value></value>
    ''' <returns></returns>
    ''' <remarks></remarks>
    Public Shared Property LastCacheRebuild() AS DateTime
        Get
            RETURN _LastCacheRebuild
        End Get
        SET(ByVal value AS DateTime)
            _LastCacheRebuild = value
        End SET
    End Property
 
    ''' <summary>
    ''' Gives the Reset Cache ORDER
    ''' </summary>
    ''' <remarks></remarks>
    Public Shared Sub ResetCache()
        LastCacheRebuild = DateTime.Now
    End Sub
End Class
__________________
la culture c'est comme la confiture moins on en a plus on l'étale.

Vous souhaitez contribuer aux rubriques Solutions d'entreprises ou BI, contactez-moi

Mes tutos
Fleur-Anne.Blain est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/09/2007, 09h17   #5
Invité de passage
 
Inscription : septembre 2007
Messages : 8
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 8
Points : 4
Points : 4
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 :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
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 :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
   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
Arkan6262 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h16.


 
 
 
 
Partenaires

Hébergement Web