VF表单设计
- 格式:doc
- 大小:70.50 KB
- 文档页数:11
1. 表单设计:请设计一个表单,如图,有三个标签,三个文本框,一个命令按钮。
在前两要求设置下列属性:表单的标题(Caption)、表单运行时自动居中(AutoCenter);三个标签的标题(Caption)、字体大小(FontSize)和粗体(ReadOnly)2. 3. 设计下面的表单。
要求修改:表单标题,表单运行时自动居中;上面的标签的标题、字体大小、字体加粗、并设置其WordWrap 【自动分行】为.t.;下面两个标签的字体、字体大小、字体加粗、字体斜体、自动调整大小、forecolor ;添加两个文本框;命令按钮中标题、字体大小、并添加图片【picture 属性、图片内容自定】。
命令按钮中click 事件的代码为:【直接从这里复制】x=thisform.text1.valuey=thisform.text2.valueif x="abc" and y="123"messagebox("西华大学欢迎您!",0+64,"您好!")elsemessagebox("用户名或密码错误",2+48+256,"错误!")endif4. 按照下面的表单设计一个表单界面:(学生表的显示)注意: 修改每个文本框的controlscource 属性以及使用文本框的生成器!【两种方法都要灵活掌握!】点击上一条,显示上一条的记录,点击下一条,显示下一条的记录【忽略文件指针到文件头和文件末尾的出错】,点击退出,则退出表单。
5. 将上题中的标签和文本框删除。
使用设置数据环境,再从数据环境中的字段拖动到表单中的方法来设置控件:【这种方法简单实用】6. 多表的显示:显示学生表、成绩、课程表中的不同字段:【注意:数据环境中三个表文件建立关联】7. 命令按钮组:将第5题中的三个命令按钮删除,修改为一个命令按钮组,并在命令按钮组的click 事件中添加程序代码,实现相应的操作【使用Do Case 语句】。
8.1 基本概念1.名词解释表单:即用户与计算机进行交流的一种屏幕界面,用于数据的显示、输入、修改。
该界面可以自行设计和定义,是一种容器类,可包括多个控件(或称对象)。
表单集:可包含一张或多张表单的容器。
数据环境:在打开或修改一个表单或报表时需要打开的全部表、视图和关系。
它以窗口形式(类似于数据库设计器)反映出与表单有关的表、视图、表之间关系等内容。
可以用数据环境设计器来创建和修改表单的数据环境。
2.表单设计界面主要包括: 表单向导、表单设计器、表单设计器工具栏、表单控件工具栏、属性窗口3.表单设计中常用的属性、事件与方法介绍8.2 创建表单可以用表单向导、表单设计器、表单生成器、编程四种方法创建表单。
1. 利用向导创建表单(1)创建单张表的表单:打开文件菜单→ 新建→ 表单→ 向导[或从常用工具栏上选择表单(F)] → 选择表单向导→ 选取字段→ 选择样式→ 选择排序记录→ 选择保存方式→ 给出合适的文件名和保存位置。
(2)创建多个相关表的表单:打开文件菜单→ 新建→ 表单→ 向导[或从常用工具栏上选择表单(F)] → 选择一对多表单向导→ 选取父表字段→ 选取子表字段→ 选定关系→ 选择样式→ 选择排序记录→ 选择保存方式→ 给出合适的文件名和保存位置。
注意:用向导创建的表单一般含有一组标准的命令按钮。
表单保存后系统会产生两个文件:表单文件:扩展名为 .SCX表单备注:扩展名为.SCT2. 利用表单生成器创建表单文件菜单→ 新建→ 表单→ 新文件→ 表单菜单→ 快速表单命令→ 选择字段和样式并确定之。
注意:用生成器创建的表单不能直接产生一些命令按钮。
3. 利用设计器创建表单文件菜单→ 新建→ 表单→ 新文件→ 在表单设计器中,用表单设计器和表单控件工具条上的按钮创建所需的表单→ 保存表单→ 给出文件名和保存位置。
注意:用设计器创建的表单,用户必须为控件设置有关的属性及事件处理代码。
4. 利用编程的方法创建表单按照面向对象设计的方式,先可视化地利用类来创建表单,再将类代码复制到程序窗口,适当添加部分设置系统环境的代码,以程序文件的形式保存。
表单设计1) 表格应用A、第一种情况表格数据源类型(recordsourcetype)为0-表方法1步:sele **** into table 表名2步:thisform.grid1.recordsource="表名"机试试题:1 926(别名) .9套答案:a=ALL TRIM(THISFORM.text1.V ALUE)SELECT Rate_exchange.外币名称, Currency_sl.持有数量;FROM rate_exchange,currency_sl;WHERE Rate_exchange.外币代码= Currency_sl.外币代码;AND Currency_sl.姓名= a;ORDER BY Currency_sl.持有数量;INTO TABLE (a)\THISFORM.Grid1.RECORDSOURCE="(a)"26.a=alltrim(thisform.text1.value)SELECT Sell.年度, sum(Sell.销售额) as 销售额,;sum(Sell.销售额-Sell.工资额) as 利润;FROM test_db!sell;WHERE Sell.部门号in (select 部门号from dept where 部门名=a);group by 年度order by 年度into table (a)myform.grid1.recordsource="(a)"1A= alltrim(thisform.text1.value).select 零件名,颜色,重量from 零件, 供应;where零件.零件号=供应.零件号and工程号=aorder by 零件.零件名into table pp.dbfthisform.grid1.recordsource="pp"B、第二种情况表格数据源类型(recordsourcetype)为4-SQL方法thisform.grid1.recordsource="sele **** into cursor 临时表名"机试试题:7 1363 7225 30 34 37 387套THISFORM.GRID1.RECORDSOURCE="SELECT 学生.姓名, 课程.课程名称, 选课.成绩;FROM 课程,选课,学生;where 学生.学号= 选课.学号;and 课程.课程号= 选课.课程号;and 学生.系= '6';INTO CURSOR temp"13套答案:GO TOPLOCAL FOR 学号==ALL TRIM(THISFORM.TEXT1.V ALUE)IF Student.学号==ALL TRIM(THISFORM.TEXT1.V ALUE)THISFORM.GRID1.RECORDSOURCE="SELECT Course.课程名, Score1.成绩; FROM student,course,score1;WHERE Course.课程号= Score1.课程号and student.学号=score1.学号;AND Student.学号= ALL TRIM(THISFORM.TEXT1.V ALUE);INTO CURSOR TEMP"ELSE?"学号不存在,请重新输入学号"THISFORM.GRID1.RECORDSOURCE=" "ENDIF63套ThisForm.Grid1.RecordSource="select * from S_T where 年度=alltrim(thisform.spinner1.value) into cursor temp"55套机试答案ThisForm.Grid1.RecordSource="select student.学号,student.姓名,student.年龄,student.性别from student,class where student.班级号=class.班级号and class.班级号=bo1.list(bo1.listindex) into cursor a"37套机试答案SELE 顾客序号,顾客姓名,单位,消费金额FROM 结帐表WHERE 结帐日期=CTOD(ALLTR(THISFORM.TEXT1.VALUE)) ORDER BY 消费金额 DESC INTO TABLE TABCTHISFORM.GRID1.RECORDSOURCE="SELE 顾客序号,顾客姓名,单位,消费金额 FROM 结帐表 WHERE 结帐日期=CTOD(THISFORM.TEXT1.VALUE) ORDER BY 消费金额 DESC INTO TABLE TABC"38套机试答案delete from tabepackselect 学号 as 学号,姓名 as 姓名,年龄 as 年龄,性别 as 性别,班级 as 班级,注册日期 as 注册日期 from 学生表 where 注册日期= ctod(thisform.Text1.text) order by 年龄 desc into arra dd use tabeappe from arra ddthisform.grid1.recordsource="select 学号 as 学号,姓名 as 姓名,年龄 as 年龄,性别 as 性别,班级 as 班级,注册日期 as 注册日期 from 学生表 where 注册日期= ctod(thisform.Text1.text) into cursor tmp order by 年龄 desc"3 结果通过文本框显示(数组)sele *** into array tpthisform.text1.value=tpthisform.text2.value=tp(2)5 6031套机试答案:SELECT Rate_exchange.现钞买入价* Currency_sl.持有数量FROM Currency_sl,Rate_exchange WHERE Currency_sl.外币代码 = Rate_exchange.外币代码 AND Currency_sl.姓名 =ALLTRIM(THISFORM.text1.VALUE) GROUP BY Currency_sl.姓名INTO ARRAY slTHISFORM.text2.VALUE=sl4 组合框、列表框3) 组合框与列表框数据源(RowsourceType)为1- 值: (在Rowsource)直接输入值2- SQL (在Rowsource)直接输入sele 字段from 表3-数组(在Rowsource) 输入数组名在表单Load事件中定义Public 数组名数组(1)=值……4-字段(在Rowsource) 选择表.字段(先添加数据环境)5-结构(在Rowsource) 选择表名(先添加数据环境)6-文件(在Rowsource) 输入目录(文件夹)第三大题中bo1.value组合框内容可以表示为:表单.组合框.value等价于: bo1.list(bo1.listindex)列表框内容可以表示为:表单.列表框.value等价于: thisform.list1.list(thisform.list1.listindex)28 14 6773 1822 52 28332套机试答案:SELE COUNT(图书登记号) FROM BOOK WHERE 出版社=BO1.VALUE INTO ARRAY A THISFORM.TEXT1.VALUE=A8套机试答案:SELE SUM(单价*数量) AS 金额 FROM 零件信息,使用零件,项目信息 WHERE 零件信息.零件号=使用零件.零件号 AND 使用零件.项目号=项目信息.项目号AND 项目信息.项目号= BO1.VALUE GROUP BY 项目信息.项目号INTO ARRAY ATHISFORM.TEXT1.VALUE=A67套机试答案:SELE * FROM 外汇汇率WHERE 币种1=ALLTR(BO1.VALUE) AND 币种2=ALLTR(BO2.VALUE) INTO TABLE TEMP_RATE73套机试答案:SELE COUNT(学号) AS 人数 FROM 课程,考试成绩 WHERE 课程.课程编号=考试成绩.课程编号AND 课程名=ALLTR(THISFORM.LIST1.VALUE) INTO TABLE ALLTR(THISFORM.LIST1.VALUE)18套机试答案:SELE 国家名称,COUNT(名次) AS 奖牌总数 FROM 国家,获奖牌情况 WHERE 国家.国家代码=获奖牌情况.国家代码 GROUP BY 国家.国家代码 ORDER BY 奖牌总数 DESC,国家名称 INTO TABLE 假奖牌榜27套SELECT Student.姓名, Course.课程名称, Score.考试成绩FROM student,score,course WHERE Score.课程编号= Course.课程编号ANDStudent.学号 = Score.学号 AND (&cn) ORDER BY Course.课程名称, Score.考试成绩 DESC INTO TABLE zonghe.dbfRemoveitem additem28套A=THISFORM.LIST1.VALUESELE 职工号,姓名,工资 FROM 学院表,教师表 WHERE 学院表.系号=教师表.系号 AND 系名=A INTO TABLE (A)33套GM=THISFORM.LIST1.VALUESELE 运动员名称,项目名称,名次 FROM 国家,获奖牌情况 WHERE 国家.国家代码=获奖牌情况.国家代码 AND 国家名称=GM ORDER BY 名次 INTO TABLE (GM)5、do case 用做选项按钮组题的方法一、设计表表单(用生成器设计好选项按钮组)二、在代码中输入(一般在click事件)do casecase thisform.选项按钮组.value=1sql语句1case thisform.选项按钮组.value=2sql语句2case thisform.选项按钮组.value=3sql语句3……endcase作业(第三大题)Case:56,6,64,61,65,69,71,19(难),23 5164套DO CASECASE THISFORM.MYOPTION.V ALUE=1THISFORM.GRID1.RECORDSOURCE="SELE * FROM 外汇账户WHERE 钞汇标志='现汇' INTO CURSOR A"CASE THISFORM. MYOPTION.V ALUE=2THISFORM.GRID1.RECORDSOURCE="SELE 外汇代码,金额FROM 外汇账户WHERE 钞汇标志='现钞' INTO CURSOR A"ENDCASEDO CASECASE THISFORM.OPTIONGROUP1.V ALUE=1SELE 商品.* FROM 商品,分类WHERE 商品.分类编码=分类.分类编码AND 分类名称="饮料"CASE THISFORM.OPTIONGROUP1.V ALUE=2SELE 商品.* FROM 商品,分类WHERE 商品.分类编码=分类.分类编码AND 分类名称="调味品" CASE THISFORM.OPTIONGROUP1.V ALUE=3SELE 商品.* FROM 商品,分类WHERE 商品.分类编码=分类.分类编码AND 分类名称="酒类"CASE THISFORM.OPTIONGROUP1.V ALUE=4SELE 商品.* FROM 商品,分类WHERE 商品.分类编码=分类.分类编码AND 分类名称="小家电" ENDCASE69套DO CASECASE THISFORM.CHECK1.V ALUE=1DO CASECASE THISFORM.OPTIONGROUP1.V ALUE=1SELE * FROM EMPLOYEE INTO TABLE TEMPCASE THISFORM.OPTIONGROUP1.V ALUE=2SELE * FROM ORDERS INTO TABLE TEMPENDCASECASE THISFORM.CHECK1.V ALUE=0DO CASECASE THISFORM.OPTIONGROUP1.V ALUE=1SELE * FROM EMPLOYEECASE THISFORM.OPTIONGROUP1.V ALUE=2SELE * FROM ORDERSENDCASEENDCASE19A=THISFORM.CHECK1.V ALUEB=THISFORM.CHECK2.V ALUEC=THISFORM.OPTIONGROUP1.OPTION1.V ALUED=THISFORM.OPTIONGROUP1.OPTION2.V ALUEDO CASECASE C=1DO CASECASE A=1 AND B=1SELE 职工号,姓名,系名,工资,课程号FROM 学院表,教师表WHERE 学院表.系号=教师表.系号ORDER BY职工号INTO TABLE TWOCASE A=1 AND B=0SELE 职工号,姓名,系名,课程号FROM 学院表,教师表WHERE 学院表.系号=教师表.系号ORDER BY职工号INTO TABLE ONE_XCASE A=0 AND B=1SELE 职工号,姓名,工资,课程号FROM 教师表ORDER BY职工号INTO TABLE ONE_XX ENDCASECASE D=1DO CASECASE A=1 AND B=1SELE 职工号,姓名,系名,工资,课程号FROM 学院表,教师表WHERE 学院表.系号=教师表.系号ORDER BY职工号DESC INTO TABLE TWOCASE A=1 AND B=0SELE 职工号,姓名,系名,课程号FROM 学院表,教师表WHERE 学院表.系号=教师表.系号ORDER BY职工号DESC INTO TABLE ONE_XCASE A=0 AND B=1SELE 职工号,姓名,工资,课程号FROM 教师表ORDER BY职工号DESC INTO TABLE ONE_XX ENDCASEENDCASE6 选项卡10 42 625 顶层表单与菜单1 设计菜单(设计完——显示“常规选项”(顶层表单)——生成菜单)2 设计表单1) Showwindows 2) Init 事件(Load事件)do 菜单.mpr with this66 68 3166套myform.grid1.recordsource="SELE * FROM PRODUCTS,CATEGORY WHERE PRODUCTS.分类编码=CATEGORY.分类编码 AND 分类名称='小家电'"myform.grid1.recordsource="SELE * FROM PRODUCTS,CATEGORY WHERE PRODUCTS.分类编码=CATEGORY.分类编码 AND 分类名称='饮料'"myform.grid1.recordsource="SELE * FROM PRODUCTS,CATEGORY WHERE PRODUCTS.分类编码=CATEGORY.分类编码 AND 分类名称='酒类'"51套MYFORM.grid1.recordsource="sele * from 课程"MYFORM.grid1.recordsource="sview"report form creport previewmyform.releaseDO MYMENU.MPR WITH THIS。