作者在 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命令
欢迎大家测试