3.日常的报表及数据查询
在报表文件及数据存储完成后,后台管理人员需要查询日常的报表文件及数据,系统的设计采用Web Browser组件将邮储前置系统下的报表文件以FILE STREAM方式转换为Windows平台下的纯文本格式文件,再在Web Browser组件中显示出来, 电子报表的可视效果将与纸质报表文件的效果完全一致。FILE STREAM格式转换函数如下设计:
CString CHDBBPRINT::WebStr2Str(LPCSTR lpBuf)
{
int nLen;
if(!lpBuf) nLen=0;
else nLen=::lstrlen(lpBuf);
CString s; int i=0;
while(i<nLen)
{
if(lpBuf[i]=='%')
{
BYTE c1=lpBuf[i+1];
BYTE c2=lpBuf[i+2];
i+=2;
if(c1>='0' && c1<='9') c1=(c1-'0')*16;
else if(c1>='A' && c1<='Z') c1=(c1-'A'+10)*16;
else if(c1>='a' && c1<='a') c1=(c1-'a'+10)*16;
if(c2>='0' && c2<='9') c2=c2-'0';
else if(c2>='A' && c2<='Z') c2=c2-'A'+10;
else if(c2>='a' && c2<='z') c2=c2-'a'+10;
char szStr[2]; szStr[0]=c1+c2; szStr[1]=0;
s+=szStr;
}
else if(lpBuf[i]=='+') s+=" ";
else s+=CString(&lpBuf[i],1);
i++;
}
return s;
}
采用Web Browser组件预览转换后的报表文件为防止格式转换后的乱符及无法打印现象, 将转换格式后文件再做过滤处理,如下函数设计:
void CHDBBPRINT::OnBeforeNavigate2Explorer(LPDISPATCH pDisp, VARIANT FAR* URL, VARIANT FAR* Flags, VARIANT FAR* TargetFrameName, VARIANT FAR* PostData, VARIANT FAR* Headers, BOOL FAR* Cancel)
{
|