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

📄

📁 visualfoxpro企业会计电算化实例
💻
📖 第 1 页 / 共 3 页
字号:
**************************************************************
*                        月合计.PRG                          *
**************************************************************
CLOSE DATA
SET TALK OFF                                                 && 阻止对话结果传送到窗口
SET CENTURY ON                                               && 指定用四位数表示年 
SET DATE ANSI                                                && 日期格式yy.mm.dd
CLEAR                                                        && 请屏幕
PUBLIC BEGIN,the_end                                         && 定义公共日期变量 
DO FORM 表单2 NAME 记账开始结束时间 LINK                     && 执行表单
READ EVENTS                                                  && 激活事件CLEAR
STORE GOMONTH(the_end,-1) TO syhjrq                          && 上月合计日期
STORE MONTH(the_end) TO yuefen                               && 月份
DEFI WINDOW yhj FROM 5,20 TO 15,70 TITLE ' 进行月合计 ' CLOSE   && 定义窗口
ACTI WINDOW yhj                                              && 激活窗口
@ 4,5 SAY '几月份合计?' GET yuefen DEFA 0 SIZE 1,2           && 编辑月份
READ                                                         && 激活对象
IF USED('ZK85')                                              && 如果表已打开	
	SELECT ZK85                                              && 激活工作区
ELSE                                                         && 否则
	SELECT 3                                                 && 激活工作区
   	USE 科目总控!zk85                        && 打开表‘ZK85’(总控85,内含85个科目)
ENDIF
COPY TO ARRAY zza                                            && 复制到总帐数组
STORE RECC() TO zkn                                          && 记下纪录个数
CLEAR                                                        && 请屏幕
@ 1,10 SAY '是否逐项进行月合计?'                             && 提示信息 
STORE 1 TO h                                                 && 初始化变量
@ 3,9 GET h FUNC '*ht 逐项;单项;取消' SIZE 2,6,6 DEFA 1      && 命令按钮
READ                                                         && 激活对象
DO CASE                                                      && 根据情况判断处理
	CASE h=1                                                 && 如果选择了逐项
		STORE 1 TO bds                                       && 记下循环开始的数
		STORE zkn TO e                                       && 记下循环结束的数
	CASE h=2                                                 && 如果选择了单项
		DIME m(zkn)                                          && 定维数组
		FOR i=1 TO zkn                                       && 循环
			m(i)=zza(i,1)+' '+zza(i,2)                       && 给数组赋值,编号和科目名称
		NEXT                                                 && 下一个FOR循环 
		DEFI WINDOW lst FROM 1,51 TO 20,79 TITLE '单项月合计科目选择'  && 定义列表窗口
		ACTI WINDOW lst                                      && 激活窗口
		STORE 1 TO shuliang                                  && 初始化变量 
		@ 0,0 GET shuliang FROM m FUNC '&t' DEFA 1           && List列表 
		READ CYCLE                                           && 激活对象,选择科目
		DEAC WINDOW lst                                      && 消隐列表窗口
		STORE shuliang TO bds,e && 选择了第几个科目赋给循环开始、结束的数,两数相同只循环一次
	CASE h=3                                                 && 如果选择了取消
		CLEAR ALL                                            && 释放变量、窗口、关闭表
		CANCEL                                               && 结束程序
ENDCASE
DEACTI WINDOW yhj                                            && 消隐窗口

DIME mx(300,3)                                               && 定维数组   
FOR i=bds TO e                                               && 循环
    ? zza(i,1),zza(i,2),zza(i,3)
	IF zza(i,5)<>'暂不使用'                                  && 如果‘选用与否’不是暂不使用
		DO CASE                                              && 根据情况判断处理
			CASE ALLTRIM(zza(i,2))='现金'.OR.ALLTRIM(zza(i,2))='其他货币资金' 
													&& 如果‘会计科目名’为现金或其他货币资金
				USE &zza(i,3)                       		 && 打开‘科目库名’表
				STORE 0 TO jhj,dhj                           && 初始化变量 
				SUM 借方,贷方 FOR 日期>=BEGIN.AND.日期<=the_end TO jhj,dhj  && 累加时间范围内的借方、贷方
				SET FILTER TO 日期>=BEGIN.AND.日期<=the_end  && 按日期范围过滤科目表     
				GOTO BOTTOM                                  && 指针指向纪录末
				STORE 余额 TO yu_e                           && 记下余额
				USE &zza(i,6)                                && 打开‘月合计’表
				GOTO BOTTOM                                  && 指针指向纪录末
				IF 日期<>syhjrq                              && 如果日期不是上月末期
					IF 日期=the_end                          && 如果是本月记账末期,说明做过月合计
						REPLACE 日期 WITH the_end            && 替换字段,下同
						REPLACE 摘要 WITH ALLTRIM(STR(yuefen))+'月份合计' 
						REPLACE 借方 WITH jhj
						REPLACE 贷方 WITH dhj
						REPLACE 余额 WITH yu_e       
						BROWSE 	NOAPPEND NODELETE NOMODIFY IN SCREEN WIDTH 100 ;
						 TITLE zza(i,2)+' '+zza(i,6)+'月计 ' && TIMEOUT 1 && 浏览
						USE                                  && 关闭表
					ELSE                                     && 否则
						WAIT WINDOW '月份不符'               && 提示信息 
						BROW TITLE zza(i,2)+zza(i,6)+'合计'  && 浏览,观察问题之所在
					ENDIF
				ELSE                                         && 否则,日期是上月末期,这是正常情况
					APPEND BLANK                             && 追加空纪录
					REPLACE 日期 WITH the_end                && 替换字段,下同
					REPLACE 摘要 WITH ALLTRIM(STR(yuefen))+'月份合计'
					REPLACE 借方 WITH jhj
					REPLACE 贷方 WITH dhj
					REPLACE 余额 WITH yu_e             
					BROWSE 	NOAPPEND NODELETE NOMODIFY IN SCREEN WIDTH 100 ;
					 TITLE zza(i,2)+' '+zza(i,6)+'月计 '  && TIMEOUT 1   && 浏览
					USE                                      && 关闭表
				ENDIF

			CASE (ALLTRIM(zza(i,2))='应交税金').AND.ALLTRIM(zza(i,5))='选用明细'
			                                                 && 如果‘会计科目名’为银行存款
				USE &zza(i,4)                                && 打开‘名细库名’表,联系表
				STORE RECC() TO N                            && 记下纪录个数
				COPY TO ARRAY mx                             && 复制到数组
				STORE 0 TO jhj,dhj,jhjz,dhjz,YEHJ            && 初始化变量 
				FOR jf=1 TO N-1                              && 循环,末纪录总是‘创建或增添新名细’,不计
					USE &mx(jf,2)                            && 打开单项明细表
					STORE 0 TO jhj,dhj                       && 初始化变量 
					SUM 借方,贷方 FOR 日期>=BEGIN.AND.日期<=the_end TO jhj,dhj && 累加时间范围内的借方、贷方 
					SET FILTER TO 日期>=BEGIN.AND.日期<=the_end  && 按日期范围过滤明细表
					GOTO BOTTOM                              && 指针指向纪录末
					STORE 余额 TO yu_e                       && 记下余额
					jhjz=jhjz+jhj                            && 累加借合计 
					dhjz=dhjz+dhj                            && 累加贷合计
					YEHJ=YEHJ+YU_E                           && 累加余额合计
					USE &mx(jf,3)                            && 贷开明细月合计表
					GOTO BOTTOM                              && 指针指向纪录末
					IF 日期<>syhjrq                          && 如果日期不是上月末期
						IF 日期=the_end                      && 如果是本月记账末期,说明做过月合计
*							GOTO RECC()-1                    && 指针指向末之前一个纪录
*							STORE 余额  TO yu_e              && 记下余额
							GOTO BOTT                        && 指针指向纪录末
							REPLACE 日期 WITH the_end        && 替换字段,下同
							REPLACE 摘要 WITH ALLTRIM(STR(yuefen))+'月份合计'
							REPLACE 借方 WITH jhj
							REPLACE 贷方 WITH dhj
							REPLACE 余额 WITH yu_e           &&+jhj-dhj
						ELSE                                 && 否则
							WAIT WINDOW '月份不符'           && 提示信息
							BROW TITLE mx(jf,1)+mx(jf,3)+'合计' && 浏览,观察问题之所在
						ENDIF
					ELSE                                     && 否则,日期是上月末期,这是正常情况
						APPEND BLANK                         && 追加空纪录
						REPLACE 日期 WITH the_end            && 替换字段,下同
						REPLACE 摘要 WITH ALLTRIM(STR(yuefen))+'月份合计'
						REPLACE 借方 WITH jhj
						REPLACE 贷方 WITH dhj
						REPLACE 余额 WITH YU_E
					ENDIF
				NEXT
                ************  应交税金总帐 **************
				USE &zza(i,6)                                && 打开银行存款月合计表
				GOTO BOTTOM                                  && 指针指向纪录末
				STORE 余额  TO yu_e                          && 记下余额
				IF 日期<>syhjrq                              && 如果日期不是上月末期
					IF 日期=the_end                          && 如果是本月记账末期,说明做过月合计
						GOTO RECC()-1                        && 指针指向末之前一个纪录
						STORE 余额  TO yu_e                  && 记下余额
						GOTO BOTT                            && 指针指向纪录末
						REPLACE 日期 WITH the_end            && 替换字段,下同
						REPLACE 摘要 WITH ALLTRIM(STR(yuefen))+'月份合计'
						REPLACE 借方 WITH jhjz
						REPLACE 贷方 WITH dhjz
						REPLACE 余额 WITH yu_e -jhjz+dhjz
						BROWSE NOAPPEND NODELETE NOMODIFY IN SCREEN WIDTH 100 ;
						 TITLE zza(i,2)+' '+zza(i,6)+'月合计 ' &&TIMEOUT 1 && 浏览					
						USE                                  && 关闭表
					ELSE                                     && 否则
						WAIT WINDOW '月份不符'               && 提示信息
						BROW TITLE zza(i,2)+zza(i,6)+'合计'  && 浏览,观察问题之所在
					ENDIF
				ELSE                                         && 否则,日期是上月末期,这是正常情况
					APPEND BLANK                             && 追加空纪录
					REPLACE 日期 WITH the_end                && 替换字段,下同
					REPLACE 摘要 WITH ALLTRIM(STR(yuefen))+'月份合计'
					REPLACE 借方 WITH jhjz
					REPLACE 贷方 WITH dhjz
					REPLACE 余额 WITH yehj          
					BROWSE NOAPPEND NODELETE NOMODIFY IN SCREEN WIDTH 100 ;
					 TITLE zza(i,2)+' '+zza(i,6)+'月合计 '  && TIMEOUT 1 && 浏览
					USE                                     && 关闭表
				ENDIF

			CASE ALLTRIM(zza(i,2))='长期待摊费用'.AND.ALLTRIM(zza(i,5))='选用明细'
														 	&& 如果‘会计科目名’为长期待摊费用
				USE &zza(i,4)                          		&& 打开‘名细库名’表,联系表
				COPY TO ARRAY mx                            && 复制到数组
				STORE 0 TO jhj,dhj,jhjz,dhjz,yehj           && 初始化变量
				FOR jf=1 TO 1                               && 递延资产第一个明细作科目用,循环一次
					USE &mx(jf,2)                           && 打开第一个明细表‘长期待摊费用mx1901000’
					STORE 0 TO jhj,dhj                      && 初始化变量
					SUM 借方,贷方 FOR 日期>=BEGIN.AND.日期<=the_end TO jhj,dhj  && 累加时间范围内的借方、贷方 
					SET FILTER TO 日期<=the_end 			&& 按日期范围过滤明细表	
					GOTO BOTTOM                             && 指针指向纪录末
					STORE 余额 TO yu_e                      && 记下余额
					jhjz=jhjz+jhj                           && 累加借合计
					dhjz=dhjz+dhj                           && 累加贷合计
					yehj=yehj+yu_e                          && 累加余额合计
					USE &mx(jf,3)                           && 打开明细月合计表
					GOTO BOTTOM                             && 指针指向末纪录
					IF 日期<>syhjrq                         && 如果日期不是上月末期
						IF 日期=the_end                     && 如果是本月记账末期,说明做过月合计
*							GOTO RECC()-1                   && 指针指向末之前一个纪录
*							STORE 余额  TO yu_e             && 记下余额
							GOTO BOTT                       && 指针指向末纪录
							REPLACE 日期 WITH the_end       && 替换字段,下同
							REPLACE 摘要 WITH ALLTRIM(STR(yuefen))+'月份合计'
							REPLACE 借方 WITH jhj
							REPLACE 贷方 WITH dhj

⌨️ 快捷键说明

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