Crystal Reports 财务日记帐凭证套打设计
Crystal Reports 财务日记帐凭证套打设计
一、首先大家看下财务日记帐凭证的纸张格式:
下面我们来分析下有几点要素:1、每页显示5行记录,2、就是在合计处的中文金额大写了。其他页眉页脚在水晶报表中很容易设计。
二、报表设计:在此只是提供一种实现方式,如果有更好的方法实现欢迎交流。
如图构建水晶报表:
在页眉处设计相关固定格式;新建过账日期组(配合之后的设计可以将不同日期的数据按页分开);详细数据中显示我们需要的信息;最后新建4个空白格式组页脚(我们使用的是SQL2008,在数据库中查询到的日记帐数据可以按照过账日期分组,为了实现每页5行数据的格式套打,我们需要增加4行空白行,然后分别判断本页显示数据一共有几行如果不足5行数据则用空白行替代。)
实现每页5行数据:首先我们在查询数据库数据的时候为每行数据增加了一列名为Num值为1例如:selsct *,1 Num from XX where XX。(配合水晶报表的汇总功能我们就可以知道每行数据的序号,为了实现每页5行数据我们还要增加一个公式字段TotalNum记录序号并且将序号按照1-5循环显示 :if ({#RTotal0}-({#RTotal0} \ 5) * 5)=0 then 5 else {#RTotal0}-({#RTotal0} \ 5) * 5)。然后利用TotalNum我们在每个组页角中添加抑制显示的条件(例如:第4行红白格式组页角就判断如果TotalNum〉4就抑制显示,第3行红白格式组页角就判断如果TotalNum〉3就抑制显示,以此类推)。到此我们为每个组的数据每页显示5行补足了空白的格式行,下面就是让数据分页显示了,在最后一个组页脚节专家中勾选在后面新建页并添加条件,使得最后一组的数据后面不用新建页我是这样实现的{getOJDT;1.TransId}<Maximum ({getOJDT;1.TransId}) ;并且在最后组页脚节专家中勾选之后重置页码。这样我们格式化显示数据的工作完成了,只要调整下详细数据和组页脚的高度就可以实现5行数据显示)。
三、下面我们来实现金额大写:
//定义一个字符数组
stringVar array strNumber := ["零","壹","贰","叁","肆","伍","陆","柒","捌","玖"];
//把数值转换为字符串
StringVar strValue := CStr({@TotalDebit});
//获取数值字符串的长度
NumberVar strLength := Length(strValue);
//如果有小数点就进行获取元、角、分的字符串
//在这里我们使用mid函数阶段金额字符和ToWords函数转换金额为大写,可以查看帮助文档
//没有小数点的话就直接采用ToWords{@TotalDebit})这个值就可以了
//由于ToWords函数在转换角和分的时候不能真确显示所以角和分我们要单独转换,
//虽然ToWords函数可以转换负数但是为了截取金额中的"-"号 我这里还是单独使用了一个变量存储"负"这个字符串
if inStr(strValue,".")>0 then
(
StringVar strDec := mid(strValue, inStr(strValue,".")+1,2);
StringVar strB := mid(strDec,1,1);
StringVar strC := mid(strDec,2,1);
);
if InStr (strValue,"-")=0 then
//判断特殊情况".00"
if inStr(strValue,".")=1 then
(StringVar strA:="0";)
else
(StringVar strA := mid(strValue,1,inStr(strValue,".")-1);
stringvar strX :="";)
else if InStr (strValue,"-")>0 then
( StringVar strA := mid(strValue,2,inStr(strValue,".")-1);
stringvar strX :="负";);
//判断特殊情况"-.00"
if strA="." then strA:="0";
if strB<>"0" or strC <>"0" then
if strA="0" then
if strB="0" then
strX + strNumber[ToNumber(strC)+1] + "分整"
else if strC ="0" then
strX + strNumber[ToNumber(strB)+1] + "角整"
else
strX + strNumber[ToNumber(strB)+1] + "角" + strNumber[ToNumber(strC)+1] +"分整"
else
strX + ToWords(toNumber(strA)) + "元" + strNumber[ToNumber(strB)+1] + "角" + strNumber[ToNumber(strC)+1] +"分整"
else
strX + ToWords(toNumber(strA)) + "元整"
最后的成果如图:
转载于:https://blog.51cto.com/etemity/410256
相关文章:

oozie调度中的重试和手工rerun一个workflow
在oozie中有Bundle、Coordinator和Workflow三种类型的job,他们之间可以有以下包含关系。 Bundle > Coordinator > Workflow。 1. 重新运行一个Coordinator job,可以通过如下命令: oozie job -rerun 0000034-180116183039102-oozie-hado…

【Qt】在Qlayout中Qlabel::setScaledContents(true);失效
Qlabel中添加图片,并使图片自适应Qlabel的大小 QPixmap picture;picture.load("./1.jpg");ui->label->setScaledContents(true);//图片自适应label大小ui->label->setPixmap(picture); 在layout中Qlabel::setScaledContents(true);失效 解决办法,set…

JavaScript写XML
引用地址:http://zhidao.baidu.com/question/76344574.html?frala0 load 方法 作 用表示从指定位置加载的文件。 基本语法boolValue = xmlDocument.load(url);说 明url 包含要被加载档案的URL 的字符串。假如文件加载成功,传回值即为t…

在家想远程公司电脑?Python +微信一键连接
作者 | 阿文转载自 CSDN(ID:CSDNnews)有时候需要远程家里的台式机使用,因为我平时都是用 MAC 多,但是远程唤醒只能针对局域网,比较麻烦,于是我想用微信实现远程唤醒机器。准备工作本程序主要是实现远程管理…

Python 语法相关知识
系统相关的信息模块: import syssys.argv 是一个 list,包含所有的命令行参数. sys.stdout sys.stdin sys.stderr 分别表示标准输入输出,错误输出的文件对象. sys.stdin.readline() 从标准输入读一行 sys.stdout.write("a") 屏幕输出a sys.exit(exit_code) 退出程序 s…

【Qt】 error: LNK1107: 文件无效或损坏: 无法在 0x310 处读取
编译Qt程序使用动态库时,报错 error: LNK1107: 文件无效或损坏: 无法在 0x310 处读取 原因 链接时,使用的dll,而不是lib。 lib是编译时需要的,dll是运行时需要的。 windows下动态库和静态库 动态库:生成动态库时…

Red5安装与入门 与FMS配置
转自:http://www.rosoo.net/a/Media/Streaming/201010/10343.html red5安装时出现问题解决:http://www.cnblogs.com/phinecos/archive/2007/11/26/973109.htmlred5安装设置: 首先需要安装Red5运行所需的java研发环境jdk,我所有的文件都保存到…

面试必备|带你彻底搞懂Python生成器
2019年人工智能系统学: https://edu.csdn.net/topic/ai30?utm_sourceai100_bw 作者 | Rocky0429 转载自 Python空间(ID:Devtogether) 写在之前 Python 的高级语言特性一直是我们学习 Python 的一个难点,大部分人并没有做到熟练的…

Kubecon 2017大会Google高级产品经理David Aronchick访谈:机器学习和Kubernetes
\看新闻很累?看技术新闻更累?试试下载InfoQ手机客户端,每天上下班路上听新闻,有趣还有料!\\\在德克萨斯州奥斯汀市举办的Kubecon大会已于近日闭幕,会议吸引了超过4000名工程师,Kubernetes成为了…

【Qt】Qt程序查看动态链接库(windows)
windows下使用dumpbin查看Qt程序运行时需要链接的动态库 打开终端 打开Qt自带的MSVC终端 如:Qt 5.10.0 64-bit forDesktop(MSVC 2017) 查看dumpbin命令 dumpbin微软官网说明 https://docs.microsoft.com/zh-cn/cpp/build/reference/dumpbin-options 直接输入命令dumpbin…

MSN 无法登录 错误代码 8007007e
故障原因: 发生这个错误的原因是一些朋友在网上下载了独立MSN提取包版本进行安装的,因为这个提取包只包含了Windows Live Messenger 2009,却缺少Windows Live Communications Platform,所以造成无法登录的问题。 解决办法…

你不知道的Vue响应式原理
文章首发于github Blog。 本文根据Vue源码v2.x进行分析。这里只梳理最源码中最主要的部分,略过非核心的一些部分。响应式更新主要涉及到Watcher,Dep,Observer这几个主要类。 本文主要弄清楚以下几个容易搞混的问题: Watcher&#…

优秀开发者必备技能包:Python调试器
作者 | Roky0429 来源 | Python空间(ID:Devtogether) 人工智能的现状及今后发展趋势如何? https://edu.csdn.net/topic/ai30?utm_sourcecsdn_bw 写在之前 不管是之前搞 acm 用 c/c 写算法还是后来用 Python 写代码,我发现在程…

【Qt】dumpbin详解
dumpbin简介 DUMPBIN是在Windows平台下用于显示COFF格式文件信息的一个命令行工具。你可以使用DUMPBIN去显示COFF格式的文件信息,比如像vc编译器生成的目标文件(obj),可执行文件(exe)和动态链接库…

感悟Windows7
Win7已经逐渐在中国电脑用户中普遍起来,绝大多数人对其新增的功能很升级的功能都很是好评,接下来就将简略总结一下我对此系统使用的一些感想。 l 界面更加体现以人为本的思想。更加赏心悦目并且选择更加多元化。比如桌面小工具就有了更多的选择并且还可…

【Qt】Qt5在ubuntu16.04无法输入中文解决方式
参考博客 https://blog.csdn.net/linux_2016/article/details/52356576 博客中没有修改库的执行权限 解决方法 安装:fcitx-frontend-qt5 sudo apt-get install fcitx-frontend-qt5 拷贝动态库到Qt安装目录下的两个目录中 cp /usr/lib/x86_64-linux-gnu/qt5/p…

拿下中科大的计算机课程全靠它了!
整理 | 琥珀 出品 | AI科技大本营(ID: rgznai100) 人工智能的现状及今后发展趋势如何? https://edu.csdn.net/topic/ai30?utm_sourcecsdn_bw 中国科学技术大学,简称“中科大”,是国内有名的 985、211 重点高校。近年…

【阿里Q3财报:阿里云去年营收破百亿,亚洲市场遥遥领先】
2月1号晚间,阿里巴巴公布2018财年第三季度财报,阿里云保持持续强劲的增长,季度营收同比增长104%到35.99亿元。2017年累计营收突破百亿,达112亿,这是国内首次出现百亿规模的云计算服务商,在亚洲市场遥遥领先…

“神仙”打架,“凡人”遭殃
神仙是啥?古时神话时代举手翻江倒海的人物啊,那神仙打架是啥后果,相信大家心里都有个底吧。那现代社会的“神仙”是啥?那就是有钱有权的大人物或者商家,那真是让咱仰望的对象啊~ 话说最近这360跟QQ的巅峰对决&am…

120种小狗图像傻傻分不清?用fastai训练一个分类器
作者:一杯奶茶的功夫 链接:https://www.jianshu.com/p/ab35ed21df87 程序员转行学什么语言? https://edu.csdn.net/topic/ai30?utm_sourcecsdn_bw 这篇文章会讲解如何制作能够分类120种小狗的图像分类器。 这篇文章中所讲述的内容都是基于…

View_01_LayoutInflater的原理、使用方法
View_01_LayoutInflater的原理、使用方法 本篇博客是郭神博客Android视图状态及重绘流程分析,带你一步步深入了解View(一)的读书笔记的笔记。 LayoutInflater简单介绍 setContentView()内部是使用LayoutInflater来完毕载入布局的。setContent…

【ubuntu】在ubuntu下无法输出拼音输入法中的中括号“【” 和 “】”的解决方法
问题 在新装的ubuntu16.04中,打不出中括号【】,而变成 “”和“「” 解决方法 修改文件/usr/share/fcitx/data/punc.mb.zh_CN sudo vi /usr/share/fcitx/data/punc.mb.zh_CN将18、19行改为如下内容 18 [ 【 19 ] 】

配置数据源和分页
1.tomcat的版本,最好不要是安装版的,要解压缩的,不然无法连接数据源。2.conf》context.xml<Resource name"hotel" auth"Container" type"javax.sql.DataSource" driverClassName"oracle.jdbc.…

售价1万7的华为Mate X很贵吗?
整理 | 琥珀 出品 | AI科技大本营(ID: rgznai100) 60s测试:你是否适合转型人工智能? https://edu.csdn.net/topic/ai30?utm_sourcecxrs_bw 继三星之后,网友们期待已久的华为终于忍不住宣布了一系列重磅消息ÿ…

【C】数组数组初始化总结
C数组初始化总结 发现一个新方法,可以分段初始化数组 eg:int arrayC[MAX_LEN] {[1 … 5]9, [6 … 9] 8}; 代码如下 #include <stdio.h> #define MAX_LEN 10int main (int argc, char *argv[]) { //不初始化,参数值随机分配 //[0][0…

Golang的反射reflect深入理解和示例
[TOC] Golang的反射reflect深入理解和示例 【记录于2018年2月】 编程语言中反射的概念 在计算机科学领域,反射是指一类应用,它们能够自描述和自控制。也就是说,这类应用通过采用某种机制来实现对自己行为的描述(self-representati…

如何读取多个文件,文件后缀名不一致,不过类似source.1 source.2 source.3等
#include <stdio.h> #include <stdlib.h> //为了使用exit() char *itoa(int num,char *str,int radix); int main() { int ch; FILE* fp; // char fname[50]"scan1.source.2100"; //用于存放文件名 char fname[20]"source."; …

AtCoder Petrozavodsk Contest 001
第一场apc,5H的持久战,我当然水几个题就睡了 A - Two Integers Time limit : 2sec / Memory limit : 256MB Score : 100 points Problem Statement You are given positive integers X and Y. If there exists a positive integer not greater than 1018…

【Qt】使用QCamera获取摄像头,并使用图像视图框架QGraphics*来显示
代码下载 https://download.csdn.net/download/u010168781/10373174 #####头文件 #ifndef CAMERATEST_H#define CAMERATEST_H#include <QMainWindow> #include <QGraphicsView> #include <QKeyEvent> #include <QTimer>namespace Ui { class Camera…

CVPR 2019收录论文ID公开,你上榜了吗?
整理 | 琥珀 出品 | AI科技大本营(ID: rgznai100) 计算机视觉和模式识别大会 CVPR(Conference on Computer Vision and Pattern Recognition)作为人工智能领域计算机视觉方向的重要学术会议,每年都会吸引全球最顶尖的…