📄 bcl71.prg
字号:
* -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
* 文件名: BCL71.PRG <-- 本文件由 UnFoxAll 创建
* -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
PARAMETER SZ1 , FF , DD , M_BLX1
SET COLOR OF SCHEME 3 TO RGB( 0 , 0 , 0 , 192 , 192 , 192)
DEFINE WINDOW BCL FROM 1 , 10 TO 20 , 70 COLOR SCHEME 3 TITLE ' 批量读入上报数据' ;
DOUBLE
MOVE WINDOW BCL CENTER
ACTIVATE WINDOW BCL
STORE ' ' TO M_BH , M_BM , M_DQMC
STORE '0' TO M_BLX2 , SCWJPD , M_BLX11 , M_BLX22
M_LX = .F.
M_LXM = ''
M_BH = '00'
IF .NOT. USED('BZL')
USE IN 0 LIB\BZL.DAT
ENDIF
SELECT BZL
SET FILTER TO BBZL = '1'
GO TOP
DO WHILE .NOT. EOF()
BZL_REC = RECNO()
M_BH = BZL.BH
M_LX = BZL.LX
M_BM = BZL.BM
M_BLX22 = ' '
CL_NIAN = RIGHT(NIAN,2)
IF M_LX = .T.
IF .NOT. USED('BLX')
USE IN 0 lib\blx.dat
ENDIF
SELECT BLX
SET FILTER TO BH = M_BH
GO TOP
DO WHILE .NOT. EOF()
BLX_REC = RECNO()
M_BLX2 = ALLTRIM(STR(DH))
M_BLX22 = MC
IF SZ1 = 1
DO SB
ELSE
DO DSB
ENDIF
SELECT BLX
GO BLX_REC
SKIP
ENDDO
SELECT BLX
USE
ELSE
M_BLX2 = '0'
IF SZ1 = 1
DO SB
ELSE
DO DSB
ENDIF
ENDIF
IF USED('STMP')
SELECT STMP
USE
ERASE DAT\STMP.DAT
ENDIF
IF USED('T001')
SELECT STMP
USE
ERASE DAT\T001.TMP
ENDIF
IF USED('BLK')
SELECT STMP
USE
ENDIF
SELECT BZL
GO BZL_REC
SKIP
ENDDO
WAIT WINDOW '批量上报数据读入完毕,请击任意键返回!!'
DEACTIVATE WINDOW BCL
RELEASE WINDOW BCL
PROCEDURE SB
DELPD = 0
DO WHILE .T.
CLEAR
@ 9 , 6 SAY ' 请稍候 '
WJPD = 0
DELPD = 0
DO SBWJPD
IF WJPD = 1
USE
EXIT
ENDIF
DO JLSBWJ
?? CHR(7)
@ 9 , 6 SAY ' 上报完毕 '
= INKEY(2)
EXIT
ENDDO
DELETE File TMP.IDX
IF DELPD = 1
DELETE File HTMP.DBF
ENDIF
RETURN
ENDPROC
*------
PROCEDURE SBWJPD
HZWJ="dat\H&M_BH&cl_nian..dat"
IF .NOT. FILE(HZWJ)
@ 0 , 10 SAY '无汇总数据,不能上报!'
?? CHR(7)
= INKEY(2)
WJPD = 1
RETURN
ENDIF
USE dat\H&M_BH&cl_nian..dat
INDEX ON DQDH TO TMP
LOCATE FOR ;
DQDH = VAL(YUE) AND XMDH = 'dpbz' AND BLX1 = M_BLX1 AND BLX2 = M_BLX2 AND DA1 = 0
IF .NOT. FOUND()
@ 0 , 10 SAY '无全部地区汇总数据,不能上报!'
?? CHR(7)
= INKEY(2)
WJPD = 1
RETURN
ENDIF
IF SJDW = 0
@ 0 , 10 SAY '汇总文件不平,不能上报'
?? CHR(7)
= INKEY(2)
WJPD = 1
RETURN
ENDIF
ENDPROC
*------
PROCEDURE JLSBWJ
COPY TO HTMP FOR DQDH = VAL(YUE) AND BLX1 = M_BLX1 AND BLX2 = M_BLX2
USE HTMP
DO WHILE .T.
LOCATE FOR ;
DQDH = VAL(YUE) AND XMDH = 'dpbz' AND BLX1 = M_BLX1 AND BLX2 = M_BLX2 AND DA1 <> 0
IF FOUND()
DELETE
SKIP
DO WHILE .NOT. EOF()
IF XMDH <> 'dpbz'
DELETE
SKIP
ELSE
EXIT
ENDIF
ENDDO
PACK
ELSE
EXIT
ENDIF
ENDDO
if file("lib\zh&m_bh..dat")
use lib\zh&m_bh..dat in 0 alia zhwh1
use lib\zh&M_bh.a.dat in 0 alia zhwh2
SELECT BZL
LOCATE FOR BH = M_BH
LSH = LS
SELECT ZHWH1
SCAN
YXMDH = XMDH
SELECT ZHWH2
FOR MK = 1 TO LSH
DH = ALLTRIM(STR(MK))
ss&dh=0
ENDFOR
SCAN FOR XH = ZHWH1.XH
FHD = FH
SELECT HTMP
LOCATE FOR XMDH = ZHWH2.XMDH
FOR MK = 1 TO LSH
DH = ALLTRIM(STR(MK))
ss&dh=ss&dh.&fhd.da&dh
ENDFOR
IF XMDH <> YXMDH
DELETE
PACK
ENDIF
ENDSCAN
SELECT HTMP
LOCATE FOR XMDH = YXMDH
FOR MK = 1 TO LSH
DH = ALLTRIM(STR(MK))
repl da&dh with ss&dh
ENDFOR
ENDSCAN
ENDIF
DATWJ="&DD.:S&cl_nian&FF&M_BH..dat"
IF FILE(DATWJ)
SELECT 0
USE &DD.:S&cl_nian&FF&M_BH..dat ALIAS SSS
DELETE FOR DQDH <> VAL(YUE)
PACK
LOCATE FOR DQDH = VAL(YUE) AND BLX1 = M_BLX1 AND BLX2 = M_BLX2
IF FOUND()
DELETE FOR DQDH = VAL(YUE) AND BLX1 = M_BLX1 AND BLX2 = M_BLX2
PACK
ENDIF
APPEND FROM HTMP.DBF FOR DQDH = VAL(YUE) AND BLX1 = M_BLX1 AND BLX2 = M_BLX2
ELSE
SELECT HTMP
COPY TO &DD.:S&cl_nian&FF&M_BH..dat FOR DQDH=val(YUE) AND BLX1=M_BLX1 AND BLX2=M_BLX2
ENDIF
SELECT HTMP
USE
DELETE File HTMP.DBF
SELECT ZHWH1
USE
SELECT ZHWH2
USE
SELECT SSS
USE
ENDPROC
*------
PROCEDURE DSB
DO WHILE .T.
M_DEMC = ''
WJPD = 0
SCWJPD = 0
IF WJPD = 1
EXIT
ENDIF
@ 12 , 8 SAY '正在读入' + FF + '地区' + M_BH + '表' + M_BLX11 + M_BLX22
WJPD = 0
DO DSBWJPD
IF WJPD = 1
@ 12 , 8 SAY SPACE(53)
@ 12 , 8 SAY ;
'正在读入' + FF + '地区' + M_BH + '表' + M_BLX11 + M_BLX22 + ' 读入错误'
SCROLL 0 , 0 , 12 , 56 , 1
EXIT
ENDIF
WJPD = 0
SCWJPD = 0
IF !FILE("dat\B&M_BH&cl_nian&YUE..dat")
DO WJ2 WITH "B&M_BH&cl_nian&YUE","&M_BH"
ENDIF
DO DSBWJ
IF WJPD = 1
EXIT
ENDIF
IF !USED("B&M_BH&cl_nian&YUE")
USE dat\B&M_BH&cl_nian&YUE..dat IN 0
ENDIF
SELE B&M_BH&cl_nian&YUE
APPEND FROM DAT\STMP.DAT
@ 12 , COL() + 1 SAY '读取完毕'
SCROLL 1 , 0 , 12 , 56 , 1
?? CHR(7)
= INKEY(2)
SELE B&M_BH&cl_nian&YUE
USE
SELECT STMP
USE
DELETE File dat\stmp.dat
DELETE File tmp.IDX
EXIT
ENDDO
IF SCWJPD = 1
DELETE File tmp.tmp
DELETE File t001.tmp
ENDIF
RETURN
ENDPROC
*------
PROCEDURE WJ2
PARAMETER DATNAME , M_BH
SCWJPD = 1
SELECT 0
USE lib\BLK.dat
COPY TO t001.tmp STRUCTURE EXTENDED
SELECT 0
USE t001.tmp ALIAS T001
ZAP
SELECT FIELD_NAME , FIELD_TYPE , FIELD_LEN , FIELD_DEC WHERE BH = (M_BH) INTO TABLE ;
tmp.tmp FROM blk
SELECT T001
APPEND FROM tmp.tmp
CREATE dat\&datname..dat FROM t001.tmp
SELECT T001
USE
SELECT BLK
USE
SELECT TMP
USE
RETURN
ENDPROC
*------
PROCEDURE DSBWJPD
IF !FILES("&DD.:S&cl_nian&FF&M_BH..dat")
@ 0 , 8 SAY ' 上报数据不存在 '
?? CHR(7)
= INKEY(2)
WJPD = 1
RETURN
ENDIF
SELECT 0
USE &DD.:S&cl_nian&FF&M_BH..DAT alias sss
COPY TO dat\stmp.dat FOR BLX1 = M_BLX1 AND BLX2 = M_BLX2
USE
SELECT 0
USE dat\stmp.dat
SELECT STMP
IF EOF()
@ 0 , 8 SAY ' 上报数据不存在 '
?? CHR(7)
= INKEY(2)
WJPD = 1
USE
DELETE File dat\stmp.dat
USE
RETURN
ENDIF
IF DQDH#&YUE
@ 0 , 10 SAY '上报文件非本月数据 '
?? CHR(7)
= INKEY(2)
WJPD = 1
USE
DELETE File dat\stmp.dat
SELECT SSS
USE
RETURN
ENDIF
REPLACE ALL DQDH WITH &FF
ENDPROC
*------
PROCEDURE DSBWJ
USE dat\B&M_BH&cl_nian&YUE..dat IN 0
SELE B&M_BH&cl_nian&YUE
INDEX ON XMDH TO TMP
LOCATE FOR DQDH=&FF .AND. BLX1=M_BLX1 AND BLX2=M_BLX2
IF FOUND()
YY = 'N'
?? CHR(7)
@ 13 , 2 SAY '此地区数据己存在,是否覆盖(Y/N)?'
@ 13 , 33 GET YY
READ
@ 13 , 0
@ 12 , 8 SAY SPACE(53)
@ 12 , 8 SAY '正在读入' + FF + '地区' + M_BH + '表' + M_BLX11 + M_BLX22
IF YY = 'N' .OR. YY = 'n'
@ 12 , COL() + 1 SAY '没有读入'
SCROLL 0 , 0 , 12 , 56 , 1
IF USED('STMP')
SELECT STMP
USE
ENDIF
SELE B&M_BH&cl_nian&YUE
USE
DELETE File dat\stmp.dat
DELETE File tmp.IDX
WJPD = 1
RETURN
ELSE
DELE FOR DQDH=&FF .AND. BLX1=M_BLX1 AND BLX2=M_BLX2
PACK
ENDIF
ENDIF
ENDPROC
*------*
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -