VFP实验指导--实验四-查询与视图-作业32-查询结果图形化输出
VFP第6章 查询和视图设计-精品文档
7
Visual FoxPro
6.1.3 1. 使用查询设计器设计查询时,每设计一步,都可运行查询,查看运 行结果,这样可以边设计、边运行,对结果不满意再设计、再运 行,直至达到满意的效果。设计查询工作完成并保存查询文件后, 可利用菜单选项或命令运行查询文件。 (1)在查询设计器中直接运行。在查询设计器窗口,选择“查询” 菜单中的“运行查询”选项,或单击常用工具栏的运行按钮,即 可运行查询。 (2)利用菜单选项运行。在设计查询过程中或保存查询文件后,单 击“程序”菜单中的“运行”选项,打开“运行”对话框。选择 要运行的查询文件,再单击“运行”按钮,即可运行文件。 ( 3) 在命令窗口中执行运行查询文件的命令,也可运行查询文件。命令 格式是: DO \[路径\] <查询文件名.扩展名> 值得注意的是,命令中查询文件必须是全名,即扩展名不能省略。 针对上面建立的查询文件,对其进行
Visual FoxPro
VF
isual oxPro
1
Visual FoxPro
VFP可以方便地从一个或多个表中提取所 需要的数据,可以通过设计相应的查询或视图 来实现。 查询与视图的区别: 从检索数据角度来说两者基本相同,从使 用角度来说两者有本质的区别。查询和视图都 是从一个或多个表文件或视图中提取用户所需 要的数据,但查询基于查询结果要创建一个查 询文件(.qpr),而视图不产生独立文件,是 以逻辑表文件保存在数据库中。
2
Visual FoxPro
(1) 查询具有不同输出去向的功能,用户可根 据自己的需要,选择不同的输出去向,但视 图不具备这样的功能。 (2) 利用视图可修改数据,并可将修改后的数 据通过SQL发送到原表文件,即可修改原表 文件的记录数据,但查询不具备这样的功能 (3) 查询不依附于任何数据库和表文件的存在 而存在,是完全独立的。但视图只能存在于 数据库中,是不能独立的。
VFP实验报告
实验报告学院:专业:年级:姓名:学号:实验室号:计算机号:实验日期:年月日指导教师签字:成绩:报告退发 (订正、重做)实验一:熟悉VFP开发环境(验证性,3学时)一、实验目的1.熟悉VFP集成开发环境;2.项目管理器的使用;3.常用命令的使用;二、实验内容1.在硬盘上新建一个以自己学号命名的文件夹,并将此文件夹设置为默认目录.要使此设置关闭VFP系统后再进入VFP系统时仍然有效该如何保存?2.设置日期格式为年月日格式,年份四位数显示和两位数显示如何设置,以短划线”-”作为日期分隔符,要使以上设置关闭VFP系统后再进入VFP系统时失效该如何保存?3.如何将现在小数点后只保留2位改成保留更多的位数?4.定制工具栏操作:如何将调色板工具栏里的红色添加到常用工具栏里?5.在默认目录下建立“学生成绩管理”项目文件和“学生成绩”数据库.分别在项目中建立数据库和不在项目中建立数据库,比较他们的区别;6.观察上述第5题的操作过程中命令窗口中出现的命令,并指出各命令的作用;7.退出VFP系统的命令是什么?有哪些方法可以退出VFP系统?三、实验环境1.硬件:学生用微机、局域网环境2.软件:Windows 2000中文操作系统、Visual Foxpro 6.0四、实验步骤(描述实验的具体操作步骤和方法,内容见后附的手写材料)五、实验调试与结果分析(描述实验的调试过程,实验中发生的现象、中间结果、最终得到的结果,并进行分析说明,分析可能的误差或错误原因等.内容见后附的手写材料)六、总结(说明实验过程中遇到的问题及解决办法;新发现或个人的收获;未解决/需进一步研讨的问题或建议新实验方法等.内容见后附的手写材料)实验一:熟悉VFP开发环境1. 先在D盘建一个文件夹,并将其命名为092221004.在桌面打开VFP系统,在菜单栏上选择“工具”“选项”,此时跳出一个选项框,选定“文件位置”中的“默认目录”,然后选择“修改”,将其设为“D\092221004”,最后选择“设为默认值” ,“确定”,即可.2. 在桌面打开VFP系统,在菜单栏上选择“工具”“选项”,此时跳出一个选项框,选定“区域”,然后在“日期格式”栏的下拉选项中选择“年月日”;勾选“日期分隔符”和“年份(1998或98)”项,并在“日期分隔符”其后面输入“-”;最后选择“设为默认值” ,“确定”,即可.3. 在桌面打开VFP系统,在菜单栏上选择“工具”“选项”,此时跳出一个选项框,选定“区域”,然后在“小数位数”项输入小数位数的多少,最后选择“设为默认值” ,“确定”,即可.4. 在桌面打开VFP系统,在菜单栏上选择“显示”,此时跳出一个工具栏对话框,勾选“调色板”后选择右边的“定制”,跳出定制工具栏,在“分类”中选定“调色板”,在其右边中选定红色,并将其拖动到主窗口,关闭定制工具栏,最后将其移到常用工具栏下.5. 打开VPF系统,在菜单栏上选择“文件”,在“文件”的下拉栏中选定“新建”弹出新建选框,在左边的“文件类型”中选定“项目”然后点击右边的“新建文件”弹出创建的对话框,在该对话框的项目文件框中键入“学生成绩管理”后点击“保存”.在菜单栏上选择“文件”,在“文件”的下拉栏中选定“新建”弹出新建选框,在左边的“文件类型”中选定“数据库”然后点击右边的“新建文件”弹出创建的对话框,在该对话框的数据库名框中键入“学生成绩”后点击“保存”.区别: 如果是在项目中建立数据库,则命令窗口不会显示命令.6. “CREATE PROJECT”是建立项目文件命令,“CREATE DATABASE”是建立数据库命令,“ MODIFY DATABASE”打开默认目录下的数据库,“MODIEF PROJECT”是打开默认目录下的项目文件7. 退出VFP系统的命令是“Quit”;其他退出VFP系统的方法:方式一:单击应用程序窗口中的“关闭”按纽.方式二:在“文件”菜单中选择“退出”命令.方式三:在命令窗口中键入QUIT命令.方式四:同时按下Alt和F4组合键.方式五:单击应用程序窗口左上角的控制菜单图标,从弹出的菜单中选择“关闭”命令.或者双击控制菜单图标.实验报告学院:专业:年级:姓名:学号:实验室号:计算机号:实验日期:年月日指导教师签字:成绩:报告退发 (订正、重做)实验二:数据类型、函数和表达式(验证性,3学时)一、实验目的1.VFP变量的使用;2.VFP函数的使用;3.VFP表达式的使用;二、实验内容1.熟悉内存变量的命名规则,举例说说正确的内存变量名和不正确的内存变量名,并在命令窗口中加以测试;2.测试两种内存变量的赋值命令(=和STORE),分别给变量赋以不同数据类型的值,用type函数测试其数据类型;3.分别定义一个一维数组和二维数组,并用type函数测试数组元素未赋值时的数据类型及察看未赋值数组元素的值;给同一数组的不同的数组元素赋以不同数据类型的值;4.测试常用的系统函数的用法并观察其结果(有关表的函数除外);5.测试不同数据类型数据为空的值(即用EMPTY()函数进行测试);6.设X=3,Y=10,求Ln|-y|+e xy(1-y)的值;设a=3,b=5,c=2,求ax2+bx+c=0的根;7.求以下逻辑表达式中各个关系表达式的值,并求出逻辑表达式的值:“Z”>[z].AND.(’ABCLL’=‘ABC’.OR.3^2!=LEN([VISUAL FOXPRO]) ) 三、实验环境1.硬件:学生用微机、局域网环境2.软件:Windows 2000中文操作系统、Visual Foxpro 6.0四、实验步骤(描述实验的具体操作步骤和方法,内容见后附的手写部分)五、实验调试与结果分析(描述实验的调试过程,实验中发生的现象、中间结果、最终得到的结果,并进行分析说明,分析可能的误差或错误原因等.内容见后附的手写部分)六、总结(说明实验过程中遇到的问题及解决办法;新发现或个人的收获;未解决/需进一步研讨的问题或建议新实验方法等.内容见后附的手写部分)实验二:数据类型、函数和表达式1. 输入 temp=”How are you?”输入”use 20 to A”?temp 跳出”命令中含有不能识别的短语或关键字”How are you2. 在命令窗口中输入①命令格式一②命令格式二Temp=2*3+5-8 store 0 to X1 X2 Y1 Y2?temp ?X1,X2,Y1,Y25 0 0 0 0?type(’temp’) 所以其数据类型为数值型N3.一维数组:DIMENSION X(3) 二维数组:DIMENSION a(2,3)未赋值时: dimension x(3) 未赋值时: dimension a(2,3)?type (’x(3)’) ?type (’a(2,3)’)L 所以是逻辑型 L赋值时: dimension x(3) 未赋值时: dimension a(2,3)x(1)=2 a(2,3)=’world’x(2)=4 ?a(2,3)store x(1)+x(2) to x(3) world? x(3)64.字符整理函数 ?LEN(’’HELLO’’) 5 C的长度系统测试函数 ?FILE(”student.dbf”) 测试制定文件是否存在数值型函数 ?ABS(-2,0) 2.0 绝对值5.? Empty (0) T6. ① x=3 ② a=3y=10 b=5? loy(abs(-y))+exp(x*y)*(1-sqrt(y)) c=2-23107125253585,2800 ?sqrt (a*(x^2)+b*x+c)6.637.关系表达式逻辑表达式? ”Z”>[z] 例. ”Z”>[z].AND (’ABCLL’=’ABC’.OR.3^2.T. =LEN([VISUAL FOXPRO])? 3^2!=LEN([VISUAL FOXPRO]) .T..T. (’ABCLL’=’ABC’.OR.3^2!=([VISUALFOXPRO])实验报告学院:专业:年级:姓名:学号:实验室号:计算机号:实验日期:年月日指导教师签字:成绩:报告退发 (订正、重做)实验三:表与数据库的基本操作(验证性,6学时)一、实验目的1.数据库的建立,表的建立;2.表的完整形约束、数据库和表的打开关闭;3.表记录的插入、修改和删除;4.表记录的显示以及记录的定位;5.记录的排序,单索引和复合索引的建立,索引的使用方法;6.多工作区的使用,表间关联的建立.二、实验内容1.在“学生成绩”项目中建立“学生成绩”数据库;在学生成绩数据库中建立“学生”、“成绩”、“课程”三个数据库表并输入一些相应的数据;在“学生成绩”项目中建立自由表 ABC.dbf;并将这些表从项目中移出或移入;2.对“学生”表设置如下的约束(字段有效性):学号不能为空,为空时提示信息:“必须输入学号”、奖学金的默认值为200;对课程表设置如下约束(记录有效性):课时>=学分*20;3.对上述三个数据库表进行数据增加、删除(包括逻辑删除和物理删除)和修改操作;4.用菜单的方法进行表记录的定位,指出什么是当前操作记录;5.将学生表的学号设定为主索引,升序排列;成绩表的学号和课程号作为普通索引,在表中要有一个学生有多门课的成绩、多个学生有同一门课的数据的条件下试试这两个字段能否作为主索引;课程表的课程号作为主索引,降序排列并对该表察看索引结果;对学生、成绩、课程三个表建立永久性关系;6.用命令对学生表的学号建立独立索引文件、对成绩表的学号建立非结构化复合索引文件;7.利用数据工作期建立学生表、成绩表和课程表的关联,使得指针在“学生”表的浏览窗口中移动时,在“成绩”的浏览窗口中同步显示与该学号有关的成绩信息、在“课程”表的浏览窗口中同步显示该生相应成绩的课程名的纪录.三、实验环境8.硬件:学生用微机、局域网环境9.软件:Windows 2000中文操作系统、Visual Foxpro 6.0实验三:表与数据库的基本操作1.(1)打开“学生成绩”项目,选定“数据库”后点击右边的“新建”,弹出“新建数据库”对话框,然后选择“新建数据库”,在“创建”对话框中的数据库名中键入“学生成绩”,最后保存.选定“学生成绩”数据库下拉栏中的“表”后点击右边的新建,弹出“新建表”对话框,然后选择“新建表”弹出“创建”对话框,在该框的输入表名栏中键入“学生”后保存,用同样的方法分别建立“成绩”“课程”表.依次选定“学生”“成绩”“课程”表点击右边的“修改”,然后在弹出的对话框中依次分别输入一下数据(2)打开“学生成绩”项目,选定“数据库”下拉栏下的“自由表”后点击右边的新建,弹出“新建表”对话框,选择“新建表”后在弹出的对话框的输入表名栏中输入“ABC”并保存,后在该表随便输入数据后“确定”.要移出则选定该自由表后选择右边的“移去”即可.2.(1) 先选定“学生”表选择右边的“修改”在弹出的表中选择“学号”后选定在“字段有效性”下“规则”后面的,此时弹出“表达式生成器”在该对话框中的“字段”下选定“学号”,在”逻辑”的下拉中选定“<>”,此时在“有效性规则”下的框中有“学号 <>”,然后在此后面加上引号(注意:引号必须是在无输入法的情况下输入),最后选定“确定”(2)先选定“课程”表选择右边的“修改”在弹出的表中选择“课时”后选定在“字段有效性”下“规则”后面的,此时弹出“表达式生成器”在该对话框中的“字段”下选定“课”,在”逻辑”的下拉中选定“>=”,此时在“有效性规则”下的框中有“课时 >=”,然后在此后面加上“学分*20”最后选定“确定”3. 打开“学生表”,点击“显示”菜单中的追加方式,便可对数据进行增加进入表“浏览”窗口,点击“删除”标记栏被逻辑的记录就加上了“删除”标记,如要恢复则点击“删除”标记栏;物理删除:先对删除的记录做逻辑删除,选择“表”“菜单”“彻底删除”,在“系统”中选“是”则记录将被彻底删除在“项目管理器”中选择要修改的表名,单击“修改”,进到“表设计器”进行修改4.在“浏览”窗口中选择“表”的转到记录,即可将指针移动到相应的记录上5.(1)在项目管理器学生成绩点击学生表→显示→表设计器→索引→在索引名处输入"学号"→类型输入主索引→排序为升序→确定(2)以同样的方法将成绩表和课程表进行设置(3)打开数据库设计器在学生表中找到学号→按住学号拖到成绩表中的学号→按住课程表中的课程号→拖到成绩表的课程号中永久关系建立6.(1)在项目管理器学生成绩中选中学生表→在命令窗口输入"Index on 学号To 文件名"→按 Enter键(2)在项目管理器学生成绩中选中学生表→在命令窗口输入"Index on学好TAG文件名→按 Enter键7.窗口数据工作期→别名处点击学生关系→别名处点击成绩→表达式生成器→确定→别名处点击课程关系→关闭窗口实验报告学院:专业:年级:姓名:学号:实验室号:计算机号:实验日期:年月日指导教师签字:成绩:报告退发 (订正、重做)实验四:查询与视图(验证性,6学时)一实验目的1.顺序查询和索引查询的基本方法2.求和,平均数、分类汇总等统计方法3.使用查询设计器建立查询4.用SQL命令完成各种数据库操作二实验内容1.掌握顺序查询命令Locate和索引查询命令seek的使用方法,并针对student表,举例说明之;2.掌握求和命令SUM、求平均值命令AVERAGE的使用方法;并针对student表按专业统计奖学金总和和按学生性别统计奖学金平均值;3.用查询设计器建立查询文件INQUA.QPR.根据表student.dbf和grade.dbf,查询“计算机”专业中男生的各门课程(即要按课程号分组)的平均成绩,显示字段依次为“课程号”和“平均成绩”两列,以两表中的学号字段进行内部连接,,并要求按课程号的升序显示;4.利用set relation 命令建立表间临时关系:子表为student.dbf,父表为grade.dbf,要使得当浏览父表的纪录时子表中相应的记录会跟着联动;并且在命令窗口中输入如下命令观察结果:brow field 学号,student.姓名,student.专业,课程号,成绩5.用SQL命令实现如下查询(在实验步骤中写出相应的命令,在调试和结果分析中对该命令的各个部分进行解释):(1)查询Student表中所有的学生信息;(2)查询Student表中计算机专业的学生的最高奖学金、最低奖学金和平均奖学金;(3)对Student表按专业统计奖学金,即查询按专业分组的各专业的奖学金总和(提示:select 专业,sum(奖学金) as 奖学金合计……)(4)从student表和grade表中查询学生的学号、姓名、课程号、成绩;(5)从student表、grade表和course表中查询学生的学号、姓名、课程名、成绩(提示:……from student,grade,course where student.学号=grade.学号 .and. grade.课程号=course.课程号);实验四:查询与视图1、(1)在学生表中查询定位1981年出生的学生记录在命令窗口输入:USE 学生LOCATE ALL FOR YEAR (出生日期)=1981?RECNO(),FOUND(),EOF()CONTINUE?RECNO(),FOUND(),EOF()(2)在学生表中索引查询金融专业学生的姓名在命令窗口输入:USE 学生INDEX ON 专业 TAG 专业索引SEEK”金融”?姓名2、(1)在学生表中统计计算机专业学生奖学金的总和(2)在学生表中统计男生的平均奖学金在命令窗口分别输入:sum奖学金for专业=”计算机”to奖学金总和average奖学金for性别=.t. to平均奖学金3、(1)在VFP中点击文件→新建→查询→新建文件;(2)在添加视图或视图对话框中选择“学生和“成绩”表→添加→在“连接条件”对话框中单击确定;(3)选择“字段”选项卡在“可用字段”列表框中选取“成绩.课程号”并添加到“选定字段”列表框中.单击“函数和表达式”右侧按钮→在“表达式生成器”对话框生成函数中输入“AVG(成绩.成绩)”→单击确定→在“字段”选项卡中添加到“选定字段”列表框中;(4)选择“筛选”选项卡→选定字段名“学生.专业”、条件“=”,并输入实例“计算机”、逻辑“AND”→选定字段“学生.性别”、条件“=”,并输入实例“.T.”;(5)选择“排序依据”选项卡→在“选定字段”列表框中选取“成绩.课程号”并添加到“排序条件”列表框中;(6)选择“分组依据”选项卡→在“选定字段”列表框中选取“成绩.课程号”并添到“分组字段”列表框;(7)在“查询”菜单中选择“查询去向”→在“查询去向”对话框中选择查询结果的输出去向→“浏览”;(8)单击常用工具栏上的“运行”按钮就可以得到查询结果;(9)保存查询,键入查询文件;(10)关闭查询设计器,结束查询设计4、在命令窗口输入:OPEN DATABASE学生成绩SELECT()UAE学生 ALL AS 学生INDEX ON 学号 TAG学号索引SELECT()USE 成绩SEL RELATION TO 学号 INTO 学生BROWSE FIELDS学号,学生.姓名,学生.专业,课程号,成绩5、(1)SELECT*FROM 学生(2)SELECT MAX(奖学金)AS 最高奖学金;MIN(奖学金)AS最低奖学金;AVG(奖学金)AS平均奖学金;FROM学生WHERE专业=“计算机”(3)SELECT专业,SUM(奖学金)AS奖学金合计FROM学生GROUP BY专业(4)SELECT学生.学号,学生.姓名,成绩.课程号,成绩.成绩FROM学生INNER JION成绩ON学生.学号=成绩.成绩.(5)SELECT学生.学号,姓名,成绩.课程名,成绩;FROM学生,成绩,课程;WHERE学生.学号=成绩.学号 AND 成绩.课程号=课时.课程号实验报告学院:专业:年级:姓名:学号:实验室号:计算机号:实验日期:年月日指导教师签字:成绩:报告退发 (订正、重做)实验五:程序设计基础(验证性,4学时)一实验目的1.选择结构程序设计2.循环结构程序设计3.过程和自定义函数的定义与调用二实验内容1.编写一段利用Messagebox()函数的程序,按钮类型为“是”、“否”、“取消”,图标为询问,默认按钮是“取消”,提示信息为“你真的要进行此操作吗?”,当按下“是”时,系统给出“你选择的是“是”;当按下“否”时,系统给出“你选择的是“否”;当按下“取消”时,系统给出“你选择的是“取消””.这些系统给出的信息也用Messagebox()函数实现,只要一个确定按钮,每次按确定后即退出该程序;2.应用循环结构的命令编写一段程序,运行时在VFP主窗口输出如下图形:****************3.IIF()函数的语法为:IIF(逻辑表达式,表达式1,表达式2)功能:如果逻辑表达式的值为真,则返回表达式1的值,否则返回表达式2的值.和以下程序等价的IIF()函数要如何写(提示:用Y=IIF(逻辑表达式,表达式1,表达式2)的形式表达,其中表达式1或表达式2也可以是IIF()函数)?IF X>0Y=1ELSEIF X=0Y=0ELSEY=-1ENDIFENDIF4.编写一个求面积的程序,其中求各种面积(三角形((底*高)/2)、梯形((上底+下底)*高/2)、圆(3.14*半径^2)、正方形(边长*边长)、矩形面积(长*宽))的过程用过程文件保存,通过主程序调用这些过程文件中的过程实现面积的求解;5.理解参数传递中的按值传递和按地址传递的区别:有以下两个主程序和一个外部过程(文件名为SUBPRG):第一个主程序如下(文件名为AA.PRG)CLEARA=”您好!”DO SUBPRG WITH A? A第二个主程序如下(文件名为BB.PRG)CLEARA=”您好!”DO SUBPRG WITH (A) &&与AV.PRG不同之处就是这里的括号)? A外部过程如下(文件名为SUBPRG):PARAMETER X? XX=”谢谢关照”RETURN分别运行上面的主程序,并察看其结果,说说结果为何不同.6.理解变量作用域:运行以下程序并分析结果.CLEARX=10Y=20DO SUB? X , YRETURNPROCEDURE SUBPRIVATE XX=100Y=30? X , YENDPROC7.编写一个求阶乘的自定义函数,并求1!+2!+3!+…+10!的值.三实验环境1.硬件:学生用微机、局域网环境2.软件:Windows 2000中文操作系统、Visual Foxpro 6.0四实验步骤(描述实验的具体操作步骤和方法,内容见后附的手写部分)五实验调试与结果分析(内容见后附的手写材料)六总结(内容见后附的手写材料)实验五:程序设计基础1、在VFP中点击新建程序新建文件在程序1中输入如下程序:ClearX=messagebox(“你真的要进行此操作吗?”,3+32+512)If x=6Messagebox(“你按下的是“是””)ElseIf x=7Messagebox(“你按下的是“否””)ElseMessagebox(“你按下的是“取消””)EndifEndif2、在程序中输入如下程序:ClearSt=”*******”K=4Do while k>=1?space(4-k)+left(st, 2*k-1)K=k-1End do5. 在程序中输入:Procedure pinput“请输入三角形的高度:”to shinput“请输入三角形的底长:”to sds=sd*sh/2?“三角形的面积:”??sReturnEndprocProcedure tinput“请输入梯形的上底:”to tuinput“请输入梯形的下底:”to tlinput“请输入梯形的高度: to ths=(tu+tl)*th/2?“梯形的面积:”??sReturnEndprocProcedure yinput“请输入圆的的半径:”to yrs=3.14*yr^2?“圆的面积:”??sReturnEndprocProcedure zinput“请输入正方形的边长:”to zx s=x*x?“正方形的面积:”??sReturnEndprocProcedure jinput“请输入矩形的长:”to jxinput“请输入矩形的边宽:”to jys=x*y?“矩形的面积:”??sReturnEndproc7、依次计算1!、2!、3!…..10!在程序中输入如下程序:ClearFor i=1 to10?”fac(“+str(1, 2)+”)=”,fac(i) Endforreturnfunction facparame ters nprivate ip=1for i=1 to n p=p*iendforreturn pendfuncs=0t=1for i=1 to 10 t=t*is=s+tendfor?”s=”, sreturn实验报告学院:专业:年级:姓名:学号:实验室号:计算机号:实验日期:年月日指导教师签字:成绩:报告退发 (订正、重做)实验六:表单控件和面向对象程序设计(综合性,6学时)一实验目的1.表单设计器的操作2.事件的编写3.表单向导的使用4.表单及常用控件(文本框、组合框、列表框、页框等等)的设计二实验内容1.(1)新建一个表,表名为:七律长征.dbf,表的字段只有一个:诗词,字段的长度、数据类型自己根据实际内容确定,每条记录的内容为该诗的一句;(注:诗词为:红军不怕远征难,万水千山只等闲.五岭巍峨腾细浪,乌蒙磅礴走泥丸.金沙水拍云崖暖,大渡桥横铁索寒.更喜岷山千里雪,三军过后尽开颜.)(2)新建一个表单,外形如图:Form1的标题为七律长征;label1的标题为“请背诵毛主席的诗《七律长征》”;label2的标题为“忘记时可点击以下按钮将给出提示”;文本框一个,要求首次运行时不能出现任何诗句(提示:采用在Form1的init 事件中编写如下代码的方法加以实现:go bottom↙ skip,这里↙表示按下Enter键);用命令按钮组做四个命令按钮,第一个按钮的标题是“首句”,第二个为“上一句”,第三个为“下一句”,第四个为“末句”;(3)要求运行时点击“首句”按钮则文本框会出现该诗的第一句,点击“上一句”按钮,则文本框显示当前诗句的上一句(如果记录指针指向第一条记录,则画面上要给出提示:“本局是首句”),点击“下一句”按钮,则文本框显示当前诗句的下一句(如果记录指针指向最后一条记录,则画面上要给出提示:“本局是末句”),点击“末句”按钮则文本框会出现该诗的最后一句.表单保存为:七律长征.scx.2.设计如图所示的表单:要求如下:(1)运行时,当按下按钮1时,按钮1的Enabled属性变为.F.,按钮2的Enabled属性变为.T.;反过来,当按下按钮2时,按钮2的Enabled属性变为.F.,按钮1的Enabled属性变为.T..(2)根据对象引用的规则,要采用到如下这些引用:this.enabled,mandx.enabled(x代表1或2),mandx.enabled(x代表1或2)(3)指出容器控件及容器嵌套层次3.通过表单向导,建立一个一对多表单,以查询学生选修的课程和成绩:其中,父表为student.dbf,子表为grade.dbf.4.新建表单cjcx.scx,界面如下图,要求如下:(1)表单Form1的数据源是grade.dbf,表单上有标签、文本框、按钮、表格等控件,表格中共三列,如上图所示;(2)该表单完成按学号的查询,请编写适当代码实现在点击“查询”按钮后,表格Grid1中显示对应查询学号的各门课程的成绩,文本框Text2中显示对应的平均成绩.5.设计一个迎接2008年北京奥运会倒计时的表单界面如下:Form1的标题为“2008北京奥运会倒计时”,运行时居中;Label1的标题为“今天距北京奥运会开幕还有”,字体为宋体,字号为16,加粗;Text1为只读,字号为16,加粗;Label2标题为“天”,字体为宋体,字号为16,加粗.运行时直接将显示距2008北京奥运会开幕所剩的天数.(提示:2008北京奥运会开幕的日期为2008年8月8日,利用两日期相减,可求出这两个日期之间的天数的方法计算,可将该计算过程写在Form1的Init事件中.思考一下:如果将该过程写在Form1的Load事件中行不?)6.设计一个时钟,画面如下:Form1的标题为“日期时间”,运行时居中;Label1的标题为 =ttoc(datetime()) ,注意要有等号(其中TTOC()函数是将日期时间类型的数据转换成字符型的数据的函数);在表单上添加一个时钟控件;要求运行时时钟会按秒变化.(提示:在时钟控件的Timer事件中编写如下过程:bel1.caption=ttoc(datetime()),Timer1控件的Interval属性设为1000.该属性是指定调用计时器事件的间隔,以毫秒为单位,1000即为1秒,正是题目所要求的)7.表单Form1上有一朵花的图像,单击表单的空白处,该图象将移到单击处.请编写相应的事件代码.8.设计如下的表单:从组合框中选择用户,组合框的数据源为account.dbf的“user”字段;输入密码,输入时不能显现出密码,只能用*代替;单击“确定”时,如果密码正确,则弹出“欢迎登录”消息框,否则弹出“口令不正确,请再试一次”消息框,如果口令三次都不正确,则自动退出该表单(每个用户的密码已经事先存放在account.dbf表的password字段中).account.dbf的内容:三实验环境3.硬件:学生用微机、局域网环境4.软件:Windows 2000中文操作系统、Visual Foxpro 6.0四实验步骤(描述实验的具体操作步骤和方法,内容见后附的手写部分)五实验调试与结果分析(内容见后附的手写材料)六总结(内容见后附的手写材料)。
VF学生实验报告(数据查询)
group by图书分类表.分类号;
order by最高价格desc
5)select * from图书表;
where图书名称like "%Java%"
6)select图书编号,出版时间,入库时间,图书名称from图书表;
where入库时间between {^1992-01-01} and {^2000-12-31};
9)select姓名from读者表;
where读者编号not in(;
select读者编号from借阅表;
where是否归还=.F.)
10)select图书名称,库存数量from图书表;
where分类号="001"
11)select图书名称,库存数量from图书表
12)select图书编号,读者编号,借阅日期,归还日期,是否归还from借阅表;
2)select读者编号,姓名,性别from读者表;
where工作单位="江西财经大学国际学院"
3)select读者表.读者编号,姓名,工作单位from读者表,借阅表;
where读者表.读者编号=借阅表.读者编号;
and是否归还=.f.
4)select图书分类表.分类号,max(单价)最高价格,avg(单价)平均价格from图书分类表,图书表;
(4)查询借阅了“清华大学出版社”所出版图书的读者的编号、读者姓名、图书名称、借书日期和归还日期。
(5)查询没有借阅图书的读者的编号、读者姓名和工作单位。
(6)查询至少借阅了3本图书的读者的编号、读者姓名,所借图书编号和图书名称,并按读者编号排序输出。
(7)查询借书时间在2005~2006年间的读者的编号、读者姓名,图书编号和图书名称。
第六章查询与视图Visual FoxPro VFP计算机等级考试教学课件
图4.4 筛选记录对话框
单击【下一步】按钮,进入【查询向导】的最后一 步操作——排序记录。这步用来设置查询输出结果的排列顺序。 用户最多可以选择三个字段或一个索引来确定查询结果的排序
顺序(如图4.6所示)。
图4.5 排序记录
若查询的数据源是视图,在选定排序字段之后, 还可以进入到一个【限制记录】对话框。此对话 框的主要功能是进一步限定查询所包含的记录。
USE STUD
CALC CNT(),AVG( 奖 金 ),MAX( 奖 金 ),AVG( 工 资 总 额),MAX(工资总额) TO X1,X2,X3,X4,X5
** 分类汇总
【 格 式 】TOTAL TO < 汇 总 文 件 名 > ON < 关 键 字 段 > [FIELDS <字段名表>] [<范围>] [FOR <逻辑表达式1>] [WHILE <逻辑表达式2>] [NOOPTIMIZE]
【说明】LOCATE 命令在表指定范围中查找满足条件的第一 条记录。
<逻辑表达式1>:表示所需满足的条件。 <范围>:指定查找范围,缺省时为ALL,即在整个表文件 中查找。
找到第一条满足条件的记录后,记录指针指向该记录, 并将函数FOUND()(用于检测是否找到满足条件的记录) 置为.T.;否则,记录指针指向<范围>的底部或文件结束标 志,并且将函数FOUND()置为.F,并在状态栏给出提示信 息“已到定位范围末尾”。
第四章
查询与视图
4.2 创建查询
4.2 .1 顺序查询 4.2.2 索引查询 4.2.3 用【查询向导】建立查询 4.2.4 用【查询设计器】创建查询
VF 查询和视图
查询和视图查询时预先定义好的一个SQL SELECT语句,可以反复或直接使用,是从表或视图中提取满足条件的记录1、建立查询(文件扩展名.QPR,是一个文本文件,可以编辑建立)命令方式:CREATE QUERY——查询设计器建立查询菜单方式:文件——新建——查询——查询设计器建立查询……查询设计器中的选项卡:字段、联接、筛选、排序依据、杂项同SQL语句:SELE 字段FROM 表1 INNER JOIN 表2 ON WHERE 条件ORDER BY1)“字段”选项卡对应于SELE 短语2)“联接”选项卡对应于3)“筛选”选项卡对应于WHERE短语4)“排序依据”选项卡对应于ORDER BY5)“分组依据”选项卡对应于GROUP BY6)“杂项”选项卡对应于如TOP N(前几条记录)或N PERCENT(百分比),去掉重复记录(DIST)等注意:怎样用活输入和编辑计算表达式?其他:查询去向设置要点查询建立后保存文件名.QPR,是一个文本文件要点(加扩展名)如已经建立好一个查询文件CHAXUN.QPR 运行DO CHAXUN.QPR如:新建一个查询CHAXUN,查询考试成绩大于等于60分的学生的学号,姓名,课程名,成绩,结果按学号升序,保存到数据表ABC.DBF示范操作:用查询设计器设计,运行查询并显示结果编写SQL语句可以借助查询设计器查询设计器的局限性:复杂的查询不能用查询设计器设计自己也可以写SQL语句是:SELE 学生.学号,姓名,课程名,成绩FROM学生INNER JOIN选课INNER JOIN课程;ON选课.课程号=课程.课程号ON 学生.学号=选课.学号WHERE成绩>=60;ORDER BY学生.学号INTO TABLE ABC或SELE 学生.学号,姓名,课程名,成绩FROM学生,选课,课程;WHERE 选课.课程号=课程.课程号AND 学生.学号=选课.学号;AND成绩>=60;ORDER BY学生.学号INTO TABLE ABC视图设计器1、基本同查询设计器,兼有“表”(更新)和“查询”(一个或多个相关表中提取有用信息)的特点,虚拟表,但不可以用MODI STRU 命令修改结构2、建立视图CREA VIEW 打开视图设计器建立视图菜单方式:文件——新建——视图——视图设计器建立视图可以用SQL命令直接建立视图:CREA VIEW ……AS……要点:视图存在于数据库中(只有在有打开数据库的情况下才能建立视图)视图和查询的区别:(要点)1、找不到视图文件,其结果必须保存在数据库中2、多“更新条件”选项卡3、没有“去向”的问题。
VFP课件之ch4_查询和视图精品文档49页
用命令方式创建和运行查询文件
一、创建查询文件 1、在命令窗口输入命令:
MODIFY COMMAND 文件名.QPR
2、在编辑窗口输入一条SELECT-SQL命令 3、关闭编辑窗口保存查询文件 二、用命令方式运行查询文件
在命令窗口输入命令:
DO 文件名.QPR 注意:查询文件的扩展名.qpr 不可以省ELECT-SQL命令 SELECT-SQL应用举例
4.4 视图的创建和使用
用视图设计器创建本地视图 用命令方式创建本地视图 视图的使用
查询的本质
“查询”(Query),是指向一个数据库发出的检 索信息的请求,它根据给定的条件提取特定的记录。
创建基于一个表的查询
1、打开查询设计器 2、 添加表或视图 3、定义查询的输出内容 4、设置分组依据 5、设置排序依据 6、对查询结果的其它设置 7、设定查询去向 8、保存查询文件 9、运行查询文件
“查询去向”对话框
浏览: 在浏览窗口显示查询结果
临时表:在临时只读表中存储查询结果
INTO CURSOR TEMP01
1、打开查询设计器 2、 “添加表或视图” 3、定义查询的输出内容 4、设置筛选条件 5、设置排序依据 6、保存查询文件 7、运行查询文件
创建基于一个表的查询
【例2】基于学生表,查询各班级的男女 生人数及各自所占比例,要求输出字段为: 班级(bjbh)、男生人数、男生比例、女生 人数、女生比例,按班级的升序排列,在主 窗口中显示前30%的记录。
第4 章
查询和视图
4.1 查询和视图概述 4.2 查询的创建和使用 4.3 SELECT – SQL语句 4.4 视图的创建和使用
visualfoxpro数据库查询与视图
3.记录级规则主要包括记录有效性、触发器的设置和表注释。
每逢星期一才可做插入、追加、 更新和删除记录的操作:
“教授的基本工资要≥1650元,其 他职工为:
CDOW(DATE())="Monday"
学习 教程 教材 分享】GOOD
多媒体课件【友5情50≤基本工资≤3000"
GOOD STUDAY,
10
6
分享】GOOD GOOD STUDAY,
6.浏览数据库文件
浏览数据库rsgzk.dbc的命令如下:
CLOSE DATABASE ALL&&浏览前首先关闭.DBC文件
USE rsgzk.dbc
&&打开数据库文件必须指明扩展名. DBC
BROWSE
学习 教程 教材 多媒体课件【友情
7
分享】GOOD GOOD STUDAY,
(1)按照表4-7和表4-8建立部门代码表(bmdm)和增资表(zz)结构, 并输入记录数据。
(2)建立数据库rsgzk.dbc。
(3)添加表rsb.dbf、gzb.dbf、bmdm.dbf和zz.dbf 。
学习 教程 教材 多媒体课件【友情
3
分享】GOOD GOOD STUDAY,
2.用命令方式建立数据库
删除规则:是指删除父表中的记录时使用的规则,包括级联、 限制和忽略3种。
插入规则:是指在子表中插入新的记录,或更新已存在的记录 时所用的规则,包括限制和忽略2种。
学习 教程 教材 多媒体课件【友情
13
分享】GOOD GOOD STUDAY,
级联 限制 忽略
更新规则
删除规则
插入规则
当父表中的关键字 当父表的记录被删 值被修改时,系统 除时,系统相应的 用新的关键字值更 删除子表中所有相 新子表中所有相关 关记录 记录
VFP第四章查询视图
Full Join:指定将所有满足和不满足条件的记 录都包含在查询结果中。
▪ [字段名]用来设置联接两的字段或表达式. 注:此外建立联接的字段不一定是表中的 索引,除备注字段和通用字段外,可在任意 字段间建立联接.
D.CREATE VIEW myview SELECT * FROM 歌手 WHERE LIKE(“1”,歌手号)
用于分组的字段不一定是选定输出的字 段,但分组字段不能是一个计算字段。
可以用 满足条件… 来对分组结果进行 进一步筛选。
(6)“杂项”选项卡 用于指定是否要对重复记录进行检索,是 否对返回记录结果的最大数目或最大百分 比作限制。 [列在前面的记录]:
选择”全部”,则表示查询记录范围是全部记录. 不选择”全部”时,下面选项变为可用,可在记录个 数微调框中,选择或输入查询范围的记录个数.选 中”百分比”复选框,则[记录个数]微调框变为[百分 比]微调框
一个相匹配,这些样本由逗号分隔.
[实例]:是一个文本框,要注意在实例框中输入 不同数据类型时的格式: 1) 字符串可以不带引号(当与源表中的字段名
相同时才用引号); 2) 日期型数值要用{^ }括起来; 3) 逻辑型数据两侧要带“ .”号,如 .T.,.F. [大小写]:指定在条件中与实例的比较是否区分 大小写.选中表示不区分大小写. [逻辑]:将两个筛选条件用逻辑运算符AND或OR 连接.
▪ 4.查询的建立,见上机演示。
查询设计器
2. 查询设计器的使用
使用查询设计器中的“页面”选项 修改查询(定义输出的内容)
(1)“字段”选项卡 用于选取最后在查询结果中输出的字段。 选取的字段对象可以是一个表中的字段,多 个表中的字段或某个字段的表达式,如对某 一数值型字段的求和或求平均值.
VFP 第四章 查询和视图
第二节 视图的创建和使用
视图可以从表中提取一组记录,查看、改变这些记录, 并把更新的数据送回到原表中。 视图具有表和查询的共有特点,视图中的源表数据表 称之为“基表”(Base table) 可以创建两种视图:本地视图和远程视图。 远程视图使用SQL语法从远程数据源表中选择信息, 本地视图使用VFP的SQL语法从视图或表中选择信 息,可以将一个或多个远程视图添加到本地视图。 ODBC(open database connectivity)是一种用于数据库 的标准协议,通过他可访问多上 count(*) as 人数, AVG(table2.score) as “均分”; C)进一步的, 如果还想对查询结果进行记录的筛选,如仅想统 计男生或女生的平均分数及人数,可以在满足条 件选项里选择相应的条件,此时SELECT_SQL语 句会加上 having table1.sex=“男” 7)对查询结果的其他设置 A) “杂项”选项卡包含 《有无重复记录》 B)《设置记录的范围》共有:全部 / n个数 / 百分比 三个选项。 8) 运行查询 “!”按钮 / do example1.qpr / 查询->运 行查询 等方法。
第一节 查询的创建和使用
一:查询的本质 1)查询是指向一个数据源发出检索信息的请求,它 依据一定的条件提取特定的记录,查询运行的结 果是一个基于表和视图的动态 的数据集合。 2)创建查询基于的数据源可以是自由表、数据库表、 或另一个视图。并且常常不止一个表——方能显 出查询优势。 3)一个查询是SELECT_SQL语句,一个查询保存为 一个扩展名为 .qpr的文件。文件中保存的是实现查 询的SELECT_SQL语句(程序),而不是查询结 果。查询和视图本质上都是SELECT_SQL命令的 可视化 的设计方法。
VFP第4章 查询和视图
说明:查询文件的扩展名.qpr不可缺省 说明:查询文件的扩展名 不可缺省
注意事项
没有用到的表不要添加。 没有用到的表不要添加。 “分组依据”的设置(什么时候设?如何设?) 分组依据”的设置(什么时候设?如何设?) 分组依据 “筛选”与“满足条件”的区别。 筛选” 满足条件”的区别。 筛选 “前n个(前百分之 个)”时要排序。 前 个 前百分之n个 时要排序。
详细语法格式
SELECT [ ALL | DISTINCT ] ; [ TOP 数值 [ PERCENT ] ; 输出数据项 [ AS 标题 ] ; FROM 数据源表 ; 联接类型 JOIN 表名 ON 联接条件 ; INTO | TO 输出去向 ; WHERE 筛选条件 ; GROUP BY 分组依据 ; HAVING 分组结果筛选条件 ; UNION [ALL] 另一条SELECT-SQL语句 ; ORDER BY 排序依据
基于单个表的查询示例
表中所有教师的工号和姓名。 【例1】显示 表中所有教师的工号和姓名。 】显示JS表中所有教师的工号和姓名 表中学号以“ 开头的学生情况。 【例2】显示 表中学号以“01”开头的学生情况。 】显示XS表中学号以 开头的学生情况 【例3】基于 】基于KC表查询所有不带删除标记且课时 表查询所有不带删除标记且课时 数超过5或课时数少于 或课时数少于3(不包括5和 )的课程。 数超过 或课时数少于 (不包括 和3)的课程。 要求输出字段为: 要求输出字段为:kcdh、kcm、kss、bxk、xf, 、 、 、 、 , 查询结果按kss降序排序 降序排序。 查询结果按 降序排序。 【例4】统计各个系男女教师的人数,输出字段为: 】统计各个系男女教师的人数,输出字段为: xdh、xb、人数。 、 、人数。
vfp的查询和视图
二、视图的创建和使用
视图的概念:把分散在相关表中的数据通过联 接条件把他们收集到一起,构成一张“虚表”。 这张“虚表”就是视图,视图是数据库的一个组 成部分,是基于表的并且可更新的数据集合
视图与查询的区别:视图除了可以用来查询数 据之外,还可以当作表来使用,可以作为数据源, 也可对查询出来的数据进行修改并送回源表中
❖多表查询的创建:步骤 例题 ▪ 若有2张以上的表,在添加时一定要注意先后次 序,“纽带表”要放在两张“父表”之间 ▪ 若已进行了永久性关系的设置,则无须进行联接 ▪ 修改联接条件可在“查询设计器”—“联接”卡 片中进行 ▪ 联接条件和筛选条件类似,都是选出符合条件的 记录;不同的是筛选是将字段值和筛选值进行比 较,而联接条件是将一张表中的字段值与另外一 张表中的字段值进行比较
❖查询时会考到的最难的程度如下例:
查询信息管理系中所有成绩在480分以上,并且各门课程的成
绩不低于70分的学生。要求在查询的结果中包含学号,姓名, 总分,均分,最低分,并按照总分从高到底排列
❖ 一部分查询的练习 1. 查询学生的学号,姓名,系名,总分和平均分, 按照系名升序排序,同一个系的学生按照总分 降序排序。 2. 查询每个系每门课程的总分和平均分,要求输 出课程名,课程代号,系名,每个系的平均成 绩和总成绩,按课程代号升序排序 3. 查询各个系每位教师的课时数,要求输出系名, 工号,姓名,课时数,并按系名升序排序,同 一个系的教师按照工号升序排序 4. 查询计算机科学系各位教师的课时数,要求输 出工号,姓名,系名,课时数,并按工号降序 排序,并且将查询信息保存为表,表名为: