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
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......
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;
Est-ce que quelqu'un a déjà rencontré le problème et mieux une solution ?
Partager