从Corba接口中取到的数据填充FastReport报表设计过程
<!----><o:p></o:p>
<o:p></o:p>
环境:
编程工具:Borland C++ Builder 6.0
操作系统:windows 2000
应用软件:FastReport5.2破解版
<o:p></o:p>
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;
<o:p></o:p>
pNewDef = Table1->FieldDefs->AddFieldDef();
pNewDef->Name = "CARDTYPE";
pNewDef->DataType = ftInteger;
<o:p></o:p>
pNewDef = Table1->FieldDefs->AddFieldDef();
pNewDef->Name = "AREA_NAME";
pNewDef->DataType = ftString;
<o:p></o:p>
pNewDef = Table1->FieldDefs->AddFieldDef();
pNewDef->Name = "OPER_NAME";
pNewDef->DataType = ftString;
<o:p></o:p>
pNewDef = Table1->FieldDefs->AddFieldDef();
pNewDef->Name = "FEECOUNT";
pNewDef->DataType = ftString;
<o:p></o:p>
pNewDef = Table1->FieldDefs->AddFieldDef();
pNewDef->Name = "ConsumeTimes";
pNewDef->DataType = ftString;
<o:p></o:p>
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();
}
<o:p></o:p>
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;
<o:p></o:p>
CORBA::ULong i=0;
VipCenter::date_time dt_start,dt_end;
<o:p></o:p>
dt_start.year=2002;
dt_start.month=1;
dt_start.day=1;
dt_start.hour=0;
dt_start.minute=0;
dt_start.second=0;
<o:p></o:p>
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());
<o:p></o:p>
for(i=0;i<seqReportExchange->length();i++)
{
Table1->AppendRecord(ARRAYOFCONST((
(AnsiString)seqReportExchange[i].ITEM_NAME
,(short)(seqReportExchange[i].CARDTYPE)
,(AnsiString)seqReportExchange[i].AREA_NAME
,(AnsiString)seqReportExchange[i].OPER_NAME
, (AnsiString)seqReportExchange[i].FEECOUNT
,(AnsiString)seqReportExchange[i].ConsumeTimes)));
}
Table1->Close();
Table1->Active = true;
frReport1->LoadFromFile("BusiStatByBusiItem.frf");
frReport1->ShowPreparedReport();
frReport1->ShowReport();
}
分享到:
相关推荐
5. **安全性和性能优化**:讨论了在使用北向CORBA接口时应考虑的安全措施,如身份验证、授权和加密,以及如何优化接口性能,提高数据传输效率和系统的响应速度。 6. **故障排查与维护**:提供了接口常见问题的解决...
CORBA(Common Object Request Broker Architecture,公共对象请求代理体系结构)是一种中间件技术,它允许在分布式计算环境中不同操作系统、编程语言和网络协议的软件组件之间进行通信。在这个主题下,我们将深入...
在"ZXONM NML-EML CORBA接口规范"文档中,这些接口定义了NML层与EML层之间交换的数据结构和操作,例如设备查询、状态更新、配置修改等。开发者可以将IDL定义翻译成各种目标语言(如C++、Java)的接口,使得NML和EML...
U2000 CORBA接口操作和维护指导了解U2000 CORBA接口运行和工作原理 掌握CORBA接口部署过程中的注意事项 能够独立进行CORBA接口部署和验证 能够独立进行CORBA接口简单问题排障
java开发华为corba接口所需要的华为idl文件,用于编译生成华为corba服务端接口. corba开发参考:https://my.oschina.net/dong706/blog?catalog=5757620
《ZXONM_NML-EML_CORBA接口规范》是一份详细阐述中兴通讯在使用CORBA接口技术时遵循的标准文档。这份规范对于理解和实施中兴网络管理系统(ZXONM)与网络管理语言(NML)及事件管理语言(EML)之间的通信至关重要。...
在常见的远程过程调用(Remote Procedure Call,RPC)技术中,CORBA能通过接口定义语言(Interface Definition Language,IDL)定义接口,使得语言无关和面向对象的实现成为可能。 CORBA的核心组件包括ORB、对象...
5. 动态调用接口(Dynamic Invocation Interface, DII):DII是CORBA提供的一组API,使得客户端能够在运行时创建请求,并将其发送到ORB。DII允许在不知道接口的具体实现或对象引用的情况下调用方法。 6. 动态接收...
### Corba接口用户手册...综上所述,《Corba接口用户手册》是一份详尽的手册,不仅包含了SBIA系统的基本信息,还涵盖了从安装到配置、再到使用的全过程指导,为SBIA的开发维护人员和现场工程师提供了宝贵的技术支持。
在标题和描述中提到的"corbo接口"可能是笔误,应该是"Corba接口"。这里的"接口软件"指的是实现CORBA标准的ORB(Object Request Broker,对象请求代理)和其他相关组件。 1. **ORB(对象请求代理)**:ORB是CORBA的...
java开发中兴corba接口所需要的中兴idl文件,用于编译生成中兴corba服务端接口 corba开发参考:https://my.oschina.net/dong706/blog?catalog=5757620
通过实际编写和运行简单的CORBA程序,你可以深入理解这些概念,并能够应用到实际的分布式系统开发中。随着对CORBA的理解加深,你将能够解决更复杂的跨平台互操作问题,构建出高效、可扩展的分布式系统。
这个过程展示了CORBA如何在分布式环境中处理数据并协调不同节点的计算任务。 1. **CORBA基础**: CORBA提供了标准的接口定义语言(IDL,Interface Definition Language),用于定义对象的接口,使得客户端和服务器...
### CORBA 数据交换 #### 一、概述 CORBA(Common Object Request Broker Architecture,公共对象请求代理体系结构)是一项由OMG(Object Management Group,对象管理组织)制定的标准和技术规范,旨在实现分布式...
### Corba模型及构件接口语言 #### 一、Corba模型概述 Common Object Request Broker Architecture (CORBA),即通用对象请求代理系统,是一种为不同语言编写的程序提供一种标准方式来互相通信的技术。CORBA的设计...
CORBA实现移动综合网管北向接口,介绍如何构架网管北向接口,
ORB实现了CORBA的接口定义语言IDL(Interface Definition Language),用于定义接口和数据类型,并将其转换为不同编程语言可以理解的形式。 在C++中开发CORBA应用,你需要以下步骤: 1. **定义接口**:使用IDL编写...