lphi, Components, Borland, CodeGear, Embarcadero" />

Exporting Reports Programmatically

Category

Rave - General

Question

I am using the enduser designer and I would like to be able to export reports from one .rav file to another. How would I do that?

Solution

The enduser designer does not provide an Export menu item like what you will find when using rave.exe. However, Reports, global pages and dataviews can be exported fairly easily. The example that follows will export the Introduction report, the GlobalPage2 and the CustomerDV from the RaveDemo.rav file that ships with Rave.

Delphi Example:

uses
  RVProj, RVClass;

procedure TForm1.butnExportClick(Sender: TObject);

var
  I1: integer;
  MyExportList: TList;

begin
  MyExportList := TList.Create;
  try
    If not RaveProject1.Active then begin
      RaveProject1.Open;
    end;
    With RaveProject1.ProjMan do begin
      If ReportList.Count > 0 then begin
        For I1 := 0 to ReportList.Count-1 do begin
          if CompareText(TRaveReport(ReportList[i1]).Name,'IntroductionReport') = 0 then begin
            MyExportList.Add(ReportList[i1]);
          end;
        end; { for }
      end; { if }
      If GlobalPageList.Count > 0 then begin
        For I1 := 0 to GlobalPageList.Count-1 do begin
          if CompareText(TRaveDataObject(GlobalPageList[i1]).Name,'GlobalPage2') = 0 then begin
            MyExportList.Add(GlobalPageList[i1]);
          end;
        end; { for }
      end; { if }
      If DataObjectList.Count > 0 then begin
        For I1 := 0 to DataObjectList.Count-1 do begin
          if CompareText(TRaveDataObject(DataObjectList[i1]).Name,'CustomerDV') = 0 then begin
            MyExportList.Add(DataObjectList[i1]);
          end;
        end; { for }
      end; { if }
      If MyExportList.Count > 0 then begin
        ExportProject('test.rav',MyExportList);
      end; { if }
    end; { with }
  finally
    FreeAndNil(MyExportList);
  end; { tryf }
end;

C++Builder Example:

void __fastcall TForm1::butnExportClick(TObject *Sender)
{

  int I1;
  TList* pExportList;
  TList* pRaveList;
  TRaveReport* pRaveReport;
  TRaveDataObject* pRaveDataObject;

  pExportList = new TList;
  try {
    if (!RaveProject1->Active) {
      RaveProject1->Open();
    }// if
    pRaveList = RaveProject1->ProjMan->ReportList;
    if (pRaveList->Count > 0) {
      for (I1 = 0; I1 < pRaveList->Count; I1++) {
        pRaveReport = (TRaveReport*)pRaveList->Items[I1];
        if (CompareText(pRaveReport->Name,"IntroductionReport") == 0) {
          pExportList->Add(pRaveReport);
        }// if
      }// for
    }// if
    pRaveList = RaveProject1->ProjMan->GlobalPageList;
    if (pRaveList->Count > 0) {
      for (I1 = 0; I1 < pRaveList->Count;I1++) {
        pRaveDataObject = (TRaveDataObject*)pRaveList->Items[I1];
        if (CompareText(pRaveDataObject->Name,"GlobalPage2") == 0) {
          pExportList->Add(pRaveDataObject);
        }// if
      }// for
    }// if
    pRaveList = RaveProject1->ProjMan->DataObjectList;
    if (pRaveList->Count > 0) {
      for (I1 = 0; I1 < pRaveList->Count; I1++) {
        pRaveDataObject = (TRaveDataObject*)pRaveList->Items[I1];
        if (CompareText(pRaveDataObject->Name,"CustomerDV") == 0) {
          pExportList->Add(pRaveDataObject);
        }// if
      }// for
    }// if
    if (pExportList->Count > 0) {
      RaveProject1->ProjMan->ExportProject("test.rav",pExportList);
    }// if
  }// try
  __finally {
    FreeAndNil(pExportList);
  }// __finally
}// butnExportClick()