IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

SAP Crystal Reports Discussion :

[Crystal Report]Problème de mémoire avec le moteur RDC


Sujet :

SAP Crystal Reports

  1. #1
    Membre confirmé
    Avatar de sur_uix
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    379
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2002
    Messages : 379
    Points : 550
    Points
    550
    Par défaut [Crystal Report]Problème de mémoire avec le moteur RDC
    Hello,
    j'ai constaté que le moteur RDC ne libére pas correctement la mémoire lorsque l'on fait du traitement en boucle d'un rapport.
    Exemple de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
      //Si IReport est chargé alors on ferme
      CrReport1.Disconnect;
     
      Application.ProcessMessages;
     
      //Chargement du Rapport
      CrReport1.ConnectTo(CrApplication1.OpenReport(DCFileNameEdit1.Text,1));
     
      CrReport1.DiscardSavedData;
      //Connecte les tables
      for i:= 1 to CrReport1.Database.Tables.Count do
        if LowerCase(CrReport1.Database.Tables[i].DllName) = 'crdb_oracle.dll' Then
        with CrReport1.Database do
        begin
          Tables[i].ConnectionProperties.DeleteAll;
          Tables[i].ConnectionProperties.Add('Server',edtPwd.Text);
          Tables[i].ConnectionProperties.Add('User ID',edtName.Text);
          Tables[i].ConnectionProperties.Add('Password',edtDB.Text);
     
          if (Pos('PC_',Tables[i].Location)=0) and (Pos('Command',Tables[i].Name)=0) and (Pos('DIC_PC_',Tables[i].Name)=0) and (Pos('V_PC_',Tables[i].Name)=0)and (Pos('SYS_',Tables[i].Name)=0) Then
             //Tables[i].SetTableLocation(edtName.Text,str,str2);
             Tables[i].Location := edtName.Text+'.'+Tables[i].Location;
        end;
     
      //Affiche dans le viewer
      ADDCRViewer1.ReportSource := CrReport1.Intf;
      ADDCRViewer1.ViewReport;
    A chaque appel de ce code la mémoire augmente de 1Mb, ce qui me pose d'énorme problème de pérformance lorsque le client imprime 400 factures......
    Est-ce que quelqu'un a déjà rencontré le problème et mieux une solution ?

  2. #2
    Membre émérite
    Avatar de L.nico
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2003
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 143
    Points : 2 679
    Points
    2 679
    Par défaut
    Bonjour Sur_Uix,
    Ton code c'est du delphi ?? (je ne connais pas Delphi ! )
    ....
    Et si tu détruisais l'objet crreport1 à chaque fois avant de rentrer dans cette procédure, c'est un peu embêtant parcequ'il devra recharger la DLL, mais peut-être qu'il va libérer la mémoire .... non ??
    En VB ca ferait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set crReport1 = Nothing
    enfin c'est juste une idée .
    A lire avant de poster
    Si vous avez obtenu la réponse à votre question alors cliquez sur le bouton

  3. #3
    Membre confirmé
    Avatar de sur_uix
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    379
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2002
    Messages : 379
    Points : 550
    Points
    550
    Par défaut
    Hello,
    oui c'est du Delphi.
    Ce que tu proposes ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set crReport1 = Nothing
    Et bien en fait je le fait làEn fait l'objet CrReport1 est une classe wrappeur de l'interface IReport du RDC. et dans Disconnect il y a

  4. #4
    Membre confirmé
    Avatar de sur_uix
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    379
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2002
    Messages : 379
    Points : 550
    Points
    550
    Par défaut
    Pour info j'ai trouvé une solution, c'est de libérer aussi le moteur d'impression.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    CrReport1.Disconnect;
    CrApplication1.Disconnect;
    Je trouve très bizzard de devoir libérer le moteur alors que je vais le recréer quelques secondes plustard, mais de cette manière je n'ai plus de problème mémoire.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Crystal Report] Problème avec la mise en forme à colonnes multiples
    Par SamRay1024 dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 14/10/2010, 15h19
  2. [Crystal Report] Problèmes avec le CrystalViewer
    Par Prodige2020 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 11/12/2008, 13h37
  3. Réponses: 1
    Dernier message: 31/08/2008, 17h46
  4. [CRYSTAL REPORT ] Problème avec sous état
    Par olbi dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 16/05/2006, 15h52
  5. [Crystal Report] problème de plusieurs tuples à imprimer
    Par Jé_48 dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 19/06/2003, 14h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo