大家好,我手头有个程序,每次运行都出错。到现在还没法解决,我知道这里高手多。希望大家给我看下。本来这段代码是在另一个form下的一个command的click事件。我把他放到了 新的form里的一个command下的 click事件,就出错了 说是 数据类型 出错==。但是每次清空jfmxb 之后再点击 就能运行 但是要是jfmxb里有数据 再点击 就出错了。。我弄了好久都不行。。。郁闷死了。。。。。
代码如下:
note:变量表
&&dwbh:单位编号;ssnd:所属年度;dwmc:单位名称;jlgs:记录个数
priv xx
bh=int(val(thisform.container1.text1.value))
dwmc=alltrim(thisform.container1.combo1.value)
ssnd=alltrim(thisform.container2.combo1.value)
sele jfmxb
xx='正在检索'+dwmc+ssnd+'年度的历史缴费明细表,请等候......'
wait windows xx noclea nowait at srow()/2,(scol()-len(xx))/2
count all for 编号=dwbh.and.所属年度=ssnd to jlgs
if jlgs>0
mes=messagebox('系统检索到'+alltrim(str(jlgs))+'条缴费记录,你还要生成吗?'+chr(13)+'点击确定直接预览,点击取消重新'+;
'生成历史缴费记录后再打印。',33,'是否直接打印')
if mes=1
sele jfmxbgd
zap
append from jfmxb for 所属年度=ssnd .and. 编号=dwbh
wait clea
retu
endif
endif
xx='正在生成'+dwmc+ssnd+'年度的历史缴费明细表,请等候......'
wait windows xx noclea nowait at srow()/2,(scol()-len(xx))/2
sele jfmxbgd
zap
sele lsjfgd
zap
append from lsjf for str(编号)=str(dwbh)
dele all for empty(姓名)
pack
go top
ryxm=alltrim(姓名)
rybh=alltrim(人员编号)
do while .not. eof()
xh=1
do while xh<=17
if xh=1
nd=year(参保时间) &&nd_年度
yf=month(参保时间) &&yf_月份
else
sd='lsjfgd.时点'+alltrim(str(xh-1)) &&sd:时点
nd=year(&sd)
yf=month(&sd)
if yf=12
nd=nd+1
yf=1
else
yf=yf+1
endif
endif
hsd='lsjfgd.时点'+alltrim(str(xh)) &&hsd:后时点,如果后一时点为空,则退出循环.
if empty(&hsd)
exit
endif
do while ctod(alltrim(str(nd))+'.'+alltrim(str(yf))+'.'+'01')<&hsd
sele jfmxbgd
loca all for alltrim(所属年度)+alltrim(姓名)+alltrim(人员编号)=alltrim(str(nd))+alltrim(lsjfgd.姓名)+;
alltrim(lsjfgd.人员编号)
if .not. found()
append blank
go bott
repl 所属年度 with alltrim(str(nd))
repl 编号 with lsjfgd.编号
repl 单位名称 with alltrim(lsjfgd.单位名称)
repl 人员编号 with alltrim(lsjfgd.人员编号)
repl 姓名 with alltrim(lsjfgd.姓名)
repl 性别 with lsjfgd.性别
repl 参保时间 with lsjfgd.参保时间
repl 截止时间 with lsjfgd.截止时间
repl 出生年月 with lsjfgd.出生年月
repl 人员性质 with lsjfgd.人员性质
repl 文化程度 with lsjfgd.文化程度
repl 工作时间 with lsjfgd.工作时间
endif
jishu='基数'+alltrim(str(yf))
gejiao='个缴'+alltrim(str(yf))
fdjs='lsjfgd.基数'+alltrim(str(xh))
fdgj='lsjfgd.个缴'+alltrim(str(xh))
repl &jishu with &fdjs
repl &gejiao with &fdgj
if yf<12
yf=yf+1
else
yf=1
nd=nd+1
repl 个缴总计 with (个缴1+个缴2+个缴3+个缴4+个缴5+个缴6+个缴7+个缴8+个缴9+个缴10+个缴11+个缴12)
endif
enddo
xh=xh+1
enddo
sele lsjfgd
xx='正在生成'+dwmc+ssnd+'年度的历史缴费明细表,已完成'+alltrim(str(recno()/reccount()*100))+'%'+'请等候......'
wait windows xx noclea nowait at srow()/2,(scol()-len(xx))/2
skip
enddo
xx='正在保存当前的数据信息...'
wait windows xx noclea nowait at srow()/2,(scol()-len(xx))/2
sele jfmxb
loca all for 编号=dwbh
if found()
dele all for 编号=dwbh
pack
endif
APPEND FROM JFMXBGD
wait clea
SELE JFMXBGD
dele all for alltrim(所属年度)<>ssnd
pack
wait clea
=messagebox('当前单位的缴费明细表已经生成。',64,'成功生成缴费明细表')
retu
高手帮忙啊!!!!!!!!!!!!!!