170 likes | 295 Views
授课 -16 图书系统表单制作. 本课通过讲授几个图书系统表单制作的实例,提高同学们解决实际问题的能力。. 16.1 办理借书表单 16.2 办理还书表单 16.3 查看借书情况表单 16.4 成批录入图书表单. 16.1 办理借书表单. 【 学习目标 】 办理借书表单的制作 【 关键方法 】 SQL-SELECT 命令的应用. 【 任务 】 设计制作“办理借书”表单 【 解决任务 】 1. 设计思路 在“项目 TS” 中创建表单(用表单设计器),以 TSJS 为名保存。
E N D
授课-16 图书系统表单制作 本课通过讲授几个图书系统表单制作的实例,提高同学们解决实际问题的能力。 16.1 办理借书表单 16.2 办理还书表单 16.3 查看借书情况表单 16.4 成批录入图书表单
16.1 办理借书表单 • 【学习目标】 • 办理借书表单的制作 • 【关键方法】 • SQL-SELECT命令的应用
【任务】 设计制作“办理借书”表单 • 【解决任务】 • 1. 设计思路 • 在“项目TS”中创建表单(用表单设计器),以TSJS为名保存。 • 设置表单TSJS相关的属性,使其成为在顶层表单中,运行时居中。 • 按图6A所示,在表单TSJS中添加两个“表格”控件,并将左表中放入DZB的姓名、证号两字段,右表中放入TSB的编码、书名、作者、数量四字段。设置表格的只读属性。 • 按图6A所示,在表单中用数据 • 环境施放“证号”、“编码”两个 • 字段。添加施放“确认借书”、 • “退出”两个按钮。最后,施放 • 一些标签,用以表明表单的标 • 题和提示办理借书的方法。 • 运行中的表单, 见图6A。 图6A
2. 属性设置 • (1)表单 Form1的属性 • AutoCenter 为 .T. • ShowWindow 为 1—在顶层表单中 • (2)表格Grid1、 Grid2的属性 • ReadOnly 为 .T. • 其它一些属性按图6A自行设置。 • 3. 事件代码 • (1)表格Grid1、 Grid2的AfterRowColChange • 添加:THISFORM.REFRESH
(2) “确认借书”按钮的Click • ZHH=ALLT(THISFORM.TXT证号.VALUE) • BMM=ALLT(THISFORM.TXT编码.VALUE) • SELE DIST 数量 FROM TSK!TSB WHER 编码=BMM INTO ARRA TSL • SELE COUNT(*) FROM TSK!JYB WHER 证号=ZHH AND 还书日期={ } GROUP BY 证号 INTO ARRA JSL • JSR=DATE() • SELE MIN(借书日期) FROM TSK!JYB WHER 证号=ZHH AND 还书日期={ } GROUP BY 证号 INTO ARRA JSR • DO CASE • CASE TSL(1) =0 • MESSAGEBOX(' 对不起,因为该书已借完,'+CHR(13)+CHR(13)+'无法为您办理,请原谅!',64,'提示') • CASE JSL(1) >=5 • MESSAGEBOX(' 对不起,因为您借书已有 5本,'+CHR(13)+CHR(13)+'按规定无法为您办理,请原谅!',64,'提示')
CASE DATE()-JSR(1) >91 • MESSAGEBOX(' 对不起,因为您借的书有的超出91天未还,'+CHR(13)+CHR(13)+'按规定无法为您办理,请原谅!',64,'提示') • OTHE • X=MESSAGEBOX('确认读者[&ZHH.]所借图书的编码是:&BMM. 吗?',1+32,'提示') • IF X=1 • INSE INTO JYB(证号,编码,借书日期) VALUES (ZHH,BMM,DATE()) • UPDA TSB SET 数量 = 数量-1 WHER 编码=BMM • MESSAGEBOX('已办理成功!',64,'提示') • ELSE • MESSAGEBOX('此项借书操作已取消!',64,'提示') • ENDI • ENDC • thisform.refresh
16.2 办理还书表单 • 【学习目标】 • 办理还书表单的制作 • 【关键方法】 • 视图的制作 • SQL-UPDATE命令的应用
【任务】 设计制作“办理还书”表单 • 【解决任务】 • 1. 设计思路 • 在“项目TS”中创建表单(用表单设计器),以TSHS为名保存。 • 设置表单TSJS相关的属性,使其成为在顶层表单中,运行时居中。 • 按图6B所示,在表单TSHS中添加一个“表格”控件,并将表中放入视图HSV的证号、姓名、编码、书名、借书日期、还书日期等字段。设置表格的只读属性。 • 按图6B所示,在表单中用数据 • 环境施放“证号”、“编码”等四 • 字段。添加施放“确认还书”、 • “退出”两个按钮。最后,施放 • 一些标签,用以表明表单的标 • 题和提示办理还书的方法。 • 运行中的表单, 见图6B。 图6B
2. 属性设置 • (1)表单 Form1的属性 • AutoCenter 为 .T. • ShowWindow 为 1—在顶层表单中 • (2)表格Grid1的属性 • ReadOnly 为 .T. • 其它一些属性按图6B自行设置。 • 3. 事件代码 • (1)表格Grid1的AfterRowColChange • 添加:THISFORM.REFRESH
(2) “确认还书”按钮的Click • IF THISFORM.TXT还书日期.VALUE={ } • ZHH=ALLT(THISFORM.TXT证号.VALUE) • BMM=ALLT(THISFORM.TXT编码.VALUE) • X=MESSAGEBOX('确认读者[&ZHH.]还的图书编码是:&BMM. 吗?',1+32,'提示') • IF X=1 • UPDA TSK!HSV SET 还书日期=DATE() WHER 编码=BMM AND 证号=ZHH • UPDA TSK!TSB SET 数量 = 数量+1 WHER 编码=BMM • MESSAGEBOX('已办理成功!',64,'提示') • ELSE • MESSAGEBOX('已取消!',64,'提示') • ENDI • ELSE • MESSAGEBOX('该书已归还!',64,'提示') • ENDI • thisform.refresh
16.3 查看借书情况表单 • 【学习目标】 • 查看借书情况表单的制作 • 【关键方法】 • 一对多表单向导的使用
【任务】 设计制作“查看借书情况”表单 • 【解决任务】 • 设计制作 • 在“项目TS”中创建表单(用一对多表单向导),完成后,以TSKJ为名保存。 • 按图6C所示,在使用表单向导制作过程中,父表为DZB,并选用表中的证号、姓名、部门、电话等字段;子表为JSV视图,并选用表中的编码、书名、作者、出版社、单价、借书日期、 • 还书日期、书号等字段。 • 按图6C所示,进行表单的 • 重新布局和美化工作。 • 运行中的表单, 见图6C。 图6C
16.4 成批录入图书表单 • 【学习目标】 • 成批录入图书表单的制作 • 【关键方法】 • VFP应用程序的编写
【任务】 设计制作“成批录入图书”表单 • 【解决任务】 • 可将电子表格的图书数据成批录入到数据库,提高工作效率。 • 1. 设计思路 • 在“项目TS”中创建表单(用表单设计器),以TSPL为名保存。 • 设置表单TSPL相关的属性,使其成为在顶层表单中,运行时居中。 • 按图6D所示,在表单TSPL中添加一个“列表框”控件。 • 按图6D所示,在表单中施放 • “转换和导入”、 “退出”两个 • 按钮。施放 一些标签,用以 • 表明表单的标 题和提示操作 • 方法。 • 运行中的表单, 见图6D。 图6D
2. 属性设置 • 表单 Form1的属性 • AutoCenter 为 .T. • ShowWindow 为 1—在顶层表单中 • 其它一些属性按图6D自行设置。 • 3. 事件代码 • (1)列表框LIST1 的INIT事件代码: • LIST1 INIT: • PUBL KB • public arl[ 1] • =ADIR(arl,"tsb*.XLS") • =ASORT(arl) • thisform.list1.Rowsourcetype=5 • thisform.list1.Rowsource="arl" • (2)列表框LIST1 的CLICK事件代码: • KB=THIS.VALUE
(3) “转换和导入”按钮的Click事件代码 • KBB=ALLT(KB) • KBX=KBB+' TYPE XL5' • SELE E • USE TSB • COPY STRU TO YTSB • USE • SELE F • USE YTSB • APPE FROM &KBX • DELE RECO 1 • PACK • BROW NOAP NODE NOED • USE • X=MESSAGEBOX('你已将表: &KBB. 电子表的数据成功转换!'+CHR(13)+CHR(13)+; • '你确认将表: &KBB. 数据添加到本系统的表[TSB]中吗?',1+32,'提示') • IF X=1 • SELE E • USE TSB • SELE F • USE YTSB • GO TOP
DO WHIL !EOF() • SCAT TO BA • SELE E • LOCA FOR 书号=BA(2) • IF FOUND() • REPL 数量 WITH 数量+F.数量 • ELSE • INSE INTO TSK!TSB FROM ARRA BA • ENDI • SELE F • SKIP • ENDD • DELE ALL • PACK • USE • SELE E • USE • X1=MESSAGEBOX('你已将表: &KBB. 数据成功添加到本系统的表[TSB]中了!'+CHR(13)+CHR(13)+; • '想浏览一下吗?',1+32,'提示') • IF X1=1 • USE TSB • BROW NOAP NODE NOED • USE • ENDI • ELSE • MESSAGEBOX('取消本次添加操作!',64,'提示') • ENDI - 结束 -