📄 +
字号:
********************************************************
** 栏目填写子程序 栏目填写.PRG **
** 调用程序 记账主程序.PRG **
********************************************************
FOR i=1 TO kmmxgs && 循环 终值为科目和明细个数
IF ALLTRIM(zza(i,4))='库存商品' && 如果科目是库存商品
DEFI WINDOW ccp TITLE ' '+zza(i,4)+' '+zza(i,5)+' 输入数量和型号 ';
FROM 1,10 TO 26,70 CLOSE && 定义窗口
ACTI WINDOW ccp && 激活窗口
STORE 0 TO ccpshuliang(i) && 初始化数量数组元素
* STORE 0.00 TO ccpdj(i) && 初始化单价数组元素
@ 2,10 SAY '请输入'+zza(i,5)+'数量' GET ccpshuliang(i) SIZE 1,4 && 编辑数量
STORE ' ' TO ccpxh(i) && 初始化型号数组元素
@ 6,10 SAY '请输入'+zza(i,5)+'产品型号' GET ccpxh(i) SIZE 1,10 DISABLE
@ 20,40 GET kk DEFA 1 FUNC'*th 确认;取销' SIZE 2,4,4 && 命令按钮
READ CYCLE && 激活对象
IF kk=2 && 如果选择了取消
CLEAR ALL && 释放变量、窗口,关闭表
CANCEL && 终止程序的执行
ENDIF
DEFI WINDOW zyw FROM 0,70 TO 26,103 TITLE ' 产品型号 ';
ZOOM MINIMIZE FLOAT DOUB && 定义窗口
ACTI WINDOW zyw && 激活窗口
STORE 1 TO h && 初始化变量
@ 1,1 GET h DEFA 1 FUNC '&t' FROM cpxh && 产品型号List列表
READ && 激活对象,选择型号
DEAC WINDOW zyw && 挂起窗口
ccpxh(i)=cpxh(h) && 型号自动赋值
@ 6,10 SAY '请输入'+zza(i,5)+'产品型号' GET ccpxh(i) SIZE 1,10 && 编辑型号
@ 20,1 CLEAR TO 21,60 && 清除部分区域(清除上一个命令按钮)
@ 20,40 GET kk DEFA 1 FUNC'*th 确认;取销' SIZE 2,4,4 && 命令按钮
READ CYCLE && 激活对象
IF kk=2 && 如果选择了取消
CLEAR ALL && 释放变量、窗口,关闭表
CANCEL && 终止程序的执行
ENDIF
DEAC WINDOW ccp && 挂起窗口
ENDIF && 库存商品栏目编辑结束
IF ALLTRIM(zza(i,4))='生产成本'.OR.ALLTRIM(zza(i,4))='财务费用'.OR.;
ALLTRIM(zza(i,4))='制造费用'.OR.ALLTRIM(zza(i,4))='管理费用'.OR.;
ALLTRIM(zza(i,4))='应付福利费' && 如果科目是这五个
IF zza(i,6)<>0 && 如果借方的值不等于零
DEFI WINDOW sccb TITLE ' '+zza(i,4)+zza(i,5)+'栏目选摘 ';
FROM 0,10 TO 26,70 CLOSE && 定义窗口
ACTI WINDOW sccb && 激活窗口
CLEAR && 清窗口
IF USED('kmhmx')=.T. && 如果打开了科目或明细表
SELECT kmhmx && 激活工作区
USE &zza(i,9) && 打开表
ELSE && 否则
SELECT 0 && 激活工作区
USE &zza(i,9) ALIAS kmhmx && 打开表
ENDIF
FOR j=4 TO 30 && 循环,查找借方字段
IF ALLTRIM(FIELD(j))='借方' && 如果找到借方
cbfyend(i)=j-4 && 记下(成本费用)借方与摘要相隔的字段数(栏目数)
EXIT && 出口,不再查找
ENDIF
cbfyfield(i,j-3)=FIELD(j)
&& 记下(成本费用)某科目或明细的摘要与借方之间的各个字段名(不包括摘要和借方本身)
NEXT && 下一个FOR循环
FOR j=1 TO cbfyend(i) && 循环,终值为(成本费用)借方与摘要相隔的字段数(栏目数)
cbfyxh(i,j)=0 && 初始化(成本费用)摘要与借方之间的各个字段(栏目)的序号
NEXT && 下一个FOR循环
FOR j=1 TO cbfyend(i) && 循环,终值为(成本费用)借方与摘要相隔的字段数(栏目数)
@ j,5 GET cbfyxh(i,j) FUNC '*c '+cbfyfield(i,j) && 列出(成本费用)字段名复选框,供复选
NEXT && 下一个FOR循环
@ 20,40 GET kk DEFA 1 FUNC'*th 确认;取销' SIZE 2,4,4 && 命令按钮
READ CYCLE && 激活对象
IF kk=2 && 如果选择了取消
CLEAR ALL && 释放变量、窗口,关闭表
CANCEL && 终止程序的执行
ENDIF
FOR j=1 TO 30 && 循环
cbfyfieldje(i,j)=0.00 && 初始化(成本费用)摘要与借方之间的各个字段(栏目)的值
NEXT && 下一个FOR循环
DO WHILE .T. && 循环
ACTI WINDOW sccb && 激活窗口
CLEAR && 清窗口
FOR j=1 TO cbfyend(i) && 循环,,终值为(成本费用)借方与摘要相隔的字段数(栏目数)
IF cbfyxh(i,j)=1 && 如果(成本费用)摘要与借方之间某各个字段(栏目)的序号等于1
@ j,5 SAY cbfyfield(i,j) GET cbfyfieldje(i,j) && 编辑摘要与借方之间的各个字段(栏目)的金额
ELSE && 否则
@ j,5 SAY cbfyfield(i,j) GET cbfyfieldje(i,j) DISA && 禁止编辑
ENDIF
NEXT && 下一个FOR循环
@ 20,40 GET kk DEFA 1 FUNC'*th 确认;取销' SIZE 2,4,4 && 命令按钮
READ CYCLE && 激活对象
IF kk=2 && 如果选择了取消
CLEAR ALL && 释放变量、窗口,关闭表
CANCEL && 终止程序的执行
ENDIF
STORE 0 TO cbfyhj && 初始化(成本费用)合计变量
FOR j=1 TO cbfyend(i) && 循环,终值为(成本费用)借方与摘要相隔的字段数(栏目数)
cbfyhj=cbfyhj+cbfyfieldje(i,j) && (成本费用)合计
NEXT && 下一个FOR循环
IF cbfyhj<>zza(i,6) && 如果(成本费用)合计与借方金额不等
FOR k=1 TO 1000 && 循环
?? CHR(7) && 笛声
NEXT && 下一个FOR循环
@ 0,10 SAY '金额合计不等' COLOR r+/w && 显示信息
ELSE && 否则
EXIT && 出口
ENDIF
ENDDO && 下一个DO循环
DEAC WINDOW sccb && 挂起窗口
ENDIF
ENDIF
USE && 关闭表
IF ALLTRIM(zza(i,4))='主营业务收入' && 如果科目是主营业务收入
IF zza(i,7)<>0 && 如果贷方的值不等于零
DEFI WINDOW sccb TITLE ' '+zza(i,4)+zza(i,5)+'栏目选摘 ';
FROM 0,20 TO 26,100 CLOSE && 定义窗口
ACTI WINDOW sccb && 激活窗口
CLEAR && 清窗口
IF USED('kmhmx')=.T. && 如果打开了科目或明细表
SELECT kmhmx && 激活工作区
USE &zza(i,9) && 打开表
ELSE && 否则
SELECT 0 && 激活工作区
USE &zza(i,9) ALIAS kmhmx && 打开表
ENDIF
FOR j=4 TO 30 && 循环,查找借方字段
IF ALLTRIM(FIELD(j))='借方' && 如果找到借方
cbfyend(i)=j-4 && 记下借方与摘要相隔的字段数(栏目数)
EXIT && 出口,不再查找
ENDIF
cbfyfield(i,j-3)=FIELD(j)
&& 记下明细的摘要与借方之间的各个字段名(不包括摘要和借方本身)
NEXT && 下一个FOR循环
FOR j=1 TO cbfyend(i) && 循环,终值为借方与摘要相隔的字段数(栏目数)
cbfyxh(i,j)=0 && 初始化摘要与借方之间的各个字段(栏目)的序号
NEXT && 下一个FOR循环
FOR j=1 TO cbfyend(i) && 循环,终值为借方与摘要相隔的字段数(栏目数)
@ j,5 GET cbfyxh(i,j) FUNC '*c '+cbfyfield(i,j) && 列出字段名复选框,供复选
NEXT && 下一个FOR循环
@ 20,40 GET kk DEFA 1 FUNC'*th 确认;取销' SIZE 2,4,4 && 命令按钮
READ CYCLE && 激活对象
IF kk=2 && 如果选择了取消
CLEAR ALL && 释放变量、窗口,关闭表
CANCEL && 终止程序的执行
ENDIF
FOR j=1 TO 30 && 循环
cbfyfieldje(i,j)=0 && 初始化摘要与借方之间的各个字段(栏目)的值
NEXT && 下一个FOR循环
DO WHILE .T. && 循环
DEFI WINDOW sccb TITLE ' '+zza(i,4)+zza(i,5)+'填写数量 ';
FROM 0,20 TO 26,100 CLOSE && 定义窗口
ACTI WINDOW sccb && 激活窗口
CLEAR && 清窗口
FOR j=1 TO cbfyend(i) && 循环,终值为借方与摘要相隔的字段数(栏目数)
IF cbfyxh(i,j)=1 && 如果摘要与借方之间的某个字段(栏目)的序号等于1,意味着复选时选中
@ j,5 SAY cbfyfield(i,j) GET cbfyfieldje(i,j) && 编辑摘要与借方之间的各个字段(栏目)的数量
ELSE && 否则
@ j,5 SAY cbfyfield(i,j) GET cbfyfieldje(i,j) DISA && 禁止编辑
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -