⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 -i+

📁 visualfoxpro企业会计电算化实例
💻
📖 第 1 页 / 共 3 页
字号:
*************************************************
*             收款记帐凭证登录.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 + -