從Corba介面中取到的資料填充FastReport報表

來源:互聯網
上載者:User
環境:

編程工具:Borland C++ Builder 6.0

作業系統:windows 2000

應用軟體:FastReport5.2破解版

1.安裝FastReport
如安裝到c:/program files/fastreports

2.在bcb 6中使用FastReport(本過程從RastReport中抄寫)
l         複製c:/program files/fastreports/ fastreport /RES/chinese檔案夾到c:/program files/fastreports/ fastreport/SOURCE

l         Copy fr_class.pas to the installation folder

l         "/FastReports/FastReport/sources/" (default folder)

l         Run C++ Builder 6.0

l         Select menu Component->Install Packages. Check in packages list "FastReport 2.5 Components" and click Remove button,  Answer "Yes" to all questions. Click "OK".

l         Select menu File->Open, select file fr6.bpk from folder"/FastReports/FastReport/sources/"

l         Press buttons "Compile" and "Install" in opened window

l         Close C++ Builder. On query about save fr6.bpk ansver "No".

l         Run C++ Builder.

l         Select menu "Component"->"Install Packages" and set select for all installed FastReport related packages (ADO, BDE, DBX etc)

l         安裝用到的其它額外的組件:There are three additional components included in standard FR package.These components can be found in SOURCE/BDE, SOURCE/IBX and SOURCE/ADO folders. They supersede old datamanager (TfrDataStorage component). To install them, use same technique as described above. Each component have a package file. To install in Delphi2, use file with Reg suffix (for example,FR_BDEReg.pas).

3.使用記憶體表
l         從BDE中拉Ttable控制項,在表單的建構函式中寫如下代碼,建立資料庫和表和表欄位和欄位類型:

    Table1->Close();

    Table1->DatabaseName = "c://tempDB";

    Table1->TableType = ttParadox;//資料庫類型

    Table1->TableName = "TREPORT_EXCHANGE";

    if (!Table1->Exists) // Don't overwrite an existing table

    {

    // describe the fields in the table

    Table1->FieldDefs->Clear();

    TFieldDef *pNewDef = Table1->FieldDefs->AddFieldDef();

    pNewDef->Name = "ITEM_NAME";

    pNewDef->DataType = ftString;

    pNewDef = Table1->FieldDefs->AddFieldDef();

    pNewDef->Name = "CARDTYPE";

    pNewDef->DataType = ftInteger;

    pNewDef = Table1->FieldDefs->AddFieldDef();

    pNewDef->Name = "AREA_NAME";

    pNewDef->DataType = ftString;

    pNewDef = Table1->FieldDefs->AddFieldDef();

    pNewDef->Name = "OPER_NAME";

    pNewDef->DataType = ftString;

    pNewDef = Table1->FieldDefs->AddFieldDef();

    pNewDef->Name = "FEECOUNT";

    pNewDef->DataType = ftString;

    pNewDef = Table1->FieldDefs->AddFieldDef();

    pNewDef->Name = "ConsumeTimes";

    pNewDef->DataType = ftString;

    Table1->CreateTable();

    }

l         編譯後設定Ttable屬性:

n         DatabaseName=c:/tempDB檔案夾路徑

n         Tablename=TREPORT_EXCHANGE

拉FastReport中的frReport和frDbDataSet控制項。

設定frDbDataSet的DataSet屬性為Ttable,frReport的Dataset屬性為frDbDataSet

l         雙擊frReport設計報表視圖。

儲存到目前的目錄下的BusiStatByBusiItem.frf檔案

l         添加一個按鈕,並添加單擊事件代碼如下,注意在標頭檔中添加idl2cpp產生的.h檔案:

CORBA::ORB_var orb = ::CORBA::ORB_init(__argc, __argv);

  Table1->Open();

//每次報表前清空資料

  while(Table1->FindFirst())

  {

        Table1->Delete();

  }

  PortableServer::ObjectId_var managerId =

          PortableServer::string_to_ObjectId("InterfaceReport");

  VipCenter::InterfaceReport_var manager =VipCenter::InterfaceReport::_bind("/InterfaceReport_poa",managerId);

  VipCenter::StructRet_var retVar1;

  VipCenter::SeqReportExchange_var seqReportExchange;

  CORBA::ULong i=0;

  VipCenter::date_time dt_start,dt_end;

dt_start.year=2002;

dt_start.month=1;

dt_start.day=1;

dt_start.hour=0;

dt_start.minute=0;

dt_start.second=0;

dt_end.year=2004;

dt_end.month=1;

dt_end.day=1;

dt_end.hour=0;

dt_end.minute=0;

dt_end.second=0;

   //retVar1 = manager->BusiStatByVipCardType("571000100001",dt_start,dt_end,"1",571,seqReportExchange.out());

   retVar1 = manager->BusiStatByBusiItem("571000100001",dt_start,dt_end,1,571,seqReportExchange.out());

  for(i=0;i<seqReportExchange->length();i++)

  {

        Table1->AppendRecord(ARRAYOFCONST((

        (AnsiString)seqReportExchange.ITEM_NAME

        ,(short)(seqReportExchange.CARDTYPE)

        ,(AnsiString)seqReportExchange.AREA_NAME

        ,(AnsiString)seqReportExchange.OPER_NAME

        , (AnsiString)seqReportExchange.FEECOUNT

        ,(AnsiString)seqReportExchange.ConsumeTimes)));

  }

  Table1->Close();

  Table1->Active = true;

  frReport1->LoadFromFile("BusiStatByBusiItem.frf");

  frReport1->ShowPreparedReport();

  frReport1->ShowReport();

  } 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.