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

📄 -i+

📁 visualfoxpro企业会计电算化实例
💻
📖 第 1 页 / 共 3 页
字号:
STORE m1 TO mj                                   && 记下借方科目或明细个数

* 收款凭证 贷方科目
ACTI WINDOW swd                                  && 激活收款贷方科目窗口
STORE 0 TO a                                     && 数组清零
FOR i=1 TO 23                                    && 循环
	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 循环
FOR i=24 TO 46                                   && 循环
	IF b(i,5)='暂不使用'                         && 如果选用与否为暂不使用
		@ i-24,22 GET a(i) FUNC "*C "+b1(i) DISA && 列出复选框,禁止选用
	ELSE                                         && 否则
		@ i-24,22 GET a(i) FUNC "*C "+b1(i)      && 列出复选框
	ENDIF
NEXT                                             && 下一个 FOR 循环
FOR i=47 TO 67                                   && 循环
	IF b(i,5)='暂不使用'                         && 如果选用与否为暂不使用
		@ i-47,44 GET a(i) FUNC "*C "+b1(i) DISA && 列出复选框,禁止选用
	ELSE                                         && 否则
		@ i-47,44 GET a(i) FUNC "*C "+b1(i)      && 列出复选框
	ENDIF
NEXT       
FOR i=68 TO 85                                   && 循环
	IF b(i,5)='暂不使用'                         && 如果选用与否为暂不使用
		@ i-68,66 GET a(i) FUNC "*C "+b1(i) DISA && 列出复选框,禁止选用
	ELSE                                         && 否则
		@ i-68,66 GET a(i) FUNC "*C "+b1(i)      && 列出复选框
	ENDIF
NEXT                                       && 下一个 FOR 循环
@ 21,55 GET kk DEFA 1 FUNC '*th 确认;取消' SIZE 2,6,4     && 命令按钮

READ CYCLE                                       && 激活对象
DO rk                                            && 键控过程,按Ctrl+End结束程序
IF kk=2                                          && 如果选择了取消
	CLEAR ALL                                    && 释放变量、窗口,关闭表
	CANCEL                                       && 终止程序的执行
ENDIF
DEAC WINDOW swd                                  && 挂起收款贷方复选科目窗口
DIME z(6)                                        && 定维数组
STORE ' ' TO z                                   && 初始化数组
STORE 0 TO j                                     && 初始化变量
FOR i=1 TO 85                                    && 循环
	IF a(i)=1                                    && 如果复选时选中
		j=j+1                                    && 计数器加1
		z(j)=b1(i)                               && 记下科目的名称 
		hh(j)=i                                  && 记下选中科目的记录号1-85
	ENDIF                                  
NEXT                                             && 下一个FOR循环

** 处理收款贷方名细
PUBLIC skdf(300,7)                               && 定维公共数组
					&& 列:1摘要 2结算方式 3票号 4科目名称 5明细名称 6贷方金额 7表名
FOR i=1 TO 300                                   && 循环,初始化数组元素
	STORE ' ' TO skdf(i,1),skdf(i,2),skdf(i,3),skdf(i,4),skdf(i,5),skdf(i,7)
	STORE 0.00 TO skdf(i,6)
NEXT                                             && 下一个FOR循环
STORE 0 TO m1                                    && 变量清零
FOR i=1 TO j                                     && 循环,终值为选中的科目个数
	IF USED('zk85')                              && 如果表已打开	
		SELECT zk85                              && 激活工作区
	ELSE                                         && 否则
		SELECT 3                                 && 激活工作区
    	USE 科目总控!zk85                        && 打开表‘zk85’(总控85,内含85个科目)
	ENDIF
	LOCATE FOR 会计科目名=z(i)                   && 根据科目名称定位
	STORE ' ' TO mx,mxmc1                        && 初始化变量
	mx=明细库名                                  && 记下名细表名 联系表
	DECLARE mxj1(300),mxj(300,2)                 && 定维数组
	STORE ' ' TO mxmc,mxarray                    && 初始化数组 
	IF 选用与否='选用明细'                       && 如果 选用与否='选用明细'
		SELECT 4                                 && 激活工作区
		USE &mx                                  && 打开明细联系表
		rec=RECC()                               && 记下记录个数
		COPY TO ARRAY mxj                    && 复制到明细数组
		FOR k=1 TO rec                           && 循环
			STORE mxj(k,1) TO mxj1(k)        && 明细名称过渡到一维数组
		NEXT                                     && 下一个FOR循环
		IF rec<=21                               && 如果 明细记录个数小于等于21
			DEFI WINDOW swdmx1 FROM 0,37 TO 26,73  TITLE ' '+z(i)+" 贷方明细 ";
				ZOOM  MINIMIZE FLOAT DOUB        && 定义窗口
			ACTI WINDOW swdmx1                   && 激活窗口
			STORE 0 TO a                         && 数组清零
			FOR k=1 TO rec                       && 循环
				@ k-1,0 GET a(k) FUNC "*c "+ mxj1(k)  && 排布明细名称复选框
			NEXT                                 && 下一个FOR循环
			@ 22,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 swdmx1                   && 挂起窗口
		ELSE                                     && 否则,明细记录个数大于21
			DEFI WINDOW swdmx FROM 0,15 TO 26,80  TITLE z(i)+" 贷方明细 " ;
				ZOOM  MINIMIZE FLOAT DOUB        && 定义窗口
			ACTI WINDOW swdmx                    && 激活窗口
			STORE 0 TO a                         && 数组清零
			DO CASE
				CASE 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,20 GET a(k) FUNC "*c "+ mxj1(k)  && 排布明细名称复选框
					NEXT                             && 下一个FOR循
					@ 22,40 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 swdmx                && 挂起窗口
				CASE rec<=80                        && 否则,明细记录个数大于42
					DEFI WINDOW swdmx FROM 0,0 TO 28,300 FLOAT  CLOSE DOUB;
						TITLE ' 贷方科目:'+z(i)+' 左右拖动此线 ───── 选择明细 ';
						+'────────── 移动此线 ──────────────────';
						+'     移动此线 ─── '     && 定义活动窗口
					ACTI WINDOW swdmx                && 激活活动窗口
					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 qq=2                          && 如果选择了取消
						CLEAR ALL                    && 释放变量、窗口,关闭表
						CANCEL                       && 终止程序的执行
					ENDIF
					DO rk                            && 键控过程,按Ctrl+End结束程序
					DEAC WINDOW swdmx                && 挂起窗口
				OTHERWISE                        && 其他(当明细个数大于80)
					IF USED('明细复选框表')        && 如果校验框表已经打开
					   SELECT 明细复选框表         && 激活校验框表工作区
					ELSE                         && 否则
						SELECT 0                 && 激活工作区
				   		USE 明细复选框表         && 打开校验框表文件
					ENDIF                        && 
					SET SAFETY OFF               && 关闭安全提示窗口
					ZAP                          && 清除全部记录
					SET SAFETY ON                && 打开安全提示窗口
					FOR kk=1 TO rec              && 循环
					 	APPEND BLANK             && 追加空记录
				 		REPLACE 明细名称 WITH MXJ1(KK)  && 替换字段
				 		REPLACE 校验框 WITH 0    && 冲零 
					ENDFOR                       && 下一个FOR循环
					GOTO TOP                     && 指针指向文件顶
					DO 浏览复选框                && 运行校验框子程序
					FOR kk=1 TO rec              && 循环
						GOTO KK                  && 移动指针
						STORE 校验框 TO a(kk)    && 字段值(1或0)赋给数组元素
					NEXT	 	                 && 下一个FOR循环
					DEAC WINDOW swdmx            && 挂起窗口
			ENDCASE
		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
				skdf(m1,4)=z(i)                  && 记下科目名称
				skdf(m1,5)=mxj1(k)               && 记下明细名称
				skdf(m1,7)=mxj(k,2)              && 记下明细表明
			ENDIF
		NEXT                                     && 下一个FOR循环
	ELSE                                         && 否则 选用与否#'选用明细'
		m1=m1+1                                  && 计数器加1
		STORE z(i) TO skdf(m1,4)                 && 记下科目名称
		IF USED('zk85')                          && 如果表已打开	
			SELECT zk85                          && 激活工作区
		ELSE                                     && 否则
			SELECT 3                             && 激活工作区
    		USE 科目总控!zk85                    && 打开表‘zk85’(总控85,内含85个科目)
		ENDIF
		LOCATE FOR 会计科目名=z(i)               && 根据科目名称定位
		STORE 科目库名 TO skdf(m1,7)             && 记下科目表明
	ENDIF
NEXT                                             && 下一个FOR循环,选中的科目

*******收款贷方登录
IF m1<=6                                         && 如果收款贷方科目明细个数小于等于6
	** 显示贷方科目和明细
	FOR k=1 TO m1                                    && 循环
		@ k*2.2+4.46,40 GET skdf(k,4)  DISA SIZE 1,12    && 显示科目,禁止编辑
		@ k*2.2+4.46,52 GET skdf(k,5)   DISA  SIZE 1,14  && 显示明细,禁止编辑
	NEXT                                             && 下一个FOR循环
	READ                                             && 激活对象

&& 填写收款贷方摘要、结算方式、票号                               
	FOR i=1 TO m1                                    && 循环,终值为贷方科目或明细个数
		@ 4.45+i*2.2,3.5 GET z3 DEFAULT '☆_' DISABLE  && 显示☆_ 提示位置
		DEFI WINDOW zyw FROM 3,76 TO 28,103  TITLE ' '+ALLTRIM(skdf(i,4))+" 摘要" ;
			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                                   && 激活对象

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -