- 网点报表处理
自动或手动下传单日或多日批量邮储前台报表,根据日期、网点名称或报表种类检索邮储前台报表,模糊查询条件不明确的邮储前台报表及日志,批量打印邮储前台报表,快速提取用户信息资料,方便用户历史交易查询。
以邮储报表单日手动传输模块为例, 编码设计思想如下:首先根据各项已设置的基础数据表信息结合报表文件格式信息表生成本日即将传输的报表文件名称及存放目录, 再根据生成好的单日报表目录使用Win32的FTP SOCKET系统函数直接从前置机中传输各网点的报表文件到本地报表服务器的指定目录下,在文件传输的过程中。根据需要提取纯数据文件中的指定数据导入本地数据库表中。流程如图10所示:

图10 网点报表流程
在生成单日报表文件传输表时,采用VC++中的ADO DCOM访问技术,可快速读取数据库信息并生成表格。核心代码如下:
::CoInitialize(NULL);
_ConnectionPtr MyDb;
_RecordsetPtr MySetjg;
_RecordsetPtr MySetbb;
MyDb.CreateInstance(__uuidof(Connection));
MySetjg.CreateInstance(__uuidof(Recordset));
MySetbb.CreateInstance(__uuidof(Recordset));
MyDb->Open("DSN=NETCONTROL;UID=admin;PWD=admin","","flyingtjf",-1);
MySetbb->Open(sqlsumbb.AllocSysString(),MyDb.GetInterfacePtr(),adOpenKeyset,adLockPessimistic,adCmdText);
……
for(int i=0;i<numjg;i++)
{
str_jgmc=(char*)(_bstr_t)(MySetjg->Fields->GetItem(_variant_t("机构名称"))->Value);
……
//生成报表存放目录
CString cmd_bbml=stringpath;
cmd_bbml+=str_jgmc;
cmd_bbml+="\\";
cmd_bbml+=str_bbrq;
CreateDirectory(cmd_bbml,NULL);
{
MySetbb->MoveFirst();
for(int j=0;j<numbb;j++)
{
str_bbmc=(char*)(_bstr_t)(MySetbb->Fields->GetItem(_variant_t("报表名称"))->Value);
……
|