📄 -i+
字号:
*************************************************
* 收款记帐凭证登录.PRG *
* 调用程序 记账主程序.PRG *
*************************************************
DO FORM 收款记账凭证.scx && 执行收款记账凭证登录表单
*初始化数组元素
FOR i=1 TO 100 && 循环
STORE '' TO zza(i,1) && 摘要
STORE '' TO zza(i,2) && 结算方式
STORE '' TO zza(i,3) && 票号
STORE '' TO zza(i,4) && 总帐科目
STORE '' TO zza(i,5) && 明细科目
STORE 0.00 TO zza(i,6) && 借方
STORE 0.00 TO zza(i,7) && 贷方
STORE '' TO zza(i,8) && 借贷标识
STORE '' TO zza(i,9) && 登帐数据库名
STORE '收款' TO zza(i,10) && 凭证种类
NEXT && 下一个FOR循环
STORE '收款' TO pingzlb && 凭证类别
STORE { . . } TO riqi && 初始化日期为空
STORE .T. TO tf && 初始化逻辑变量
DO WHILE tf && 循环
@ 2.7,19 GET riqi SIZE 1,10 RANGE BEGIN,the_end ;
VALID riqi<>{ . . } ERROR '日期不可空' && 编辑日期
@ 2.7,36 GET bianhao DEFAULT 0 SIZE 1,4,1 ;
VALID bianhao>0 ERROR '编号不可为零' && 编辑编号
@ 22.4,26.6 GET jizhang DEFAULT '钟惠民' SIZE 1,6,1 DISABLE && 记账,禁止
@ 22.4,49.2 GET zhidan DEFAULT '钟惠民' SIZE 1,6,1 DISABLE && 制单,禁止
@ 20.1,12 GET fudanjzs SIZE 1,4,1 DEFAULT 0 && 编辑附单据张数
@ 22.4,73 GET lingkr SIZE 1,6 DEFAULT " " && 编辑交款人
READ && 激活对象
DO rk && 键控过程,按Ctrl+End结束程序
IF riqi={ . . }.OR.bianhao=0 && 如果日期为空或编号为零
tf=.T. && 逻辑变量为真
ELSE && 否则
tf=.F. && 逻辑变量为假,退出DO循环
ENDIF
ENDDO && 下一个DO循环
* 处理借方科目
DEFI WINDOW swj FROM 0,0 TO 15,22 TITLE " 借方科目 " ;
ZOOM MINIMIZE FLOAT DOUB CLOSE && 定义窗口
ACTI WINDOW swj && 激活借方
STORE 0 TO a && 初始化数组
FOR i=1 TO 3 && 循环,只有现金、银行存款、其他货币资金
IF b(i,5)='暂不使用' && 如果 选用与否为暂不使用
@ i-1,0 GET a(i) FUNC "*C "+b1(i) DISA && 排布科目复选框,禁止选用
ELSE && 否则
@ i-1,0 GET a(i) FUNC "*C "+b1(i) && 排布科目复选框
ENDIF
NEXT && 下一个FOR循环
@ 10,1 GET qq DEFA 1 FUNC '*th 确认;取消' SIZE 2,4,4 && 命令按钮
READ CYCLE && 激活对象
IF qq=2 && 如果选择了取消
CLEAR ALL && 释放内存变量、窗口、关闭表
CANCEL && 结束程序的执行
ENDIF
DO rk && 键控过程,按Ctrl+End结束程序
DEAC WINDOW swj && 挂起借方窗口
PUBLIC skjf(6,5) && 定维收款借方公共数组
DIME z(85) && 定为数组
FOR i=1 TO 6 && 循环
STORE ' ' TO skjf(i,1),skjf(i,2),skjf(i,3),skjf(i,5) && 初始化变量
&& 1、科目名称 2、明细名称 3、摘要 5、科目或明细表名
STORE 0.00 TO skjf(i,4) && 初始化数组元素,借方金额
NEXT && 下一个FOR循环
DIMENSION hh(6) && 定位数组
STORE 0 TO m,m1 && 初始化变量
FOR i=1 TO 85 && 循环
IF a(i)=1 && 如果复选是选中
m=m+1 && 计数器加1
z(m)=b1(i) && 记下选中的科目名称
hh(m)=i && 记下选中科目的记录号1-85
ENDIF
NEXT && 下一个FOR循环
FOR i=1 TO m && 循环
IF USED('zk85') && 如果表已打开
SELECT zk85 && 激活工作区
ELSE && 否则
SELECT 3 && 激活工作区
USE 科目总控!zk85 && 打开表‘zk85’(总控85,内含85个科目)
ENDIF
LOCATE FOR 会计科目名=z(i) && 根据科目名称定位
IF 选用与否='选用明细' && 如果 选用与否='选用明细'
STORE 明细库名 TO mx && 记下名细表名
SELECT 4 && 激活工作区
USE &mx ALIAS mx && 打开表
DIME mxj(300,3),mxj1(300) && 定位数组
COPY TO ARRAY mxj && 复制到数组
rec=RECC() && 记下记录个数
FOR k=1 TO rec && 循环
STORE ALLTRIM(mxj(k,1)) TO mxj1(k) && 明细名称赋值给一维数组
NEXT && 下一个FOR循环
IF rec<=21 && 如果记录个数小于等于21
DEFI WINDOW swjmx1 FROM 0,0 TO 22,36 TITLE ' '+z(i)+" 借方明细 " ;
ZOOM MINIMIZE FLOAT DOUB && 定义窗口
ACTI WINDOW swjmx1 && 激活窗口
STORE 0 TO a && 初始化数组
FOR k=1 TO rec && 循环
@ k-1,0 GET a(k) FUNC "*c "+ mxj1(k) && 排布借方名细
NEXT && 下一个FOR循环
@ 10,1 GET qq DEFA 1 FUNC '*th 确认;取消' SIZE 2,4,4 && 命令按钮
READ CYCLE && 激活对象
IF qq=2 && 如果选择了取消
CLEAR ALL && 释放内存变量、窗口、关闭表
CANCEL && 结束程序的执行
ENDIF
DO rk && 键控过程,按Ctrl+End结束程序
DEAC WINDOW swjmx1 && 挂起窗口
ELSE && 否则,明细个数大于21
DEFI WINDOW swjmx FROM 0,0 TO 22,67 TITLE z(i)+" 借方明细 ";
ZOOM MINIMIZE FLOAT DOUB && 定义窗口
ACTI WINDOW swjmx && 激活窗口
STORE 0 TO a && 初始化数组
IF rec<=42 && 如果记录个数小于42
FOR k=1 TO 21 && 循环
@ k-1,0 GET a(k) FUNC "*c "+ mxj1(k) && 排布复选框
NEXT && 下一个FOR循环
FOR k=22 TO rec && 循环
@ k-22,26 GET a(k) FUNC "*c "+ mxj1(k) && 排布复选框
NEXT && 下一个FOR循环
@ 10,1 GET qq DEFA 1 FUNC '*th 确认;取消' SIZE 2,4,4 && 命令按钮
READ CYCLE && 激活对象
IF qq=2 && 如果选择了取消
CLEAR ALL && 释放内存变量、窗口、关闭表
CANCEL && 结束程序的执行
ENDIF
DO rk && 键控过程,按Ctrl+End结束程序
DEAC WINDOW swjmx && 挂起窗口
ELSE && 否则,明细个数大于42
DEFI WINDOW swjmx FROM 0,0 TO 28,250 FLOAT CLOSE;
TITLE ' 借方科目:'+z(i)+' 左右拖动此线 ───── 选择明细 '+;
'────────── 移动此线 ──────────────'+;
'──── 移动此线 ─── ' && 定义浮动窗口
ACTI WINDOW swjmx && 激活浮动窗口
STORE 0 TO a && 初始化数组
FOR k=1 TO rec && 循环
@ k%22,INT(k/22)*30 GET a(k) FUNC '*c '+mxj1(k) && 排布复选框
NEXT && 下一个FOR循环
@ 23,80 GET kk DEFA 1 FUNC '*th 确认;取消' SIZE 2,4,4 && 命令按钮
READ CYCLE && 激活对象
IF kk=2 && 如果选择了取消
CLEAR WINDOW ALL && 释放内存变量、窗口、关闭表
CANCEL && 结束程序的执行
ENDIF
DO rk && 键控过程,按Ctrl+End结束程序
ENDIF
DEAC WINDOW swjmx && 挂起窗口
ENDIF
IF a(rec)=1 && 如果选择了末记录 新明细添加
h=hh(i) && 选中科目的记录号1-85
DO 添加新明细 && 运行子程序
ENDIF
FOR k=1 TO rec && 循环
IF a(k)=1 && 如果复选是选中
m1=m1+1 && 计数器加1
STORE z(i) TO skjf(m1,1) && 记下科目名称
STORE mxj1(k) TO skjf(m1,2) && 记下明细名称
STORE mxj(k,2) TO skjf(m1,5) && 记下明细表名
ENDIF
NEXT && 下一个FOR循环
ELSE
m1=m1+1
STORE z(i) TO skjf(m1,1)
IF USED('zk85') && 如果表已打开
SELECT zk85 && 激活工作区
ELSE && 否则
SELECT 3 && 激活工作区
USE 科目总控!zk85 && 打开表‘zk85’(总控85,内含85个科目)
ENDIF
LOCATE FOR 会计科目名=z(i) && 根据科目名称定位
STORE 科目库名 TO skjf(m1,5) && 击下科目表名
ENDIF
NEXT && 下一个FOR循环
* 借方登录
FOR i=1 TO m1
@ i*1.2+0.4,45.5 GET skjf(i,1) DISA FONT '宋体',10 SIZE 1,10 && 科目名称,禁止编辑
@ i*1.2+0.4,55 GET skjf(i,2) DISA FONT '宋体',10 SIZE 1,12 && 明细名称,禁止编辑
NEXT && 下一个FOR循环
@ 0.5,84 GET z1 DEFAULT ' 摘要 ' DISA FONT '宋体',12 && 显示摘要,禁止编辑
FOR i=1 TO m1 && 循环,终值为借方科目或明细个数
STORE '☆_' TO z2 && 初始化变量
@ i*1.2+0.4,81 GET z2 DEFAULT '☆_' DISA && 显示'☆_',禁止编辑
DEFI WINDOW zyw FROM 6,77 TO 26,103 TITLE " "+ALLTRIM(skjf(i,1))+" 摘要 ";
ZOOM MINIMIZE FLOAT DOUB CLOSE && 定义摘要列表窗口
ACTI WINDOW zyw && 激活窗口
STORE 1 TO h && 初始化变量
@ 1,1 GET h DEFA 1 FUNC '&t ' FROM zhai1 && List列表
READ CYCLE && 激活对象
DO rk && 键控过程,按Ctrl+End结束程序
STORE zhai1(h) TO skjf(i,3) && 记下选中的摘要
DEAC WINDOW zyw && 挂起摘要列表窗口
@ i*1.2+0.4,81 GET skjf(i,3) SIZE 1,12 FONT '宋体',12 && 编辑摘要,允许修改
READ && 激活对象
DO rk && 键控过程,按Ctrl+End结束程序
IF h>=2 && 如果选中第二以下的摘要
FOR w=h TO 2 STEP -1 && 循环
zhai1(w)=zhai1(w-1) && 向下递推
NEXT && 下一个FOR循环
ENDIF
zhai1(1)=skjf(i,3) && 第一个摘要自动更新
zhai1(20)=' ' && 第二十个为空
NEXT && 下一个FOR循环
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -