📄
字号:
TITLE zza(i,2)+' '+zza(i,6)+'月合计 ' && TIMEOUT 1 && 浏览
USE && 关闭表
ELSE
WAIT WINDOW '月份不符' && 提示信息
BROW TITLE zza(i,2)+zza(i,6)+'合计' && 浏览,观察问题之所在
ENDIF
ENDIF
************************ ‘选用明细’的处理 **********************
ELSE && 否则,是选用明细
USE &zza(i,4) && 打开‘名细库名’表,联系表
STORE RECC() TO N && 记下纪录个数
COPY TO ARRAY mx && 复制到数组
USE &zza(i,3) && 打开‘科目库名’表
SET SAFETY OFF && 关闭安全提示窗口
COPY STRUCTURE TO TEMP0 && 复制表结构
FOR jf=1 TO N-1 && 循环,末纪录总是‘创建或增添新名细’,不计
? zza(i,1),zza(i,2),mx(jf,1),mx(jf,2)
USE mx(jf,2) && 打开单项明细表
GOTO BOTTOM && 指针指向末纪录
STORE 余额 TO yu_e && 记下余额
SET FILTER TO 日期>=BEGIN.AND.日期<=the_end && 按日期范围过滤
COPY TO TEMP1 && 复制到表
USE TEMP1 && 打开表
IF RECC()#0 && 如果纪录个数不等于0
GOTO BOTTOM && 指针指向末纪录
STORE 余额 TO yu_e && 记下余额
ENDIF
USE && 关闭表
ALTER TABLE TEMP1 ADD COLUMN X C(1) && 增加一列,为了统计,SQL语句
CLOSE DATA && 关闭当前数据库和表
USE TEMP1 && 打开表
TOTAL ON X TO TEMP2 && 计算数值字段的总和,只有一行;增加之列用在此
USE TEMP2 && 打开表
DIME ATEMP2(1,FCOUNT()) && 定维数组
STORE 0 TO ATEMP2 && 初始化数组
COPY TO ARRAY ATEMP2 && 复制到数组
USE TEMP0 && 打开表
APPEND FROM TEMP2 && 追加一行,从TEMP2
**************** 处理单项明细月合计表 ********************
USE mx(jf,3) && 打开明细月合计表
GOTO BOTTOM && 指针指向末纪录
IF 日期=GOMONTH(the_end,-1) && 日期是上月末期,这是正常情况
APPEND BLANK && 追加空纪录
FOR j=1 TO FCOUNT() && 循环,终值为字段个数
IF TYPE(FIELD(j))='N'.AND.ATEMP2(1,j)#0 && 如果字段类型为数值且不等于0
REPLACE (FIELD(j)) WITH ATEMP2(1,j) && 替换字段
&& FIELD(j)是字段名,(FIELD(j))是名表达式
ENDIF
NEXT
REPLACE 日期 WITH the_end && 替换字段,下同
REPLACE 摘要 WITH ALLTRIM(STR(yuefen))+'月份合计'
REPLACE 凭证号 WITH ' '
IF zza(i,7)='借' && 如果余额方向为借
REPLACE 余额 WITH yu_e+借方-贷方
ELSE
REPLACE 余额 WITH yu_e-借方+贷方
ENDIF
FOR j=1 TO FCOUNT() && 循环,终值为字段个数
IF FIELD(j)='借或贷' && 如果'借或贷'字段存在
IF zza(i,7)='借' && 如果余额方向为借
REPLACE 借或贷 WITH '借' && 替换字段用借
ELSE && 否则
REPLACE 借或贷 WITH '贷' && 替换字段用贷
ENDIF
ENDIF
NEXT && 下一个FOR循环
* BROWSE NOAPPEND NODELETE NOMODIFY IN SCREEN WIDTH 100 ;
* TITLE zza(i,2)+' '+mx(jf,3)+'月合计 ' && 浏览,调程序时需要浏览
USE && 关闭表
ELSE
IF 日期=the_end && 如果是本月记账末期,说明做过月合计
GOTO BOTTOM && 指针指向末纪录
FOR j=1 TO FCOUNT() && 循环,终值为字段个数
IF TYPE(FIELD(j))='N'.AND.ATEMP2(1,j)#0 && 如果字段类型为数值且不等于0
REPLACE (FIELD(j)) WITH ATEMP2(1,j) && 替换字段
&& FIELD(j)是字段名,(FIELD(j))是名表达式
ENDIF
NEXT
REPLACE 日期 WITH the_end && 替换字段,下同
REPLACE 摘要 WITH ALLTRIM(STR(yuefen))+'月份合计'
REPLACE 凭证号 WITH ' '
IF zza(i,7)='借' && 如果余额方向为借
REPLACE 余额 WITH yu_e+借方-贷方
ELSE
REPLACE 余额 WITH yu_e-借方+贷方
ENDIF
FOR j=1 TO FCOUNT() && 循环,终值为字段个数
IF FIELD(j)='借或贷' && 如果'借或贷'字段存在
IF zza(i,7)='借' && 如果余额方向为借
REPLACE 借或贷 WITH '借' && 替换字段用借
ELSE && 否则
REPLACE 借或贷 WITH '贷' && 替换字段用贷
ENDIF
ENDIF
NEXT && 下一个FOR循环
* BROWSE NOAPPEND NODELETE NOMODIFY IN SCREEN WIDTH 100 ;
* TITLE zza(i,2)+' '+mx(jf,3)+'月合计 ' && 浏览
USE && 关闭表
ELSE
WAIT WINDOW '月份不符' && 提示信息
BROW TITLE zza(i,2)+zza(i,6)+'合计' && 浏览,观察问题之所在
ENDIF
ENDIF
NEXT
**************** 处理月合计表 ********************
USE TEMP0 && 打开表,此表追加了各明细的统计内容
ALTER TABLE TEMP0 ADD COLUMN X C(1) && 增加一列,为了统计,SQL语句
CLOSE DATA && 关闭当前数据库和表
USE TEMP0 && 打开表
TOTAL ON X TO TEMP2 && 计算数值字段的总和,只有一行;增加之列用在此
USE TEMP2 && 打开表
DIME ATEMP2(1,FCOUNT()) && 定维数组
store 0 to ATEMP2
COPY TO ARRAY ATEMP2 && 复制到数组
USE zza(i,6) && 打开科目月合计表
GOTO BOTTOM && 指针指向末纪录
STORE 余额 TO yu_e && 记下余额
IF 日期=GOMONTH(the_end,-1) && 日期是上月末期,这是正常情况
APPEND BLANK && 追加空纪录
FOR j=1 TO FCOUNT() && 循环,终值为字段个数
IF TYPE(FIELD(j))='N'.AND.ATEMP2(1,j)#0 && 如果字段类型为数值且不等于0
REPLACE (FIELD(j)) WITH ATEMP2(1,j) && 替换字段
&& FIELD(j)是字段名,(FIELD(j))是名表达式
ENDIF
NEXT && 下一个FOR循环
REPLACE 日期 WITH the_end && 替换字段,下同
REPLACE 摘要 WITH ALLTRIM(STR(yuefen))+'月份合计'
REPLACE 凭证号 WITH ' '
IF zza(i,7)='借' && 如果余额方向为借
REPLACE 余额 WITH yu_e+借方-贷方
ELSE
REPLACE 余额 WITH yu_e-借方+贷方
ENDIF
FOR j=1 TO FCOUNT() && 循环,终值为字段个数
IF FIELD(j)='借或贷' && 如果'借或贷'字段存在
IF zza(i,7)='借' && 如果余额方向为借
REPLACE 借或贷 WITH '借' && 替换字段用借
ELSE && 否则
REPLACE 借或贷 WITH '贷' && 替换字段用贷
ENDIF
ENDIF
NEXT && 下一个FOR循环
BROWSE NOAPPEND NODELETE NOMODIFY IN SCREEN WIDTH 100 ;
TITLE zza(i,2)+' '+zza(i,6)+'月合计 ' && TIMEOUT 1 && 浏览
USE && 关闭表
ELSE
IF 日期=the_end && 如果是本月记账末期,说明做过月合计
SKIP -1 && 指针移动-1
STORE 余额 TO yu_e && 记下余额
GOTO BOTTOM && 指针指向末纪录
FOR j=1 TO FCOUNT() && 循环,终值为字段个数
IF TYPE(FIELD(j))='N'.AND.ATEMP2(1,j)#0 && 如果字段类型为数值且不等于0
REPLACE (FIELD(j)) WITH ATEMP2(1,j) && 替换字段
&& FIELD(j)是字段名,(FIELD(j))是名表达式
ENDIF
NEXT && 下一个FOR循环
REPLACE 日期 WITH the_end && 替换字段,下同
REPLACE 摘要 WITH ALLTRIM(STR(yuefen))+'月份合计'
REPLACE 凭证号 WITH ' '
IF zza(i,7)='借' && 如果余额方向为借
REPLACE 余额 WITH yu_e+借方-贷方
ELSE
REPLACE 余额 WITH yu_e-借方+贷方
ENDIF
FOR j=1 TO FCOUNT() && 循环,终值为字段个数
IF FIELD(j)='借或贷' && 如果'借或贷'字段存在
IF zza(i,7)='借' && 如果余额方向为借
REPLACE 借或贷 WITH '借' && 替换字段用借
ELSE && 否则
REPLACE 借或贷 WITH '贷' && 替换字段用贷
ENDIF
ENDIF
NEXT && 下一个FOR循环
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
ENDIF
ENDIF
ENDCASE
ENDIF
NEXT
SET SAFETY OFF && 打开安全提示窗口
CLEAR ALL && 释放内存变量、窗口,关闭表
RETURN && 程序结束
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -