📄
字号:
**************************************************************
* 月合计.PRG *
**************************************************************
CLOSE DATA
SET TALK OFF && 阻止对话结果传送到窗口
SET CENTURY ON && 指定用四位数表示年
SET DATE ANSI && 日期格式yy.mm.dd
CLEAR && 请屏幕
PUBLIC BEGIN,the_end && 定义公共日期变量
DO FORM 表单2 NAME 记账开始结束时间 LINK && 执行表单
READ EVENTS && 激活事件CLEAR
STORE GOMONTH(the_end,-1) TO syhjrq && 上月合计日期
STORE MONTH(the_end) TO yuefen && 月份
DEFI WINDOW yhj FROM 5,20 TO 15,70 TITLE ' 进行月合计 ' CLOSE && 定义窗口
ACTI WINDOW yhj && 激活窗口
@ 4,5 SAY '几月份合计?' GET yuefen DEFA 0 SIZE 1,2 && 编辑月份
READ && 激活对象
IF USED('ZK85') && 如果表已打开
SELECT ZK85 && 激活工作区
ELSE && 否则
SELECT 3 && 激活工作区
USE 科目总控!zk85 && 打开表‘ZK85’(总控85,内含85个科目)
ENDIF
COPY TO ARRAY zza && 复制到总帐数组
STORE RECC() TO zkn && 记下纪录个数
CLEAR && 请屏幕
@ 1,10 SAY '是否逐项进行月合计?' && 提示信息
STORE 1 TO h && 初始化变量
@ 3,9 GET h FUNC '*ht 逐项;单项;取消' SIZE 2,6,6 DEFA 1 && 命令按钮
READ && 激活对象
DO CASE && 根据情况判断处理
CASE h=1 && 如果选择了逐项
STORE 1 TO bds && 记下循环开始的数
STORE zkn TO e && 记下循环结束的数
CASE h=2 && 如果选择了单项
DIME m(zkn) && 定维数组
FOR i=1 TO zkn && 循环
m(i)=zza(i,1)+' '+zza(i,2) && 给数组赋值,编号和科目名称
NEXT && 下一个FOR循环
DEFI WINDOW lst FROM 1,51 TO 20,79 TITLE '单项月合计科目选择' && 定义列表窗口
ACTI WINDOW lst && 激活窗口
STORE 1 TO shuliang && 初始化变量
@ 0,0 GET shuliang FROM m FUNC '&t' DEFA 1 && List列表
READ CYCLE && 激活对象,选择科目
DEAC WINDOW lst && 消隐列表窗口
STORE shuliang TO bds,e && 选择了第几个科目赋给循环开始、结束的数,两数相同只循环一次
CASE h=3 && 如果选择了取消
CLEAR ALL && 释放变量、窗口、关闭表
CANCEL && 结束程序
ENDCASE
DEACTI WINDOW yhj && 消隐窗口
DIME mx(300,3) && 定维数组
FOR i=bds TO e && 循环
? zza(i,1),zza(i,2),zza(i,3)
IF zza(i,5)<>'暂不使用' && 如果‘选用与否’不是暂不使用
DO CASE && 根据情况判断处理
CASE ALLTRIM(zza(i,2))='现金'.OR.ALLTRIM(zza(i,2))='其他货币资金'
&& 如果‘会计科目名’为现金或其他货币资金
USE &zza(i,3) && 打开‘科目库名’表
STORE 0 TO jhj,dhj && 初始化变量
SUM 借方,贷方 FOR 日期>=BEGIN.AND.日期<=the_end TO jhj,dhj && 累加时间范围内的借方、贷方
SET FILTER TO 日期>=BEGIN.AND.日期<=the_end && 按日期范围过滤科目表
GOTO BOTTOM && 指针指向纪录末
STORE 余额 TO yu_e && 记下余额
USE &zza(i,6) && 打开‘月合计’表
GOTO BOTTOM && 指针指向纪录末
IF 日期<>syhjrq && 如果日期不是上月末期
IF 日期=the_end && 如果是本月记账末期,说明做过月合计
REPLACE 日期 WITH the_end && 替换字段,下同
REPLACE 摘要 WITH ALLTRIM(STR(yuefen))+'月份合计'
REPLACE 借方 WITH jhj
REPLACE 贷方 WITH dhj
REPLACE 余额 WITH yu_e
BROWSE NOAPPEND NODELETE NOMODIFY IN SCREEN WIDTH 100 ;
TITLE zza(i,2)+' '+zza(i,6)+'月计 ' && TIMEOUT 1 && 浏览
USE && 关闭表
ELSE && 否则
WAIT WINDOW '月份不符' && 提示信息
BROW TITLE zza(i,2)+zza(i,6)+'合计' && 浏览,观察问题之所在
ENDIF
ELSE && 否则,日期是上月末期,这是正常情况
APPEND BLANK && 追加空纪录
REPLACE 日期 WITH the_end && 替换字段,下同
REPLACE 摘要 WITH ALLTRIM(STR(yuefen))+'月份合计'
REPLACE 借方 WITH jhj
REPLACE 贷方 WITH dhj
REPLACE 余额 WITH yu_e
BROWSE NOAPPEND NODELETE NOMODIFY IN SCREEN WIDTH 100 ;
TITLE zza(i,2)+' '+zza(i,6)+'月计 ' && TIMEOUT 1 && 浏览
USE && 关闭表
ENDIF
CASE (ALLTRIM(zza(i,2))='应交税金').AND.ALLTRIM(zza(i,5))='选用明细'
&& 如果‘会计科目名’为银行存款
USE &zza(i,4) && 打开‘名细库名’表,联系表
STORE RECC() TO N && 记下纪录个数
COPY TO ARRAY mx && 复制到数组
STORE 0 TO jhj,dhj,jhjz,dhjz,YEHJ && 初始化变量
FOR jf=1 TO N-1 && 循环,末纪录总是‘创建或增添新名细’,不计
USE &mx(jf,2) && 打开单项明细表
STORE 0 TO jhj,dhj && 初始化变量
SUM 借方,贷方 FOR 日期>=BEGIN.AND.日期<=the_end TO jhj,dhj && 累加时间范围内的借方、贷方
SET FILTER TO 日期>=BEGIN.AND.日期<=the_end && 按日期范围过滤明细表
GOTO BOTTOM && 指针指向纪录末
STORE 余额 TO yu_e && 记下余额
jhjz=jhjz+jhj && 累加借合计
dhjz=dhjz+dhj && 累加贷合计
YEHJ=YEHJ+YU_E && 累加余额合计
USE &mx(jf,3) && 贷开明细月合计表
GOTO BOTTOM && 指针指向纪录末
IF 日期<>syhjrq && 如果日期不是上月末期
IF 日期=the_end && 如果是本月记账末期,说明做过月合计
* GOTO RECC()-1 && 指针指向末之前一个纪录
* STORE 余额 TO yu_e && 记下余额
GOTO BOTT && 指针指向纪录末
REPLACE 日期 WITH the_end && 替换字段,下同
REPLACE 摘要 WITH ALLTRIM(STR(yuefen))+'月份合计'
REPLACE 借方 WITH jhj
REPLACE 贷方 WITH dhj
REPLACE 余额 WITH yu_e &&+jhj-dhj
ELSE && 否则
WAIT WINDOW '月份不符' && 提示信息
BROW TITLE mx(jf,1)+mx(jf,3)+'合计' && 浏览,观察问题之所在
ENDIF
ELSE && 否则,日期是上月末期,这是正常情况
APPEND BLANK && 追加空纪录
REPLACE 日期 WITH the_end && 替换字段,下同
REPLACE 摘要 WITH ALLTRIM(STR(yuefen))+'月份合计'
REPLACE 借方 WITH jhj
REPLACE 贷方 WITH dhj
REPLACE 余额 WITH YU_E
ENDIF
NEXT
************ 应交税金总帐 **************
USE &zza(i,6) && 打开银行存款月合计表
GOTO BOTTOM && 指针指向纪录末
STORE 余额 TO yu_e && 记下余额
IF 日期<>syhjrq && 如果日期不是上月末期
IF 日期=the_end && 如果是本月记账末期,说明做过月合计
GOTO RECC()-1 && 指针指向末之前一个纪录
STORE 余额 TO yu_e && 记下余额
GOTO BOTT && 指针指向纪录末
REPLACE 日期 WITH the_end && 替换字段,下同
REPLACE 摘要 WITH ALLTRIM(STR(yuefen))+'月份合计'
REPLACE 借方 WITH jhjz
REPLACE 贷方 WITH dhjz
REPLACE 余额 WITH yu_e -jhjz+dhjz
BROWSE NOAPPEND NODELETE NOMODIFY IN SCREEN WIDTH 100 ;
TITLE zza(i,2)+' '+zza(i,6)+'月合计 ' &&TIMEOUT 1 && 浏览
USE && 关闭表
ELSE && 否则
WAIT WINDOW '月份不符' && 提示信息
BROW TITLE zza(i,2)+zza(i,6)+'合计' && 浏览,观察问题之所在
ENDIF
ELSE && 否则,日期是上月末期,这是正常情况
APPEND BLANK && 追加空纪录
REPLACE 日期 WITH the_end && 替换字段,下同
REPLACE 摘要 WITH ALLTRIM(STR(yuefen))+'月份合计'
REPLACE 借方 WITH jhjz
REPLACE 贷方 WITH dhjz
REPLACE 余额 WITH yehj
BROWSE NOAPPEND NODELETE NOMODIFY IN SCREEN WIDTH 100 ;
TITLE zza(i,2)+' '+zza(i,6)+'月合计 ' && TIMEOUT 1 && 浏览
USE && 关闭表
ENDIF
CASE ALLTRIM(zza(i,2))='长期待摊费用'.AND.ALLTRIM(zza(i,5))='选用明细'
&& 如果‘会计科目名’为长期待摊费用
USE &zza(i,4) && 打开‘名细库名’表,联系表
COPY TO ARRAY mx && 复制到数组
STORE 0 TO jhj,dhj,jhjz,dhjz,yehj && 初始化变量
FOR jf=1 TO 1 && 递延资产第一个明细作科目用,循环一次
USE &mx(jf,2) && 打开第一个明细表‘长期待摊费用mx1901000’
STORE 0 TO jhj,dhj && 初始化变量
SUM 借方,贷方 FOR 日期>=BEGIN.AND.日期<=the_end TO jhj,dhj && 累加时间范围内的借方、贷方
SET FILTER TO 日期<=the_end && 按日期范围过滤明细表
GOTO BOTTOM && 指针指向纪录末
STORE 余额 TO yu_e && 记下余额
jhjz=jhjz+jhj && 累加借合计
dhjz=dhjz+dhj && 累加贷合计
yehj=yehj+yu_e && 累加余额合计
USE &mx(jf,3) && 打开明细月合计表
GOTO BOTTOM && 指针指向末纪录
IF 日期<>syhjrq && 如果日期不是上月末期
IF 日期=the_end && 如果是本月记账末期,说明做过月合计
* GOTO RECC()-1 && 指针指向末之前一个纪录
* STORE 余额 TO yu_e && 记下余额
GOTO BOTT && 指针指向末纪录
REPLACE 日期 WITH the_end && 替换字段,下同
REPLACE 摘要 WITH ALLTRIM(STR(yuefen))+'月份合计'
REPLACE 借方 WITH jhj
REPLACE 贷方 WITH dhj
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -