📄 +
字号:
*************************************************************
***** 科目与凭证查询.prg *****
*************************************************************
CLOSE DATA && 关闭数据库
SET TALK OFF && 阻止对话结果传送到窗口
SET CENTURY ON && 指定用四位数表示年
SET DATE ANSI && 日期格式yy.mm.dd
CLEAR ALL && 请屏幕CLEAR
@ 0,0 SAY SPACE(33)+'财 务 查 询'+SPACE(32) COLOR RGB(255,0,0) && 显示信息,前景红色
DEFINE WINDOW test1 FROM 1, 1 TO 12, 32 TITLE " 类别选择 " GROW CLOSE && 定义窗口
ACTIVATE WINDOW test1 && 激活窗口
DEFINE WINDOW test2 FROM 1, 32 TO 12, 98 TITLE " 明细或文件选择 " GROW CLOSE && 定义窗口
ACTIVATE WINDOW test2 && 激活窗口
DEFINE WINDOW test3 FROM 11.5, 0 TO 26, 98 TITLE " 科目明细或凭证浏览 " ;
ZOOM MINIMIZE FLOAT GROW CLOSE && 定义窗口
ACTIVATE WINDOW test3 && 激活窗口
STORE 1 TO k,kk && 初始化变量
DO WHILE .T. && 循环
ACTIVATE WINDOW test1 && 激活窗口
CLEAR && 请窗口
@ 0.5,5 GET k FUNC '*vt 科目及其明细;科目各月合计;转帐记帐凭证;收付记帐凭证' ;
SIZE 1.2,20,0.5 && 纵向按钮
READ CYCLE && 激活对象
DO rk && 调用过程,按Ctrl_End结束程序
ACTIVATE WINDOW test2 && 激活窗口
DIME b(100) && 定维数组
STORE ' ' TO b && 初始化数组
DO CASE && 根据情况判断处理
CASE k=1 && 当选择了科目及其明细
DO kmjqmx && 运行科目及其明细过程
CASE k=2 && 当选择了科目各月合计
DO kmgyhj && 运行科目各月合计过程
CASE k=3 && 当选择了转帐记帐凭证
N=ADIR(a,'zz*.dbf') && 将转账凭证文件信息存放在数组a中
CASE k=4 && 当选择了收付记帐凭证
N=ADIR(a,'sf*.dbf') && 将收付凭证文件信息存放在数组a中
ENDCASE
IF N=0 && 如果文件的数量等于0,说明没有此类文件
WAIT WINDOW '未有此类文件' TIMEOUT 5 && 显示信息
CLEAR WINDOW ALL && 释放全部窗口
ELSE
DIME b(N),c(N) && 定维数组
FOR i=1 TO N && 循环
IF LEN(a(i,1))=10 && 如果文件名的长度等于10(通项)
b(i)=a(i,1)+' '+DTOC(a(i,3))+' '+a(i,4)+' '+a(i,5)
** 文件名 文件日期 文件时间 文件属性(A 可读写)
c(i)=10 && 记下长度
ELSE && 否则,文件名的长度等于12(内容)
b(i)=a(i,1)+' '+DTOC(a(i,3))+' '+a(i,4)+' '+a(i,5)
c(i)=12 && 记下长度
ENDIF
NEXT
@ 0,1 GET kk FROM b FUNC '&t ' SIZE 8,45 && 文件名List列表
READ CYCLE && 激活对象
DO rk && 调用过程,按Ctrl_End结束程序
DEFINE WINDOW test3 FROM 11.5, 0 TO 28,98 TITLE " 凭证浏览 " ;
ZOOM MINIMIZE FLOAT GROW CLOSE && 定义窗口
ACTIVATE WINDOW test3 && 激活窗口
IF A(kk,1)='ZZ' && 如果是查询转账凭证
USE (a(kk,1)) ORDER TAG (SUBSTR(a(kk,1),1,IIF(LEN(a(kk,1))=10,6,8))) && 打开表及复合索引文件
ELSE && 否则,是查询收付凭证
USE (a(kk,1)) INDEX (SUBSTR(a(kk,1),1,IIF(LEN(a(kk,1))=10,6,8))) && 打开表及索引文件
ENDIF && 应该提倡使用复合索引文件,这里是为了提供比较
IF c(kk)=10 && 如果是通项
SUM 金额合计 TO jehj_m && 累加金额合计
STORE '金额合计:'+STR(jehj_m,10,2) TO w && 组成字符串
WAIT WINDOW w && 显示信息
ELSE && 否则,是内容
SUM 借方 TO jfhj_m && 累加借方合计
SUM 贷方 TO dfhj_m && 累加贷方合计
STORE '借方合计:'+STR(jfhj_m,10,2)+' 贷方合计:'+STR(dfhj_m,10,2) TO w
WAIT WINDOW w && 显示信息
ENDIF
BROW IN WINDOW test3 NOAPPEND NOEDIT NODELETE NOCLEAR && 浏览
DO rk && 调用过程,按Ctrl_End结束程序
ENDIF
ENDDO && 下一个DO循环
RETURN
PROC kmjqmx && 查询科目及其明细过程
DIME a(200),b(85),mx1(5000),mx(1000,12) && 定维数组
STORE 0 TO a && 初始化数组
STORE ' ' TO b && 初始化数组
USE zk85 && 打开表‘ZK85’(总控85,内含85个科目)
COPY TO ARRAY zza && 复制到数组
FOR i=1 TO RECC() && 循环
b(i)=zza(i,2) && 赋值到一维数组
NEXT
STORE 1 TO h,m && 初始化变量
DO WHILE .T. && 循环
DEFINE WINDOW test1 FROM 1, 1 TO 11, 32 TITLE "科目选择 "+' Esc 反回主目录 ';
DOUBLE GROW CLOSE && 定义窗口
ACTIVATE WINDOW test1 && 激活窗口
@ 0,0 GET h FROM b FUNC '&t ' SIZE 8,29 && 科目List列表
READ CYCLE && 激活窗口
DO rkk && 键控过程,按ESC重新启动科目与凭证查询
DO rk && 调用过程,按Ctrl_End结束程序
IF zza(h,5)='选用科目' && 如果是选用科目
IF FILE(zza(h,3)+'.dbf') && 如果文件存在
USE &zza(h,3) && 打开科目文件
ACTIVATE WINDOW test2 && 激活窗口
CLEAR && 清窗口
DEFINE WINDOW test3 FROM 11.5,1 TO 28, 98 TITLE " 细目: "+zza(h,2)+;
' Ctrl_End退出' ZOOM MINIMIZE FLOAT GROW CLOSE && 定义窗口
ACTIVATE WINDOW test3 && 激活窗口
BROW IN WINDOW test3 NOAPPEND NOEDIT NODELETE NOCLEAR && 浏览
DO rk && 调用过程,按Ctrl_End结束程序
ELSE && 否则
WAIT WINDOW '未建此帐' && 显示信息
ENDIF
ENDIF
IF zza(h,5)='选用明细' && 如果是选用明细
IF FILE(zza(h,4)+'.dbf') && 如果文件存在
USE &zza(h,4) && 打开明细联系表
COPY TO ARRAY mx && 复制到数组
IF RECC()>=1 && 如果纪录个数大于0
DIME mx1(RECC()) && 定维数组
FOR i=1 TO RECC() && 循环
mx1(i)=mx(i,1)+mx(i,2) && 赋值,明细名称和表名
NEXT
ACTIVATE WINDOW test2 && 激活窗口
@ 0,0 GET m FROM mx1 FUNC '&t' SIZE 8,47 && 明细联系表List列表
READ && 激活对象
DO rk && 调用过程,按Ctrl_End结束程序
DEFINE WINDOW test3 FROM 11.5, 1 TO 28, 98 TITLE ' 细目: '+;
mx(m,1)+' Ctrl_End退出' ZOOM MINIMIZE FLOAT GROW CLOSE && 定义窗口
ACTIVATE WINDOW test3 && 激活窗口
IF FILE(mx(m,2)+'.dbf') && 如果明细文件存在
USE &mx(m,2) && 打开明细表
BROW IN WINDOW test3 TITLE ' 细目:'+mx(m,1)+' Ctrl_End退出';
NOEDIT NOAPPEND NODELETE NOCLEAR && 浏览
DO rk && 调用过程,按Ctrl_End结束程序
ELSE && 否则
WAIT WINDOW '未建此帐' && 显示信息
ENDIF
ENDIF
ELSE && 否则
WAIT WINDOW '未建此帐' && 显示信息
ENDIF
ENDIF
IF zza(h,5)='暂不使用' && 如果选择了暂不使用
WAIT WINDOW '暂不使用本科目' && 显示信息
ENDIF
ENDDO && 下一个DO循环
WAIT WINDOW '按任意键' && 显示信息
CLEAR WINDOW test1, test2,test3 && 释放窗口
CLEAR && 清屏幕
RETURN && 返回主程序
PROC kmgyhj && 过程,查询科目各月合计
DIME a(200),b(85),mx1(5000),mx(1000,12) && 定维数组
STORE 0 TO a && 初始化数组
STORE ' ' TO b && 初始化数组
USE zk85 && 打开表‘ZK85’(总控85,内含85个科目)
COPY TO ARRAY zza && 复制到数组
STORE 0 TO k && 初始化变量
FOR i=1 TO RECC() && 循环
IF zza(i,5)<>'暂不使用 ' && 如果选用与否等于暂不使用
k=k+1 && 计数器加 1
b(k)=zza(i,2) && 赋值到一维数组
ENDIF
NEXT && 下一个FOR循环
STORE 1 TO h && 初始化变量
DO WHILE .T. && 循环
DEFINE WINDOW test1 FROM 1, 1 TO 12, 32 TITLE " 科目选择 " ;
DOUBLE GROW CLOSE && 定义窗口
ACTIVATE WINDOW test1 && 激活窗口
@ 0,0 GET h FROM b FUNC '&t ' SIZE 8,29 && 科目List列表
READ CYCLE && 激活对象
DO rkk && 键控过程,按ESC重新启动科目与凭证查询
DO rk && 调用过程,按Ctrl_End结束程序
FOR i=1 TO 85 && 循环
IF b(h)=zza(i,2) && 如果科目名相等
IF FILE(zza(i,6)+'.dbf') && 如果文件存在
USE &zza(i,6) && 打开月合计表
ACTIVATE WINDOW test2 && 激活窗口
CLEAR && 清窗口
DEFINE WINDOW test3 FROM 11.5, 1 TO 28, 98 TITLE " 科目: "+;
zza(i,2)+' 各月合计总页 'ZOOM MINIMIZE FLOAT GROW CLOSE
ACTIVATE WINDOW test3 && 激活窗口
BROW IN WINDOW test3 NOAPPEND NOEDIT NODELETE NOCLEAR && 浏览
DO rk && 调用过程,按Ctrl_End结束程序
ELSE && 否则
WAIT WINDOW '未建此帐' && 显示信息
ENDIF
ENDIF
NEXT && 下一个FOR循环
ENDDO && 下一个DO循环
RETURN && 返回主程序
PROC rk && 键控过程,按Ctrl_End结束程序
IF READKEY()=270 && 如果按了Ctrl_End
CLEAR ALL && 释放内存变量、窗口,关闭表
CLEAR && 清屏幕
CANCEL && 结束程序的执行
ENDIF
RETURN && 过程结束
PROC rkk && 键控过程
IF READKEY()=268.OR.READKEY()=12 && 如果按了Esc
CLEAR ALL && 释放内存变量、窗口,关闭表
DO 科目与凭证查询 && 重新启动科目与凭证查询
ENDIF
RETURN && 过程结束
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -