📄 bcl8zja.prg
字号:
* -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
* 文件名: BCL8ZJA.PRG <-- 本文件由 UnFoxAll 创建
* -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
BTZ = .F.
NYF = VAL(YUE)
CFILE1 = 'dat\h01' - RIGHT(NIAN,2) - '.dat'
CFILE2 = 'tmp\h01tmp.dat'
IF FILE(CFILE1)
ELSE
MESSAGEBOX('无汇总表数据,请检查!',304,'出错提示信息')
RETURN
ENDIF
USE (CFILE1)
FOR S = 1 TO NYF
LOCATE FOR DQDH = S AND XMDH = '1000'
IF FOUND() = .F.
NANSWER = 0
NANSWER = ;
MESSAGEBOX(STR(S) - '月份无汇总表数据,是否继续生成平均余额!',308,'提示信息')
IF NANSWER = 6
EXIT
ELSE
CLOSE ALL
RETURN
ENDIF
ELSE
IF DA5 = 0
NANSWER = 0
NANSWER = ;
MESSAGEBOX(STR(S) - '月份无汇总表数据,是否继续生成平均余额!',308,'提示信息')
IF NANSWER = 6
EXIT
ELSE
MESSAGEBOX(STR(S) - '月份无汇总表数据,请先做汇总!',304,'警告提示信息')
CLOSE ALL
RETURN
ENDIF
ELSE
ENDIF
ENDIF
ENDFOR
DELETE ALL FOR BLX1 = '3'
DELETE ALL FOR ;
XMDH = '9' .OR. XMDH = '101 ' .OR. XMDH = '102 ' .OR. XMDH = '103 ' .OR. XMDH = '104 ' .OR. ;
XMDH = '105 ' .OR. XMDH = '106 ' .OR. XMDH = '107 '
DELETE ALL FOR ;
XMDH = '108 ' .OR. XMDH = '109 ' .OR. XMDH = '110 ' .OR. XMDH = '201 ' .OR. ;
XMDH = '202 ' .OR. XMDH = '203 ' .OR. XMDH = '204 ' .OR. XMDH = '205 '
DELETE ALL FOR ;
XMDH = '206 ' .OR. XMDH = '207 ' .OR. XMDH = '208 ' .OR. XMDH = '209 ' .OR. ;
XMDH = '210 ' .OR. XMDH = '211 ' .OR. XMDH = '212 ' .OR. XMDH = '213 ' .OR. ;
XMDH = '214 '
PACK
USE
SET TALK OFF
SET CONSOLE OFF
SET EXACT ON
SET SAFETY OFF
WAIT WINDOW AT 15 , 35 NOCLEAR NOWAIT '正在生成平均余额表,请稍候......'
IF FILE(CFILE2)
DELETE File (CFILE2)
ELSE
ENDIF
COPY File (CFILE1) TO (CFILE2)
USE IN 88 EXCLUSIVE (CFILE2)
SELECT 88
DELETE ALL FOR BLX1 <> '1'
PACK
USE
H01 = 'h01' - NIAN
SELECT DQDH , BLX1 , BLX2 , XMDH , SJDW , SUM(DA5) , SUM(DA6) WHERE BETWEEN(DQDH,1,NYF) ;
GROUP BY XMDH INTO TABLE tmp\h09temp.dbf FROM (CFILE2) H01
CLOSE ALL
USE tmp\h09temp.dbf
GO TOP
DO WHILE .NOT. EOF()
IF SUM_DA5 <> 0
DNSJ = SUM_DA5
REPLACE SUM_DA5 WITH ROUND(DNSJ / NYF,0)
ELSE
ENDIF
IF SUM_DA6 <> 0
DNSJ = SUM_DA6
REPLACE SUM_DA6 WITH ROUND(DNSJ / NYF,0)
ELSE
ENDIF
IF .NOT. EOF()
SKIP
ELSE
EXIT
ENDIF
ENDDO
USE
CNIAN = RIGHT(NIAN,2)
if file("dat\h09&cnian..dat")
ELSE
USE lib\b0900.dat
copy stru to ("dat\h09&cnian..dat")
ENDIF
if file("dat\b09&cnian&yue..dat")
ELSE
USE lib\b0900.dat
copy stru to ("dat\b09&cnian&yue..dat")
ENDIF
USE IN 77 EXCLUSIVE tmp\h09temp.dbf
SELECT 77
COPY TO tmp\h09temp2.dbf STRUCTURE
USE IN 66 EXCLUSIVE tmp\h09temp2.dbf ORDER dqdh
SELECT 66
APPEND BLANK
GO BOTTOM
REPLACE DQDH WITH NYF , XMDH WITH 'dpbz' , BLX1 WITH '1' , BLX2 WITH '0' , SJDW WITH 0 , ;
SUM_DA5 WITH 0
APPEND FROM lib\xm09.dat
SELECT 77
COUNT TO S
FOR I = 1 TO S
GO TOP
SELECT 77
XMDH_1 = XMDH
SJDW_1 = SJDW
SUM_5 = SUM_DA5
SUM_6 = SUM_DA6
SKIP
SELECT 66
SCAN FOR XMDH = XMDH_1
REPLACE DQDH WITH NYF , BLX1 WITH '1' , BLX2 WITH '0' , SJDW WITH 5 , SUM_DA5 WITH ;
ROUND(SUM_5 * 0.01,0) , SUM_DA6 WITH ROUND(SUM_6 * 0.01,0)
ENDSCAN
ENDFOR
SELECT 77
USE
SELECT 66
COUNT TO S
DIMENSION MYARRAY( S , 7 )
COPY TO ARRAY MYARRAY( S , 7 ) FIELDS DQDH , XMDH , BLX1 , BLX2 , SJDW , SUM_DA5 , ;
SUM_DA6
use ("dat\h09&cnian..dat") in 88 excl
SELECT 88
DELETE ALL
PACK
APPEND FROM ARRAY MYARRAY( S , 7 )
INDEX ON XMDH TAG XMDH
SELECT 55
USE LIB\DP09.DAT
COUNT TO S
USE
SELECT 88
DQ = DQDH
FOR LKL = 1 TO 2
GSXH1 = S + 1
LML = ALLTRIM(STR(LKL))
DO DPCL1
ENDFOR
FOR LKL = 1 TO 2
GSXH = S + 1
LML = ALLTRIM(STR(LKL))
FOR J = 1 TO S
DP = 0
DO DPCL
IF DP <> 0
DO TZKM
IF BTZ = .T.
EXIT
ENDIF
ELSE
ENDIF
ENDFOR
ENDFOR
SELECT 88
SCAN FOR XMDH = 'dpbz'
REPLACE SJDW WITH 1
ENDSCAN
WAIT CLEAR
MESSAGEBOX(LTRIM(STR(NYF)) - '月份止平均余额汇总表生成完毕!请选择打印月报即可,数据为百元。',64,'完成提示信息')
CLOSE ALL
PROCEDURE TZKM
SELECT 88
FOR MKL = 1 TO CEILING(ABS(DP))
MSGTTL = '平均余额处理'
MESSGTXT = ;
PADL((XMDH),6) + '合计项与分项第' + LML + '项相差:' + CHR(13) + ALLTRIM(STR(DP)) + ;
CHR(13) + CHR(13) + ' 是否调整?'
IF MESSAGEBOX(MESSGTXT,36,MSGTTL) = 7
BTZ = .T.
RETURN
ELSE
VCL = 0
VCLM = ''
SELECT 3
USE LIB\dp09a.DAT
SCAN FOR XH = GSXH
XMDH_DP = XMDH
SELECT 88
SCAN FOR XMDH = XMDH_DP AND DQDH = DQ
IF da&lml>0
IF DP > 0
WAIT WINDOW NOCLEAR NOWAIT ' 调整 ' + ALLTRIM(XMDH) + '科目数据,请稍候 '
repl da&lml with da&lml+1
REPL days&lml WITH days&lml+1
DP = DP - 1
ELSE
IF DP = 0
RETURN
ELSE
WAIT WINDOW NOCLEAR NOWAIT ' 调整 ' + ALLTRIM(XMDH) + '科目数据,请稍候 '
REPL da&lml with da&lml-1
REPL days&lml WITH days&lml-1
DP = DP + 1
ENDIF
ENDIF
ELSE
EXIT
ENDIF
ENDSCAN
ENDSCAN
ENDIF
ENDFOR
ENDPROC
*------
PROCEDURE DPCL1
SELECT 4
USE LIB\DP09.DAT
FOR K = 1 TO S
SELECT 4
GSXH1 = K
IF GSXH1 <> 0
SCAN FOR GSXH1 = XH
SUMM = 0
SELECT 3
USE LIB\dp09a.DAT
SCAN FOR XH = DP09.XH
YUSU = FH
SELECT 88
SEEK DP09A.XMDH
SCAN FOR DQDH = DQ AND XMDH = DP09A.XMDH
SUMM=SUMM&yusu.da&lml
EXIT
ENDSCAN
SELECT 3
ENDSCAN
SELECT 88
SEEK DP09.XMDH
SCAN FOR DQDH = DQ AND XMDH = DP09.XMDH
DP=da&lml-SUMM
IF CEILING(ABS(DP)) > 10
repl da&lml with summ
ELSE
EXIT
ENDIF
EXIT
ENDSCAN
SELECT 4
ENDSCAN
ELSE
RETURN
ENDIF
ENDFOR
ENDPROC
*------
PROCEDURE DPCL
SELECT 4
USE LIB\DP09.DAT
GSXH = GSXH - 1
IF GSXH <> 0
SCAN FOR GSXH = XH
SUMM = 0
SELECT 3
USE LIB\dp09a.DAT
SCAN FOR XH = DP09.XH
YUSU = FH
SELECT 88
SEEK DP09A.XMDH
SCAN FOR DQDH = DQ AND XMDH = DP09A.XMDH
SUMM=SUMM&yusu.da&lml
EXIT
ENDSCAN
SELECT 3
ENDSCAN
SELECT 88
SEEK DP09.XMDH
SCAN FOR DQDH = DQ AND XMDH = DP09.XMDH
DP=da&lml-SUMM
IF DP <> 0
RETURN
ENDIF
EXIT
ENDSCAN
SELECT 4
ENDSCAN
ELSE
RETURN
ENDIF
ENDPROC
*------*
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -