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 ?