数据库表单的创建课件_第1页
数据库表单的创建课件_第2页
数据库表单的创建课件_第3页
数据库表单的创建课件_第4页
数据库表单的创建课件_第5页
已阅读5页,还剩60页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第11章表单设计与应用学习目标掌握表单的创建与运行掌握表单的操作掌握表单中常用控件标签、命令按钮、文本框、编辑框、列表框、组合框、表格11.1表单的建立与运行

创建表单的过程,就是定义控件的属性,确定事件或方法、代码的过程。

表单就是一个容器,它可以容纳多个控件。11.1.2用表单设计器创建表单Createform

文件/新建/表单/新建文件11.1表单的建立与运行

(2)表单控件工具栏要求会使用的控件:标签、文本框、编辑框、命令按钮、组合框、列表框和表格(3)表单设计器工具栏(4)表单菜单表单中的对象设计过程:向表单添加控件-->设置属性-->设计代码11.1.3表单的运行

有2种方法可以运行表单:

(1)直接使用命令DOFORM〈表单名〉(2)在表单设计器窗口,选择“表单”菜单中的“运行”命令,或直接单击工具栏中的红色惊叹号。保存表单时,表单将被保存为一个表单文件(扩展名是.scx)和一个表单备注文件(扩展名是.sct)(P196)11.2表单的操作

11.2.1表单的属性

1.常用表单属性表单属性很多,但绝大多数很少用到。表11.3中列出了有关表单的一些重要属性,这些属性规定了表单的外观和行为,经常在表单设计时用到。请大家参考表11.3。3.鼠标事件

Click事件:鼠标左键单击对象时发生的事件。4.键盘事件

InteractiveChange事件。7.常用方法 Release方法:从内存中释放表单 Refresh方法:刷新表单数据11.3常用表单控件

11.3.1添加表单控件 表单中添加什么样的控件是根据需求决定的,一旦确定了控件的类型,就要定义控件的属性、确定事件和方法代码。11.3.2表单控件及其属性1.标签控件(Label)“标签”控件是按一定格式显示在表单上的文本信息,用来显示表单中各种说明和提示信息。一旦“标签”控件的属性、事件和方法被定义,输出信息将根据这些定义,按指定的格式输出。

“标签”控件的属性主要包括:Caption,Name,FontName,FontSize11.3.2命令按钮控件“命令按钮”控件主要用来控制程序的执行过程,以及对表中数据的操作等。“命令按钮”控件的属性主要包括:caption,name “命令按钮”控件的事件:click11.3.3文本框控件“文本框”控件主要用于表中非备注型和通用型字段值的输入、输出,以及内存变量赋值和输出等操作。“文本框”控件与“标签”控件最主要的区别在于它们使用的数据源是不同的。

常用属性:Value,ControlSource

“标签”控件的数据源来自于其“Caption”属性,“文本框”控件的数据源来自于其“ControlSource”属性,可以是表中的非备注型、通用型字段和内存变量。“文本框”控件的属性主要包括:“文本框”的大小,“文本框”中输入、输出信息字体的大小、风格和颜色等。k=0forx=100to1000ifx%37=0thisform.edit1.value=thisform.edit1.value+str(x,5)k=k+1ifk%5=0thisform.edit1.value=thisform.edit1.value+chr(13)endifendifendfor11.3.6列表框与组合框控件 列表框(listbox)控件提供一组选项,用户可以从中选择一个或者多个选项。 列表框显示其中的若干选项,用户可以通过滚动条浏览其他选项。要求掌握的属性:ControlSource、RowSource、RowSourceType常用方法:AddItem:给RowSourceType属性为0的列表添加一项。RemoveItem:从RowSourceType属性为0的列表删除一项。Requery:当RowSource中的值改变时更新列表。11.3.6列表框与组合框控件 “组合框”控件由一个列表框和一个编辑框组成。两种类型:1、下拉组合框 style属性为0的组合框

可以通过滚动条查看也可以在框中直接输入查看2、下拉列表框 style属性为2的组合框

只能通过滚动条查看,任意时刻只能看见一项C2-类型1-(带有通项公式的计算)设计表单form1,表单中有命令按钮command1和编辑框edit1,单击命令按钮时将计算下面数列前n项(设n=50)中偶数项的和(结果取4位小数),并将结果显示在edit1中。1/(1×2×3),1/(2×3×4),1/(3×4×5),……,1/(n×(n+1)×(n+2)),……结果:0.0568做题思路:1、如有前n项,使用for循环,无用dowhile循环;2、赋初值;3、循环:for或dowhile;4、循环体内使用通项公式进行计算;5、将最终的计算结果放在输出的控件中。C2-类型2-(计算字母的ASCII码值)设计表单form1,表单中有命令按钮command1、一个编辑框edit1和一个文本框text1,在edit1中输入下面内容:“TheauthorswouldliketosincerelythankserieseditorDavidChappellforhisinvaluableassistanceinreviewingseveralearlydraftsofthemanuscriptandprovidingunwaveringclarityandvisionduringmajorrewritestoguidethebooktowarditscurrentform.WewouldalsoliketothankRichBonneauforhishelpduringtheinitialplanningstages.”,单击命令按钮统计满足下面条件的字符的ASCII码值的和:字符的ASCII码值能被3整除;并将结果显示在text1中。注意:内容中不包含任意回车换行符。C2-类型2-(数字字符串的计算)设计表单form1,表单中有命令按钮command1、两个编辑框edit1和edit2,在edit1中输内容:"546363463424214398439583252341243452358654684568450934534836834688954343894394346832894387233849683496783486395435934364386834963463463487653242342342354594876345343453453243456346346334323867867846474",单击按钮分别统计出1、2和3在上面字符串中出现的次数,并将统计结果分三行显示在edit2中。结果:41560做题思路:1、字符串赋给一变量;2、取字符串变量的长度,即字符总个数;3、变量赋初值;4、for或dowhile循环5、在循环体内,用substr()函数取单个字符,并转换成数值类型;6、循环体内用转换后的数值进行累加或累乘计算;7、将最终的结果放在表单上指定的控件上输出。有关日期的函数Ctod

将字符串转换成日期Dtoc

将日期转换为字符串setcenturyonSetdatetoymdSetstrito0Dow(日期表达式):返回每周的第几天,即星期几Cdow(日期表达式):返回英文星期几将数值转换成字符串函数:strSTR(数值型表达式1,数值型表达式2,数值型表达式3

)功能:将表达式1的值转换成字符串,转换成字符串的长度 由表达式2决定,保留的小数位数由表达式3决定。 省略表达式3时,转换后无小数部分;省略表达式2和 表达式3时,字符串长度为10,无小数部分C2-类型3-日期设计表单form1,表单中有命令按钮command1、一个文本框text1和一个组合框combo1,单击命令按钮将1910年到2254年间的国庆节添加到combo1中,然后计算出1910年到2254年间的每个国庆节是星期日的次数,并将计算结果显示在text1中。参考答案:49setcentonsetdatetoymdsetstrito0n=0fori=1910to2254d=str(i)+"/10/01"bo1.additem(alltrim(d))t=ctod(alltrim(d))xq=cdow(t)ifxq="Sunday"

||ifcdow(ctod(alltrim(d)))=“Sunday”n=n+1

endifEndforthisform.text1.value=n做题思路:1、三个set设置语句;2、赋初始值;3、for循环4、将数值型的年份用str()函数进行转换,再加上表示月和日的字符串;5、将字符串日期转变成日期用ctod()函数;6、判断日期为星期几,用函数dow()或cdow();7、将最终的结果在指定的控件上显示输出。

c2-类型3-日期 设计表单form1,表单中有命令按钮command1、一个文本框text1和一个列表框list1,单击命令按钮将1800年到1900年间的元旦日添加到list1中,然后利用函数计算出1800年到1900年间的每个元旦日是星期几,并将该函数值累加,将计算结果显示在text1中。 参考答案:403setcenturyonsetdatetoymdSetstrito0(p37)n=0fori=1800to1900d=str(i)+"/01/01"thisform.list1.additem(alltrim(d))dd=ctod(d)n=n+dow(dd)

||n=n+dow(ctod(d))endforthisform.text1.value=nC4-例1(将用到的表及建立的数据库、表单放在同一个文件夹下)现有两个自由表{<student.dbf>}和{<score1.dbf>},将两文件下载到你的考试文件夹,然后按下面要求完成程序设计:1.建立一个数据库studata,并将上面两个自由表添加到数据库中;以学号(xuehao)为主关键字建立student和score1两表之间的关联,student为父表。2.设计一个表单,以studata中的两个表作为表单的数据环境,在表单中添加一个命令按钮command1和一个标签label1。command1的标题为“最高平均分”。3.单击command1按钮求出所有学生中平均分最高的学号和平均分,并将它们分两行显示在label1中。成绩字段名为chengji。平均分是指每个学生所有课程的平均分。selectxuehao,avg(chengji)aschefromscore1groupbyxuehaoorderbychedescintocursordcthisform.label1.caption=thisform.label1.caption+xuehao+chr(13)+str(che)~65656696现有两个自由表{<score3.dbf>}和{<score4.dbf>},先将两文件下载到你的考试文件夹,然后按下面要求完成程序设计:1.建立一个数据库scoredata,并将上面两个自由表添加到数据库中;以学号(xuehao)为主关键字建立两表之间的关联,score3为父表。2.设计一个表单,以scoredata作为表单的数据环境,在表单中添加一个命令按钮command1和一个编辑框edit1。command1的标题为“至少一门及格人的最高助学金”。

C4-9(至少一门不少于某一分数类)3.单击command1按钮将统计四门成绩至少有一门不小于60的人的最高助学金(zhuxuejin),并将它显示在edit1中。四门课程成绩字段名分别为cj1、cj2、cj3和cj4。selectmax(zhuxuejin)asmfromscore3,score4where(score3.cj1>=60orscore3.cj2>=60orscore4.cj3>=60orscore4.cj4>=60)andscore3.xuehao=score4.xuehaointocursorsthisform.edit1.value=str(s.m)~996现有两个自由表{<score3.dbf>}和{<score4.dbf>},先将两文件下载到你的考试文件夹,然后按下面要求完成程序设计:1.建立一个数据库scoredata,并将上面两个自由表添加到数据库中;以学号(xuehao)为主关键字建立两表之间的关联,score3为父表。2.设计一个表单,以scoredata作为表单的数据环境,在表单中添加一个命令按钮command1和一个组合框combo1。command1的标题为“男生全及格人数”。C4-9(均不少于某一分数类)3.单击command1按钮将统计每个年级(2002-2005)男生(xingbie为真)中四门成绩均不小于60的人数,并将它们显示在combo1中。四门课程成绩字段名分别为cj1、cj2、cj3和cj4。年级字段名为nianji。selectcount(*)asafromscore3,score4wherescore3.xuehao=score4.xuehaoandscore3.cj1>=60andscore3.cj2>=60andscore4.cj3>=60andscore4.cj4>=60andxingbie=.t.andnianji="2002"intocursort1bo1.additem(str(t1.a))selectcount(*)asafromscore3,score4wherescore3.xuehao=score4.xuehaoandscore3.cj1>=60andscore3.cj2>=60andscore4.cj3>=60andscore4.cj4>=60andxingbie=.t.andnianji="2003"intocursort2bo1.additem(str(t2.a))selectcount(*)asafromscore3,score4wherescore3.xuehao=score4.xuehaoandscore3.cj1>=60andscore3.cj2>=60andscore4.cj3>=60andscore4.cj4>=60andxingbie=.t.andnianji="2004"intocursort3bo1.additem(str(t3.a))selectcount(*)asafromscore3,score4wherescore3.xuehao=score4.xuehaoandscore3.cj1>=60andscore3.cj2>=60andscore4.cj3>=60andscore4.cj4>=60andxingbie=.t.andnianji="2005"intocursort4bo1.additem(str(t4.a))~2002(8)2003(12)2004(11)2005(6)C4-4(学号中含有某些数字类)现有两个自由表{<student.dbf>}和{<score1.dbf>},按下面要求完成程序设计:1.建立一个数据库studata,并将上面两个自由表添加到数据库中;以学号(xuehao)为主关键字建立student和score1两表之间的关联,student为父表。2.设计一个表单,以studata中的两个表作为表单的数据环境,在表单中添加一个命令按钮command1和一个编辑框edit1,command1的标题为“含4和5平均分”。

3.单击command1按钮求出学号中同时含有4和5的所有学生中的平均分最低的姓名和平均分,并将它们显示在edit1中。成绩字段名为chengji。平均分是指每个学生所选各门课程的平均分。selectavg(score1.chengji)asch,student.xingmingfromstudent,score1wherestudent.xuehaolike"%4%"andstudent.xuehaolike"%5%"andstudent.xuehao=score1.xuehaogroupbyscore1.xuehaoorderbychintocursort2thisform.edit1.value=xingming+chr(13)+str(ch,10,2)~569084杨中国68在做题之前,应对题中所用到表有所熟悉:自由表t3.dbf包含如下字段:bianhao 字符型,宽度8xingming 字符型,宽度8mima 字符型,宽度6chusny 日期型,宽度8gongzsj 日期型,宽度8hunfo 逻辑型,宽度1jiangjin 数值型,宽度7,小数位数2gongzi 数值型,宽度7,小数位数2注:做题之前要设置默认目录(将所做好的表单文件及表文件都放在该文件夹下) 请将自由表{<t3.DBF>}下载到你的考试文件夹中,并按下面的要求完成程序设计:1.设计一个表单,表单的标题为“最大年龄人数和编号查询”,名称为tjform,表单中有三个命令按钮和三个编辑框edit1、edit2和edit3,三个按钮的标题分别为“编号查询”,“最大年龄人数”和“退出”。2.在edit1中输入编号(bianhao),单击“编号查询”按钮将在文本框edit2中显示该编号的姓名(xingming)。如果没有找到该编号,将在edit2中显示"NOFOUND"。3.单击“最大年龄人数”按钮统计出年龄等于所有记录最大年龄的记录个数,并将它显示在文本框edit3中。(注:年龄=2005-出生年份+1,出生年月字段为chusny)。4.单击“退出”按钮将关闭表单。C3-例题1(查找姓名或编号类)编号查询按钮代码:a=alltrim(thisform.edit1.value)uset3locateforbianhao=aiffound()thisform.edit2.value=xingmingelsethisform.edit2.value="NoFound!"endifuse最大年龄按钮代码:selectcount(*)asa1fromt3where2005-year(chusny)+1=(selectmax(2005-year(chusny)+1)fromt3)intocursort1thisform.edit3.value=str(t1.a1)closeall退出按钮代码:

Thisform.release现有自由表{<t3.DBF>},按下面要求完成程序设计:1.设计一个表单,表单的标题为“密码处理”,名称为tjform,表单中有三个命令按钮和两个标签,三个按钮的标题分别为“处理密码”,“最高位统计”和“退出”。2.单击“处理密码”按钮将每个记录的密码(mima)最左边的位加1(如果加1后大于9,则取9),其它位不变,并将处理后密码写入表中。

updatet3setmima=;

str(val(substr(mima,1,1))+1,1)+substr(mima,2,5); wheresubstr(mima,1,1)!="9“

(注意:在调试之前必须将t3.DBF文件备份,因为每次调试可能要改变原始表中的数据)。结果:6679C3-例2(密码类型题)3.单击“最高位统计”按钮将统计所有记录的密码中最左边数字的和以及它们中的最大值,并将结果分别显示在两个标签中。

selectsum(val(substr(mima,1,1)))ashe,max(val(substr(mima,1,1)))aszuidafromt3intocursort31 thisform.label1.caption=str(he,10) thisform.label2.caption=str(zuida,1)4.单击“退出”按钮将关闭表单。 thisform.release

请将自由表{<t3.DBF>}下载到你的考试文件夹中,并按下面的要求完成程序设计:1.设计一个表单,表单的标题为“显示姓名和统计”,名称为tjform,表单中有三个命令按钮、两个列表框list1和list2,一个文本框text1,三个按钮的标题分别为“显示姓名”,“统计”和“退出”。2.单击“显示姓名”按钮将所有记录的姓名(xingming)添加到list1中。

uset3 dowhile.not.eof() thisform.list1.additem(xingming) skip enddo useC3-例3(添加姓名与日期统计类型题)3. 单击“统计”按钮统计出参加工作时间(gongzsj与出生日期(chusny)均为星期一的人数,将人数显示在text1中,并将他们的记录号分别显示在list2中。n=0uset3dowhile.not.eof()ifcdow(gongzsj)="Monday"andcdow(chusny)="Monday"n=n+1thisform.list2.additem(str(recno()))endifskipenddothisform.text1.value=str(n)closeallC3-14(“下一个”按钮类型题)

请将自由表{<t3.DBF>}下载到你的考试文件夹中,并按下面的要求完成程序设计:1.设计一个表单,表单的标题为“等于平均人数和浏览”,名称为tjform,表单中有三个按钮、一个组合框和一个文本框,三个按钮的标题分别为“下一个”,“等于平均”和“退出”。2.单击“下一个”按钮将在组合框中添加下一个记录的姓名(xingming)。如果到表尾,将添加第一个记录中的姓名。设置表单的load事件:uset3skipthisform.list1.additem(xingming)ifeof()gotopthisform.list1.additem(xingming)endifthisform.refresh

3.单击“大于平均年龄”按钮统计出年龄等于所有记录平均年龄的记录个数,并将它显示在文本框中。(注:年龄=2005-出生年份+1,出生年月字段为chusny)。selectavg(2005-year(chusny)+1)asafromt3intocursort4selectcount(*)asmfromt3where2005-year(chusny)+1>t4.aintocursort5thisform.text1.value=str(t5.m)4.单击“退出”按钮将关闭表单。thisform.releaseC3-17(表格类型题)请将自由表{<t3.DBF>}下载到你的考试文件夹中,并按下面的要求完成程序设计:1.设计一个表单,表单的标题为“统计年龄和查询”,名称为tjform,表单中有三个命令按钮、一个文本框和一个窗格(grid),三个按钮的标题分别为“查询”,“统计年龄”和“退出”。2.单击“查询”按钮将在窗格中显示所有工资(gongzi)不大于1330的记录,窗格中显示编号(bianhao)、姓名(xingming)、出生年月(chusny)和工资(gongzi)。设置grid的属性:ColumnCount=4 RecordSourceType=4-SQL说明1

thisform.grid1.recordsource="selectbianhao,xingming,chusnyfromt3wheregongzi<=1330intocursort4"2closeall3.单击“统计年龄”按钮统计1976年1月1日(包括1976年1月1日)以后出生(chusny)的已婚(hunfo为真)的年龄总和,并将年龄总和显示在文本框中。(注:年龄=2005-出生年份+1)。1selectsum(2005-year(chusny)+1)assfromt3wherechusny>={^1976/01/01}andhunfointocursort42thisform.text1.value=str(t4.s)4.单击“退出”按钮将关闭表单。Thisform.release~3095C3-19(添加记录类型)请将自由表{<t3.DBF>}下载到你的考试文件夹中,并按下面的要求完成程序设计:1.设计一个表单,表单的标题为“统计工资小数和”,名称为gzform,表单中有三个命令按钮和一个文本框,三个按钮的标题分别为“增加”,“统计工资小数”和“退出”。2.单击“增加”按钮将向表第一个记录前增加一条空记录,编号(bianhao)和姓名(xingming)字段的值分别为“00000001”和“李正军”,工资(gongzi)字段的值为1000.32,其它字段内容任意。1uset32gotop3insertblankbefore4dimensiony(8)5y(1)="00000001"6y(2)="李正军"7y(8)=1000.328gotop9gatherfromy10closeall

3.单击“统计工资小数”按钮将计算所有记录工资(gongzi)中小数点后的数字之和,并将计算结果显示在文本框中。如:工资为199.62,仅计算0.62。显示的结果是指单击一次“增加”按钮后的值。selectsum(gongzi-int(gongzi))assfromt3intocursort6thisform.text1.value=t6.s4.单击“退出”按钮将关闭表单。Thisform.release~53.33请将自由表{<t3.DBF>}下载到你的考试文件夹中,并按下面的要求完成程序设计:(注意:在调试之前必须将t3.DBF文件备份,因为每次调试可能要改变原始表中的数据)。1.设计一个表单,表单的标题为“统计和减少工资”,名称为tjform,表单中有三个命令按钮和一个列表框,三个按钮的标题分别为“减少工资”,“千元统计”和“退出”。2.单击“减少工资”按钮将每个记录的工资(gongzi)减少原工资的10.67%。updatet3setgongzi=gongzi-gongzi*0.1067closeall

C3-4(修改字段内容类型)3.单击“千元统计”按钮将统计所有记录减少后的工资(gongzi)中的千位数字的和及千位数字中的最大值,并将统计的两个数值分两行显示在列表框中。只计算千位中值,没有千位按0计算。selectsum(int(gongzi/1000))ass,max(int(gongzi/1000))asmafromt3intocursort2thisform.list1.additem(str(t2.s))thisform.list1.additem(str(t2.ma))4.单击“退出”按钮将关闭表单。Thisform.release~1282C4-new 现有两个自由表{<score3.dbf>}和{<score4.dbf>},先将两文件下载到你的考试文件夹,然后按下面要求完成程序设计:1.建立一个数据库scoredata,并将上面两个自由表添加到数据库中;以学号(xuehao)为主关键字建立两表之间的关联,score3为父表。2.设计一个表单,以scoredata作为表单的数据环境,在表单中添加一个命令按钮command1和一个组合框combo1。command1的标题为“两门优秀最低助学金”

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论