VF答案完整版

更新时间:2024-06-25 22:36:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

第一套—基本操作

“规则”框中写:数量>0 and 数量<9999(注意:不加定界符),在“信息”框中输入:“数量超范围”(注意:必须加定界符)

1. 用SQL语句完成下列操作:列出所有与\红\颜色零件相关的信息(供应商号,工程号和数量),并将检索结果按数量降序排序存放于表supply_temp中。

答案: SELECT 供应商号,工程号,数量;

FROM 零件,供应 WHERE 供应.零件号=零件.零件号; AND 颜色=\红\ORDER BY 数量 desc; INTO DBF supply_temp

在表单的rightclick事件中输入:do menu_quick.mpr,保存并运行表单。

SELECT 零件名, 颜色, 重量 FROM 供应 , 零件 where 供应.零件号 = 零件.零件号; And 工程号 = thisform.text1.value order by 零件名 into table pp thisform.grid1.recordsource=\第二套 ——基本操作

2.设计一个表单MYFORM4,表单中有两个命令按钮\查询\名称为Command1)和\退出\名称为Command2)。

(1) 单击\查询\按钮,查询BOOKAUTH数据库中出版过三本以上(含三本)图书的作者信息,查询信息包括:作者姓名,所在城市;查询结果按作者姓名升序保存在表NEW_VIEW4中。

SELECT 作者姓名,所在城市 FROM authors,books ; WHERE Authors.作者编号 = Books.作者编号;

GROUP BY 作者姓名 HAVING COUNT(Books.图书编号) >= 3; ORDER BY 作者姓名;

INTO TABLE NEW_VIEW4

(1) 首先将BOOKS.DBF中所有书名中含有\计算机\个字的图书复制到表BOOKS_BAK中,以下操作均在BOOKS_BAK表中完成; (2) 复制后的图书价格在原价格基础上降价5%;

(3) 从图书均价高于25元(含25)的出版社中,查询并显示图书均价最低的出版社名称以及均价,查询结果保存在表new_table4中(字段名为出版单位和均价)。

SELECT * FROM BOOKS WHERE 书名 LIKE \计算机%\UPDATE BOOKS_BAK SET 价格=价格*0.95

SELECT TOP 1 出版单位,avg(books_bak.价格) as 均价 FROM books_bak; GROUP BY 出版单位 HAVING 均价>=25 ORDER BY 2 INTO TABLE new_table4 第三套-基本操作

为菜单项\查找\设置快捷键Ctrl+T。答案:打开mymenu菜单,选中“文件”,单击“编辑”按钮,为“查找”子菜单设置快捷方式,单击“选项”下的按钮,在弹出的“提示选项”对话框中把光标定位在“键标签”后面的框中,从键盘上按下ctrl+n,确定,最后保存菜单并生成.

1. 用SQL语句完成下列操作:查询与项目号\的项目所使用的任意一个零件相同的项目号、项目名、零件号和零件名称(包括项目号s1自身),结果按项目号降序排序,并存放于item_temp.dbf中,同时将你所使用的SQL语句存储于新建的文本文件item.txt中。 答案:在命令窗口中输入以下命令并执行

SELECT 项目信息.项目号, 项目信息.项目名, 零件信息.零件号,; 零件信息.零件名称 FROM 零件信息 INNER JOIN 使用零件; INNER JOIN 项目信息 ON 使用零件.项目号 = 项目信息.项目号 ; ON 零件信息.零件号=使用零件.零件号 WHERE 使用零件.零件号 IN; (select 零件号 from 使用零件 where 项目号=\

ORDER BY 项目信息.项目号 DESC INTO TABLE item_temp.dbf 新建文本文件,将SQL语句复制过去,注意在保存文本文件时要加上扩展名.txt

设计一个文件名和表单名均为form_item的表单,所有控件的属性必须在表单设计器的属性窗口中设置。表单的标题设为\使用零件情况统计\。表单中有一个组合框(combo1)、一个文本框(text1)和两个命令按钮\统计\(command1)和\退出\(command2)。

运行表单时,组合框中有三个条目\、\、\(只有三个,不能输入新的,RowSourceType的属性为\数组\,Style的属性为\下拉列表框\)可供选择,单击\统计\命令按钮以后,则文本框显示出该项目所用零件的金额合计(某种零件的金额=单价*数量)。

答案: 做好表单后,首先把组合框控件的数据源类型改为“5—数组”,然后将数据源改为相应的数组名,若题目没有要求数组名,可以任取一个如:aa,做好之后,再在表单的load事件(在表到空白处双击)里定义数组: public aa(3) aa(1)=\

aa(2)=\aa(3)=\

在查询按钮的单击事件(即click事件)里输入以下代码: SELECT SUM(零件信息.单价*使用零件.数量); FROM 零件信息 INNER JOIN 使用零件 ; ON 零件信息.零件号 = 使用零件.零件号;

WHERE 使用零件.项目号 = thisform.combo1.value into array bb thisform.text1.value=bb 第四套--——基本操作

4) 修改组合框的InteractiveChange事件代码,使得当用户从组合框选择职员时,能够将该职员所签订单的平均金额自动显示在文本框里。其中,需将命令语句\=m2\改为\=m2\。

在考生文件夹下创建一个下拉式菜单mymenu.mnx,并生成菜单程序mymenu.mpr。运行该菜单程序时会在当前Visual FoxPro系统菜单的\帮助\子菜单之前插入一个\考试\子菜单,如下图所示。 菜单命令\统计\和\返回\的功能都通过执行过程完成。

菜单命令\统计\的功能是以组为单位求订单金额的和。统计结果包含\组别\、\负责人\和\合计\三项内容,其中\负责人\为该组组长(由employee中的\职务\一项指定)的姓名,\合计\为该组所有职员所签订单的金额总和。统计结果应按\合计\降序排序,并存放在tabletwo表中。 答案: 做如图所示菜单,在”显示”—“常规选项”对话框中选:在?之前,在下拉框中选“帮助”,在“统计”菜单项的过程中编写如下代码:SELECT Employee.组别, SUM(Orders.金额) as 合计; FROM 订单管理!employee INNER JOIN 订单管理!orders ; ON Employee.职员号 = Orders.职员号; GROUP BY Employee.组别; INTO TABLE aa.dbf

SELECT Aa.组别, Employee.姓名 AS 负责人, Aa.合计; FROM 订单管理!employee INNER JOIN aa ; ON Employee.组别 = Aa.组别; WHERE Employee.职务 = \组长\ ORDER BY Aa.合计 DESC; INTO TABLE tabletwo.dbf 第五套—基本操作

1. 用SQL语句完成下列操作:检索\田亮\所借图书的书名、作者和价格,结果按价格降序存入book_temp表中。 答案:SELECT Book.书名, Book.作者, Book.价格;

FROM 图书!book INNER JOIN 图书!loans INNER JOIN 图书!borrows ; ON Loans.借书证号 = Borrows.借书证号 ; ON Book.图书登记号 = Loans.图书登记号;

WHERE Borrows.姓名 = \田亮\ ORDER BY Book.价格 DESC; INTO TABLE book_temp.dbf

2. 在考生目录下有一个名为menu_lin的下拉式菜单,请设计顶层表单form_menu,将菜单menu_lin加入到该表单中,使得运行表单时菜单显示在本表单中, 并在表单退出时释放菜单。

答案:新建表单form_menu,表单的ShowWindow属性改为\2-作为顶层表单\。

双击表单空白处,分别输入表单Init和Destroy事件。 ************Init事件中************** DO menu_lin.mpr With This

***********destroy事件中************ Release Menu menu_lin

综合应用:

运行表单时,组合框中有三个条目\清华\、\北航\、\科学\只有三个出版社名称,不能输入新的)可供选择,在组合框中选择出版社名称后,如果单击\统计\命令按钮,则文本框显示出\图书\表中该出版社图书的总数。

答案:步骤1:建立表单,在表单中添加一个组合框、一个文本框和两个命令按钮,并修改各控件的属性,将组合框的rowsourcetype属性改为:1-值,rowsource属性改为:清华,北航,科学,再将组合框的style属性改为:2-下拉列表框,然后双击命令按钮,写入命令按钮的Click事件。

*******\统计\命令按钮的Click事件******

select count(*) from book where 出版社=thisform.combo1.value into array aa THISFORM.TEXT1.VALUE=aa 第六套————基本操作 在考生文件夹下完成如下操作:

1. 用SQL INSERT语句插入元组(\到\零件信息\表(注意不要重复执行插入操作),并将相应的SQL语句存储在文件one.prg中。INSERT INTO 零件信息 VALUES(\

2. 用SQL DELETE语句从\零件信息\表中删除单价小于600的所有记录,并将相应的SQL语句存储在文件two.prg中。

DELETE FROM 零件信息 WHERE 单价<600

3. 用SQL UPDATE语句将\零件信息\表中零件号为\的零件的单价更改为1090,并将相应的SQL语句存储在文件Three.prg中。

UPDATE 零件信息 SET 单价=1090 WHERE 零件号=\

4. 打开菜单文件mymenu.mnx,然后生成可执行的菜单程序mymenu.mpr。

答案:(4)打开菜单mymenu.mnx后,选择系统菜单中的\菜单\,然后选择\生成\。

第1行中的\需改为\;第3行中的\项目号\需改为\零件号\;第5行中的\需改为\。 第七套:——基本操作

4) 修改\显示\按钮的Click事件代码。当单击该按钮时,表格Grid1内将显示在列表框中所选orders表中指定字段的内容。

错误1:FOR i=1 TO thisform.List1.ColumnCount 修改为:FOR i=1 TO thisform.List1.ListCount 错误2:s=thisform.List1.value 修改为:s=thisform.List1.List(i) 错误3:s=s+thisform.List1.value 修改为:s=s+\

2.利用查询设计器创建查询,从orders、employee和customer表中查询2001年5月1日以后(含)所签所有订单的信息。查询结果依次包含\订单号\、\签订日期\、\金额\、\签订者\和\客户名\五项内容,其中\签订者\为签订订单的职员姓名。各记录按签订日期降序排序,签订日期相同按金额降序排序;查询去向为表tableone。最后将查询保存在queryone.qpr文件中,并运行该查询。

步骤2:分别选择字段orders.订单号、orders.签订日期、orders.金额、employee.姓名 AS 签订者、customer.客户名,添加到可用字段中。步骤3:在筛选选项卡中设置筛选条件为:字段处为:orders.签订日期,条件为:>=,实例为:{^2001-05-01}。 综合应用

在考生文件夹下创建一个顶层表单myform.scx(表单的标题为\考试\),然后创建并在表单中添加菜单(菜单的名称为mymenu.mnx,菜单程序的名称为mymenu.mpr)。效果如下图所示。

菜单命令\统计\和\退出\的访问键分别为\和\,功能都通过执行过程完成。

菜单命令\统计\的功能是以客户为单位、从customer和orders表中求出订单金额的和。统计结果包含\客户号\、\客户名\和\合计\三项内容,其中\合计\是指与某客户所签所有订单金额的和。统计结果应按\合计\降序排序,并存放

答案:步骤1:新建表单,将表单的\属性设置为\作为顶层表单\然后设置其Caption属性值为\考试\双击表单空白处,编写表单的\事件代码:

DO mymenu.mpr WITH THIS

步骤2:统计(\\

步骤4:为\统计\和\退出\菜单项创建过程,写入如下SQL语句。

SELECT Customer.客户号, Customer.客户名, sum(orders.金额) as 合计; FROM customer,orders ;

WHERE Customer.客户号 = Orders.客户号; GROUP BY Customer.客户号; ORDER BY 3 DESC; INTO TABLE tabletwo.dbf 第9套:——基本操作

1. 将student表中学号为99035001的学生的院系字段值修改为\经济\。 2. 将score表的\成绩\字段的名称修改为\考试成绩\。

答案:1)update student set 院系=”经济” where 学号=”99035001”

(2)打开score表,单击\显示\菜单中的\表设计器\菜单命令,打开表设计器,修改字段名称。 (3)在命令窗口输入SQL命令:

ALTER TABLE student ADD UNIQUE 学号 TAG 学号

(4) Index on 课程编号 tag 课程编号 candidate

2. 给定程序(表单)modi2.scx,其功能是请用户输入一个正整数,然后计算从1到该数字之间有几个偶数、几个奇数、几个被3整除的数,并分别显示出来,最后给出总数目。请修改并调试该程序,使之正确运行。

答案:错误1:改为 STORE 0 TO x,s1,s2,s3。

错误2:改为 x=val(thisform.text1.value)。 错误3:改为 if mod(x,3)=0。

步骤2:以同样的方法修改\退出\按钮的Click事件代码为:Thisform.Release

综合应用

1. 修改\添加>\命令按钮Click事件下的语句,使得当单击该命令按钮时,将左边列表框所选项添加到右边的列表框;

答案: thisform.list2.addItem(thisform.list1.value)

2. 修改\移去\命令按钮Click事件下的语句,使得当单击该命令按钮时,将右边列表框所选项移去(删除); 答案: thisform.list2.removeItem(thisform.list2.listindex)

3. \确定\命令按钮Click事件下的程序的功能是查询右边列表框所列课程的学生的考试成绩(依次包含姓名、课程名称和考试成绩3个字段),并先按课程名称升序、再按考试成绩降序存储到表zonghe.dbf中。

注意:程序完成后必须运行,要求将\计算机基础\和\高等数学\从左边的列表框添加到右边的列表框,并单击\确定\命令按钮完成查询和存储。

答案: 步骤1:打开考生文件夹下的表单文件zonghe。 步骤2:\确定\命令按钮的Click事件如下。 ********\确定\按钮的Click事件代码*********

SELECT Student.姓名, Course.课程名称, Score.考试成绩; FROM student INNER JOIN score; INNER JOIN course ;

ON Score.课程编号 = Course.课程编号 ; ON Student.学号 = Score.学号; where &cn;

ORDER BY Course.课程名称, Score.考试成绩 DESC; INTO TABLE zonghe.dbf 第十套——基本操作

4. 将SCORE1表\成绩\字段的默认值设置为空值(NULL)。

答案:(4)同上题打开表设计器,选择\成绩\字段,单击NULL列下的按钮(表示此列允许空值),然后再在\字段有效性\中的默认值中填入\。

简单应用:

1. 在SCORE_MANAGER数据库中查询学生的姓名和2003年的年龄(计算年龄的公式是:2003-Year(出生日期),年龄作为字段名),结果保存在一个新表NEW_TABLE1中。使用报表向导建立报表NEW_REPORT1,用报表显示NEW_TABLE1的内容。报表中数据按年龄升序排列,报表标题是\姓名-年龄\其余参数使用缺省参数。

答案(1)【操作步骤】

步骤1:在命令窗口中输入如下语句,并执行。 SELECT 姓名,2003-Year(出生日期) as 年龄; FROM student; INTO TABLE new_table1 综合应用

表单运行时,用户首先在文本框中输入学号,然后单击\查询\按钮,如果输入学号正确,在表单右侧以表格(名称为Grid1)形式显示该生所选课程名和成绩,否则提示\学号不存在,请重新输入学号\。 再在查询按钮的单击事件里写代码:

if score1.学号=alltrim(thisform.text1.value)

thisform.grid1.recordsource=\课程名, Score1.成绩; FROM score_manager!score1 INNER JOIN score_manager!course ; ON Score1.课程号 = Course.课程号;

WHERE Score1.学号 = alltrim(thisform.text1.value)\ else

messagebox(\学号不存在,请重新输入学号\

thisform.grid1.recordsource=\ endif

第11套:——基本操作

1. 设计一个如下图所示的时钟应用程序,具体描述如下:

表单名和表单文件名均为timer,表单表题为\时钟\,表单运行时自动显示系统的当前时间; 1) 显示时间的为标签控件label1(要求在表单中居中,标签文本对齐方式为居中); 2) 单击\暂停\命令按钮(Command1)时,时钟停止;

3) 单击\继续\命令按钮(Command2)时,时钟继续显示系统的当前时间; 4) 单击\退出\命令按钮(Command3)时,关闭表单。

提示:使用计时器控件,将该控件的interval属性设置为500,即每500毫秒触发一次计时器控件的timer事件(显示一次系统时间);将计时器控件的interval属性设置为0将停止触发timer事件;在设计表单时将timer控件的interval属性设置为500。

步骤1:新建一个名为timer的表单。按题目要求添加一个标签控件,一个计时器控件(计时器控件是个小闹钟的样子),3个命令按钮控件。 步骤2:在属性窗口设置各控件的属性如下: 表单的Caption值为:时钟 表单的Name值为:Timer

标签的Alignment的值为:2-中央

步骤3:选中标签,然后执行\格式\→\对齐\菜单中的\水平居中\命令。 计时器的Interval值为500。

******\暂停\按钮的Click事件代码****** ThisForm.Timer1.Interval=0

******\继续\按钮的Click事件代码***** ThisForm.Timer1.Interval=500

******\退出\按钮的Click事件代码***** ThisForm.Release

******\计时器\的timer事件代码******* ThisForm.Label1.Caption=time()

综合应用:

3. 页框控件(PageFrame1)中含有三个页面,每个页面都通过一个表格控件显示有关信息:

1) 第一个页面Page1上的标题为\持有人\,其上的表格控件名为grdCurrency_sl,记录源的类型(RecordSourceType)为\表\,显示自由表currency_sl中的内容;

2) 第二个页面Page2上的标题为\外汇汇率\,其上的表格控件名为grdRate_exchange,记录源的类型(RecordSourceType)为\表\,显示自由表rate_exchange中的内容;

3) 第三个页面Page3上的标题为\持有量及价值\,其上的表格控件名为Grid1,记录源的类型 步骤2:在表单的空白处单击右键,添加表\和\到数据环境中。

步骤3:修改页框的PageCount值为3,在页框上单击右键,在弹出的快捷菜单中单击\编辑\项。将Page1的Caption属性修改为\持有人\,从数据环境中拖拽表\到该页,同样将Page2的Caption属性修改为\外汇汇率\,从数据环境中拖拽表\到该页。将Page3的Caption属性修改为\持有量及价值\,在页框上添加一个表格控件,修改表格控件的属性RecordSourceType为:3-查询,RecordSource为:query。

第13套————基本操作

1. 用SQL语句完成下列操作:列出\林诗因\持有的所有外币名称(取自rate_exchange表)和持有数量(取自currency_sl表),并将检索结果按持有数量升序排序存储于表rate_temp中,同时将你所使用的SQL语句存储于新建的文本文件rate.txt中。

SELECT Rate_exchange.外币名称, Currency_sl.持有数量; FROM currency_sl,rate_exchange ;

WHERE Currency_sl.外币代码 = Rate_exchange.外币代码; AND Currency_sl.姓名 = \林诗因\ORDER BY Currency_sl.持有数量; INTO TABLE rate_temp

综合应用

运行表单时,在文本框text1中输入某人的姓名,然后单击\查询\,则text2中会显示出他所持有的全部外币相当于人民币的价值数量。注意:某种外币相当于人民币数量的计算公式:人民币价值数量=该种外币的\现钞买入价\该种外币\持有数量\。

SELECT SUM(Rate_exchange.现钞买入价*Currency_sl.持有数量); FROM currency_sl INNER JOIN rate_exchange ;

ON Currency_sl.外币代码 = Rate_exchange.外币代码; WHERE Currency_sl.姓名 = thisform.text1.value; GROUP BY Currency_sl.姓名; into array aa

thisform.text2.value=aa 第十四套————基本操作

简单应用

在考生文件夹下,打开\宾馆\数据库,完成如下简单应用:

2. 修改一个名称为THREE.PRG的命令文件。该命令文件用来查询与\姚小敏\同一天入住宾馆的每个客户的客户号、身份证、姓名、工作单位,查询结果包括\姚小敏\本人。 查询结果输出到表TABC中。该命令文件在第3行、第5行、第7行和第8行有错误(不含注释行),打开该命令文件,直接在错误处修改,不可改变SQL语句的结构和短语的顺序,不允许增加、删除或合并行。修改完成后,运行该命令文件。

答案: OPEN DATABASE 宾馆

SELECT 客户.客户号,身份证,姓名,工作单位; FROM 客户,入住 WHERE 客户.客户号 = 入住.客户号; AND 入住日期 IN; ( SELECT 入住日期; FROM 客户,入住;

WHERE 客户.客户号 = 入住.客户号 AND 姓名 = \姚小敏\INTO TABLE TABC 保存并运行程序。

综合应用

⑴ \查询\按钮(Command1):在该按钮的Click事件中使用SQL的SELECT命令查询退房日期大于或等于输入日期的客户号、身份证、姓名、工作单位和该客户入住的客房号、类型名、价格信息,查询结果按价格降序排序,并将查询结果存储到表TABD中。表TABD的字段为客户号、身份证、姓名、工作单位、客房号、类型名、价格。 ⑵ \退出\按钮(Command2)的功能是\关闭和释放表单\。

表单设计完成后,运行该表单,查询退房日期大于或等于2005-04-01的顾客信息。 答案:在查询按钮的单击事件中写如下代码:

SELECT 客户.客户号, 客户.身份证, 客户.姓名, 客户.工作单位, 客房.客房号,; 房价.类型名, 房价.价格;

FROM 宾馆!房价 INNER JOIN 宾馆!客房; INNER JOIN 宾馆!入住; INNER JOIN 宾馆!客户 ;

ON 入住.客户号 = 客户.客户号 ; ON 客房.客房号 = 入住.客房号 ; ON 房价.类型号 = 客房.类型号;

WHERE 入住.退房日期 >= ctod(thisform.text1.value); ORDER BY 房价.价格 DESC; INTO TABLE tabd.dbf

第15套————基本操作

(2)打开表单two,在\表单\菜单中选择\新建方法程序\命令,新建一个名为test的方法,在属性窗口中双击此方法,在弹出的窗口中编写用户自定义过程代码:

ThisForm.Command1.Enabled=.f. (4)在命令窗口输入命令:

alter table 教师表 alter 职工号 set check LEFT(职工号,3)=\ 简单应用:

1. 打开数据库文件\课程管理\,使用SQL语句建立一个视图salary,该视图包括了系号和(该系的)平均工资两个字段,并且按平均工资降序排列。请将该SQL语句存储在four.prg文件中,否则不得分。

CREATE sql VIEW salary AS SELECT 教师表.系号, AVG(教师表.工资) AS 平均工资 FROM 教师表; GROUP BY 教师表.系号 ORDER BY 2 DESC

2. 打开考生文件夹下的表单six(如图所示),\登录\命令按钮Click事件中的程序功能是:当用户输入用户名和口令以后,单击\登录\按钮时,程序根据自由表\用户表\的内容进行操作,若在\用户表\中找不到相应的用户名,则提示\用户名错误\,若用户名输入正确,而口令输入错误,则提示\口令错误\。在\登录\命令按钮Click事件中空行处填加适当的语句,使其能够正确运行。注意:不得做其他修改。

(2)【操作步骤】

步骤1:打开考生文件夹下的表单six.scx,\登录\按钮中的代码如下。 **********\登录\按钮的Click事件代码********** 步骤2:修改程序中的错误如下。 错误1:将\改为\。 错误2:将\改为\。 错误3:将\改为\。 步骤3:保存并运行表单。 综合应用:

2. 为\生成表\命令按钮编写程序。程序的功能是根据表单运行时复选框指定的字段和单选钮指定的排序方式生成新的自由表。如果两个复选框都被选中,生成的自由表命名为two.dbf,two.dbf的字段包括职工号、姓名、系名、工资和课程号;如果只有\系名\复选框被选中,生成的自由表命名为one_x.dbf,one_x.dbf的字段包括职工号、姓名、系名和课程号;如果只有\工资\复选框被选中,生成的自由表命名为one_xx.dbf,one_xx.dbf的字段包括职工号、姓名、工资和课程号。 3. 运行表单,并分别执行如下操作:

(1)选中两个复选框和\按职工号升序\单选钮,单击\生成表\命令按钮; (2)只选中\系名\复选框和\按职工号降序\单选钮,单击\生成表\命令按钮; (3)只选中\工资\复选框和\按职工号降序\单选钮,单击\生成表\命令按钮。

答案:【操作步骤】

*****\生成表\按钮的Click事件代码***** a=ThisForm.Check1.Value b=ThisForm.Check2.Value

c=ThisForm.Optiongroup1.Option1.Value d=ThisForm.Optiongroup1.Option2.Value if a=1 and b=1 if c=1

select 职工号,姓名,系名,工资,课程号 from 教师表,学院表; where 教师表.系号=学院表.系号; order by 职工号; into table two.dbf else if d=1

select 职工号,姓名,系名,工资,课程号 from 教师表,学院表; where 教师表.系号=学院表.系号; order by 职工号 desc; into table two.dbf endif endif endif

if a=1 and b=0 if c=1

select 职工号,姓名,系名,课程号 from 教师表,学院表; where 教师表.系号=学院表.系号; order by 职工号; into table one_x.dbf else if d=1

select 职工号,姓名,系名,课程号 from 教师表,学院表; where 教师表.系号=学院表.系号;

order by 职工号 desc; into table one_x.dbf endif endif endif

if a=0 and b=1 if c=1

select 职工号,姓名,工资,课程号 from 教师表,学院表; where 教师表.系号=学院表.系号; order by 职工号; into table one_xx.dbf else if d=1

select 职工号,姓名,工资,课程号 from 教师表,学院表; where 教师表.系号=学院表.系号; order by 职工号 desc; into table one_xx.dbf endif endif endif

步骤4:保存表单名为myform,按题目要求运行表单并执行相关操作。 第16套——基本操作

3. 使用SQL语句创建一个名为“分组情况表”的自由表,“分组情况表”有两个字段:组号和组名,组号占两个字符,组名占10个字符。请将该SQL语句存储在three.prg中,否则不得分。Create table 分组情况表(组号 c(2),组名 c(10))

4. 使用SQL语句插入一个记录到“分组情况表”中,插入的内容是,组号:“01”,组名:“通俗唱法”。请将该SQL语句存储在four.prg中,否则不得分。INSERT INTO 分组情况表 VALUES(\01\通俗唱法\) 简单应用

第1处:将\改为\;

第2处:将\歌手表.歌手编号\改为:LEFT(歌手表.歌手编号,2); 第3处:将\改为:WITH。

2. 列表框(List1)中应显示组号,通过RowSource和RowSourceType属性手工指定列表框的显示条目为01、02、03、04(注意不要使用命令指定这两个属性,否则将不能得分)。

3. 为“计算”命令按钮编写程序。程序的功能是:表单运行时,根据列表框中选定的“组号”,将“评分表”中该组歌手(“歌手编号”字段的左边两位表示了该歌手所在的组号)的所有记录存入自由表two.dbf中,two.dbf的表结构与“评分表”相同,表中的记录先按\歌手编号\降序、再按\分数\升序排列。

4. 运行表单,在列表框中指定组号“01”,并且单击“计算”命令按钮。注意:结果two表文件中只能且必须包含01组歌手的评分信息。 步骤2:通过属性窗口设置表单及相关各控件的属性,设置列表框控件的数据源和数据源类型,rowsourcetype为“1-值”,接着在rowsource属性框中输入四个值,注意不加定界符,值与值之间用逗号隔开01,02,03,04然后敲回车确定。

步骤3:双击\计算\命令按钮编写其Click事件代码为: SELECT * FROM 评分表;

WHERE LEFT(评分表.歌手编号,2) = thisform.list1.value;

ORDER BY 评分表.歌手编号 DESC, 评分表.分数 INTO TABLE two.dbf

步骤4:最后以myform为文件名将表单保存在考生文件夹下,并运行该表单。 第十八套————简单操作

3. 用SQL命令向SCORE1表插入一条记录:学号为\、课程号为\、 成绩是99。 Insert into score1 values(\简单应用

2. 建立表单MYFORM3,在表单上添加表格控件(名称为grdCourse), 并通过该控件显示表course的内容(要求RecordSourceType属性必须为0)。

答案:步骤2:在属性窗口中修改表格控件的RecordSourceType属性值为:0-表

步骤3:在属性窗口中修改表格控件的RecordSource属性为:course

综合应用

利用菜单设计器建立一个菜单TJ_MENU3,要求如下: (1) 主菜单(条形菜单)的菜单项包括\统计\和\退出\两项;

(2) \统计\菜单下只有一个菜单项\平均\该菜单项的功能是统计各门课程的平均成绩,统计结果包含\课程名\和\平均成绩\两个字段,并将统计结果按课程名升序保存在表NEW_TABLE32中。

(3) \退出\菜单项的功能是返回Visual FoxPro系统菜单(在命令框写相应命令)。 菜单建立后,运行该菜单中各个菜单项。

答案:步骤1:通过菜单设计器新建一个菜单,输入菜单项\统计\和\退出\。 步骤2:为\统计\菜单项建立子菜单,并输入菜单项\平均\。

步骤3:在\平均\菜单的\结果\中选择\过程\,单击\编辑\按钮,在弹出的程序编辑窗口中输入下列代码: *****\平均\菜单项中的过程代码*****

SELECT Course.课程名, AVG(Score1.成绩) as平均成绩; FROM course,score1 ;

WHERE Course.课程号 = Score1.课程号; GROUP BY Course.课程名; ORDER BY Course.课程名; INTO TABLE NEW_TABLE32

步骤4:在\退出\菜单的结果中选择\命令\,输入:SET SYSMENU TO DEFAULT 步骤5:保存菜单名为TJ_MENU3,生成菜单的可执行程序,”菜单”—“生成” 步骤6:运行菜单并执行菜单中的各菜单项,“程序”—“运行” 第19套————基本操作

1. 打开表单one,向其中添加一个组合框(Combo1),并将其设置为下拉列表框。

2. 在表单one中,通过RowSource和RowSourceType属性手工指定组合框Combo1的显示条目为“上海”、“北京”(不要使用命令指定这两个属性)。

3. 向表单one中添加两个命令按钮Command1和Command2,其标题分别为“统计”和“退出”。为“退出”命令按钮的Click事件写一条命令,执行该命令时关闭和释放表单。

4. 为表单one中的“统计”命令按钮的Click事件写一条SQL命令,执行该命令时,将“歌手表”中所有“歌手出生地”与组合框(Combo1)指定的内容相同的歌手的全部信息存入自由表birthplace中。

答案: (1)打开表单one,通过表单控件工具栏向表单添加一个组合框,并修改其Style属性为2-下拉列表框。 (2)修改组合框的RowSourceType属性值设置为:1-值,RowSource设置为:上海,北京。

(3)通过表单控件工具栏向表单中添加两个命令按钮,分别在属性工具栏中修改两个按钮的Caption属性为\统计\和\退出\,双击\退出\按钮编写其Click事件代码为:

ThisForm.Release。

(4)编写\统计\按钮的Click事件代码为:

select * from 歌手表.dbf where 歌手出生地=ThisForm.combo1.value; INTO TABLE birthplace 保存并运行表单。 简单应用:

1. 建立一个查询score_query。查询评委为“歌手编号”是“01002”的歌手所打的分数,结果存入自由表result中,该自由表的字段项包括:“评委姓名”和“分数”,各记录按分数升序排列。最后运行该查询。

答案; (1)【操作步骤】

步骤1:新建一个查询,将\评分表\和\评委表\添加到查询设计器中。 步骤2:按要求添加字段\评委姓名\和\分数\到选定字段中。

步骤3:在\筛选\选项卡中的\字段\列中选择\歌手编号\,\条件\列中选择\,\结果\列中输入\。 步骤4:在\排序依据\选项卡中选择\分数\字段,升序排列。 步骤5:设置查询去向为表\。

步骤6:保存查询名为score_query,并运行查询。

2. 根据上一步操作得到的自由表result建立一个报表。要求:(1) 使用报表向导建立报表,报表中包括“评委姓名”和“分数”两个字段,按“分数”字段降序排列,报表标题设置为空,报表文件命名为score_result。(2) 打开报表score_result,利用报表控件标签,将“王岩盐得分情况”添加到报表中作为报表的标题。

(2)【操作步骤】

步骤1:通过报表向导新建一个报表。

步骤2:添加表RESULT,然后添加全部字段到可用字段中,按\分数\降序排序。 步骤3:完成报表,报表标题设置为空,报表名为score_result。

步骤4:打开报表,选择主菜单\报表\下的\标题/总结(T)\命令,弹出\标题/总结\对话框,在\报表标题\中选中\标题带区\复选框,单击\确定\按钮,这样就在报表中加入了一个\标题带区\,打开\报表控件工具栏\,在打开的\报表控件\中选择\标签\控件,在标题带区单击鼠标,输入\王岩盐得分情况\。

步骤5:保存并预览报表,查看报表的设计结果。

综合应用

1. 编写程序并执行,计算“01”组(歌手编号的前2位)歌手的得分并将结果存入自由表FINAL.DBF中。FINAL.DBF包含“歌手姓名”和“得分”两个字段,“得分”取各评委所打分数的平均值。FINAL.DBF中的结果按得分降序、歌手姓名降序排列。请将程序存储在two.prg中,否则不得分。

2. 新建一个文件名和表单名均为score_form的表单,向表单添加一个命令按钮Command1,标题为“计算”,为该命令按钮的Click事件增加命令,调用two.prg程序执行。最后运行该表单,并单击“计算”按钮执行two程序。

3. 新建一个项目文件score_project,将自由表“歌手表”、“评委表”和“评分表”以及表单文件score_form加入该项目,然后将项目文件连编成应用程序文件score_app。

答案:步骤1:新建一个程序文件,写入如下代码并保存程序名为two,并运行该程序。 ********\中的代码********

SELECT 歌手表.歌手姓名, avg(评分表.分数) as 得分; FROM 歌手表,评分表;

WHERE 歌手表.歌手编号 = 评分表.歌手编号; AND left(歌手表.歌手编号,2) = \ GROUP BY 歌手表.歌手姓名;

ORDER BY 2 DESC, 歌手表.歌手姓名 DESC; INTO TABLE final

步骤2:新建表单,将其Name属性设置为score_form,通过表单控件工具栏向表单中添加一个命令按钮,修改其Caption属性为\计算\,编写其Click事件代码为:DO two.prg。

步骤3:保存表单名为score_form,并运行该表单。

步骤4:单击\新建\→\项目\,以\为文件名进行保存,在项目管理器的\数据\选项卡中选择自由表,单击\添加\,在\打开\的对话框中选择要添加的自由表\歌手表\、\评委表\和\评分表\,在\文档\选项卡中选择表单,单击\添加\,在\打开\的对话框中选择要添加的表单文件score_form。单击”连编”按钮,在\连编选项\中选择\连编应用程序\,以文件名score_app保存应用程序。

第21套——基本操作

1. 修改菜单my_menu,my_menu中的\文件\菜单项下有子菜单项\新建\打开\、\关闭\和\退出\,请在\关闭\和\退出\之间加一条水平的分组线,并为\退出\菜单项设置一条返回到系统菜单的命令(不可以使用过程)。

2. 创建一个快速报表sport_report,报表中包含了表\金牌榜\中的\国家代码\和\金牌数\两个字段。

3. 使用SQL建立表的语句建立一个与自由表\金牌榜\结构完全一样的自由表golden.dbf。请将该SQL语句存储在文件one.prg中,否则不得分。 4. 使用SQL语句向自由表golden.dbf中添加一条记录(\,9,7,11)。请将该SQL语句存储在文件two.prg中,否则不得分。

答案:(1)单击常用工具栏中的\打开\按钮,打开菜单my_menu,在菜单设计器中单击\文件\菜单项后的\编辑\按钮,选中\退出\菜单项并单击右侧的\插入\接钮,在\关闭\和\退出\之间插入一行,在\菜单名称\处输入:\\-。最后将\退出\项的结果设置为\命令\,并输入:SET SYSMENU TO DEFAULT。

(2)新建一个空白报表,在报表设计器窗口中选择\报表\菜单下的\快速报表\命令,选中考生文件夹下的\金牌榜\表,即可打开\快速报表\对话框,单击对话框中的\字段\按钮,将\国家代码\和\金牌数\两个字段添加到\选定字段\中。单击\确定\按钮回到报表设计器窗口,保存报表名为\,预览以查看报表设计结果。

(3)新建一个程序文件,为其编写如下的命令语句。 USE 金牌榜

COPY STRUCTURE TO GOLDEN

保存程序名为\,最后运行该程序文件。 (4)在命令输入命令:

insert into golden Value(\并按回车键,并将此命令存储到新建的two.prg文件中。 简单应用:

1. 使用SQL语句完成下面的操作:根据\国家\和\获奖牌情况\两个表统计每个国家获得的金牌数(\名次\为1表示获得一块金牌)结果包

括\国家名称\和\金牌数\两个字段,并且先按\金牌数\降序、再按\国家名称\降序排列存储到表temp中。请将该SQL语句存储在文件three.prg中,否则不得分。

答案:(1)【操作步骤】

新建程序three,然后输入以下命令语句:

SELECT 国家.国家名称, COUNT(获奖牌情况.名次) AS 金牌数; FROM 国家,获奖牌情况 ;

WHERE 国家.国家代码 = 获奖牌情况.国家代码; AND 获奖牌情况.名次=1; GROUP BY 国家.国家名称;

ORDER BY 2 DESC, 国家.国家名称 DESC; INTO TABLE temp.dbf 保存并运行程序。

2. 建立一个文件名和控件名均为myform的表单,表单构造见下图。表单中包括一个列表框(List1)、一个选项组(Optiongroup1)和一个“退出”命令按钮(Command1),这三个控件名使用系统默认的名字。相关控件属性设置要求:表单的标题为\奖牌查询\,列表框的数据源使用SQL语句根据\国家\表显示国家名称,选项组中有三个按钮,标题分别为金牌(Option1)、银牌(Option2)和铜牌(Option3)。

(2)【操作步骤】

步骤1:新建一个表单,按题目要求添加控件,并修改其属性如下: 表单的Name属性为\,caption属性为\奖牌查询\。

列表框的RowSourceType属性为\,RowSource属性为\国家名称 From 国家 Into Cursor LSB\。 选项组的ButtonCount属性为\。

在选项按钮组上右击—“编辑”,选项按钮1的Caption属性为:金牌,选项按钮2的Caption属性为:银牌,选项按钮3的Caption属性为:铜牌。

命令按钮的Caption属性为:退出。

步骤2:保存表单名为\,运行以查看表单的设计结果。

综合应用:

打开考生文件夹下的sport_project项目,项目中有一个表单sport_form,表单中包括三个命令按钮。 请完成如下操作:

1. 编写并运行程序Four.prg。程序功能是:根据\国家\和\获奖牌情况\两个表统计并建立一个新表\假奖牌榜\,新表包括\国家名称\和\奖牌总数\两个字段,要求先按奖牌总数降序排列(注意\获奖牌情况\的每条记录表示一枚奖牌)、再按\国家名称\升序排列。 2. 为表单sport_form 中的\生成表\命令按钮编写一条命令,执行Four.prg程序。

3. 将在基本操作中建立的快速报表sport_report加入项目文件,并为表单sport_form中的命令按钮\浏览报表\编写一条命令,预览快速报表sport_report。

4. 将自由表\国家\和\获奖牌情况\加入项目文件sport_project,然后将项目文件连编成应用程序文件sport_app.app。

答案:【操作步骤】

步骤1:打开项目用\文件\菜单下的\打开\命令来完成 步骤2:新建一个程序,在程序文件中输入下列命令。

SELECT 国家.国家名称,COUNT(获奖牌情况.名次) AS 奖牌总数; FROM 国家,获奖牌情况 WHERE 国家.国家代码=获奖牌情况.国家代码; GROUP BY 国家.国家名称; ORDER BY 2 DESC,国家.国家名称; INTO TABLE 假奖牌榜

以Four.prg为文件名保存程序并运行。

步骤3:单击项目管理器中的\文档\选项卡,展开\表单\前面的\+\,选中表单\并单击右侧的\修改\按钮,在表单sport_form \生成表\命令按钮的Click事件代码中输入下列命令。

DO Four.prg

步骤4:选中项目sport_project中\文档\选项卡下的\报表\,单击添加命令可将快速报表sport_report添加到项目中。然后在表单sport_form \浏览报表\命令按钮的Click事件代码中输入命令。

REPORT FORM SPORT_REPORT PREVIEW

步骤5:在项目管理器中选中文档选项卡,按要求添加自由表,然后单击连编按钮,生成连编应用程序,在\连编选项\中选择\连编应用程序\,应用程序文件名保存为sport_app.app。 第22套——基本操作

1.在考生文件夹下已有表单文件formone.scx,如下图所示,其中包含一个文本框、一个表格和两个命令按钮。 请按下面要求完成相应的操作:

1) 通过\属性\窗口,将文本框Text1的Value属性值设置为当前系统日期(日期型,不含时间)。 2) 通过\属性\窗口,将表格Grid1的RecordResourceType属性值设置为\说明\。

3) 修改\确定\按钮的Click事件代码。当单击该按钮时,表格Grid1内将显示指定日期以后(含)签订的订单信息(包括\订单号\、\签订日期\和\金额\等信息)。

4) 设置\关闭\按钮的Click事件代码。当单击该按钮时,将释放并关闭表单。 答案: (1)【操作步骤】

步骤1:打开表单formone.scx,在属性窗口中修改,修改Text1的Value属性为:=date()。 步骤2:修改表格的RecordSourcetype属性为\4-SQL说明\。

步骤3:打开考生文件夹下的表单文件\formone.scx\,双击其中的\确定\按钮,修改其Click事件代码如下。 错误1:set century to 4 正确:set century on 错误2:va=text1.value 正确:va=thisform.text1.value 错误3:this.grid1.RowdSource=st 正确:thisform.grid1.RecordSource=st

步骤4:编写\关闭\按钮的Click事件代码为:ThisForm.Release。

2.利用查询设计器创建查询,根据employee和orders表对各组在2001年所签订单的金额进行统计。统计结果仅包含那些总金额大于等于500的组,各记录包括\组别\、\总金额\、\最高金额\和\平均金额\个字段;各记录按\总金额\降序排序;查询去向为表tableone。最后将查询保存在queryone.qpr文件中,并运行该查询。

答案: (2)【操作步骤】

步骤1:通过\新建\对话框新建查询,将考生文件夹下的\employee\和\orders\两个表添加到查询设计器中。

步骤2:在查询设计器中的\字段\选项卡中,添加字段\employee.组别\、表达式\sum(orders.金额) as 总金额\、表达式\max(orders.金额) as 最高金额\和表达式\avg(orders.金额) as 平均金额\到\选定字段\列表框中。

步骤3:在查询设计器中的\筛选\选项卡中,通过\字段名\下拉列表中的\表达式\打开\表达式生成器\对话框,在其中设置表达式:year(orders.签订日期),\条件\下拉列表框中选择\,\实例\文本框中输入\2001\。

步骤4:在\排序依据\选项卡中,设置按\总金额\降序排序。

步骤5:在\分组依据\选项卡中,将\employee.组别\字段添加到\分组字段\列表框中。单击\满足条件\按钮,在\满足条件\对话框中选择字段名为\总金额\,条件为\>=\,实例中输入:500.

步骤6:选择\查询\菜单下的\查询去向\命令,在弹出的\查询去向\对话框中选择表,输入表名为:tableone,并关闭该对话框。 步骤7:保存查询文件名为\queryone.qpr\,并运行查询。

综合应用

1) 创建一个下拉式菜单mymenu.mnx,运行该菜单程序时会在当前vfp系统菜单的末尾追加一个\考试\子菜单,如下图所示。 菜单命令\统计\和\返回\的功能都通过执行过程完成。

菜单命令\统计\的功能是以某年某月为单位求订单金额的和。统计结果包含\年份\、\月份\和\合计\三项内容(若某年某月没有订单,则不应包含记录)。统计结果应按年份降序、月份升序排序,并存放在tabletwo表中。 菜单命令\返回\的功能是返回标准的系统菜单。

2) 创建一个项目myproject.pjx,并将已经创建的菜单mymenu.mnx设置成主文件。然后连编产生应用程序myproject.app。最后运行myproject.app,并依次执行\统计\和\返回\菜单命令。

答案: 步骤1:通过\新建\对话框新建一个菜单,然后选择\显示\菜单下的\常规选项\命令,在弹出的\常规选项\对话框中单击\位置\中的\追加\单选按钮,单击\确定\按钮。

步骤2:按照题目的要求新建两个菜单项\统计\和\返回\,结果均设置为\过程\。编写\统计\菜单项的过程代码如下: SELECT YEAR(Orders.签订日期) as 年份, MONTH(Orders.签订日期) as 月份,; SUM(Orders.金额) as 合计; FROM 订单管理!orders; GROUP BY 1, 2; ORDER BY 1 DESC, 2; INTO TABLE tabletwo.dbf

编写\返回\菜单项的过程代码为: set sysmenu to default。

步骤3:保存菜单文件名为\mymenu\,选择\菜单\菜单中的\生成\命令,生成该菜单的可执行文件,运行菜单查看设计结果。

步骤4:通过\新建\菜单新建一个项目,文件名为myproject。在项目管理器中单击\其他\选项卡,选中\菜单\项并单击右侧的\添加\按钮,将新建的菜单文件\mymenu\添加到项目中。

步骤5:展开项目管理器\其他\选项卡中的\菜单\项,右键单击\mymenu\,查看其中的\设置为主文件\是否被选中(前面有对号标记),如果没有就需要单击此项。

步骤6:在项目管理中单击\连编\按钮,选中\连编选项\对话框中的\连编应用程序\单选按钮,并单击\确定\按钮,保存程序名为\myproject.app\。

步骤7:单击\程序\菜单中的\运行\命令,打开其中的\myproject.app\,依次执行\统计\和\返回\命令。 第二十三套——基本操作

简单应用:

1. 利用查询设计器创建查询,从考生目录下的xuesheng表和chengji表中查询数学、英语和信息技术三门课中至少有一门课在90分以上(含)的学生记录。查询结果包含学号、姓名、数学、英语和信息技术5个字段;各记录按学号降序排序;查询去向为表table1。最后将查询保存在query1.qpr文件中,并运行该查询。

答案:(1)【操作步骤】

步骤1:通过\新建\对话框新建一个查询文件,将考生文件夹下的表\和\添加到查询设计器中。

步骤2:在\字段\选项卡中,将xuesheng.学号、xuesheng.姓名、chengji.数学、chengji.英语和chengji.信息技术5个字段依次添加到\选定字段\列表框中。

步骤3:在\筛选\选项卡中进行设置,”字段”选:数学,条件为:>=,实例为:90,逻辑选:or,接着下一个”字段”选:英语,条件为:>=,实例为:90,逻辑选:or,下一个”字段”选:信息技术,条件为:>=,实例为:90.

步骤4:在\排序依据\选项卡中,将xuesheng.学号添加到\排序条件\列表框中,并选择\降序\单选按钮。 步骤5:选择\查询\菜单下的\查询去向\命令,在打开的\查询去向\对话框中选择\表\,输入表名为:table1。 步骤6:保存查询文件为\并运行。

2. 首先创建数据库cj_m,并向其中添加xuesheng表和chengji表。然后在数据库中创建视图view1:利用该视图只能查询少数民族学生的英语成绩;查询结果包含学号、姓名、英语3个字段;各记录按英语成绩降序排序,若英语成绩相同按学号升序排序。最后利用刚创建的视图view1查询视图中的全部信息, 并将查询结果存放在表table2中

(2)【操作步骤】

步骤1:通过\新建\对话框新建一个数据库,文件名为\,在数据库设计器中右键单击数据库的空白处,选择\添加表\命令,将表\和\添加到数据库中。

步骤2:新建一个视图,将表\和\添加到视图设计器中,并为两个表建立默认的联接。

步骤3:在字段选项卡中,将xuesheng.学号、xuesheng.姓名和chengji.英语3个字段依次添加到\选定字段\列表框中。

步骤4:在筛选选项卡中,字段名列选择xuesheng.民族,单击\否\下面的按钮,使其处于选中的状态,条件列选择\,实例框中输入\汉\。

步骤5:在排序依据选项卡中,选择按\英语\降序排序,按\学号\升序排序。 步骤6:将视图保存为\。

步骤7:新建一个查询,将新建的\视图添加到新建的查询中,选择全部字段,设置查询去向为表:table2,并运行查询,不用保存。

综合应用

利用表设计器在考生目录下建立表table3,表结构如下: 学号 字符型(10) 姓名 字符型(6) 课程名 字符型(8) 分数 数值型(5,1)

然后编写程序prog1.prg,从xuesheng表和chengji表中找出所有成绩不及格(分数小于60)的学生信息(学号、姓名、课程名和分数),并把这些数据保存到表table3中(若一个学生有多门课程不及格,在表table3中就会有多条记录)。表table3中的各记录应该按分数升序排序,分数相同则按学号降序排序。

要求在程序中用SET RELATION命令建立chengji表和xuesheng表之间的关联(同时用INDEX命令建立相关的索引),并通过DO WHILE循环语句实现规定的功能。最后运行程序。

答案:利用表设计器新建一个table3表,再新建一个程序,程序中代码如下: select * from table3 into table aa close all select 1 use xuesheng

index on 学号 tag 学号 select 2 use chengji

index on 学号 tag 学号

set relation to 学号 into xuesheng do while not eof() if 数学<60

insert into aa values(xuesheng.学号,xuesheng.姓名,\数学\数学) endif if 英语<60

insert into aa values(xuesheng.学号,xuesheng.姓名,\英语\英语) endif

if 信息技术<60

insert into aa values(xuesheng.学号,xuesheng.姓名,\信息技术\信息技术) endif skip enddo

select * from aa order by 分数,学号 desc into array bb insert into table3 from array bb 保存并运行程序,程序文件的名称为prog1。 第二十五套--————基本操作

1. 用SQL语句完成下列操作: 列出所有赢利(现价大于买入价)的股票简称、现价、买入价和持有数量,并将检索结果按持有数量降序排序存储于表stock_temp中。

答案:1)【操作步骤】

在命令窗口输入以下程序语句。

SELECT stock_name.股票简称,stock_sl.现价,stock_sl.买入价,stock_sl.持有数量; FROM stock_name,stock_sl;

WHERE stock_sl.股票代码=stock_name.股票代码 And stock_sl.现价>stock_sl.买入价; ORDER BY stock_sl.持有数量 DESC; INTO TABLE stock_temp 综合应用:

设计名为mystock的表单(控件名,文件名均为mystock)。表单的标题为:\股票持有情况\。表单中有两个文本框(text1和text2)和两个命令按钮\查询\名称为Command1)和\退出\名称为Command2)。

运行表单时,在文本框text1中输入某一股票的汉语拼音,然后单击\查询\则text2中会显示出相应股票的持有数量。 单击\退出\按钮关闭表单。

答案:【操作步骤】

步骤1:单击常用工具栏中的\新建\按钮,文件类型选择\表单\,打开表单设计器。单击常用工具栏中的\保存\按钮,在弹出\保存\对话框中输入:mystock即可。

步骤2:在\表单设计器-mystock.scx\中,在\属性\的Caption处输入:股票持有情况,在Name处输入:mystock。

步骤3:在\表单设计器-mystock.scx\中,添加两个文本框(\和\。在\表单设计器-mystock.scx\中,添加两个命令按钮,单击第1个命令按钮在\属性\的Caption处输入\查询\, 单击第2个命令按钮在\属性\的Caption处输入\退出\。

步骤4:双击\查询\命令按钮,在\编辑窗口中输入命令组,接着关闭编辑窗口。 在查询按钮的单击事件里写如下代码: SELECT Stock_sl.持有数量;

FROM stock!stock_name INNER JOIN stock!stock_sl ; ON Stock_name.股票代码 = Stock_sl.股票代码; WHERE Stock_name.汉语拼音 = thisform.text1.value; into array aa

thisform.text2.value=aa

步骤6:双击\退出\命令按钮,在\编辑窗口中输入:Thisform. Release,接着关闭编辑窗口。 最后保存并运行表单

第26套:————基本操作

1. 在属性窗口中将表单设置为不可移动的,并将其标题设置为\表单操作\。

答案:(1)打开表单,在属性窗口将表单的Movable属性修改为.F.并将其Caption属性设置为\表单操作\。 2. 为表单新建一个名为mymethod的方法,方法代码为:wait \

答案:(2)在系统菜单中的\表单\菜单中选择\新建方法程序\打开\新建方法程序\对话框,然后在名称框中输入\并单击\添加\按钮,关闭对话框后在属性窗口的最下面双击mymethod方法,编写表单的mymethod事件代码如下:

wait \

3. 设置Ok按钮的Click事件代码,其功能是调用表单的mymethod方法。

答案:(3)双击打开OK按钮的Click事件,输入: ThisForm.mymethod

4. 设置Cancel按钮的Click事件代码,其功能是关闭当前表单。

答案:(4)双击打开Cancel按钮的Click事件,输入: ThisForm.Release 简单应用:

1. 利用查询设计器创建查询,从xuesheng和chengji表中找出所有1982年出生的汉族学生记录。查询结果包含学号、姓名、数学、英语和信息技术5个字段;各记录按学号降序排序;查询去向为表table1。最后将查询保存在query1.qpr文件中,并运行该查询。

答案:(1)【操作步骤】

步骤1:新建一个查询,并将xuesheng和chengji两个表添加到查询设计器中。按要求添加字段\学号\、\姓名\、\数学\、\英语\和\信息技术\到\选定字段\框中。

步骤2:在筛选选项卡中添加表达式:YEAR(xuesheng.出生日期),条件设置为\,实例中输入:1982,并在逻辑处选:and 步骤3:在筛选选项卡中选择字段\民族\,条件设置为\,实例中输入\汉\。 步骤4:在排序选项卡中选择\降序\,添加字段\学号\。

步骤5:选择系统菜单中的\查询\→\查询去向\,单击\表\按钮,输入表名\。 步骤6:保存查询为\并运行查询。

2. 首先创建数据库cj_m,并向其中添加xuesheng表和chengji表。然后在数据库中创建视图view1:利用该视图只能查询数学、英语和信息技术三门课中至少有一门不及格(小于60分)的学生记录;查询结果包含学号、姓名、数学、英语和信息技术5个字段;各记录按学号降序排序。最后利用刚创建的视图view1查询视图中的全部信息,并将查询结果存放在表table2中。

答案:(2)【操作步骤】

步骤1:“文件”—“新建”,创建数据库。

步骤2:打开cj_m数据库并向其中添加表\和\。

步骤3:在数据库设计器中新建一个视图,并将xuesheng和chengji两个表添加到新建的视图中,按要求添加字段\学号\、\姓名\、\数学\、\英语\和\信息技术\。

步骤4:在筛选选项卡中分别选择字段\数学\、\英语\和\信息技术\,条件均为\,实例为\,逻辑为\。 步骤5:在排序选项卡中选择\降序\, 添加字段\学号\。

步骤6:保存视图为view1.新建一个查询,将视图添加到查询设计器中。 步骤7:添加全部字段,选择查询去向为表,输入表名\并运行查询。 综合应用

首先利用表设计器在考生目录下建立表table3,表结构如下: 民族 字符型(4) 数学平均分 数值型(6,2) 英语平均分 数值型(6,2)

然后在考生文件夹下创建一个下拉式菜单mymenu.mnx,并生成菜单程序mymenu.mpr。运行该菜单程序时会在当前vfp系统菜单的末尾追加一个\考试\子菜单,如下图所示。

菜单命令\计算\和\返回\的功能都通过执行过程完成。

菜单命令\计算\的功能是根据xuesheng表和chengji表分别统计汉族学生和少数民族学生在数学和英语两门课程上的平均分,并把统计数据保存在表table3中。表table3的结果有两条记录:第1条记录是汉族学生的统计数据,\民族\字段填\汉\;第2条记录是少数民族学生的统计数据,\民族\字段填\其他\。

菜单命令\返回\的功能是恢复标准的系统菜单。

菜单程序生成后,运行菜单程序并依次执行\计算\和\返回\菜单命令。

答案:首先根据题目要求利用表设计器创建表table3,然后新建菜单,注意是在系统菜单的末尾追加考试子菜单,因此要用到“常规选项”对话框,还有一点,“计算”和“返回”的命令都是通过执行“过程”完成,在\计算\菜单项的过程中输入下列代码:

SELECT Xuesheng.民族, AVG(Chengji.数学) as 数学平均分,; AVG(Chengji.英语) as 英语平均分; FROM xuesheng INNER JOIN chengji ; ON Xuesheng.学号 = Chengji.学号; WHERE Xuesheng.民族 = \汉\ into array aa

insert into table3 from array aa

SELECT Xuesheng.民族, AVG(Chengji.数学) as 数学平均分,; AVG(Chengji.英语) as 英语平均分; FROM xuesheng INNER JOIN chengji ; ON Xuesheng.学号 = Chengji.学号; WHERE Xuesheng.民族 != \汉\ into array bb

insert into table3 from array bb

update table3 set 民族=\其他\民族!=\汉\

在\返回\菜单项的“过程”中输入语句:SET SYSMENU TO DEFAULT。并保存菜单名为mymenu,在系统菜单中单击\菜单\→\生成\命令,生成可执行程序并运行。

第28套:————基本操作

2. 打开考生目录下的表单文件formone.scx,然后设置表单的Load事件代码:打开employee表,并将索引xm设置为当前索引。

答案:(2)打开表单文件formone.scx,然后设置表单的Load事件代码如下。 use employee set order to xm

简单应用(自由表order中存放着订单的有关数据): 综合应用

当在文本框输入某职员姓名并单击“查询统计”按钮时,会在左边的表格内显示该职员所签各订单的金额,并将其中的最高金额、最低金额和平均金额存入表tablethree中。

(3) 运行上面创建的表单formtwo,然后依次查询统计“赵小青”和“吴伟军”两位职员所签订单的有关金额。执行完后,表tablethree中应该包含两条相应的记录。 答案:

编写\查询统计\按钮的Click事件代码:

thisform.grid1.recordsource=\订单号, Order.金额; FROM employee INNER JOIN order ; ON Employee.职员号 = Order.职员号; WHERE Employee.姓名 = thisform.text1.value\

SELECT Employee.姓名, MAX(Order.金额) as 最高金额,; MIN(Order.金额) as 最低金额, AVG(Order.金额) as 平均金额; FROM employee INNER JOIN order ; ON Employee.职员号 = Order.职员号; WHERE Employee.姓名 = thisform.text1.value; into array aa

insert into tablethree from array aa

最后编写\退出\按钮的Click事件代码:thisform.release

注意:在tablethree表中只有两条记录,一条是赵小青的,一条是吴伟军的,多余的记录要进行彻底删除。

第二十九套————基本操作

2. 使用SQL Update语句将表TABB中所有记录的字段\日期\的值修改为2005-10-01,并将SQL语句存储到名为TWO.PRG的文件中。 3. 表TABA中有重复的记录,用SQL语句将表TABA中的记录复制到另外一个与它具有相同结构的表TABC中,并消除重复的记录(对于重复多次的记录,只复制一条记录的数据)。并将SQL的SELECT语句存储到名为THREE.PRG的文件中。

答案:(1)打开考生文件夹下的DB数据库,在数据库设计器中右键单击TABB表,在弹出的快捷菜单中选择\修改\项,在表设计器窗口中为表添加字段:日期,类型为日期型。(2)新建一个程序two,在其中输入 UPDATE tabb SET 日期={^2005/10/01}

(3)新建一个程序three,在其中输入如下命令。 SELECT DISTINCT * FROM TABA INTO TABLE TABC 最后保存并运行程序。 简单应用:

1. 编写文件名为FOUR.PRG的程序,根据表TABA中所有记录的a,b,c三个字段的值,计算各记录的一元二次方程的两个根x1和x2,并将两个根x1和x2写到对应的字段x1和x2中,如果无实数解,在两个根x1和x2字段写入空值.NULL.; 在note字段中写入“无实数解”。程序编写完成后,运行该程序计算一元二次方程的两个根。注意:一元二次方程公式如下:

答案:1求一元二次方程,新建一个程序,在程序中输入以下命令:

update taba set x1=(-b+sqrt(b^2-4*a*c))/(2*a) where (b^2-4*a*c)>=0 update taba set x2=(-b-sqrt(b^2-4*a*c))/(2*a) where (b^2-4*a*c)>=0 update taba set note=\无实数解\

2) \查询\按钮:在该按钮的Click事件中使用SQL的SELECT命令从表TABA中查询“无实数解”的记录存储到表TABD中; (2)【操作步骤】

步骤3:在\查询\按钮的Click事件中输入下列代码。

SELECT * FROM TABA WHERE TABA.note = \无实数解\综合应用

在考生文件夹下,打开SDB数据库,完成如下应用:

创建一个标题名为\查询\、文件名为testb的表单,如下图所示。 表单要求如下:

2. 表单启动后自动居中。

3 1) 标签对象标题文本为\学生注册日期\;文本框用于输入学生注册日期(Text1);表格控件用于显示结果(Grid1)。 2) 命令按钮的功能如下:

①\查询\按钮(Command1):在该按钮的Click事件中使用SQL的SELECT命令从\学生表\中查询学生注册日期等于文本框中指定的注册日期的学生的学号、姓名、年龄、性别、班级和注册日期,查询结果按年龄降序排序,并将查询结果在表格控件中显示,同时将查询结果存储到表TABE中。

注意:查询结果存储到表TABE之前,应将表TABE中记录清空。TABE表是已经建立好的表,它与学生表的结构不完全一样,多两个字段。 ②\退出\按钮(Command2):的功能是\关闭和释放表单\。 注意:表格控件的RecordSourceType属性设置为\-SQL说明\;

表单设计完成后,运行该表单,查询注册日期等于2005年9月2日的学生信息。

答案:首先创建表单,在表单中添加各控件以及设置属性,表单的AutoCenter属性为\真\。表单的Caption属性为\查询\。标签的Caption属性为\学生注册日期\。命令按钮1的Caption属性为\查询\。命令按钮2的Caption属性为\退出\。表格的RecordSourceType属性为\说明\。为表单添加数据环境\学生表\。然后再查询按钮的单击事件中写如下代码: thisform.grid1.recordsource=\ FROM sdb!学生表;

WHERE 学生表.注册日期 = ctod(thisform.text1.value); ORDER BY 学生表.年龄 DESC\

use tabe zap SELECT *; FROM sdb!学生表;

WHERE 学生表.注册日期 = ctod(thisform.text1.value); ORDER BY 学生表.年龄 DESC; into array aa

insert into tabe from array aa

输入退出按钮的Click事件代码ThisForm.Release,保存并按要求运行表单。 第30套 ——基本操作:

2. 使用\调试器\单步调试考生文件夹下的程序three.prg,调试结束后,将调试输出窗口中的内容保存到文本文件debug_out.txt中。

答案:“工具”菜单—“调试器”,在打开的调试器窗口中“文件”—“打开”—选中程序three—“确定”,单击常用工具栏上的第五个按钮“单步”,结果将会输出在“调试输出”窗口中,然后将结果连同前面的空白一起选中复制粘贴到一个新建的文本文件debug_out.txt中 3. 使用SQL语句为表\金牌榜\增加一个字段\奖牌总数\整数型),同时为该字段设置有效性规则:奖牌总数>=0。请将该SQL语句存储在文件one.prg中,否则不得分。

ALTER TABLE 金牌榜 ADD 奖牌总数 I CHECK 奖牌总数>=0

4. 使用SQL语句更改表\金牌榜\所有记录的\奖牌总数\字段值,该值应为\金牌数\、\银牌数\、\铜牌数\三项之和。 请将该SQL语句存储在文件two.prg中,否则不得分。

UPDATE 金牌榜 SET 奖牌总数=金牌数+银牌数+铜牌数 简单应用:

2. 在SPORT数据库中使用视图设计器建立视图sport_view,该视图根据\国家\和\获奖牌情况\两个表统计每个国家获得的金牌数(\名次\为1表示获得一块金牌),视图中包括\国家名称\和\金牌数\两个数据项,视图中的记录先按\金牌数\降序排列、再按国家名称降序排列。

答案: (2)【操作步骤】

步骤1:打开考生文件夹下的数据库sport,新建一个视图并将\国家\和\获奖牌情况\两个表添加到新建的视图中。

步骤2:在字段选项卡中,添加字段\国家名称\到选定字段中,并添加一个表达式:count(获奖牌情况.名次) as 金牌数,将表达式添加到选定字段中。

步骤3:在筛选选项卡中设置条件为:获奖牌情况.名次,条件为:=,实例为:1

步骤4:在排序选项卡中,选择降序,并添加字段\金牌数\和\国家名称\到排序条件列表框中。 步骤5:在分组依据选项卡中添加字段\国家名称\到分组等段列表框中。 步骤6:保存视图名为sport_view并运行视图。 综合应用:

在考生文件夹下有一个名为myform的表单,表单中包括一个列表框和两个命令按钮。 请在该表单中完成如下操作:

1. 设置列表框的数据源(RowSource)和数据源类型(RowSourceType)两个属性,使用SQL语句根据\国家\表中\国家名称\字段的内容在列表框中显示\国家名称\(注意不要使用命令指定这两个属性)。

2. 为\生成表\命令按钮编写程序。程序的功能是根据表单运行时列表框中选定的国家名称,将\获奖牌情况\表中相应国家的所有记录存入以该国家名称命名的自由表中,自由表中包含\运动员名称\,\项目名称\和\名次\三个字段,并按照\名次\升序排列。 3. 运行表单,分别生成存有\中国\、\日本\、\美国\、\俄罗斯\个国家获奖情况的4个自由表

答案:步骤1:打开表单myform

步骤2:按照题目要求修改列表框的属性,rowsourcetype为:3-SQL语句,rowsource为:select 国家名称 from 国家 into cursor ls 步骤3:在生成表命令按钮的Click事件中编写如下命令语句 gm=thisform.list1.value

SELECT 获奖牌情况.运动员名称, 获奖牌情况.项目名称, 获奖牌情况.名次; FROM 国家 INNER JOIN 获奖牌情况 ; ON 国家.国家代码 = 获奖牌情况.国家代码; WHERE 国家.国家名称 = thisform.list1.value; ORDER BY 获奖牌情况.名次; into table &gm 第三十一套——-基本操作

简单应用:

步骤1:打开程序rate_pro。修改程序如下: 第1处错误改为:locate for姓名=\林诗因\第2处错误改为:do while not eof()

第3处错误改为:summ=summ+a[1] * currency_sl.持有数量

2. 建立一个名为menu_rate的菜单,菜单中有两个菜单项\查询\和\退出\。\查询\项下中还有一个子菜单,子菜单有\日元\、\欧元\、\美元\三个选项。在\退出\菜单项下创建过程,该过程负责返回系统菜单。

(2)【操作步骤】

步骤1:新建一个菜单,输入菜单项\查询\和\退出\。

步骤2:为\查询\菜单建立子菜单,子菜单项的名称分别为\日元\、\欧元\和\美元\。 步骤3:为\退出\菜单项创建过程,输入:set sysmenu to default。 步骤4:保存菜单并“菜单”—“生成”,最后运行菜单,查看运行结果。 综合应用

设计一个文件名和表单名均为myrate的表单,所有控件的属性必须在表单设计器的属性窗口中设置。表单的标题为\外汇持有情况\。表单中有一个选项组控件(命名为myOption)和两个命令按钮\统计\和\退出\。其中,选项组控件有三个按钮\日元\、\美元\和\欧元\。

运行表单时,首先在选项组控件中选择\日元\、\美元\或\欧元\单击\统计\命令按钮后,根据选项组控件的选择将持有相应外币的人的姓名和持有数量分别存入rate_ry.dbf(日元)或rate_my.dbf(美元)或rate_oy(欧元)中。 单击\退出\按钮时关闭表单。

表单建成后,要求运行表单,并分别统计\日元\、\美元\和\欧元\的持有数量。

答案:首先新建表单,在添加选项按钮组的时候要注意有三个单选按钮,添加后默认的只有两个,因此要把选项按钮组的buttoncount属性改为3,然后改每个单选按钮的标题,方法为:在选项按钮组上右击——“编辑”,选中每一个单选按钮分别改它们的caption属性,依次为“日元”,“美元”,“欧元”;还有非常重要的一点,切记要把选项按钮组的name属性改为myoption 双击\统计\按钮,编写其Click事件代码如下: do case

case thisform.myoption.value=1

SELECT Currency_sl.姓名, Currency_sl.持有数量; FROM currency_sl INNER JOIN rate_exchange ; ON Currency_sl.外币代码 = Rate_exchange.外币代码; WHERE Rate_exchange.外币名称 = \日元\ INTO TABLE rate_ry.dbf

case thisform.myoption.value=2

SELECT Currency_sl.姓名, Currency_sl.持有数量; FROM currency_sl INNER JOIN rate_exchange ; ON Currency_sl.外币代码 = Rate_exchange.外币代码; WHERE Rate_exchange.外币名称 = \美元\ INTO TABLE rate_my.dbf case thisform.myoption.value=3

SELECT Currency_sl.姓名, Currency_sl.持有数量; FROM currency_sl INNER JOIN rate_exchange ; ON Currency_sl.外币代码 = Rate_exchange.外币代码; WHERE Rate_exchange.外币名称 = \欧元\ INTO TABLE rate_oy.dbf Endcase

第三十三套————基本操作

3. 将\教师\表从\学生\数据库中移出,使其成为自由表。

(3)在项目管理器中打开\学生\数据库,在其数据库设计器中右键单击\教师\表,选择\删除\命令,在弹出的对话框中单击\移去\按钮。 简单应用:

1. 用SQL语句对自由表\教师\完成下列操作:将职称为\教授\的教师新工资一项设置为原工资的120%,其他教师的新工资与原工资相等;插入一条新记录,该教师的信息:姓名\林红\,职称\讲师\,原工资10000,新工资10200,同时将你所使用的SQL语句存储于新建的文本文件 teacher.txt中(两条更新语句,一条插入语句,按顺序每条语句占一行)。 答案:在命令窗口依次输入下列命令并按回车(输入一条回车一次)

update 教师 set 新工资=原工资*1.2 where 职称=\教授%update 教师 set 新工资=原工资 where 职称!= \教授\inse into 教师 Values(\林红\讲师\

使用\新建\工具创建一个文本文件teacher.txt,把上面三行代码复制到新建的文本文件中并保存(文本文件在保存时必须加上扩展名.txt) 2. 使用查询设计器建立一个查询文件stud.qpr,查询要求:选修了\英语\并且成绩大于等于70的学生的姓名和年龄,查询结果按年龄升序存放于stud_temp.dbf表中。(完成后要运行)

步骤4:在\筛选\选项卡中设置筛选条件为

课程.课程名称 = \英语\选课.成绩 >= 70 综合应用

运行表单时,单击\查询\命令按钮后,表格控件中显示6系(系字段值等于字符6)的所有学生的姓名、选修的课程名和成绩。 单击\退出\按钮关闭表单。

注意:完成表单设计后要运行表单的所有功能。 答案:新建表单,在查询按钮的单击事件中编写如下代码:

thisform.grid1.recordsource=\学生.姓名, 课程.课程名称, 选课.成绩; FROM 学生!学生 INNER JOIN 学生!选课; INNER JOIN 学生!课程 ;

ON 选课.课程号 = 课程.课程号 ; ON 学生.学号 = 选课.学号; WHERE 学生.系 = '6'\

注意:先把表格控件的recordsourcetype属性改为4-SQL说明 第三十四套——基本操作 简单应用:

在考生文件夹下有student(学生)、course(课程)和score(选课成绩)3个表,用SQL语句完成如下操作:

1. 查询每门课程的最高分,要求得到的信息包括课程名称和分数,将结果存储到max.dbf表文件(字段名是课程名称和分数),并将相应的SQL语句存储到命令文件one.prg。

答案:(1)【操作步骤】

新建一个程序one.prg,编写下列命令语句:

SELECT Course.课程名称, max(score.成绩) as 分数; FROM course,score ;

WHERE Course.课程编号 = Score.课程编号; GROUP BY Course.课程名称; INTO TABLE max 保存并运行程序。

2. 查询哪些课程有不及格的成绩,将查询到的课程名称存入文本文件new.txt,并将相应的SQL语句存储到命令文件two.prg。

(2)【操作步骤】

新建一个程序\,编写下列命令语句: SELECT Course.课程名称; FROM course,score ;

WHERE Course.课程编号 = Score.课程编号; AND Score.成绩 < 60; GROUP BY Course.课程名称; TO FILE new.txt 保存并运行程序。 综合应用:

3. 建立满足如下要求的表单formlist(控件名和文件名)

(1) 添加一个表格控件Grid1,并按学号升序显示学生选课及考试成绩信息(包括字段学号、姓名、院系、课程名称和成绩); (2) 添加命令按钮\保存\(Command1)和\退出\(Command2),单击命令按钮\保存\时将表格控件Grid1中所显示的内容保存到表results(方法不限),单击命令按钮\退出\时关闭并释放表单。

步骤1按照题目要求做,做好表单之后,在表格控件的init事件中(在表格上双击)编写如下代码: thisform.grid1.recordsource=\学号, Student.姓名, Student.院系, Course.课程名称,; Score.成绩;

FROM 学生!course INNER JOIN 学生!score; INNER JOIN 学生!student ; ON Score.学号 = Student.学号 ; ON Course.课程编号 = Score.课程编号; ORDER BY Student.学号\

注意:应把表格控件的recordsourcetype属性改为4-SQL说明,再在查询按钮的单击事件中编写如下代码: SELECT Student.学号, Student.姓名, Student.院系, Course.课程名称,; Score.成绩;

FROM 学生!course INNER JOIN 学生!score; INNER JOIN 学生!student ; ON Score.学号 = Student.学号 ;

ON Course.课程编号 = Score.课程编号; ORDER BY Student.学号; into table results

步骤2:在\保存\命令按钮中输入:select * from abc into table results 步骤3:在命令按钮退出中写入:ThisForm.Release。 步骤4:保存并按题目要求运行表单。 第三十五套———基本操作 简单应用:

1. 利用查询设计器创建查询,从xuesheng和chengji表中查询数学、英语和信息技术三门课都在85分以上(含),或者数学、英语都在90分以上(含)而信息技术在75分以上(含)的学生记录。查询结果包含学号、姓名、数学、英语和信息技术5个字段;各记录按学号降序排序;查询去向为表table1。 最后将查询保存在query1.qpr文件中,并运行该查询。

答案:(1)【操作步骤】

步骤1:通过\新建\对话框新建查询文件,将xuesheng和chengji表添加到查询中。 步骤2:从字段选项卡中添加学号、姓名、数学、英语和信息技术5个字段到选定字段中。 步骤3:切换到\筛选\选项卡,在其中进行设置。

步骤4:切换到\排序依据\中选择字段\学号\,在\排序选项\处选择\降序\。

步骤5:单击查询菜单下的查询去向,选择表,输入表名table1,最后将查询保存在query1.qpr文件中,并运行该查询。

2. 首先创建数据库cj_m,并向其中添加xuesheng表和chengji表。然后在数据库中创建视图view1:利用该视图只能查询20001001班(学号的前8位数字串为班号)的学生记录;查询结果包含学号、姓名、数学、英语和信息技术5个字段;各记录按学号降序排序。最后利用刚创建的视图view1查询视图中的全部信息,并将查询结果存放在表table2中。

步骤4:切换到\筛选\选项卡,在其中进行如下设置。 字段名 条件 实例 LEFT(Chengji.学号,8) = \综合应用

在考生文件夹下创建一个下拉式菜单mymenu.mnx,并生成菜单程序mymenu.mpr。运行该菜单程序时会在当前vfp系统菜单的末尾追加一个\考试\子菜单,如下图所示。

菜单命令\计算\和\返回\的功能都通过执行过程完成。 菜单命令\计算\的功能如下:

1) 先用SQL-SELECT语句完成查询:按学号降序列出所有学生在学号、姓名、数学、英语和信息技术5个字段上的数据,查询结果存放在表table3中。

2) 用ALTER TABLE语句在表table3中添加一个\等级\字段,该字段为字符型,宽度为4。

3) 最后根据数学、英语和信息技术的成绩为所有学生计算等级:三门课程都及格(大于等于60分)且平均分大于等于90分的填为\优\,三门课程都及格且平均分大于等于80分、小于90分的填为\良\;三门课程都及格且平均分大于等于70分、小于80分的填为\中\;三门课程都及格且平均分小于70分的填为\及格\;其他的填为\差\。 菜单命令\返回\的功能是恢复标准的系统菜单。

菜单程序生成后,运行菜单程序并依次执行\计算\和\返回\菜单命令。

答案:通过\新建\对话框新建菜单,打开菜单设计器。打开\显示\菜单下的\常规选项\命令,在\常规选项\对话框的\位置\处选择追加,则新建立的子菜单会在当前vfp系统菜单后显示。\计算\菜单项的“过程”代码为: SELECT Xuesheng.学号, Xuesheng.姓名, Chengji.数学, Chengji.英语,; Chengji.信息技术; FROM chengji,xuesheng ;

WHERE Chengji.学号 = Xuesheng.学号; ORDER BY Xuesheng.学号 DESC; INTO TABLE table3.dbf

ALTER TABLE table3 ADD 等级 c(4)

UPDATE table3 SET 等级=\优\数学>=60 AND table3.英语>=60 AND table3.信息技术>=60 AND (table3.数学+table3.英语+table3.信息技术)>=270

UPDATE table3 SET 等级=\良\数学>=60 AND table3.英语>=60 AND table3.信息技术>=60 AND (table3.数学+table3.英语+table3.信息技术)>=240 AND (table3.数学+table3.英语+table3.信息技术)<270

UPDATE table3 SET 等级=\中\数学>=60 AND table3.英语>=60 AND table3.信息技术>=60 AND (table3.数学+table3.英语

+table3.信息技术)>=210 AND (table3.数学+table3.英语+table3.信息技术)<240

UPDATE table3 SET 等级=\及格\数学>=60 AND table3.英语>=60 AND table3.信息技术>=60 AND (table3.数学+table3.英语+table3.信息技术)>=180 AND (table3.数学+table3.英语+table3.信息技术)<210 UPDATE table3 SET 等级=\差\等级=\

注意:在这用了5个update更新;还有一点需要注意的地方,最后一个update更新在写条件时等级=” ”(两个双引号之间必须至少要有一个空格)

在菜单名称中填入\返回\,结果为过程,在过程中输入:SET SYSMENU TO DEFAULT。

步骤3:最后保存菜单mymenu.mnx,并生成菜单程序mymenu.mpr,运行菜单程序并依次执行\计算\和\返回\菜单命令。 第三十六套—————基本操作 简单应用:

1. 打开“点菜”数据库,使用查询设计器设计一个名称为THREE的查询,根据顾客点菜表和菜单表,查询顾客的“顾客号”和“消费金额合计”,消费金额由数量*单价得出。查询结果按“消费金额合计”降序排序,并将查询结果输出到表TABB中。表TABB的两个字段名分别为:顾客号,消费金额合计。设计完成后,运行该查询。

答案:(1)【操作步骤】

步骤1:通过\打开\命令按钮打开考生文件夹下的\点菜\数据库。

步骤2:通过\新建\对话框新建一个查询,按要求将\顾客点菜表\和\菜单表\两个表添加到查询设计器中。

步骤3:在\字段\选项卡中将字段\顾客点菜表.顾客号\和表达式:SUM(数量*单价) AS消费金额合计,添加到\选定字段\列表框中。 步骤4:在\排序依据\选项卡中将表达式\SUM(数量*单价) AS消费金额合计\添加到\排序条件\列表框中,并选择\降序\排序。 步骤5:在\分组依据\选项卡中将将\顾客点菜表.顾客号\添加到\分组条件\列表框中。

步骤6:选择\查询\菜单下的\查询去向\命令,在\查询去向\对话框中选择\表\,在\表名\处输入:TABB,单击\确定\按钮。 步骤7:将查询保存为\three.qpr\,并运行查询。

2. 创建设计一个文件名为“testA”的表单,如下图所示。表单的标题名为“选择磁盘文件”,表单名为“Form1”。该表单完成如下功能:每当在选项按钮组中选择一个文件类型,列表框(List1)立即显示该文件类型的文件目录。列表框的列数为1。“退出”按钮的功能是“关闭和释放表单”。

注意:选择的三种文件类型分别为Word、Excel和TXT文本文件。

答案:步骤1:通过\新建\对话框新建表单,文件名为:testA

步骤2:在表单设计器的属性窗口中,设计表单的Caption属性为\选择磁盘文件\。

步骤3:在表单设计器中,通过表单控件工具栏向表单添加一个选项按钮组控件Optiongroup1,在属性窗口中设置其ButtonCount属性为3。 步骤4:选中选项按钮组控件并单击鼠标右键,在弹出的菜单中选择\编辑\命令,再单击选中其中的\,在属性窗口中设置其Caption属性为\;单击选中其中的\,在属性窗口中设置其Caption属性为\;单击选中其中的\,在属性窗口中设置其Caption属性为\。

步骤5:为表单添加一个列表框控件(List1),在属性窗口中设置其ColumnCount属性为1,RowSourceType属性为\-文件\。 步骤6: 双击选项按钮组,在选项按钮组的click事件中编写代码: do case

case thisform.optiongroup1.value=1 thisform.list1.rowsource=\case thisform.optiongroup1.value=2 thisform.list1.rowsource=\case thisform.optiongroup1.value=3 thisform.list1.rowsource=\endcase

步骤7:为表单添加一个命令按钮控件(Command1),在属性窗口中设置其Caption属性为\退出\。 步骤8:双击\退出\按钮,编写其Click事件代码 Thisform.Release 并关闭代码编写窗口。

步骤9:保存修改后的表单并运行。 综合应用

在考生文件夹下,先打开“点菜”数据库,然后创建设计一个标题名为“查询”、文件名为“testB”的表单,如下图所示。 表单要求如下:

在该表单中设计一个标签(Label1)、一个文本框(Text1)、一个表格(Grid1)和三个命令按钮。

标签对象标题文本为\结帐日期\;文本框用于输入结帐日期(Text1);表格控件用于显示结果。

三个命令按钮的功能如下:

(1) “查询”(Command1)按钮:在该按钮的“Click”事件中使用SQL的SELECT命令查询结帐日期等于从文本框输入日期的顾客序号、顾客姓名、单位和消费金额,查询结果按消费金额降序排序,并将查询结果存储到表TABC中。

(2) “显示”(Command2)按钮:在该按钮的“Click”事件中使用命令将表TABC中记录在表格控件中显示。注意,表格控件中所有属性和事件均为默认。

(3) “退出”(Command3)按钮的功能是“关闭和释放表单”。

表单设计完成后,运行该表单,查询结帐日期等于2005-10-01的顾客信息。

答案:首先新建表单,做成如题目所示的样子,在这需要注意的一点是:标签的caption属性为“结账日期”,一定要看清“结账日期”的“账”是怎么写的,应该是“贝”字旁,若写错了,会出不来结果。然后在“查询”按钮的单击事件中编写代码为: SELECT 结账表.顾客序号, 结账表.顾客姓名, 结账表.单位, 结账表.消费金额; FROM 点菜!结账表;

WHERE 结账表.结账日期 = ctod(thisform.text1.value); ORDER BY 结账表.消费金额 DESC; INTO TABLE tabc.dbf

再在“显示”按钮的单击事件中编写代码(注意,先把表格控件的recordsourcetype属性改为4-SQL说明): thisform.grid1.recordsource=\最后在“退出”按钮的单击事件中编写:thisform.release

注意:运行表单时文本框中的日期不能输:2005-10-01这样的日期格式,因为系统默认的日期格式是美语,也就是月日年的格式,而且年份是两位的,大家可以从“工具”——“选项”——区域选项卡,看一下日期格式,因此咱们必须写成:10-01-05这样的日期格式才能出来结果。 第三十八套————基本操作

简单应用:

1. 打开“TEST_DB”数据库,根据表DEPT和表SELL并使用查询设计器设计一个名称为THREE的查询,按年度统计各部门的月平均销售(通过销售额计算)、月平均工资(通过工资额计算)和月平均利润(通过\月平均销售-月平均工资\计算)。查询统计结果按部门号、年度升序排序,并将查询结果输出到表TABB中。表TABB的字段名依次为:部门号、部门名、年度、月平均销售、月平均工资、月平均利润。设计完成后,运行该查询。

答案:(1)【操作步骤】

步骤3:在查询设计器下方的\字段\选项卡中选中并添加字段\部门号\、\部门名\和\年度\,在\函数和表达式\的\表达式\中输入\销售额) AS 月平均销售\、 \工资额) AS 月平均工资\和\销售额-Sell.工资额) AS 月平均利润\并添加这些表达式。 2. 打开文件名为“testA”的表单。该表单完成如下功能:每当用户输入用户名和口令并按“确认”按钮后,利用表PASS中记录检查其输入是否正确,若正确,就显示“欢迎使用本系统!”字样,并关闭表单;若不正确,则显示\用户名或口令不对,请重输入!\字样;如果三次输入不正确,就显示“用户名或口令不对,登录失败!”字样,并关闭表单。 (1) 修改口令输入文本框,使输入的口令显示为“*”。

(2) 修改该表单“确认”按钮的Click事件中的程序。请将第2、3、4、7和12行语句修改正确。修改时不允许增加或删除行,只能在错误行上进行修改。

(2)【操作步骤】

步骤1:打开表单,修改Text2的PasswordChar属性赋值为\,使用户在输入口令时显示\。 步骤2:修改该表单\确认\按钮的Click事件中的程序如下。 第3行处的错误修改为:Key2 = ALLTRIM(ThisForm.text2.value) 第4行处的错误修改为:LOCATE ALL FOR USER = Key1 第12行处的错误修改为:THISFORM.RELEASE 综合应用

建立一个文件名和表单名均为myform的表单文件,表单上有: . 表格控件grid1(RecordSourceType属性手工设置为“别名”) . 文本框控件Text1

. 命令按钮控件Command1(文本为“确定”)

程序运行时在文本框中输入部门名,然后单击“确定”命令按钮计算该部门各年度的销售额(合计)和利润(合计)(利润为“销售额-工资额”),按年度升序将结果(含年度、销售额和利润3个字段)保存在以部门名命名的dbf文件的同时,在Grid1控件中显示计算的结果。 要求:程序完成后必须运行,并分别计算\笔记本产品部\和\计算机产品部\按年度的销售额和利润情况。

答案:通过\新建\对话框新建一个表单,文件名为myform,按题目的要求为表单添加一个表格控件、一个文本框控件和一个命令按钮控

件,并修改控件的相关属性值,做好表单后,在“确定”按钮的单击事件中编写如下代码: x=thisform.text1.value

SELECT Sell.年度, SUM(Sell.销售额) as 销售额,; SUM(Sell.销售额-Sell.工资额) as 利润; FROM test_db!dept INNER JOIN test_db!sell ; ON Dept.部门号 = Sell.部门号;

WHERE Dept.部门名 = thisform.text1.value; GROUP BY Sell.年度; ORDER BY Sell.年度; into table &x

thisform.grid1.recordsource=\

最后一定记得运行表单,在文本框中分别输入“笔记本产品部”和“计算机产品部”,结果会生成分别以这两个部门命名的表中。 第三十九套——基本操作

UPDATE 学生 SET 出生日期={^1983/05/01} WHERE 姓名='王三风' 简单应用

1. 用SQL语句查询至少有三门的课程成绩在70分以上(包括70分)的学生姓名,并将结果按升序存入表文件results.dbf,然后将该SQL语句粘贴在SQL.TXT文件的 第二行(只占一行)。

答案:这道题可以用查询设计器做,首先新建一个查询,将学生和选课两个表添加进去,在“字段”选项卡把姓名字段添加到选定字段中;在“筛选”选项卡中,字段名选成绩,条件为>=,实例为70;“排序依据”选项卡式按照姓名升序;“分组依据”按姓名分组,“满足条件”下字段名为:count(课程号),条件为>=,实例为3,然后单击“确定”按钮;再在查询设计器空白处右击——“输出设置”,选表,输入表名results,最后运行查询,但不用保存。在查询设计器空白处右击——查看SQL,把SQL语句复制下来,新建一个文本文件,将光标定位在文件中的第2行,将复制的SQL语句粘贴进去。注意:需删除每一行语句后面的分号,并在原分号的位置空一英文状态下的空格(因为题目要求只占一行)。最后保存文本文件名为:SQL.TXT(注意扩展名必须要加上)

答案:第一处错误:MODIFY TABLE 学生 ADD 平均成绩 N(6,2) 改为:ALTER TABLE 学生 ADD 平均成绩 N(6,2) 第二处错误:DO WHILE EOF() 改为: DO WHILE NOT EOF()

第三处错误:REPLACE 平均成绩 = cj[1] 改为:REPLACE 平均成绩 WITH cj[1] 综合应用:

(2) 建立一个表单grade_list(控件名为form1,文件名为grade_list),表单中含有一个表格(名称为grdView_grade)控件, 该表格控件的数据源是前面建立的视图view_grade(直接使用拖拽的方法);然后在表格控件下面添加一个命令按钮(名称为Command1),该命令按钮的标题为\退出\,要求单击按钮时关闭表单。

注意:完成表单设计后要运行表单的所有功能。

(2)【操作步骤】

步骤1:单击常用工具栏中的\新建\按钮,文件类型选择\表单\,打开表单设计器。

步骤2:在表单设计器中单击右键,选择快捷菜单中的\数据环境\命令。将视图view_grade添加到数据环境中。 步骤3:从表单数据环境中拖动视图view_grade到表单中,在表单中自动生成表格对象。 第四十套——基本操作

2. 为表order的\订单日期\字段定义默认值为系统的当前日期。

(2)在数据库设计器中右键单击\表,选择\修改\命令,在打开的表设计器中选中\订单日期\字段,在\字段有效性\框的\默认值\文本框中输入date()。 简单应用:

1. 请按要求修改modi1.prg程序文件中的错误并使之能够正确运行(具体修改要求在程序文件中)。注意:不可以增加或删除程序行。 答案:(1)【操作步骤】

打开modi1.prg,修改其中的错误如下。

① 删除\此处空行)\,然后填写:use customer ② 把 \改为\。

2. 在考生目录下有表customer(客户)和order(订单),用SQL SELECT语句查询所有客户的订单信息,要求在结果中包括公司名称、订单编号、金额和送货方式四个字段的信息,并先按公司名称升序排序、再按订单编号升序排序,查询结果存放在results.dbf文件中,并要求将完整的SQL SELECT语句保存在SQL.PRG文件中。

(2)【操作步骤】

新建一个程序sql.prg,写入如下SQL语句:

SELECT Customer.公司名称, Order.订单编号, Order.金额, Order.送货方式; FROM customer,order;

WHERE Customer.客户编号 = Order.客户编号; ORDER BY Customer.公司名称, Order.订单编号; INTO TABLE results 保存并运行程序。 综合应用

建立满足如下要求的应用并运行,所有控件的属性必须在表单设计器的属性窗口中设置:

1. 建立一个表单myform(文件名和表单名均为myform),其中包含两个表格控件,第一个表格控件名称是grd1,用于显示表customer中的记录,第二个表格控件名称是grd2,用于显示与表customer中当前记录对应的order表中的记录。要求两个表格尺寸相同、左右布局、顶边对齐。

2. 建立一个菜单mymenu,该菜单只有一个菜单项\退出\,该菜单项对应于一个过程,并且含有两条语句,第一条语句是关闭表单myform,第二条语句是将菜单恢复为默认的系统菜单。

3. 在myform的Load事件中执行生成的菜单程序mymenu.mpr。 注意:程序完成后要运行所有功能。

答案:【操作步骤】

步骤1:通过\新建\对话框新建一个表单,然后设置表单的Name属性为:myform。

步骤2:右击表单空白处,选择\数据环境\命令,将考生文件夹下的\和\两个表依次添加到表单的数据环境中。 步骤3:为表单添加两个表格控件,分别修改它们的Name属性为grd1和grd2,RecordSource属性为:customer和order。

步骤4:适当调整每个表格的宽度和位置。按住SHIFT键的同时选中两个表格,在“显示”菜单—\布局\工具栏中分别单击\相同大小\和\顶边对齐\命令按钮。

步骤5:以\为文件对表单进行保存,并运行保存后的表单。

步骤6:通过\新建\对话框新建一个菜单,输入菜单名称为\退出\,选择结果为\过程\,然后单击后面的\创建\按钮,在其中编写如下的命令语句。

MYFORM.RELEASE

SET SYSMENU TO DEFAULT

步骤7:保存菜单名称为\,选择\菜单\菜单下的\生成\命令,生成可执行菜单文件,关闭菜单设计器。 步骤8:回到表单设计器中,双击表单空白处,编写表单的load事件代码:DO mymenu.mpr。

步骤9:运行表单,依次单击customer表对应表格中的所有记录,查看运行情况,最后单击\退出\菜单命令。 第四十二套——基本操作 简单应用:

1. 在SCORE_MANAGER数据库中统计选修了课程的学生人数(选修多门时,只计算1次),统计结果保存在一个新表NEW_TABLE中, 表中只有一个字段,字段名为学生人数。

(1)【操作步骤】 在命令窗口输入命令:

Select count(distinct 学号) as 学生人数 from score1 into table new_table 然后按回车键,执行命令窗口中的命令。

2. 使用一对多报表向导建立报表。要求:父表为“学生”,子表为“课程”,从父表中选择“姓名”字段,从子表中选择全部字段,两个表通过“学号”建立联系;按“学号”降序排序;生成的报表名为student_report。 答案:(2)【操作步骤】

步骤1:通过\新建\对话框新建一个报表,选择\向导\→\一对多报表向导\。

步骤2:在父表中选择\学生\表,并将其中的\姓名\字段添加到\选定字段\列表框中。

步骤3:在子表中选择\课程\表,并将全部字段添加到\选定字段\列表框中。并通过\学号\建立两个表之间的联系。 步骤4:在\排序记录\对话框中,选择按\学号\降序排序。其他步骤按默认值进行设置。 步骤5:最后将报表保存为\并预览。 综合应用

SCORE_MANAGER数据库中含有三个数据库表STUDENT、SCORE1和COURSE。

为了对SCORE_MANAGER数据库数据进行查询,设计一个表单Myform3(控件名为form1,表单文件名为Myform3)。表单标题为\成绩查询\;表单有\查询\名称为Command1)和\退出\名称为Command2)两个命令按钮。表单运行时,单击\查询\按钮,查询每门课程的最高分,查询结果中含\课程名\和\最高分\字段,结果按课程名升序保存在表NEW_TABLE3。 单击\退出\按钮,关闭表单。

注意:完成表单设计后要运行表单的所有功能

答案:步骤1:打开考生文件夹下的\数据库。

步骤2:“文件”—“新建”—“表单”,新建一个名为\的表单文件。 步骤3:为表单添加两个命令按钮控件,按照题目的要求设置各控件的相关属性。 步骤4:双击\查询\命令按钮,编写其Click事件代码如下: SELECT Course.课程名, MAX(score1.成绩) AS 最高分; FROM course,score1,student ; WHERE Student.学号 = Score1.学号 ; AND Course.课程号 = Score1.课程号; ORDER BY Course.课程名; GROUP BY Course.课程名; INTO TABLE NEW_TABLE3

步骤5:双击\退出\命令按钮,编写其Click事件代码:ThisForm.Release。 步骤6:保存并运行表单,查看表单的运行结果。 第四十三套————基本操作

在考生文件夹下有一表单文件myform.scx,其中包含Text1和Text2两个文本框,以及Ok和Cancel两个命令按钮。打开该表单文件,然后在表单设计器环境下通过属性窗口设置相关属性完成如下操作: 2. 设置Text1,使其在表单打开时显示123,数据类型为字符型。

3. 设置Text2,使其在表单打开时显示表单的宽度值,数据类型为数值型。注意:表单打开时的初始宽度可以是任意值。

4. 将Ok按钮设置为\确认\按钮,即通过按Enter键就可以选择该按钮;将Cancel按钮的第1个字母C设置成\访问键\,即通过按字母键C就可以选择该按钮。

答案:(1) 选中文本框text1和Text2,在属性框中找到宽度属性(Width),单右键选\重置为默认值\。 (2)选中文本框text1,在value属性框中输入:=\

(3)选中文本框text2,在value属性框中输入:=thisform.width

(4)选中ok按钮,将它的default属性设置为:.t.,将Cancel按钮的Caption属性设置为:\\

1. 利用查询设计器创建查询,根据xuesheng和chengji表统计出各班(学号的前8个数字串为班号)男、女生在英语课程上各自的最高分、最低分和平均分。查询结果包含班号、性别、最高分、最低分和平均分5个字段;各记录按班号升序排序,同一班的女生在前、男生在后;查询去向为表table1。最后将查询保存在query1.qpr文件中,并运行该查询。

在选定字段中用函数和表达式生成:left(xuesheng.学号,8) as 班号,添加到选定字段中,然后添加”性别”字段,再用函数和表达式生成:max(chengji.英语) as 最高分,min(chengji.英语) as 最低分,avg(chengji.英语) as 平均分分别添加到选定字段中;在”分组依据”中分别选择left(xuesheng.学号,8) as 班号和性别 综合应用:

在考生文件夹下创建一个下拉式菜单mymenu.mnx,并生成菜单程序mymenu.mpr。运行该菜单程序时会在当前vfp系统菜单的末尾追加一个\考试\子菜单,如下图所示。

菜单命令\计算\和\返回\的功能都通过执行过程完成。菜单命令\计算\的功能是从xuesheng表和chengji表中找出所有满足如下条件的学生:其在每门课程上的成绩都大于等于所有同学在该门课程上的平均分。并把这些学生的学号和姓名保存在表table2中(表中只包含学号和姓名两个字段)。表table2中各记录应该按学号降序排序。 菜单命令\返回\的功能是恢复标准的系统菜单。

菜单程序生成后,运行菜单程序并依次执行\计算\和\返回\菜单命令。

答案:【操作步骤】

步骤1:通过\新建\对话框新建一个菜单文件,并打开菜单设计器。打开\显示\菜单下的\常规选项\对话框,在\位置\处选择追加,则新建立的子菜单会在当前vfp系统菜单后显示。

步骤2:在菜单名称中填入\考试\,结果为子菜单,单击创建按钮,在子菜单的菜单名称中输入\计算\,结果为过程,在过程中输入下列代码:

select xuesheng.学号,xuesheng.姓名 from xuesheng;

inner join chengji on xuesheng.学号=chengji.学号; where 数学>=(select avg(数学) from chengji); and 英语>=(select avg(英语) from chengji);

and 信息技术>=(select avg(信息技术) from chengji); order by xuesheng.学号 desc; into table table2

步骤3:在菜单名称中填入\返回\,结果为过程,在过程中输入:SET SYSMENU TO DEFAULT。

步骤4:最后保存菜单mymenu.mnx,并生成可执行菜单程序mymenu.mpr,“菜单”—“生成”,运行菜单程序并依次执行\计算\和\返回\菜单命令。

第四十四套——基本操作

1. 利用SQL SELECT命令将表stock_sl.dbf复制到stock_bk.dbf;

2.利用SQL INSERT命令插入记录(\到stock_bk.dbf表。 3.利用SQL UPDATE命令将stock_bk.dbf表中\股票代码\为\的股票\现价\改为8.88。 4.利用SQL DELETE命令删除stock_bk.dbf表中\股票代码\为\的股票。

答案:本题应分为两个步骤完成:

(1)在命令窗口中分别输入相应命令,并按回车以执行。 ①SELECT * FROM stock_sl INTO TABLE stock_bk

② INSERT INTO stock_bk VALUES(\③ UPDATE stock_bk SET 现价=8.88 WHERE 股票代码=\④ DELETE FROM stock_bk WHERE 股票代码=\

(2)将命令按题目要求把以上4条语句复制到sql.txt文件中(注意加.txt) 简单应用:

2. modi.prg中的SQL语句用于计算\银行\的股票(股票简称中有\银行\两字)的总盈余,现在该语句中有三处错误分别出现在第1行、第4行和第6行,请改正之。 (注意:不要改变语句的结构、分行,直接在相应处修改。)

(2)【操作步骤】

步骤1:通过常用工具栏中的\打开\对话框打开考生文件夹下的\文件。 步骤2:修改程序中的错误如下。

错误1:SELECT COUNT((现价-买入价)*持有数量) ; 修改为:SELECT SUM((现价-买入价)*持有数量) ; 错误2:= ; 修改为:IN ;

错误3:WHERE \银行\股票简称) 修改为:WHERE股票简称LIKE \银行%\

步骤3:保存并运行修改后的程序文件,查看程序运行结果。 综合应用

在考生文件夹下,建立满足如下要求的应用并运行:

(1) 建立一个表单stock_form,其中包含两个表格控件,第一个表格控件名称是grdStock_name, 用于显示表stock_name中的记录,第二

个表格控件名称是grdStock_sl,用于显示与表stock_name中当前记录对应的stock_sl表中的记录。

答案; 首先新建表单stock_form,在表单空白处右击——“数据环境”,把表stock_name和表stock_sl依次添加到数据环境中,然后从stock_name表的“股票代码”字段拖动到stock_sl表的“股票代码”字段上(即建立两个表的临时联系),在弹出的对话框中单击“确定”按钮,最后在数据环境中拖着两个表的标题栏拖动到表单当中,再添加“关闭”命令按钮并写代码:thisform.release,最后保存运行表单。 第四十五套————基本操作

在考生文件夹下,完成如下操作:

1. 打开考生文件夹下的表单one(如图所示),在\打开\命令按钮的Click事件中增加一条语句,使表单运行时单击该命令按钮的结果是使\关闭\按钮变为可用。

2. 打开考生文件夹下的表单two(如图1所示),在选项组中增加一个单选钮(如图2所示)。注意:不能改变原先的名称以及属性值。 3. 使用SQL语句为考生文件夹下的\学院表\增加一个字段\教师人数\整数型),同时为该字段设置有效性规则:教师人数>=0。请将该SQL语句存储在three.prg文件中,否则不得分。

4. 使用SQL语句将考生文件夹下的自由表teacher中教师姓名为Jack的工资修改为8000元。请将该SQL语句存储在four.prg文件中,否则不得分。

答案:(1)打开表单\,在\打开\命令按钮的Click事件中增加如下语句。

ThisForm.Command2.Enabled=.T.

(2)打开表单\,选中选项按钮组,将它的buttoncount属性改为:3,然后在选项按钮组上右击—“编辑”,选中第三个选项按钮改它的caption属性

(3)在命令窗口输入语句并敲回车执行:

ALTER TABLE 学院表 ADD 教师人数 I CHECK 教师人数>=0

然后通过\新建\对话框新建一个名为\的程序文件,将上述语句复制并粘贴到新建的程序文件中。 (4)在命令窗口输入语句并敲回车执行:

UPDATE teacher SET 工资=8000 WHERE 姓名=\

然后通过\新建\对话框新建一个名为\的程序文件,将上述语句复制并粘贴到新建的程序文件中。 简单应用:

1. 考生文件夹下的程序文件five.prg的功能是:根据\教师表\计算每个系的教师人数并将相应数据填入\学院表\,程序中有三处错误,请修改并执行程序。只能修改标有错误的语句行,不能修改其他语句。

答案:(1)【操作步骤】

步骤1:打开考生文件夹下的five.prg文件。 步骤2:修改其中的命令语句如下。 错误1:DO .NOT. EOF() 修改为:DO WHILE .NOT. EOF()

错误2:SELECT COUNT(*) FROM 教师表 WHERE 教师表.系号=xihao INTO A 修改为:SELECT COUNT(*) FROM 教师表 WHERE 教师表.系号=xihao INTO ARRAY A 错误3:NEXT 修改为:SKIP

步骤3:保存修改后的程序并运行。

2. 在\课程管理\数据库中使用视图设计器建立视图teacher_view,该视图根据\教师表\和\课程表\建立,视图包括姓名、工资、课程名和学时4个字段,视图中的记录按\工资\升序排列。

(2)【操作步骤】

步骤1:打开考生文件夹下的\课程管理\数据库,在数据库设计器中右键单击数据库空白处,选择\新建本地视图\命令,打开视图设计器。 步骤2:新建一个视图文件,将\教师表\和\课程表\添加到视图设计器中;在视图设计器的字段选项卡中,将字段\姓名\、\工资\、\课程名\和\学时\个字段添加到\选定字段\列表框中;在排序依据选项卡中,选择按\工资\升序排序记录。

步骤3:将视图保存为\并运行。 综合应用

在考生文件夹下完成下列操作:

1. 建立一个名为myform的表单,表单中包括一个列表框(List1)和两个命令按钮(Command1和Command2),Command1和Command2的标题分别为\生成表\和\退出\。

2. 设置列表框的数据源(RowSource)和数据源类型(RowSourceType)两个属性,使用SQL语句根据\学院表\的\系名\字段的内容在列表框中显示\系名\(注意不要使用命令指定这两个属性)。

3. 为\生成表\命令按钮的单击事件编写程序。程序的功能是根据表单运行时列表框中选定的\系名\,将\教师表\表中相应系的所有记录存入以该系名命名的自由表中,自由表中包含\职工号\,\姓名\和\工资\三个字段,并按照\职工号\升序排列。 4. 运行表单,分别生成存有\计算机\、\通信\、\信息管理\系信息的3个表。

答案:首先建立一个名为myform的表单,按题目要求添加一个列表框和两个命令按钮。然后按照题目的要求设置表单中各控件的相关属性,将列表框控件的rowsourcetype属性更改为3-SQL语句,rowsource属性框中输入:select 系名 from 学院表,敲回车确定;为\生成表\命令按钮的Click事件编写如下代码: x=thisform.list1.value

SELECT 教师表.职工号, 教师表.姓名, 教师表.工资; FROM 课程管理!教师表 INNER JOIN 课程管理!学院表 ; ON 教师表.系号 = 学院表.系号;

WHERE 学院表.系名 = thisform.list1.value; ORDER BY 教师表.职工号; into table &x

最后保存并按照题目要求运行表单 第四十六套——-基本操作 简单应用:

在考生文件夹下的SELLDB数据库中包含“部门表”、“销售表”、“部门成本表”和“商品代码表”等。

1. 在考生文件夹下已有程序文件three.prg,其功能如下: 查询2006年各部门商品的年销售利润情况。查询内容为:部门号、部门名、

商品号、商品名和年销售利润,其中年销售利润等于销售表中一季度利润、二季度利润、三季度利润和四季度利润的合计。查询结果按部门号升序,然后按年销售利润降序排序,并将查询结果输出到表TABA中。表TABA的字段名分别为:\部门号\、\部门名\、\商品号\、\商品名\和\年销售利润\。 答案:(1)【操作步骤】

步骤1:打开考生文件夹下的\程序文件。 步骤2:按照题目的要求修改程序文件中的错误如下。

错误1:SELECT 部门表.部门号, 部门名, 销售表.商品号, 商品名,一季度利润 + 二季度利润 + 三季度利润 + 四季度利润 to 年销售利润;

修改为:SELECT 部门表.部门号, 部门名, 销售表.商品号, 商品名,一季度利润 + 二季度利润 + 三季度利润 + 四季度利润 as 年销售利润;

错误2:ORDER BY 1, 5; 修改为:ORDER BY 1, 5 DESC; 错误3:TO TABLE TABA 修改为:INTO TABLE TABA

请打开程序文件three.prg,修改其中的错误,然后运行该程序。 2. 在考生文件夹下已有程序文件four.prg,其功能如下:

计算2005年按部门不分商品的\年销售利润\,以及\年销售利润\减去部门成本表中对应部门的\工资支出\和\办公支出\后的纯利润,并将结果存储到表account中。表account的字段名分别为:\部门号\、\部门名\、\年销售利润\、\工资支出\、\办公支出\和\纯利润\。 请打开程序文件four.prg,修改其中的错误,然后运行该程序。

(2)【操作步骤】

步骤1:通过\新建\对话框新建一个程序文件。 步骤2:按照题目的要求在其中编写如下命令语句。 **********four.prg中的程序代码********** SELECT 部门表.部门号, 部门表.部门名,; sum(销售表.一季度利润) as 一季度利润,; sum(销售表.二季度利润) as 二季度利润,; sum(销售表.三季度利润) as 三季度利润,; sum(销售表.四季度利润) as 四季度利润; FROM 部门表,销售表 ;

WHERE 部门表.部门号 = 销售表.部门号; GROUP BY 部门表.部门号; ORDER BY 部门表.部门号; INTO TABLE account.dbf 步骤3:将程序保存为\并运行 综合应用:

创建一个标题名为\部门销售查询\、表单名为Form1,文件名为XS的表单,如下图所示。 表单要求如下:

在该表单中设计两个标签、两个文本框、一个表格和两个命令按钮。

1. 两个标签对象标题文本分别为\部门号\和\年度\;两个文本框分别用于输入部门号(Text1)和年度(Text2);表格控件用于显示查询结果(Grid1)。 2. 两个命令按钮的功能如下:

⑴ \查询\按钮(Command1):在该按钮的Click事件中编写程序,根据输入的部门号和年度,在表格控件中显示:该部门销售的\商品号\、\商品名\、\一季度利润\、\二季度利润\、\三季度利润\和\四季度利润\,将查询结果存储到以\部门号\为名称的表中(例如,部门号为02,则相应的表名为xs02.dbf)。注意:表的字段名分别为:\商品号\、\商品名\、\一季度利润\、\二季度利润\、\三季度利润\和\四季度利润\。

⑵ \退出\按钮(Command2):关闭并释放表单。 注意:表格控件的RecordSourceType属性设置为\-SQL说明\;表单设计完成后,运行该表单,输入部门号:02,年度:2005,单击\查询\按钮进行查询。

答案:首先新建一个表单,根据题目要求更改表单及各控件的属性,这儿需要特别注意一点的是:先将表格控件的columncount属性改为6(即表格中有6列),再在表格上右击—“编辑”,单击每一列的header1,修改它们的caption属性,依次改为“商品号”,“商品名”,“一季度利

润”直到“四季度利润”,若不做这一步,考试将不会得满分。然后将表格控件的recordsourcetype属性改为4-SQL说明。“查询”按钮的click事件代码如下:

x=\

SELECT 商品代码表.*, 销售表.一季度利润, 销售表.二季度利润,; 销售表.三季度利润, 销售表.四季度利润;

FROM selldb!商品代码表 INNER JOIN selldb!销售表 ; ON 商品代码表.商品号 = 销售表.商品号; WHERE 销售表.部门号 = thisform.text1.value; AND 销售表.年度 = thisform.text2.value; INTO TABLE &x

thisform.grid1.recordsource=\第四十七套————基本操作 简单应用:

1) 视图按顺序包含列Currency_sl.姓名、Rate_exchange.外币名称、Currency_sl.持有数量和表达式Rate_exchange.基准价* Currency_sl.持有数量;

2) 按\基准价* Currency_sl.持有数量\降序排序;

3) 将视图保存为view_rate。 答案:1)【操作步骤】

步骤1:打开考生文件夹下的\外汇管理\数据库,在打开的数据库设计器的空白处单击鼠标右键,选择\新建本地视图\命令。将\和\两个添加到视图设计器中。

步骤2:在\字段\选项卡中将字段Currency_sl.姓名、Rate_exchange.外币名称、Currency_sl.持有数量,以及表达式\基准价*Currency_sl.持有数量\添加到\选定字段\列表框中。

步骤3:在\排序依据\选项卡中将表达式\基准价*Currency_sl.持有数量\添加到\排序条件\列表框中。 步骤4:保存视图为\并运行视图。

2. 使用SQL SELECT语句完成一个汇总查询,结果保存在results.dbf表中,该表含有\姓名\和\人民币价值\两个字段(其中\人民币价值\为每人持有外币的\基准价* Currency_sl.持有数量\的合计),结果按\人民币价值\降序排序。

(2)【操作步骤】

在命令窗口输入下列命令语句并运行。 ********************************** SELECT Currency_sl.姓名,;

SUM(Currency_sl.持有数量*Rate_exchange.基准价) as 人民币价值; FROM currency_sl ,rate_exchange ;

WHERE Currency_sl.外币代码 = Rate_exchange.外币代码; GROUP BY Currency_sl.姓名; ORDER BY 2 DESC; INTO TABLE results 综合应用

设计一个表单,所有控件的属性必须在表单设计器的属性窗口中设置,表单文件名为\外汇浏览\,表单界面如下所示: 其中:

1. \输入姓名\为标签控件Label1; 2. 表单标题为\外汇查询\;

3. 文本框的名称为Text1,用于输入要查询的姓名,如 张三丰;

4. 表格控件的名称为Grid1,用于显示所查询人持有的外币名称和持有数量,RecordSourceType的属性为4(SQL说明);

5. \查询\命令按钮的名称为Command1,单击该按钮时在表格控件Grid1中按持有数量升序显示所查询人持有的外币名称和数量(如上图所示),并将结果存储在以姓名命名的DBF表文件中,如张三丰.DBF; 步骤3:编写\查询\按扭的Click代码事件代码如下。

x=thisform.text1.value thisform.grid1.recordsource=;

\外币名称, Currency_sl.持有数量;

FROM 外汇管理!currency_sl INNER JOIN 外汇管理!rate_exchange ;

ON Currency_sl.外币代码 = Rate_exchange.外币代码; WHERE Currency_sl.姓名 =thisform.text1.value; ORDER BY Currency_sl.持有数量; INTO TABLE &x\第四十八套————基本操作

1. 利用快捷菜单设计器创建一个弹出式菜单one(如图1所示),菜单有两个选项。“增加”和“删除”,两个选项之间用分组线分隔。 4. 使用SQL语句为“评委表”的“评委编号”字段增加有效性规则:评委编号的最左边两位字符是11(使用LEFT函数),并将该SQL语句存 ALTER TABLE 评委表 ALTER 评委编号 SET CHECK LEFT(评委编号,2)=\

保存程序文件为\并运行。 简单应用:

在考生文件夹下完成下列操作:

1. 建立一个文件名和表单名均为two的表单,然后为表单two建立一个名为quit的新方法,并在该方法中写一条语句Thisform.release;最后向表单中添加一个命令按钮(Command1),并在该命令按钮的Click事件中写一条语句调用为表单建立的新方法quit。

步骤3:向表单中添加一个命令按钮(Command1),在此命令按钮的Click事件中输入代码:ThisForm.quit。

2. 使用SQL语句计算每个歌手的最高分、最低分和平均分,并将结果存储到result.dbf表中(包含歌手姓名、最高分、最低分和平均分4个字段),要求结果按平均分降序

答案:SELECT 歌手表.歌手姓名, MAX(评分表.分数) AS 最高分,; MIN(评分表.分数) AS 最低分, AVG(评分表.分数) AS 平均分; FROM 歌手表,评分表 ;

WHERE 歌手表.歌手编号 = 评分表.歌手编号; GROUP BY 歌手表.歌手姓名; ORDER BY 4 DESC; INTO TABLE result 综合应用:

2. 为“生成表”命令按钮编写程序,程序的功能是根据简单应用题生成的result.dbf表按指定的排序方式生成新的表,单旋钮选择“按评分升序”时,依次按最高分、最低分和平均分3个字段升序排序生成表six_a,单旋钮选择“按评分降序”时,依次按最高分、最低分和平均分3个字段降序排序生成表six_d。

3. 运行表单,选择“按评分升序”单选钮,单击“生成表”命令按钮;再选择“按评分降序”单选钮,单击“生成表”命令按钮(注意必须执行)。

步骤3:编写\生成表\命令按钮的Click事件代码: DO CASE

CASE ThisForm.Optiongroup1.VALUE=1 SELECT *; FROM result;

ORDER BY Result.最高分, Result.最低分, Result.平均分; INTO TABLE six_a

CASE ThisForm.Optiongroup1.VALUE=2 SELECT *; FROM result;

ORDER BY Result.最高分 DESC, Result.最低分 DESC, Result.平均分 DESC; INTO TABLE six_d ENDCASE

第五十套————基本操作 简单应用:

4) 在表单的Init事件中写两条语句,第一条语句将Grid1的RecordSourceType属性设置为0(即数据源的类型为表),第二条语句将Grid1的RecordSource属性设置为student,使得在表单运行时表格控件中显示表student 的内容(注:不可以写多余的语句)。

步骤4:编写表单的Init事件代码如下。 ThisForm.Grid1.RecordSourceType=0 ThisForm.Grid1.RecordSource=\

步骤5:编写\退出\命令按钮的Click事件代码:ThisForm.Release。

步骤6:保存并运行表单,查看表单的运行效果。

2. 使用SQL SELECT语句查询每个学生的平均成绩,结果包括\姓名\(出自student表)和\平均成绩\(根据score表的成绩字段计算)两个字段,并按\平均成绩\字段降序,\平均成绩\相等时按姓名升序将查询结果存储在表avgscore.dbf中。

(2)【操作步骤】

在命令窗口中输入下列程序并运行:

SELECT Student.姓名, AVG(Score.成绩) AS 平均成绩; FROM score,student ;

WHERE Score.学号 = Student.学号; GROUP BY Student.姓名; ORDER BY 2 DESC; INTO TABLE avgscore 综合应用

在考生文件夹下完成如下操作:

4. 打开表单文件three,然后完成如下操作:

1) 为\生成数据\命令按钮(Command1)写代码:用SQL命令查询视图viewsc的全部内容,要求先按\学号\升序、再按\成绩\降序排序,并将结果保存在result.dbf表文件中;

2) 为\运行报表\命令按钮(Command2)写代码:预览报表three.frx; 3) 为\退出\命令按钮(Command3)写代码:关闭并释放表单。

最后运行表单three,并一定通过\生成数据\命令按钮产生result.dbf表文件。

答案:【操作步骤】 。

步骤5:打开表单文件three,为\生成数据\命令按钮(Command1)编写代码如下: SELECT * FROM viewsc ORDER BY 学号,成绩 DESC INTO TABLE result 为\运行报表\命令按钮(Command2)编写代码如下: report form three preview

为\退出\命令按钮(Command3)编写代码如下: ThisForm.Release

保存并运行表单three,依次单击表单中的3个命令按钮。 第五十一套————基本操作

2. 使用SQL命令查询小于30岁(含30岁)的会员的信息(来自表Customer),列出会员号、姓名和年龄,查询结果按年龄降序排序存入文本文件cut_ab.txt中,SQL命令存入命令文件cmd_ab.prg。 SELECT Customer.会员号, Customer.姓名, Customer.年龄;

FROM customer;

WHERE Customer.年龄 <= 30; ORDER BY Customer.年龄 DESC; TO FILE cut_ab 综合应用:

2. 按从左至右的顺序三个选项卡的标签(标题)的名称分别为\客户表\、\商品表\和\订单表\,每个选项卡上均有一个表格控件,分别显示对应表的内容(从数据环境中拖拽,客户表为Customer、商品表为Article、订单表为OrderItem)。

步骤1:步骤3:在页框上右击—“编辑”,选中page1,改它的caption属性为:客户表;选中page2,改它的caption属性为:商品表;选中page3,改它的caption属性为:订单表。同样还是在页框的编辑状态下,拖着数据环境中的每一个表的标题栏拖动到相应的页面上即可。 第七十四套---——基本操作 简单应用:

1. 将customer1表中的全部记录追加到customer表中,然后用SQL SELECT语句完成查询:列出目前有订购单的客户信息(即有对应的order_list记录的customer表中的记录),同时要求按客户号升序排序,并将结果存储到results 表中(表结构与customer表结构相同)。

答案:1.首先打开customer表,”表”菜单——“追加记录”——来源于customer1表——确定,即把customer1表中的记录全部追加到了customer表中;然后在命令窗口中输入以下代码: select * from customer where 客户号 in;

(select 客户号 from order_list) order by 客户号 into table 2. 打开并按如下要求修改form1表单文件(最后保存所做的修改):

第1处:是判断两个文本框的值是否相同,所以应改为:If Thisform.Text1.Value = Thisform.Text2.Value 第2处:是关闭表单,所以应改为:Thisform.Release 综合应用;

使用报表设计器建立一个报表,具体要求如下:

(1) 报表的内容(细节带区)是order_list表的订单号、订购日期和总金额;

(2) 增加数据分组,分组表达式是\客户号\,组标头带区的内容是\客户号\,组注脚带区的内容是该组订单的\总金额\合计; (3) 增加标题带区,标题是\订单分组汇总表(按客户)\,要求是3号字、黑体, 括号是全角符号。 (4) 增加总结带区,该带区的内容是所有订单的总金额合计。 最后将建立的报表文件保存为report1.frx文件。

提示:在考试的过程中可以使用\显示→预览\菜单查看报表的效果。 答案:【操作步骤】

步骤1:单击常用工具栏中的\新建\按钮,文件类型选择\报表\,打开报表设计器。单击文件菜单栏中的\另存为\按钮,在弹出\保存\对话框中输入\即可。

步骤2:在\报表设计器-report1.frx\中,单击鼠标右键,在弹出菜单中选择\数据环境\菜单项,在\数据环境设计器-报表设计器-report1.frx\窗口中,再单击鼠标右键,在弹出菜单中选择\添加\菜单项,在\添加表或视图\对话框中,选择表\,单击\添加\按钮,再关闭\添加表或视图\对话框,接着选定表\。

步骤3:单击\报表\\标题/总结\菜单项,接着显示\标题/总结\对话框,在对话框的\报表标题\处选中\标题带区\,在\报表总结\处选中\总结带区\,选完这两项后,单击\确定\按钮。

步骤4:单击\报表\\数据分组\菜单项,在\数据分组\对话框中,单击\按钮,接着显示\表达式生成器\对话框,在此对话框中双击\客户号\项,并在\按表达式分组记录:\处生成\客户号\,再单击\确定\按钮,返回到\数据分组\对话框中,于是单击\确定\按钮。

步骤5:在\报表设计器-report1.frx\中,单击鼠标右键,在弹出菜单中选择\数据环境\菜单项,在\数据环境设计器\中,选定字段\订单号\并按住不放,接着移动鼠标至\细节\带区,松开鼠标,按同样方法来处理字段\订购日期\和\总金额\,接着移动\细节\带区来调整位置。 步骤6:在\数据环境设计器\中,选定字段\客户号\并按住不放,接着移动鼠标至\组标头1:客户号\带区,松开鼠标。

步骤7:在\数据环境设计器\中,选定字段\总金额\并按住不放,接着移动鼠标至\组注脚1:客户号\带区,松开鼠标,接着在\组注脚1:客户号\带区选定中\总金额\并单击鼠标右键,在弹出菜单中选择\属性\菜单项,在\报表表达式\对话框中单击\计算\按钮,在\计算字段\对话框中,选定\总和\单选钮,再单击\确定\按钮返回到\报表表达式\对话框中,接着再按\确定\返回到\报表设计器-report1.frx\窗口中。 步骤9:在\标题\带区增加一个标签\订单分组汇总表(按客户)\,再选定这个标签,单击\格式\\字体\菜单项,接着选择\黑体\和\三号\,最后按\确定\按钮。(注意括号是全角状态下的,即在输入法中点一下半个月亮,使其变成整个月亮为全角)

步骤10:在\数据环境设计器\中,选定字段\总金额\并按住不放,接着移动鼠标至\总结\带区,松开鼠标,接着在\总结\带区选定中\总金额\并单击鼠标右键,在弹出菜单中选择\属性\菜单项,在\报表表达式\对话框中单击\计算\按钮,在\计算字段\对话框中,选定\总和\单选钮,再单击\确定\按钮返回到\报表表达式\对话框中,接着再按\确定\返回到\报表设计器-report1.frx\设计窗口中。 第七十五套————基本操作 简单应用:

1. 列出客户名为\三益贸易公司\的订购单明细(order_detail)记录(将结果先按\订单号\升序排列,同一订单的再按\单价\降序排列),并将结果存储到results表中(表结构与order_detail表结构相同)。 SELECT Order_detail.*;

FROM order_detail INNER JOIN order_list; INNER JOIN customer ;

ON Order_list.客户号 = Customer.客户号 ; ON Order_detail.订单号 = Order_list.订单号; WHERE Customer.客户名 = \三益贸易公司\

ORDER BY Order_detail.订单号, Order_detail.单价 DESC; INTO TABLE results.dbf

2. 考生目录下有一个form1表单文件,其中三个命令按钮click事件下的语句都是错误的,请按如下要求进行修改(最后保存所做的修改): 要求刷新表单标题,所以应改为:Thisform.Caption=\简单应用\

要求显示order_list表中的记录,所以应改为:Thisform.grid1.RecordSource =\ 综合应用:

首先为order_detail表增加一个新字段:新单价(类型与原来的单价字段相同),然后编写满足如下要求的程序:根据order_list表中的\订购日期\字段的值确定order_detail表的\新单价\字段的值,原则是:订购日期为2001年的\新单价\字段的值为原单价的90%,订购日期为

2002年的\新单价\字段的值为原单价的110%(注意:在修改操作过程中不要改变order_detail表记录的顺序),最后将程序保存为prog1.prg,并执行该程序。

接着再利用Visual Foxpro的\快速报表\功能建立一个的简单报表,该报表内容按顺序含有order_detail表的订单号、器件号、器件名、新单价和数量字段的的值,将报表文件保存为report1.frx。

答案:首先打开order_detail表,“显示”—“表设计器”,在最后增加一个“新单价”字段,类型参照“单价”字段的,然后新建程序,并输入以下代码:

SELECT Order_list.订单号; FROM order_list;

WHERE YEAR(Order_list.订购日期) = 2001; INTO TABLE aa.dbf do while not eof()

update order_detail set 新单价=单价*0.9 where 订单号=aa.订单号 skip enddo

SELECT Order_list.订单号; FROM order_list;

WHERE YEAR(Order_list.订购日期) = 2002; INTO TABLE bb.dbf do while not eof()

update order_detail set 新单价=单价*1.1 where 订单号=bb.订单号 skip enddo

最后将程序保存为prog1.prg,并执行该程序 第七十六套————基本操作

1. 列出总金额大于所有订购单总金额平均值的订购单(order_list)清单(按客户号升序排列),并将结果存储到results表中(表结构与order_list表结构相同)。

答案:SELECT * FROM order_list WHERE 总金额>(SELECT AVG(总金额) FROM order_list) ORDER BY 客户号 INTO TABLE results (3) 将页注脚区默认显示的当前日期改为显示当前的时间;

答案:步骤5:在\页注脚\带区选定中\并单击鼠标右键,在弹出菜单中选择\属性\菜单项,并显示\报表表达式\对话框,然后单击\表达式\文本框右边的\按钮,从\日期\列表框中选择或自己输入:TIME(),单击\确定\按钮,返回到\报表表达式\对话框中,再单击\确定\按钮即可。 综合应用

首先将order_detail表全部内容复制到od_bak表,然后对od_bak表编写完成如下功能的程序:

1. 把\订单号\尾部字母相同并且订货相同(\器件号\相同)的订单合并为一张订单,新的\订单号\就取原来的尾部字母, \单价\取最低价,\数量\取合计;

2. 结果先按新的\订单号\升序排序,再按\器件号\升序排序; 答案:Select * from order_detail into table od_bak 然后新建程序,在程序中编写如下代码:

Select right(订单号,1) as 订单号,器件号,器件名,min(单价) as 单价,; Sum(数量) as 数量 from od_bak group by 1,2 order by 1,2 ; Into table od_new

第七十七套————基本操作 简单应用:

1. 根据sdb数据库中的表用SQL SELECT命令查询学生的学号、姓名、课程名和成绩,结果按\课程名\升序排序,\课程名\相同时按\成绩\降序排序,并将查询结果存储到sclist表中。 答案:(1)【操作步骤】

在命令窗口输入以下语句。

SELECT student.学号, student.姓名, course.课程名, sc.成绩;

FROM student,course,sc;

WHERE student.学号 = sc.学号 AND sc.课程号 = course.课程号;

ORDER BY course.课程名, sc.成绩 DESC; INTO TABLE sclist 综合应用:

1.打开基本操作中建立的数据库sdb,使用SQL的CREATE VIEW命令定义一个名称为SVIEW的视图,该视图的SELECT语句完成查询:选课门数是3门以上(不包括3门)的每个学生的学号、姓名、平均成绩、最低分和选课门数,并按\平均成绩\降序排序。最后将定义视图的命令代码存放到命令文件T1.PRG中并执行该文件。

接着利用报表向导制作一个报表。要求选择SVIEW视图中所有字段;记录不分组;报表样式为\随意式\;排序字段为\学号\(升序);报表标题为\学生成绩统计一览表\;报表文件名为p_student。

2.设计一个名称为form2的表单,表单上有\浏览\名称为Command1)和\打印\两个命令按钮。鼠标单击\浏览\命令按钮时,先打开数据库sdb,然后执行SELECT语句查询前面定义的SVIEW视图中的记录(两条命令,不可以有多余命令);鼠标单击\打印\命令按钮时,预览报表文件p_student的内容(一条命令,不可以有多余命令)。 答案:【操作步骤】

步骤1:创建程序文件,在程序文件中输入下列语句。 OPEN DATABASE sdb CREATE VIEW sview AS ;

SELECT STUDENT.学号, 姓名, AVG(成绩) 平均成绩, MIN(成绩) 最低分, COUNT(*) 选课门数; FROM STUDENT, SC;

WHERE STUDENT.学号 = SC.学号 ;

GROUP BY STUDENT.学号 HAVING COUNT(*) > 3; ORDER BY 平均成绩 DESC

步骤13:双击\浏览\命令按钮,在Command1的Click事件中输入:

Open database sdb SELECT * FROM sview

步骤14:双击\打印\命令按钮,在Command2的Click事件中输入: REPORT FORM p_student preview 第七十八套——- 基本操作 简单应用:

2. 在考生文件夹下有一个名称为form1的表单文件,表单中的两个命令按钮的click事件下的语句都有错误,其中一个按钮的名称有错误。请按如下要求进行修改,修改完成后保存所做的修改:

(2) 单击\浏览雇员工资\命令按钮时,使用SELECT命令查询salarys表中所有字段信息供用户浏览;

步骤3:双击\浏览雇员工资\命令按钮,在\编辑窗口中把语句修改为:SELECT * FROM salarys,关闭编辑窗口。 综合应用:1.请编写名称为change_c的程序并执行;该程序实现下面的功能:将雇员工资表salarys进行备份,备份文件名为bak_salarys.dbf;利用\人事部\向\财务部\提供的雇员工资调整表c_salary1的\工资\,对salarys表的\工资\进行调整(请注意:按\雇员号\相同进行调整,并且只是部分雇员的工资进行了调整,其他雇员的工资不动)。

2.设计一个名称为form2的表单,上面有\调整\名称Command1)和\退出\名称Command2)两个命令按钮。 单击\调整\命令按钮时,调用change_c命令程序实现工资调整; 答案:首先新建程序,在程序中输入以下代码: SELECT * FROM salarys INTO table bak_salarys clear all use c_salary1 do while not eof()

update salarys set 工资=c_salary1.工资 where 雇员号=c_salary1.雇员号 skip enddo

程序做好后保存,先不运行,然后新建一个表单,在表单上添加两个命令按钮,”调整”和”退出”,在”调整”的click事件中写:do change_c,在”退出”的click事件中写:thisform.release,最后保存并运行表单. 第七十九套——-基本操作 简单应用:

1. 创建一个名称为sview的视图,该视图的SELECT语句查询salary_db数据库中salarys表(雇员工资表)的部门号、雇员号、姓名、工资、补贴、奖励、失业保险、医疗统筹和实发工资,其中实发工资由工资、补贴和奖励三项相加, 然后再减去失业保险和医疗统筹得出,结果按\部门号\降序排序,最后将定义视图的命令代码存放到命令文件T1.PRG中并执行该程序。

答案:(1)【操作步骤】

创建程序文件,在程序文件中输入以下语句。 OPEN DATABASE salary_db CREATE VIEW sview AS;

SELECT 部门号,雇员号,姓名,工资,补贴,奖励,失业保险,医疗统筹,工资+补贴+奖励-失业保险-医疗统筹 AS 实发工资; FROM salarys; ORDER BY 部门号 DESC

保存程序文件名为T1.PRG,并运行。

2.设计一个名称为form1的表单,表单以表格方式(与BROWSE窗口方式相似,表格名称为grdSalarys)显示salary_db数据库中salarys表的记录,供用户浏览。在该表单的右下方有一个命令按钮,名称为Command1,标题为\退出浏览\,当单击该按钮时退出表单。

答案: 步骤3:在\数据环境设计器-form1.scx\中选定表\并按住鼠标不放,拖至\表单设计器\窗口中,释放鼠标,即可生成表格名称为grdSalarys的表格。 综合应用:

(1) 当用户选择\雇员工资表\选项按钮后,再按\生成\命令按钮, 查询显示在简单应用中创建的sview视图中的所有信息并把结果存入表gz1.dbf中。

(2) 当用户选择\部门表\选项按钮后,再按\生成\命令按钮,查询显示dept表中每个部门的部门号和部门名称并把结果存入表bm1.dbf中。 (3) 当用户选择\部门工资汇总表\选项按钮后,再按\生成\命令按钮,则按部门汇总, 将该公司的部门号、部门名、工资、补贴、奖励、失业保险和医疗统筹的支出汇总合计结果存入表hz1.dbf中。请注意:字段名必须与原字段名一致。

步骤5:在\表单设计器-form2.scx\中,单击鼠标右键,在弹出菜单中选择\数据环境\菜单项,在\打开\对话框中选中表\并单击\确定\按钮,接着在\添加表或视图\中再选择表\,再关闭\添加表或视图\对话框。 步骤7:双击\生成\按钮,在\编辑窗口中编写相应的程序 open database salary_db do case

case thisForm.optiongroup1.value = 1 select * from sview into table gz1 case thisForm.optiongroup1.value = 2 select * from dept into table bm1 case thisForm.optiongroup1.value = 3

SELECT salarys.部门号,部门名,sum(工资) 工资,sum(补贴) 补贴,sum(奖励) 奖励,sum(失业保险) 失业保险,sum(医疗统筹) 医疗统筹;

FROM salarys,dept;

WHERE salarys.部门号 = dept.部门号; GROUP BY salarys.部门号 into table hz1 endcase

第八十套———基本操作

在考生文件夹下的\商品销售\数据库中完成如下操作:

1. 将\销售表\中的日期在2000年12月31日前(含2000年12月31日)的记录复制到一个新表\销售表2001.dbf\中。 2.将\销售表\中的日期(日期型字段)在2000年12月31日前(含2000年12月31日)的记录物理删除。

3.打开\商品表\,使用BROWSE命令浏览时,使用\文件\菜单中的选项将\商品表\中的记录生成文件名为\商品表.htm\的HTML格式文件。 4.为\商品表\创建一个主索引,索引名和索引表达式均是\商品号\;为\销售表\创建一个普通索引(升序),索引名和索引表达式均是\商品号 (1)SELECT * FROM 销售表 WHERE 日期<={^2000-12-31} INTO table 销售表2001 (2)DELETE from 销售表 WHERE 日期<={^2000-12-31}

pack 简单应用:

1. 在\商品销售\数据库中,根据\销售表\和\商品表\查询每种商品的商品号、商品名、单价、销售数量和销售金额(商品号、商品名取自商品表,单价和销售数量取自销售表,销售金额=单价*销售数量),结果按销售金额降序排序,并将查询结果存储到see_a表中。

答案:SELECT 商品表.商品号,商品表.商品名,销售表.单价,销售表.销售数量,(销售表.单价*销售表.销售数量) AS 销售金额; FROM 商品表,销售表;

WHERE 商品表.商品号 = 销售表.商品号 ; ORDER BY 销售金额 DESC; INTO TABLE see_a

(2)步骤2:双击\刷新标题\命令按钮,在\编辑窗口中把语句修改为:ThisForm.Caption = \商品销售数据输入\,关闭编辑窗口。

步骤3:双击\商品销售输入\命令按钮,在\编辑窗口中把语句修改为:DO FORM sellcomm,关闭编辑窗口。

步骤4:双击\输出销售报表\命令按钮,在\编辑窗口中把语句修改为:REPORT FORM print1 PREVIEW 综合应用:在考生文件夹下,对\商品销售\数据库完成如下综合应用: 1.请编写名称为change_c的命令程序并执行,该程序实现下面的功能: 将\商品表\进行备份,备份文件名为\商品表备份.dbf\;

将\商品表\中\商品号\前两位编号为\的商品的\单价\修改为出厂单价的10%; 使用\单价调整表\对商品表的部分商品出厂单价进行修改(按\商品号\相同)。

2.设计一个名称为form2的表单,上面有\调整\名称Command1)和\退出\名称Command2)两个命令按钮。 单击\调整\命令按钮时,调用change_c命令程序实现商品单价调整; 单击\退出\命令按钮时,关闭表单。

select * from 商品表 into table 商品表备份

update 商品表 set 单价=出厂单价*0.1 where left(商品号,2)=\

update 商品表 set 出厂单价=单价调整表.出厂单价 where 商品号=单价调整表.商品号

程序做好后保存,先不运行,然后新建一个表单,在表单上添加两个命令按钮,”调整”和”退出”,在”调整”的click事件中写:do change_c, 第八十一套——基本操作

在考生文件夹下的\雇员管理\数据库中完成如下操作:

3. 在\雇员\表中,将所有记录的EMAIL字段值使用\部门号\的字段值加上\雇员号\的字段值再加上\进行替换。 Update email set email=部门号+雇员号+\

(3) 修改命令按钮\刷新日期\的click事件下的语句,使用SQL的更新命令,将\雇员\表中\日期\字段值更换成当前计算机的日期值。注意:只能在原语句上进行修改,不可以增加语句行。

步骤4:双击\刷新日期\命令按钮,在\编辑窗口中把语句修改为:UPDATE 雇员 SET 日期 = DATE(),关闭编辑窗口。 综合应用:

2.设计一个名称为form2的表单,表单上设计一个页框,页框(PageFrame1)有\部门\和\雇员\两个选项卡,在表单的右下角有一个\退出\命令按钮。要求如下:

(2) 单击选项卡\雇员\时,在选项卡\雇员\中使用\表格\方式显示VIEW1视图中的记录(表格名称为grdView1); (3) 单击选项卡\部门\时,在选项卡\部门\中使用\表格\方式显示\部门\表中的记录(表格名称为\部门\; 答案:

步骤5:在\表单设计器\中,单击鼠标右键,在弹出菜单中选择\数据环境\菜单项,在\添加表或视图\对话框中先选中表\部门\并单击\添加\按钮,接着再单击\选定\框中\视图\的按钮,并单击\添加\按钮,最后接着单击\关闭\按钮关闭\添加表或视图\对话框。

步骤6:在\表单控件\对话框中选定\页框\控件,在\表单设计器\中建立这个\页框\,选中这个\页框\并单击鼠标右键,在弹出菜单中选择\编辑\菜单项,再单击\,在其\属性\的Caption处输入:部门,接着在\数据环境\中选中\部门\表按住不放,再移动鼠标到\页框\的\部门\处,最后松开鼠标;单击\,在其\属性\的Caption处输入:雇员,接着在\数据环境\中选中\视图按住不放,再移动鼠标到\页框\的\雇员\处,最后松开鼠标。 第八十二套————基本操作

简单应用:

1. 用SQL语句完成下列操作: 将选课在5门课程以上(包括5门)的学生的学号、姓名、平均分和选课门数按平均分降序排序,并将结果存放于数据库表stu_temp(字段名为学号、姓名、平均分和选课门数)。 答案:(1)【操作步骤】

在命令窗口输入以下语句:

SELECT 学生.学号,姓名,AVG(成绩) AS 平均分, COUNT(*) AS 选课门数; FROM 学生,选课;

WHERE 学生.学号=选课.学号;

GROUP BY 选课.学号 HAVING COUNT(*)>=5; ORDER BY 平均分 DESC; INTO TABLE stu_temp

综合应用:

运行表单时,首先在选项组控件中选择\升序\或\降序\(使用IF语句判断), 单击\计算\命令按钮后,按照成绩\升序\或\降序\根据选项组控件)将选修了\语言\的学生学号和成绩分别存入stu_sort1.dbf和stu_sort2.dbf文件中。单击\退出\按钮关闭表单。 答案:【操作步骤】

步骤5:双击\计算\命令按钮,在Command1的Click事件中输入命令: if thisform. myOption.value=1

SELECT 学号,成绩 FROM 选课,课程 WHERE 选课.课程号=课程.课程号 AND 课程名称=\语言\成绩 INTO dbf stu_sort1 else

SELECT 学号,成绩 FROM 选课,课程 WHERE 选课.课程号=课程.课程号 AND 课程名称=\语言\成绩 DESC INTO dbf stu_sort2 endif

步骤6:双击\退出\命令按钮,在Command2的Click事件中输入:Thisform. Release,接着关闭编辑窗口,最后保存并运行表单

本文来源:https://www.bwwdw.com/article/j0w3.html

Top