📄 csyrw.prg
字号:
*******************************************
* 程序功能:分类汇总抄收员任务(CSYRW.PRG) *
* 编 制 人:唐国春 *
* 完成日期:2000年08月 *
*******************************************
SET TALK OFF
SET SAFE OFF
CLOSE DATABASE
PUBLIC QH,S,SS,SSS,dytitle,RQ1,RQ2
SELE 0
USE TIME
TIME1=TIME.RQ
RQ1=SUBSTR(TIME1,1,4)
RQ2=SUBSTR(TIME1,5,2)
USE IN TIME
SS='RWSJ\RW'+SUBSTR(TIME1,3,4)
SSS=SS+'.DBF'
SS_BAK='RWSJ\RWB'+SUBSTR(TIME1,3,4)
SSS_BAK=SS_BAK+'.DBF'
QHK_BAK='RWSJ\SHK'+SUBSTR(TIME1,3,4)+'.DBF'
QHK_CDX='RWSJ\SHK'+SUBSTR(TIME1,3,4)+'.CDX'
IF .NOT. FILE ("&SSS")
=MESSAGEBOX('还没有提取生成'+RQ1+'年'+RQ2+'月的电费数据资料!'+CHR(13)+CHR(13)+'请先提取生成电费数据资料!',0+16,'错误')
CLOSE DATABASE
SET CURSOR ON
RETURN
ENDIF
************************生成所号库******************
if used("sh")
use in sh
endif
if file("sh.cdx")
dele file "sh.cdx"
endif
if file("sh.dbf")
dele file "sh.dbf"
endif
creat table sh (a1 c(2),gds c(20)) &&建立表sh.dbf
sele sh
index on a1 tag a1 addi
index on gds tag gds addi
********************************************************
SELE 0
USE GDS
SELE 0
USE CSY
SELE 0
USE RWB
ZAP
SELE 0
USE KSK
GO TOP
**************************从 KSK 库提取供电所名称***************************
DO WHILE .NOT. EOF()
SELE KSK
S1=A1
S2=ALLT(A2)
SELE SH
LOCA FOR ALLT(GDS)=S2
IF .NOT. FOUND()
INSERT INTO SH (A1,GDS) VALUE (S1,S2)
ENDIF
SELE KSK
SKIP
ENDDO
**************************从 CSY 库提取供电所名称***************************
SELE CSY
GO TOP
DO WHILE .NOT. EOF()
SELE CSY
S1=A1
S2=ALLT(A2)
SELE SH
LOCA FOR ALLT(GDS)=S2
IF .NOT. FOUND()
INSERT INTO SH (A1,GDS) VALUE (S1,S2)
ENDIF
SELE CSY
SKIP
ENDDO
*****************************************************************************
SELE 1
USE &SSS
COPY TO tmp.DBF FOR .NOT. EMPTY(GDS)
SELE 0
USE tmp
SELE 0
USE YSDH
*******************************************************************
GO TOP
DO WHILE .NOT. EOF()
SELE YSDH
IF BS2=TIME1
B1=A2
B2=A3
B3=A4
B4=A5
B5=A6
B6=A7
B7=A8
B8=A9
B9=B7+B8
B10=BS1
MM=ALLTRIM(XM)
SELE KSK
LOCA FOR A1=B10
B11=A2
INSERT INTO tmp (DD,JZDF,DLJJ,SXJJ,SZFJ,JQJJ,JBDF,CJFJ,JEHJ,GDS,CSY) VALUE (B1,B2,B3,B4,B5,B6,B7,B8,B9,B11,MM)
ENDIF
SELE YSDH
SKIP
ENDDO
***********供电所手工报表、个人手工报表(老格式)数据处理************
SELE tmp
REPL ALL JEHJ WITH JBDF+CJFJ
SELE 0
USE YSDH_OLD
COPY TO TMP1 FOR BS2=TIME1
SELE 0
USE TMP1
*!* APPE FROM YSDH_GR FOR BS2=TIME
*****************************************************************
SELE 0
USE RW_TMP
ZAP
SELE tmp
GO TOP
DO WHILE .NOT. EOF()
SELE tmp
Q1=QH
Q2=ALLTRIM(CSY)
Q3=DD
Q4=JBDF
Q5=CJFJ
Q6=JEHJ
Q7=GDS
INSERT INTO RW_TMP (QH,XM,DD,JBDF,CJFJ,JEHJ,GDS) VALUE (Q1,Q2,Q3,Q4,Q5,Q6,Q7)
SELE tmp
SKIP
ENDDO
SELE TMP1
GO TOP
DO WHILE .NOT. EOF()
SELE TMP1
Q1=SPACE(3)
Q2=ALLTRIM(XM)
Q3=A2
Q4=A10
Q5=A11
Q6=A12
IF EMPTY(BS1)
Q7=ALLTRIM(XM)+'(个人)'
ELSE
Q7=BS1
SELE KSK
LOCA FOR A1=Q7
Q7=ALLT(A2)
ENDIF
INSERT INTO RW_TMP (QH,XM,DD,JBDF,CJFJ,JEHJ,GDS) VALUE (Q1,Q2,Q3,Q4,Q5,Q6,Q7)
SELE TMP1
SKIP
ENDDO
SELE RW_TMP
***************************生成个人库******************
if used("gr")
use in gr
endif
if file("gr.cdx")
dele file "gr.cdx"
endif
if file("gr.dbf")
dele file "gr.dbf"
endif
creat table gr (xm c(8),gds c(20)) &&建立表sh.dbf
sele gr
index on xm tag xm addi
index on gds tag gds addi
SELE RW_TMP
GO TOP
DO WHILE .NOT. EOF()
SELE RW_TMP
S=ALLT(XM)
S1=ALLT(GDS)
SELE GR
LOCA FOR ALLT(XM)=S
IF .NOT. FOUND()
INSERT INTO GR (XM,GDS) VALUE (S,S1)
ENDIF
SELE RW_TMP
SKIP
ENDDO
SELE GR
********************!*删除总区数据*!***********************
*!* SELE 0
*!* USE shk
*!* GO TOP
*!* DO WHILE .NOT. EOF()
*!* IF zqbz='*'
*!* SELE RW_TMP
*!* DELE ALL FOR SUBS(QH,1,4)==shk.QH
*!* PACK
*!* ENDIF
*!* SELE shk
*!* SKIP
*!* ENDDO
****************************数据分类汇总********************
SELE GR
set order to tag xm
GO TOP
DO WHILE .NOT. EOF()
SELE GR
S=ALLTRIM(XM)
S1=ALLT(GDS)
SELE RW_TMP
LOCA FOR ALLT(XM)=S
IF FOUND()
SUM DD,JBDF,CJFJ,JEHJ FOR ALLT(XM)==S TO Q1,Q2,Q3,Q4
INSERT INTO RWB (XM,DD,JBDF,CJFJ,JEHJ,GDS) VALUE (S,Q1,Q2,Q3,Q4,S1)
ENDIF
SELE GR
SKIP
ENDDO
SELE RW_TMP
SUM DD,JBDF,CJFJ,JEHJ FOR EMPTY(XM) TO Q1,Q2,Q3,Q4
IF Q1<>0 OR Q2<>0 OR Q3<>0 OR Q4>0
INSERT INTO RWB (XM,DD,JBDF,CJFJ,JEHJ) VALUE ('(其他)',Q1,Q2,Q3,Q4)
ENDIF
SELE RWB
DELE ALL FOR EMPTY(XM)
PACK
COPY TO &SSS_BAK
*use in shk
COPY FILE SHK.DBF TO &QHK_BAK
COPY FILE SHK.CDX TO &QHK_CDX
S='rwb.dbf'
SET SAFE ON
DO FORM dy_rwb
*************************** 由区号对应生成姓名****************************
PROCEDURE REPL
SELE 0
USE shk
SELE 1
USE &SS
GO TOP
DO WHILE NOT EOF()
S=QH
SELE shk
LOCA FOR A1=S
IF FOUND()
SELE 1
REPL XM WITH shk->A3
ENDIF
SKIP
ENDDO
RETURN
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -