📄 文章.txt
字号:
表单的ShowWindow属性设置为l—InTop-LevelForm。表单的数据源book.dbf、per—
son.dbf和图书分类表.dbf的属性Exclusive=.T.。
. 表单llcx--Init过程代码
public llfs,khllfs,tscxfs,c,khxmcx
llfs=””
khllfs=””
tscxfs=””
c=0 ·
khxmcx=””
thisform.pageframe1.page1.gridl.recordsource=""
thisform.pageframe1.page2.gridl.recordsource=""
thisform.pageframe1.page3.gridl.recordsource=""。
thisform,pageframe1.page4.gridl.recofdsourcee=""
1.页面1所包含的控件、控件属性及相应代码
页面1(图书信息浏览)包含1个标签、1个选项组控件、1个表格控件和2个命令按钮
控件。其中表格控件包含10列,即属性ColumnCount=10。在设置表格控件属性时,将每
列的标题Caption依次设为:“图书流水号”、“ISBN”、“名称”、“分类”、“出版社”、“单价”、
“复本数量”、“押金”、“日租金”、“日罚金”。表单运行时页面1效果如图4.15所示。
. 控件Commandl(浏览)——单击事件(C1ick)过程代码
d。case ss确定排序方式。
case thisform.pageframel.pagel.optiongroupl.optionl.value‘1
llfs=”book.图书流水号”
case thisform.pageframel.pagel.optlongroupl.option2.value:1
llfs+”book.图书名称,book.图书流水号”
case thisform.pageframel.pagel.optiongroupl.option3.value’1
llfs=”book.图书分类,book.图书流水号”
c9se thisform.pageframel.pagel.optiongroupl.option4.value:1
llfs=”book.出版社,book.图书流水号”
endcase
SELECT *;
PRGHtszj! book;
ORDER BY &llfs;
INTO CURSOR tsll
thisform.pageframel.pagel.gridl.recordSource=”tell',
thisform.refresh
· 控件Command2(返回)——单击事件(Click)过程代码
thisform.release
2.页面2所包含的控件、控件属性及相应代码
页面2<客户信息浏览)包含1个标签、1个选项组控件、1个表格控件和2个命令按钮
控件。其中表格控件包含7列,即属性C。1umnCount=7。设置表格控件属性时,将每列的
标题CapUon依次设为:“客户编号”、“姓名”、“身份证号”、“住宅电话”、“手机”、“住址”、“租
金累计”。表单运行时页面2效果如图4.16所示。
圈4.16 1lcy.scx运行时页面2效果
· 控件Commandl(浏览)——单击事件(Click)过程代码
docase ss确定排序方式
case thisform.pageframel.page2.optiongroupl.optionl.value:1
khllfs=”person.客户编号”
case thisform.pageframel.page2.optiongroupl.option2.value=1
khllfs=”person.客户姓名,person.客户编号”
case thisform.pagerramel.page2.optiongroupl.option3.value=1
khllfs=”person.租金累计desc',
endcase
SELECT *;
FROM tszi!person;
ORDERⅢ&khllfs;
INT0 CURSORkhll
thisform.pageframel.page2.gridl.recordSource=”khll',
thisform.refresh
· 控件Command2(返回)--单击事件(Click)过程代码
thisform.release
3.页面3所包含的控件、控件属性及相应代码
页面3(图书信息查询)包含3个标签、1个选项组控件、1个文本框控件、1个组合框控
件、1个表格控件和2个命令按钮控件。
文本框Textl和组合框Combol的Enabled属性设为.F.。在本页面中,如果选择“按
图书名称查询”,那么文本框Textl可用,允许输入图书名称;如果选择“按图书分类查询”,
那么组合框Comb01可用,允许选择图书所属类别。
表单中表格控件包含10列,即属性ColumnCount=10。将每列的标题Caption依次设
为;“图书流水号”、“ISBN”、“名称”、“分类”、“出版社”、“单价”、“复本数量”、“押金”、“日租
金”、“日罚金”。表单运行时页面3效果如图4.17所示。
圈4.17 llex.scx行时页面3效果
. 选项组控件Optiongroupl--事件InteractiveChange过程代码
docase &&确定排序方式
case thisform.pagefr~e1.page3.optiongroupl.optionl.value’1
tscxfs=”book.图书名称”
case thisform.pageframel.page3.optiongroupl.option2.value’1
tscxfs=”book.图书分类”
endcase
iftscxfs=”book.图书名称”
thisform.pageframel.page3.textl.enabled:.t.
thisform,pageframel.page3.text/.setfocus
thisform,pageframel.page3.comb01.enabled:.f.
c=1
endif
if tscxfs=”book.图书分类”
thisform.pageframe1.page3.comb01.enabled=t.
thisform.pageframe1.page3.comb01.setfocus
thisform.pageframe1.page3.textl.enabled:.f.
c=2
endf
· 控件Commandl(查询)——单击事件(Click)过程代码
if c=1
SELECT *;
FROM tszj! book;
WHEREBook.图书名称=allt(thisform.pageframel.page3.textl.value);
ORDER BY Book.图书流水号;
INTO CURSOR tscx
endif
if c=2
SELECT‘;
FROM tszj! book;
WHERE Book.图书分类=allt(thisform.pageframel.page3.comb01.value);
ORDER9YBook.图书流水号;
INTOCURSOR tscx
endif
if reccount()=0
messagebox(”没有查询到相关信息”,0,”提示!”)
endif
thisform,pageframel.Page3.gridl.recordSource=”tscx”
thisform.refresh
4.页面4所包含的控件、控件属性及相应代码
页面4(客户信息查询)包含1个标签、1个文本框控件、1个表格控件和2个命令按钮控件。
其中表格控件包含7列,即属性C。lumnCollrlt=7。将每列的标题Captlon依次设为:
“客户编号”、“姓名”、“身份证号”、“住宅电话”、“手机”、“住址”、“租金累计”。在页面文本框
中,如果输入客户姓名,单击“查询”按钮,就可以查询该用户的相关信息。表单运行时页面
4效果如图4.18所示。
图4.18 1lex.sex运行时页面4效果
· 控件Commandl(查询)--单击事件(Click)过程代码
kbxmcx=alit(thisform.pageframel.page4.textl.value)
SELECT *;
FROM tsxj! persons
WHEREPerson.客户姓名:khxmcx;
ORDERBYPerson.客户编号;
INTO CURSOR khcx
if reccount()=0
messagebox(”没有查询到相关信息”,o,”提示!”)
endif
thisform.pageframel.page4.gridl.recordSource’”khcx”
thisform.refresh
4.3.7 租借管理
租借管理表单zjgl.SCX位于默认路径的forms文件夹中。这一表单完成对图书租借、
归还及查询功能。借书时,系统检查复本数量,如果复本数量为零,不能租借;如果出租成
功,复本数量减1;还书时,如果还书成功,复本数量加1;查询时,可以查询书被谁借去了?
谁借了什么书。表单zjgl.SCX的ShowWindow属性设为2—AsTop—LevelForm。
表单运行效果如图4.19所示。
单击表单的“借书管理”、“还书管理”和“租借查询”按钮控件,可以运行如下表单:
· 借书管理表单jsgl.SCX
· 还书管理表单hsgll.sex
· 租借查询表单zjcx.sc
图4.19 zjgl.scx运行效果
1.借书管理
借书管理由表单jsgl.SCX负责,该表单位于默认路径的forms文件夹中。
该表单的数据源为数据表book.dbf(图书表)、租借表.dbf(租借表)和person.dbf(客户
表)。book.dbf(图书表)和租借表.dbf(租借表)的属性BufferModeOverride=3,3个表的
属性Exclusive=.T
· 本表单包含7个标签、2个组合框控件、5个文本框控件和4个命令按钮控件,其中2个
组合框控件和5个文本框控件的属性Enabled=.F.。
表单中“选择客户”和“请选择图书”对应两个组合框Comb01和Comb02,它们的属性
设置如图4.20和图4.2l所示。其余控件是将数据源租借表.dbf中的部分字段拖至表单
中形成的。
图4.20 Combol属性设置 图4.21 Comb02属性设置
表单运行效果如图4.22所示。
· 表单--init过程代码
thisform.comb01.enabled=T.
thisform.comb01.setfocus
· 表单--load过程代码
图4.22 jsgl.SCX运行效果
sele租借表
setmultilocks on &&允许尝试锁定一组记录
· 控件Comb01——InteractlveChange过程代码
thisform.comb02.enabled=.t.
thisform.comb02.setfocus
· 控件Comb02——InteractlveChange过程代码
sele book
lcca for isbn:thisform.comb02.value
ifbook.复本数量=0
messagebox(”对不起,这种书已经没有复本,稍后再借!重新选择”,o,”提示·)
this.value=""
this.enabled=.f.
thisform.combo1.setfocus
else
thisform.commandl.enabled:.t.
endif
sele租借表
· 控件Commandl(借阅)——单击事件(C1ick)过程代码
append blank
thisform.refresh
**客户编号和ISBN通过选择获得,不需要输入操作
thisform.txt客户编号.value=thlsform.comb01.value
thisform.txtisbn.value=thisform.comb02.value
thlsform.combnl.enabled=f.
thisform.comb02.enabled=f.
thisform.txt预借天数.enabled=t.
thisform.txt预借天数.setfocus
thisform.txt借期.enabled=.t.
thisform.txt预付金额.enabled=t.
thisform.commandl,enabled=.f.
thisform.command2.enabled=.t.
thisform.command3.enabled=.t.
thisform.command4.enabled=.f.
. 控件Command2(保存)——单击事件(C1ick)过程代码
=tableupdate(.t.)
thisform.commandl.enabled=.f.
thisform.command2.enabled=.f.
thisform.command3.enabled=.f.
thisform.command4.enabled=.t.
thisform.comb01.enabled=.t.
thisform.txt预借天数.enabled=.f.
thisform.txt借期.enabled=.f.
thisform.txt预付金额.enabled=.f.
sele book
replbook.复本数量withbook.复本数量—1
sele租借表
· 控件Command3(恢复)——单击事件(Click)过程代码
=tablerevert(.t.)
thisform.commandl.enabled=f
thisform.command2.enabled=f.
thisform.command3.enabled=f.
thisform.command4.enabled=t.
thisform.comb01.enabled=t
thisform.txt预借天数.enabled=f
thisform.txt借期.enabled=f.
thisform.txt预付金额.enabled=f.
. 控件Command4(返回)——单击事件(Click)过程代码
??CHR(7)
result=messagebox(”是否退出?”,4十48十256,”信息窗口”)
if result=6
usedata\租借表excl
set excl On
pack
set excl Off
USe
thisform.release
endif
2.还书管理
还书管理由表单hsgll.sex负责,该表单位于默认路径的forms文件夹中。
该表单的数据源为数据表book.db{(图书表)、租借表.dbf(租借表)和person.dbf(客
户表)。book.dbf(图书表)和租借表.dbf(租借表)的属性BufferModeOverride=3,3个表
的属性ExclUSlVe=.T一本表单包含12个标签、2个组合框控件、10个文本框控件和4个
命令按钮控件,其中2个组合框控件和5个文本框控件的属性Enabled=.F.。表单中“选
择客户”和“请选择图书”对应两个组合框Comb01和Comb02,它们的属性设置如图4.20
和图4.21所示。其余控件是将数据源租借表.dbf表中的部分字段拖至表单中形成的。
表单运行后,只需选择客户、图书,然后输入还期。此时单击“保存”按钮,系统将自动计
算出各项费用,显示应退还用户的剩余金额或用户应补交的金额,同时会将book.dbf(图书
表)表中“复本数量”增1、为person.dbf(客户表)中当前客户完成租金累计(租金累计可以
用于后续的业务统计)。表单运行效果如图4.23所示。
图4.23 hsgll.scx运行效果
· 表单——load过程代码
sele租借表
setmultilocksmSS允许尝试锁定一组记录
· 控件Combo] InteractiveChange过程代码
thisform.combo2.enabled=t.
thisform.combo2.setfocus
. 控件Comb02 InteractiveChange过程代码
sele租借表
locatefor客户编号=thisform.comb01.value.and;
isbn=thisform.comb02.value.and.还期={}&&查找租借记录
if eof()=t.
messagebox(”没有相关记录,重新选择”,0,’提示!,
endif
thisform.refresh
thisform.combo1.enabled=.t.
thisform.combo2.enabled=.t.
thisform.txt还期.enabled=.t.
thisform.txt还期.setfocus
thisform.command1.enabled=.f.
thisform.command2.enabled=.t.
thisform.command3.enabled=.t.
thisform.command4.enabled=.f.
控件command1(调出资料)——单击事件(click)过程代码
thisform.combo1.enabled=.t.
thisform.combo1.setfocus
控件command2(保存)——单击事件(click)过程代码
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -