这样的记录如何编写程序汇总

作者在 2015-03-15 17:57:00 发布以下内容

网址:http://bbs.bccn.net/thread-292155-1-111.html


字段名意思

grbh(个人编号)
sfz(身份证号)    
xm(姓名)    
dwbh(单位编号)    
dwmc(单位名称)    
jfsq(缴费属期)    
jflx(缴费类型)    
grjfjs(个人缴费基数)    
grjfbj(个人缴费本金)    
grjflx(个人缴费利息)    
grjfbs(个人缴费标志)    
grdzrq(个人到帐日期)    
dwjfbj(单位缴费本金)    
dwjflx (单位缴费利息)   
dwjfbs (单位缴费标志)   
dwdzrq (单位到帐日期)   
hzbj (单位划转本金)   
hzlx (单位划转利息)   
hzbs(单位划转标志)    
hzrq (单位划转日期)   
jfrylb(缴费人员类别)    
dyrq(打印日期)


jfsq(缴费属期)对应 缴费年度,
grjfjs(个人缴费基数)对应 月缴费基数,已缴月数 是按grjfbs(个人缴费标志)统计出来的 已缴记录(不含欠缴), 
grdzrq(个人到帐日期)对应缴费到帐时间 (这个不太重要)


解决方法

Clear All 
T1=Seconds()
Close Databases 
Set Talk Off 
Set Collate To "MACHINE"

Use Jf In 0
Select Jf
Sort To Px On Grbh,Jfsq Fields Grbh,Xm,Jfsq,Grjfjs For Alltrim(Grjfbs)=="已缴"
Use In Jf

Create Cursor Tj (Grbh C(10),Xm C(10),Nf C(4),Grjfjs N(10,2),Jfyf C(40),Hbyf C(20),Yjys N(2))
* Grbh:个人编号,Xm:姓名,Nf:年份,Grjfjs:缴费基数,Jfyf:缴费月份,Hbyf:合并月份,Yjys:已缴月数
Index On Grbh+Nf+Str(Grjfjs,10,2) Tag Bh_Nf_Js

Use Px In 0
Select Px
If Type("Px.Nf")=="U" && Nf:年份
    Alter Table Px Add Nf C(4)
EndIf 
Replace All Nf With Left(Jfsq,4)
Set Relation To Grbh+Nf+Str(Grjfjs,10,2) Into Tj
* 
Scan
    If Found("Tj")
        Replace Jfyf With Alltrim(Jfyf)+","+Right(Px.jfsq,2) In Tj
    Else
        Insert Into Tj (Grbh,Xm,Nf,Grjfjs,Jfyf) Values (Px.Grbh,Px.Xm,Px.Nf,Px.Grjfjs,Right(Px.jfsq,2))
    EndIf
EndScan 
Set Relation To 

* 合并月份
Select Tj
Scan
    nRow=Alines(Astr,Chrtran(Jfyf,",",Chr(13)+Chr(10)))
    lcStr=""
    lnNum1=-1
    For lnI=1 to nRow
        lnNum=Int(Val(Astr[lnI]))-lnI
        If lnNum1=lnNum
           lcStr=Iif(Not "-"$Right(lcStr,Len(cStr)+1),lcStr,Left(lcStr,Len(lcStr)-Len(cStr)-1))+"-"+Astr[lnI]
        Else
           lcStr=lcStr+Iif(Empty(lcStr),"",",")+Astr[lnI]
        EndIf
        cStr=Astr[lnI]
        lnNum1=lnNum
    EndFor
    Replace Hbyf With lcStr,Yjys With nRow
EndScan
MessageBox("共运行 "+Transform(Seconds()-T1)+" 秒")
Browse 
Close Databases 
Clear All 
Erase Px.Dbf
运行速度还是比较理想的,速度快于SQL命令

欢迎大家测试

感兴趣的问题 | 阅读 2717 次
文章评论,共0条
游客请输入验证码
浏览405604次