VFP工资管理系统
第四个页面:浏览式修改记录,在列表框中选择一个记录,在屏幕上显示选定记录的内容,可以修改记录。
图5-7-4浏览式修改
text1_Interactivechange事件代码: set exact off
GETzgh1=ALLTRIM(thisform.pageframe1.page1.TEXT1.VALUE) GETxm1=ALLTRIM(thisform.pageframe1.page1.TEXT2.VALUE) GETrq1=thisform.pageframe1.page1.TEXT3.VALUE s=''
if len(getzgh1)>0 s=s+'职工号=GETZGH1' endif
if len(getxm1)>0
s=s+'.and.'+'姓名=GETXM1' endif
if GETRQ1<>{//}
s=s+'.and.'+'DTOC(日期)=DTOC(GETRQ1)' endif
if left(s,5)='.and.'.OR.LEFT(S,5)='.AND.'
- 20 -
VFP工资管理系统
s=subst(s,6) endif
IF LEN(ALLTRIM(S))=0 SET FILTER TO ELSE
set filter to &s ENDIF GO TOP
THISFORM.PAGEFRAME1.PAGE2.CAPTION=姓名+\的详细内容\THISFORM.PAGEFRAME1.PAGE1.REFRESH THISFORM.PAGEFRAME1.PAGE2.REFRESH
Text2, Text3,Text4,的Interactivechange事件代码也类似,在此省略。 查找记录command1_Click事件代码:
if not empty(thisform.pageframe1.page1.text4.value) n=val(alltrim(thisform.pageframe1.page1.text4.value)) go n
thisform.pageframe1.page2.setfocus
thisform.pageframe1.page2.caption=姓名+\的记录内容\ thisform.refresh else
set exact off
GETzgh1=ALLTRIM(thisform.pageframe1.page1.TEXT1.VALUE) GETxm1=ALLTRIM(thisform.pageframe1.page1.TEXT2.VALUE) GETrq1=thisform.pageframe1.page1.TEXT3.VALUE s=''
if len(getzgh1)>0 s=s+'职工号=GETZGH1' endif
if len(getxm1)>0
s=s+'.and.'+'姓名=GETXM1'
- 21 -
VFP工资管理系统
endif
if GETRQ1<>{//}
s=s+'.and.'+'DTOC(日期)=DTOC(GETRQ1)' endif
if left(s,5)='.and.'.OR.LEFT(S,5)='.AND.' s=subst(s,6) endif
IF LEN(ALLTRIM(S))=0 SET FILTER TO ELSE
set filter to &s ENDIF GO TOP endif
THISFORM.PAGEFRAME1.PAGE2.CAPTION=姓名+\的详细内容\THISFORM.PAGEFRAME1.PAGE1.REFRESH THISFORM.PAGEFRAME1.PAGE2.REFRESH 删除记录command2_Click事件代码:
INOTICE=MESSAGEBOX(\确定删除指定的记录吗?\重要提示\IF INOTICE=1
DELETE RECORD RECNO()
ANOTICE=MESSAGEBOX(\确定物理删除指定的记录吗?\一经删除,不能恢复!!!\重要提示\ IF ANOTICE=1 use use gzb PACK use
thisform.release ENDIF
- 22 -
VFP工资管理系统
THISFORM.REFRESH ENDIF
恢复记录command3_Click事件代码:
INOTICE=MESSAGEBOX(\恢复所有逻辑删除的记录吗?\提示信息\IF INOTICE=1 RECALL ALL ENDIF
自动计算Click事件代码: with this.parent
.TXT应发工资.VALUE=.TXT职务工资.value+.TXT综合补贴.value+.TXT出勤补.value+.TXT交通补.value+.TXT外租房补.value+.TXT补发工资.value .TXT合计扣款.VALUE=.TXT养老保险.value+.TXT公积金.value .TXT实发工资.VALUE=.TXT应发工资.value-.TXT合计扣款.value .TXT实发现金.VALUE=.TXT实发工资.value-.TXT所得税.value if this.parent.TXT实发工资.value>800 *如果工资高于800,则有所得税,费为5%
.TXT所得税.VALUE=(this.parent.TXT实发工资.value-800)*0.05 endif endwith
确认修改Click事件代码
A=MESSAGEBOX(\确定更改指定的项目吗?\提示信息\IF A=1 &&选择确定按钮时执行
replace all 职务工资 WITH 职务工资+THIS.PARENT.TEXT4.VALUE replace all 应发工资 WITH 应发工资+THIS.PARENT.TEXT4.VALUE replace all 实发工资 WITH 实发工资+THIS.PARENT.TEXT4.VALUE replace all 公积金 WITH 公积金+THIS.PARENT.TEXT5.VALUE replace all 应发工资 WITH 应发工资+THIS.PARENT.TEXT5.VALUE replace all 实发工资 WITH 实发工资+THIS.PARENT.TEXT5.VALUE replace all 养老保险 WITH 养老保险+THIS.PARENT.TEXT6.VALUE replace all 应发工资 WITH 应发工资+THIS.PARENT.TEXT6.VALUE
- 23 -
VFP工资管理系统
replace all 实发工资 WITH 实发工资+THIS.PARENT.TEXT6.VALUE
replace all 所得税 with iif(实发工资-800>0,(实发工资-800)*0.05 ,0) replace all 实发现金 with 实发工资- 所得税 THIS.PARENT.TEXT4.VALUE=0 THIS.PARENT.TEXT5.VALUE=0 THIS.PARENT.TEXT6.VALUE=0 THISFORM.REFRESH ENDIF
5.8 工资统计表单设计
本表单用来统计各项工资的总和以及总的人数,运行结果,如图5-8所示。
图5-8数据统计模块
开始计算command1_Click事件代码: set talk off set filter to COUNT TO XYZ
SUM TO A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13 THISFORM.TXT职务工资.VALUE=A1 THISFORM.TXT综合补贴.VALUE=A2 THISFORM.TXT出勤补.VALUE=A3 THISFORM.TXT交通补.VALUE=A4
- 24 -