正文

帐单导出2006-10-17 21:50:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/sgpro/19437.html

分享到:

  财务管理系统1.2 For SGWINDOW 2.0虽然提供了多帐单操作,但是不能打印帐单报表,因此在财务管理系统1.2 For SGWINDOW2.0版本上做帐单数据的导出功能,帐单数据导出之后可以当作报表打印,暂定版本为1.3。在商用系统当中,有专门的报表管理器。这里的帐单导出,只做HTML表格的生成。导出文件为HTML格式,用浏览器打开。      下面是帐单导出的实现代码   void On_Export() {        finaitem   instance = {0L,"",""};        FILE *fdatabas;        int flag;        int oamt =0,iamt = 0;        char outstr[128] = "";               ChangeReckName();          if (access(User.DatabaseName, 4) == -1)        {               Messagebox(GetAppVersion(false), "帐单文件不存在,导出失败", SGMSGBOX_OKONLY,SGMSGBOXICON_critical);               WndhndGetFocus(GetMessageSource(window),ID_TXTRECKNAME);               return;        }        else        {               amount = 0;               if (!openHTML())               {                      return;               }               HTML();                 TABLE();                   TR();                        TH("日期");    _TH();                        TH("资金数额");_TH();                        TH("备注");    _TH();                   _TR();               fdatabas = fopen(User.DatabaseName,"rb");               while (!feof(fdatabas))               {                      if (fread(&instance,sizeof(finaitem),1,fdatabas)!=1)                      {                             break;                      }                        amount += instance.sum;                      (instance.sum> 0 )? (iamt+=instance.sum) : (oamt += instance.sum);                      TR();                      sprintf(outstr,"%-12s",instance.date);                      TD(outstr); _TD();                      sprintf(outstr,"%-10d",instance.sum);                      TD(outstr); _TD();                      sprintf(outstr,"%-10s",instance.comment);                      TD(outstr); _TD();                      _TR();               }               _TABLE();               TABLE();                 TR();                   TH("帐单名称");_TH();                   TH("资金余额");_TH();                   TH("出帐总额");_TH();                   TH("入帐总额");_TH();                 _TR();                 TR();               sprintf(outstr, "%11s",User.DatabaseName);                      TD(outstr);_TD();               sprintf(outstr, "%11d",amount);                      TD(outstr);_TD();               sprintf(outstr, "%11d",-oamt);                      TD(outstr);_TD();               sprintf(outstr, "%11d",iamt);                      TD(outstr);_TD();                 _TR();                 _TABLE();               _HTML();               closeHTML();        }        sprintf(outstr,"帐单:%s导出成功", User.DatabaseName);        Messagebox(GetAppVersion(false),outstr,SGMSGBOX_OKONLY,SGMSGBOXICON_information);        fclose(fdatabas); } void HTML() {        fprintf(fexp, "<HTML>\n<HEAD>\n<TITLE>");        fprintf(fexp, "%s生成帐单",APPNAME);        fprintf(fexp, "</TITLE>\n<BODY>\n");        fprintf(fexp, "<BR><BR><CENTER><H3>%s</H3>",               GetAppVersion(true)); }   void TABLE() {        fprintf(fexp, "<TABLE border=1 >\n"); }   void _TABLE() {        fprintf(fexp, "</TABLE>\n"); }   void TR() {        fprintf(fexp, "<TR>\n"); }     void _TR() {        fprintf(fexp, "</TR>\n"); }   void TH(char *caption) {        fprintf(fexp, "<TH BGCOLOR=YELLOW>%s\n", caption); }   void _TH() {        fprintf(fexp, "</TH>\n"); }   void TD(char *caption) {        fprintf(fexp, "<TD>%s\n", caption); } void _TD() {        fprintf(fexp, "</TD>\n"); }   void _HTML() {          fprintf(fexp, "</CENTER></BDOY>\n</THML>");        closeHTML(); }   bool openHTML() {        char expname[96] = "";          memccpy(expname, User.DatabaseName, '.', 8);        if (expname[strlen(expname)-1] == '.')        {               expname[strlen(expname)-1] = '\0';        }        strcat(expname, ".htm");        if ( access(expname, 0) != -1)        {               if (Messagebox(GetAppVersion(false), "该帐单已导出,是否覆盖?",               SGMSGBOX_YESNO, SGMSGBOXICON_question) == SGMSGBOX_NO)               {                      return false;               }          }        fexp = fopen(expname, "w");        if (fexp == NULL)        {               Messagebox(GetAppVersion(false),strcat(expname, "生成失败! 文件名非法或文件具有写保护"),               SGMSGBOX_OKONLY, SGMSGBOXICON_exclamation);               WndhndGetFocus(GetMessageSource(window),ID_TXTRECKNAME);               fclose(fexp);               return false;        }        return true; }   void closeHTML() {        fclose(fexp); }   v1.5 运行界面    下面是用帐单导出功能将一个演示帐单数据导出的演示报表: 财务管理系统 1.3 For SGWINDOW 2.0 Copyright (C) 2005-8 - 2006-10 SGPRO 日期 资金数额 备注 2006-10-14 5000 初额 2006-10-14 -120 通讯支出 2006-10-14 -70 交通支出 2006-10-14 -160 体检   帐单名称 资金余额 出帐总额 入帐总额 演示帐单.DB 4650 350 5000     Copyright (C) 2006-10-14 SGPRO

阅读(2963) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册