当前位置:首页 >> IT认证 >>

2级VF机试试题答案


2级VF机试试题答案 整理者: 王博
第1套(简单应用) 1.用SQL语句完成下列操作: 列出所有与”红”颜色零件相关的信息 (供货商号, 工程号和数量)并将查询结果按数量的降序从放于表supply-temp。 , 名为menu_quick 的快捷菜单,菜单中有两个菜单项”查询”和“修改 2.新建一个名为menu_quick的快捷菜单,菜单中有两个菜单项“查询”和“修 改” 。并在窗体myform的Rightclick事件中调用快捷菜单menu_quick。 (1)【操作步骤】 步骤1:单击工具栏中的"新建"按钮,在"新建"对话框中选在"文件类型"中的" 程序",单击"新建文件"按钮。 步骤2:在程序窗口中输入以下语句: SELECT 供应.供货商号,供应.工程号,供应.数量; FROM 零件,供应 WHERE 供应.零件号=零件.零件号; AND 零件.颜色="红"; ORDER BY 供应.数量 desc; INTO DBF supply_temp 步骤3:单击工具栏中的"保存"按钮,在"另存为"对话框中输入文件名query1, 再单击"保存"按钮。最后单击工具栏中的"运行"按钮。 (综合应用) 设一个名为 mysupply 的窗体,窗体的控件名和文件名均为 mysupply。窗体如下; 窗体标题为“零件供应情况“,表格控件为 Gridl,命令按钮”查询“为”command1 退出“为 command2,表签控件 labell 和文本框控件 text(程序运行时用于输入工 程号)。 运行窗体时,在文本框中输入工程号,单击“查询“命令按钮后,表格控件中显 示相应的工程所使用的零件的零件名,颜色和重量(通过设置有关的“数据”属性 实现) ,并按“零件名”升序存储到 pp.dbf 文件。 单击“退出”按钮关闭窗体。 完成窗体设计后运行窗体,并查询工程号为“J4”的相应信息。 步骤1: 单击工具栏中的"新建"按钮, 在"新建"对话框中选择"文件类型"选择组中的 "窗体",单击"新建文件"按钮。 步骤2:在窗体设计器中设置窗体的Name属性为mysupply,Caption属性为"零件 供应情况",从控件工具栏中分别选择一个表格、一个卷标、一个文本框和两个命令 按钮放置到窗体上,分别设置卷标label1的Caption属性为"工程号",命令按钮 Command1的Caption属性为"查询",Command2的Caption属性为"退出",表格的Name 属性为"grid1",RecordSourceType属性为"0-表"。 步骤3:双击"查询"命令按钮,并输入如下代码: Select 零件.零件名,零件.颜色 ,零件.重量;

From 供应,零件; Where 零件.零件号=供应.零件号 and 供应.工程号=thisform.text1.value; Order By 零件名; Into dbf pp ThisForm.Grid1.RecordSource="pp" 再双击"退出"命令按钮,并输入:THISFORM.RELEASE 步骤4: 单击工具栏中的"保存"按钮, 在"另存为"对话框中输入窗体名mysupply, 单击"保存"按钮。 步骤5:单击工具栏中的"运行"按钮,在文本框中输入J4,并单击"查询"命令按 钮。 第 2 套(简单应用) 2.(1)单击“查询”命令按钮,查询出 BOOKAUTH 数据库中出版过 3 本以上(含 3 本)图书的作者信息,查询信息包括作者姓名和所在城市;查询结果按作者姓名升 序保存在表 NEW_VIEW4 中。 (2 单击“退出”命令按钮关闭菜单。 【操作步骤】 步骤1:单击工具栏中的"新建"按钮,在"新建"对话框的"文件类型"选项组中选 择"窗体",单击"新建文件"按钮。 步骤2:系统打开窗体设计器,单击"窗体控件"工具栏中的命令按钮,在窗体设 计器中拖动鼠标添加一个命令按钮对象command1, 设置其Caption属性为"查询", 双 击command1,在打开的代码编辑器窗口中输入以下代码: SELECT 作者姓名,所在城市; FROM AUTHORS; WHERE 作者编号 IN; (SELECT 作者编号 FROM BOOKS GROUP BY 作者编号 HAVING COUNT(*)>=3); ORDER BY 作者姓名; INTO TABLE NEW_VIEW4 command2,并双击输入Click的事件代码为:THISFORM.RELEASE 步骤3:单击工具栏中的"保存"按钮,在另存为对话框中将窗体保存为myform4, 再单击"保存"按钮。 步骤4:单击工具栏中的"运行"按钮,运行窗体,再分别单击窗体中的"查询" 和"退出"按钮。 (综合应用) (1)在考生檔夹下,将BOOKS的表中所有书名中含有“计算机”3个字的图书复制到 BOOKS_BAK表中,以下操作均在BOOKS_BAK表中完成。 (2)复制后的图书价格在原价格的基础上降低5%; (3)从图书均价高于25元(含25)的出版社中,查询并显示图书均价最低的出版社名 称及均价,查询结果保存在new_table4表中(字段名为出版单位和均价) 。 【操作步骤】

步骤1:在命令窗口中输入下列代码,用于将BOOKS表中满足条件的记录复制到 BOOKS_BAK表中,并按回车键以执行该代码。 SELECT * FROM BOOKS WHERE 书名 LIKE "%计算机%" INTO TABLE BOOKS_BAK UPDATE BOOKS_BAK SET 价格=价格*(1-0.05) SELECT TOP 1 Books_bak.出版单位,avg(books_bak.价格) as 均价; FROM books_bak; GROUP BY Books_bak.出版单位; HAVING 均价>=25; ORDER BY 2; INTO TABLE new_table4.dbf 第3套(简单应用) 1.用SQL语句完成下列操作:查询所有的项目号、项目名和项目使用的零件号、 零件名称,查询结果按项目降序、零件号升序排列,并从放与表item_temp中,同时 将使用的SQL语句存储在新建的文本文件item.txt中。 2.根据零件信息、使用零件和项目信息3个表,利用视图设计器建立一个视图 view_item,该视图的属性列由项目号、项目名、零件名称、单价和数量组成,记录 按项目号升序排列,筛选条件是:项目号为”s2”. 【操作步骤】 步骤1:单击工具栏中的"新建"按钮,在"新建"对话框中选择"文件类型"选项组 中的"查询",并单击"新建文件"按钮。 步骤2:在"添加表或视图"对话框中分别将表零件信息、使用零件和项目信息添 加到查询设计器,并根据联接条件建立联接。 步骤3:在查询设计器的"字段"选项卡中,分别将项目信息.项目号、项目信息. 项目名、 零件信息.零件号、零件信息.零件名称添加到"选定字段"列表中。 步骤4:在"排序依据"选项卡中,将项目信息.项目号添加到"排序条件"列表中, 并选择"降序"单选按钮;再将零件信息.零件号添加到"排序条件"列表中,并选择" 升序"单选按钮。 步骤5: 单击"查询"菜单下的"查询去向"命令, 在"查询去向"对话框中选择"表", 并输入表名item_temp,单击确定按钮。 步骤6:单击"查询"菜单下的"查看SQL"命令,并复制全部代码;再单击工具栏 中的"新建"按钮, 在"新建"对话框中选择"文件类型"选项组下的"文本文件", 单击" 新建文件"按钮,将复制的代码粘贴到此处。 SELECT 项目信息.项目号, 项目信息.项目名, 零件信息.零件号,; 零件信息.零件名称; FROM 使用零件情况!零件信息 INNER JOIN 使用零件情况!使用零件; INNER JOIN 使用零件情况!项目信息 ; ON 使用零件.项目号 = 项目信息.项目号 ; ON 零件信息.零件号 = 使用零件.零件号; ORDER BY 项目信息.项目号 DESC, 零件信息.零件号; INTO TABLE item_temp.dbf

步骤7:单击工具栏中的"保存"按钮,在"另存为"对话框中输入item,单击"保 存"按钮;再在命令窗口中输入:do item.txt,按回车键运行查询。 (2)【操作步骤】 步骤1:单击工具栏中的"打开"按钮,在"打开"对话框中选择考生文件夹下的" 使用零件情况"数据库,再单击"确定"按钮。 步骤2:在数据库设计器中,单击"数据库设计器"工具栏中的"新建本地视图"按 钮,在"新建本地试图"对话框中单击"新建视图"按钮。 步骤3: 在"添加表或视图"对话框中分别双击表零件信息、 使用零件和项目信息, 并单击"关闭"按钮。 步骤4:在视图设计器的"字段"选项卡中,分别将项目信息.项目号、项目信息. 项目名、零件信息.零件名称、零件信息.单价和使用零件.数量添加到选定字段。 步骤5: 在"筛选"选项卡的"字段名"中选择"项目信息.项目号", "条件"选择"=", "实例"输入"s2"; 在"排序依据"选项卡中将项目信息.项目号字段添加到"排序条件" 列表框,并选择"升序"单选按钮。 步骤6:单击工具栏中的"保存"按钮,在"保存"对话框中输入视图名称 view_item,单击"确定"按钮。最后单击工具栏中的"运行"按钮。 (综合应用) 设计一个窗体名和文件名均为form_item的窗体,其中,所有的属性必须在窗体 设计器的属性窗口中设置。窗体的标题为“使用零件情况统计” 。窗体中有一个组合 框(combol) 、一个文本框(Text)和两个命令按钮“统计” (command1)和“退出 (command2) “. 运行窗体时,组合框有3个条目“s1“、 ”s2“和”s3“(只有3个,不能输入新 的,RowsourceType的属性为”数组“,Style的属性为”下拉列表框“)可供选择, 单击”统计“命令按钮后,则文本框显示该项目所使用零件的金额合计(零件金额= 单价*数量) 。 单击“退出“按钮关闭窗体。 注意;完成窗体设计后腰运行 【操作步骤】 步骤1:在命令窗口中输入 crea form form_item,然后按回车键,在窗体设计 器的"属性"对话框中设置窗体的Caption属性为"使用零件情况统计",Name属性为 form_item。 步骤2:从"窗体控件"工具栏向窗体添加一个组合框、一个文本框和两个命令按 钮,设置组合框的RowSourceType属性为 "5-数组"、 Style属性为"2-下拉列表框 "、RowSource属性为A,设置命令按钮Command1的Caption属性为"统计",设置命令 按钮Command2的Caption为"退出"。 步骤3:双击窗体空白处,在窗体的Init事件中输入如下代码: Public a(3) A(1) = "s1"

A(2) = "s2" A(3) = "s3" 步骤4:分别双击命令按钮"统计"和"退出",为它们编写Click事件代码。其中, "统计"按钮的Click事件代码如下: x=allt(thisform.combo1.value) SELECT SUM(使用零件.数量*零件信息.单价) as je; FROM 使用零件情况!使用零件 INNER JOIN 使用零件情况!零件信息 ; ON 使用零件.零件号 = 零件信息.零件号; WHERE 使用零件.项目号 = x into array b thisform.text1.value=allt(str(b[1])) "退出"按钮的Click事件代码如下: thisform.release 步骤5:单击工具栏中的"保存"按钮,再单击"运行"按钮运行窗体,并依次选择 下拉列表框中的项运行窗体的所有功能。 第4套(简单应用) 1. 在考生活页夹下已有窗体文件formone.scx,其中包含两个标签、一个组合 框和一个文本框, 按要求完成相应的操作,使得当窗体运行时,用户能够从组合框选择职员,并 且该职员所签订的平均金额能自动显示在文本框里。 将orders表和employee表依次添加到该窗体的数据环境中 (不要修改两个 表对应的属性值) (1) 将组合框设置成“下拉列表框” ,将employee表中的“姓名”字段作为 下拉列表框条目数据源。其中,组合框RowSourceType属性设置为:6— 字段。 (2) 将Text设置为只读文本框。 (3) 修改组合框的InteractiveChange事件代码, 当用户从组合框选择职员, 能够将该职员所签订单平均金额自动显示在文本框里。 2.利用查询设计器创建查询,从employee和order表中查询“组别”为1的组各 职员所签订的所有订单信息。查询结果依次包含“订单号“、 ”金额“和”签订 者“3项内容,其中”签订者“为签订订单的职员姓名。按金额降序排列各记录, 查询去向为表tableone。最后将查询保存在queryone.qpr檔中,并运行该查询。 (1)【操作步骤】 步骤1:单击工具栏中的"打开"按钮,在"打开"对话框中选择考生活页夹下的 "formone.scx"文件;在窗体设计器中,右键单击窗体空白处,在弹出的快捷菜单中 选择"数据环境"命令; 在"添加表和视图"对话框中分别双击表employee和表orders, 单击"关闭"按钮。 步骤2:设置组合框的Style属性为"2-下拉列表框"、RowSourceType属性为"6字段"、RowSource属性为"employee.姓名";设置文本框Text1的ReadOnly属性为 ".T.-真"。 步骤3:双击组合框,在代码编辑器中将语句"Text1.Value=m2"改为

"ThisForm.Text1.Value=m2" 步骤4:单击工具栏中的"保存"按钮,在单击"运行"按钮。 (2)【操作步骤】 步骤1: 单击工具栏中的"新建"按钮, 在"新建"对话框中选择"文件类型"中的" 查询", 单击"新建文件"按钮; 在"添加表或视图"对话框中分别双击表employee和表 orders,单击"关闭"按钮。 步骤2:在查询设计器的"字段"选项卡选择"orders.订单号"、"orders.金额" 字段,再在"函数和表达式"中输入"Employee.姓名 AS 签订者",单击"添加"按钮; 切换到"筛选"选项卡,选择"Employee.组别","条件"选择"=",在"实例"中输入1。 步骤3:切换到"排序依据"选项卡,选择字段"orders.金额",在"排序选项"处 选择"降序"。单击"查询"菜单下的"查询去向"命令,在"查询去向"对话框中选择" 表",输入表名tableone,单击"确定"按钮。 步骤4:单击工具栏中的"保存"按钮,在"另存为"对话框中将查询保存为 queryone.qpr,并单击工具栏中的"运行"按钮运行查询。 (综合应用) 在考生檔夹下创建一个名为mymenu.mnx的下拉式菜单,并生成菜单程序 mymenu.mpr。运行菜单程序是当前VF系统菜单的“帮助”子菜单之前插入一个“考 试”子菜单,如下所示: “统计”和“返回”菜单命令的功能都通过执行“过程”完成。 “统计” 菜单命令的功能是以组委单位求 “订单金额”的和。 统计结果包含“组 别”、“负责人”和“合计”3想内容,其中“负责人”为改组组长(取自employee 中的“职务”子段)的姓名,“合计”为该组所有职员所签订的金额总和。统计结 果按“合计”降序排序,并放在tabletwo表中。 “返回”菜单命令的功能是返回VF的系统菜单。 菜单程序生成后,运行菜单程序并依次执行“统计”和“返回”菜单命令。 【操作步骤】 步骤1::单击工具栏中的"新建"按钮,在"新建"对话框中选择"文件类型"中的 "菜单",单击"新建文件"按钮,再在"新建菜单"对话框中单击"菜单"按钮;单击" 显示"菜单下的"常规选项"命令,在"常规选项"对话框中选择"在?之前"单选按钮, 并在右边的下拉列表中选择"帮助"。 步骤2:在菜单设计器的"菜单名称"中输入"考试","结果"选择"子菜单",单击 "创建"按钮;在子菜单的第一行"菜单名称"中输入"统计","结果"选择"过程",在 第二行"菜单名称"中输入"返回""结果"选择"过程"。 步骤3:选择"统计"行,单击该行中的"创建"按钮,在弹出的窗口中输入如下代 码: SELECT Employee.组别, Employee.姓名 AS 负责人,sum(orders.金额) as 合 计; FROM employee,orders ; WHERE Employee.职员号 = Orders.职员号; AND Employee.职务 = "组长";

GROUP BY Employee.组别; ORDER BY 3 DESC; INTO TABLE tabletwo.dbf 步骤4:选择"返回"行,,单击该行中的"创建"按钮,在弹出的窗口中输入如下 代码: SET SYSMENU TO DEFAULT 步骤5:单击工具栏中的"保存"按钮,在"另存为"对话框中将菜单保存为 mymenu.mnx; 再单击"菜单"下的"生成"命令,在"生成菜单"对话框中单击"生成"按钮。 步骤6:在命令窗口中输入:DO mymenu.mpr,运行程序,分别执行"统计"和"返 回"菜单命令。 第5套(简单应用) 1. 用SQL语句完成下列操作:检索“田亮”所借图书的书名、作者和价格, 结果按价格降序存入book_temp表中。 2. 在考生檔夹下有一个名为menu_lin的下拉菜单,请设计一个名为 form_menu的顶层窗体,将菜单menu_lin加入到该菜单中,使得运行窗体 时菜单显示在该窗体中,并且,窗体退出时释放菜单 在命令窗口中输入查询语句,输入完成后,按回车键。 SELECT Book.书名, Book.作者, Book.价格; FROM book,loans,borrows ; WHERE Loans.借书证号 = Borrows.借书证号 ; AND Book.图书登记号 = Loans.图书登记号; AND Borrows.姓名 = "田亮"; ORDER BY Book.价格 DESC; INTO TABLE book_temp.dbf (2)【操作步骤】 步骤1:单击工具栏中的"打开"按钮,在"打开"对话框中选择考生活页夹下的 menu_lin.mnx文件,单击"确定"按钮。选在"显示"菜单下的"常规选项"命令,在" 常规选项"对话框中选择"顶层窗体"复选框。 步骤2:在命令窗口输入命令create form form_menu,新建窗体form_menu, 设置窗体的ShowWindow属性为"2-作为顶层窗体" 步骤3:双击窗体空白处,打开代码编辑窗口,选择窗体对象的Init事件,输 入以下代码: DO menu_lin.mpr With This,"abc" 再选择窗体对象的Destroy事件,输入以下代码: Release Menu abc Extended 步骤4:单击工具栏上的"保存"按钮,再单击"运行"按钮。 (综合应用) 设计一个名为form_book的窗体, 窗体的控件名为form1,文件名为form_book,窗 体的标题为“图书情况统计” 。窗体中有一个组合框(名称为combol) 、一个文本框

(名称为text1)和两个命令按钮“统计”“退出” 、 (名称为command1和command2). 运行窗体时,组合框中有3个条目“清华”“北航”“科学” 、 、 (只有3个出版社名 称,不能输入新的)可供选择,在组合框选择出版社名称后,如果单击“统计”命 令按钮,则在文本框显示出“BOOK”表中该出版社图书的总数。 单击“单击”按钮关闭菜单。 注意:完成窗体设计后要运行窗体的所有功能。 【操作步骤】 步骤1:在命令窗口中输入 create form form_book,然后按回车键,在窗体设 计器的"属性"对话框中设置窗体的Caption属性为"图书情况统计",Name属性为 form_book。 步骤2:从"窗体控件"工具栏向窗体添加一个组合框、一个文本框和两个命令按 钮,设置组合框的RowSourceType属性为 "1-值"、 Style属性为"2-下拉式列表框 "、RowSource属性为"清华,北航,科学",设置命令按钮Command1的Caption属性为" 统计",设置命令按钮Command2的Caption为"退出"。 步骤3:分别双击命令按钮"统计"和"退出",为它们编写Click事件代码。其中, "统计"按钮的Click事件代码如下: SELECT COUNT(*) FROM BOOK; WHERE 出版社=THISFORM.COMBO1.VALUE; INTO ARRAY TEMP THISFORM.TEXT1.VALUE=TEMP(1) "退出"按钮的Click事件代码如下: ThisForm.Release 步骤4:单击工具栏中的"保存"按钮,再单击"运行"按钮运行窗体,并依次选择 下拉列表框中的项运行窗体的所有功能。 第6套(简单应用) 在考生檔夹下完成如下操作: 1. modil.prg程序文件中SQL SELECT语句的功能是查询目前3个项目的零件 (零件名称) ,并将结果按升序存入檔results.tx中。给出的SQL SELECT 语句中在第1、3、5行各有一处错误,请改正并运行程序(不得增、删语 句或短句,也不得改变语句行) 。 2. 在考生文件夹下创建一个窗体,窗体名和文件名均为formone.scx,如下 图所示,其中包含一个标签(labell) 、一个文本框(Text1)和一个命令 按钮(command) 。然后完成下列操作。 3. (1)如图所示设置窗体、卷标和命令按钮的Caption属性。 4. (2)设置“窗体”按钮的Click事件代码,使得窗体运行时单击该按钮能 够完成下列功能:从“项目信息”“零件信息”和“使用零件”包含零件 、 号、 表中查询指定项目所使用零件的详细信息, 查询结果依次包含零件号、 零件名称、数量、单击四项内容,给记录按零件号升序排序,并将结果存 放在以项目号为文件名的表中,如指定项目号s1,则生成檔s1.dbf。 5. 最后执行窗体,并依次查询项目s1和s3所用零件的详细信息。

(1)【操作步骤】 单击工具栏中的"打开"按钮,打开考生文件夹下的程序文件modi1.prg,并按题 目的要求进行改错,修改完成后保存并运行程序文件。 SELECT 零件名称 FROM 零件信息 WHERE 零件号 = ; (SELECT 零件号 FROM 使用零件; GROUP BY 项目号 HAVING COUNT(项目号) = 3) ; ORDER BY 零件名称 ; INTO FILE results 其中, 第1行中的"="需改为"IN"; 第3行中的"GROUP BY 项目号"需改为"GROUP BY 零件号";第5行中的"INTO FILE"需改为"TO FILE"。 (2)【操作步骤】 步骤1:在命令窗口输入:Create form formone,按下回车键建立一个窗体, 通过窗体控件工具栏按题目要求为窗体添加控件。在"属性"对话框中,设置窗体的 Name属性为formone, 设置其Caption属性为"简单应用"; 设置卷标的Caption属性为 "项目号";设置命令按钮的属性为"确定"。 步骤2:双击命令按钮,编写其Click事件代码如下: x=thisform.text1.value a = "SELECT 零件信息.零件号, 零件信息.零件名称, 零件信息.单价, 使用零 件.数量 ; FROM 零件信息,使用零件 ; WHERE 零件信息.零件号=使用零件.零件号 and 使用零件.项目号=x ; ORDER BY 零件信息.零件号 INTO TABLE "+x &a 步骤3:单击"保存"按钮,再单击工具栏中的"运行"按钮,分别在文本框中输入 s1和s3,单击"确定"按钮。 (综合应用) 按如下要求完成综合应用: (1)根据“项目信息”“零件信息”和“使用零件”3个表建立一个查询 (注意表 、 之间的字段联系) ,该查询包括项目号、项目名、零件名称和数量4个字段,并按要 求按项目号升序排列,项目号相同的再按零件名称降序排列,查询去向为标three, 保存的查询文件名为chaxun。 (2)建立一个窗体名和文件名均为myform的窗体,窗体包含一个表格控件Gridl, 该表格控件的数据源是签名建立的查询chaxun,然后在表格空间下面添加一个“退 出”命令按钮command1,要求命令按钮与表格控件左对齐, ,并且宽度相同,单击按 钮时关闭窗体。 (1)【操作步骤】 步骤1:单击常用工具栏中的"新建"按钮,在"新建"对话框中选择"查询",单击 "新建文件"按钮,在弹出的"打开"对话框中依次将表"零件信息"、"使用零件"和" 项目信息"添加到查询设计器中。 步骤2: 分别选中字段"项目信息. 项目号"、 "项目信息. 项目名"、 "零件信息. 零

件名称"和"使用零件.数量"并添加到可用字段。 步骤3:在"排序依据"选项卡中先选择"项目信息.项目号"字段,排序选项设置 为"升序",再选择"零件信息.零件名称"字段,排序选项设置为"降序"。 步骤4: 单击"查询"菜单下的"查询去向"命令, 在"查询去向"对话框中选择"表", 并输入表名three,单击"确定"按钮。 步骤5:单击工具栏中的"保存"按钮保存查询,输入查询名"chaxun"。最后单击 常用工具栏中的"运行"按钮运行查询。 (2)【操作步骤】 步骤1:在命令窗口输入"CREATE FORM myform"新建窗体。并修改窗体的Name属 性为myform。 步骤2:从窗体控件工具栏向窗体中添加一个表格控件和一个命令按钮控件,设 置表格控件的RecordSourceType属性为"3-查询"、RecordSource属性为"chaxun", 设置命令按钮的Caption属性为"退出"。 步骤3:同时选中命令按钮与表格控件(按住shift键不放),再单击"布局"工具 栏中的"左边对齐"和"相同宽度"按钮。 步骤4:双击"退出"按钮,写入Click事件代码。 "退出"按钮Click事件代码 ThisForm.Release 步骤5:关闭并保存该窗体文件。 第7套(简单应用) (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+","+thisform.List1.List(i) 步骤4:保存并运行窗体查看结果。 (综合应用) 1.“统计”菜单命令的功能是以客户为单位从customer表和orders表中求出订 单金额的和。统计结果有“客户号”“客户名”和“合计”3项内容, 、 “内容” 是指与客户所签订订单的金额和。统计结果应按“合计”降序排列。并存放在 tabletwo中。 2.菜单命令“退出”的功能是关闭并释放菜单。 统计"菜单中的命令语句****** SELECT Customer.客户号, Customer.客户名, sum(orders.金额) as 合计; FROM customer,orders ; WHERE Customer.客户号 = Orders.客户号; GROUP BY Customer.客户号;

ORDER BY 3 DESC; INTO TABLE tabletwo.dbf "退出"菜单中的命令语句Myform.Release 第8套(基本操作) 1. 使用SQL语句ALTER TABLE ?UNIQUE?将“课程表”中的“课程号”定义 为候选索引,索引名是temp,并将该语句存放在文件one.prg中。 "ALTER TABLE 课程表 ADD UNIQUE 课程号 TAG temp" (简单应用) 1. 修改并执行程序temp.该程序的功能是根据“教师表”和“课程表”计算 讲授“数据课程”这门课程,并且“工资”大于等于4000的人数。 错误1:将 TO 改为 INTO。 错误2:将 OPEN 改为 USE。 错误3:将 SCAN OF 改为 SCAN FOR。 错误4:将 OR 改为 AND。 错误5:将 sum+1 改为 sum=sum+1。 (综合应用) (2)对组合框中a赋值 public a(3) a(1)="3000" a(2)="4000" a(3)="5000" (3)为“生成”命令按钮编写程序代码,其功能是;窗体运行时,根据选项按 钮组和组合框中选定的值,将“教师表”中满足工资条件的所有记录存入自由表 salary.dbf中,表中的记录先按“工资”降序排列,若“工资相同”再按“姓名” 升序排列。 (4)为“退出”命令按钮设置click事件代码,其功能是关闭释放窗体。 "生成"按钮的Click事件代码 x=val(thisform.combo1.value) if thisform.optiongroup1.value = 1 sele * from 教师表 where 工资 >= x order by 工资 desc,姓名 into table salary else sele * from 教师表 where 工资 < x order by 工资 desc,姓名 into table salary endif 退出"按钮的Click事件代码ThisForm.Release 第9套(基本操作) 3、使用SQL命令(ALTER TABLE)为student表建立一个候选索引,索引名和索 引表达式均为”学号”,并将相应的SQL命令保存在three.prg文件中。 ALTER TABLE student ADD UNIQUE 学号 TAG 学号

(简单应用) 1、 给定窗体modi2.scx,功能是;要求用户输入一个正整数,然后计算从1到 该数字之间有多少偶数、多少奇数、多少能被3整除的数,并分别显示出 来,最后统计出满足条件的数的数量。请修改调试改程序,使之能够正 确运行。 2、 改错要求;”计算”按钮的Click事件代码中共有3处错误。请修改。 3、 “退出”按钮的Click事件代码中有一处错误,该按钮的功能是关闭释放 窗体。 Found x,s1,s2,s3=0 found x=thisform.text1 do while x>0 if int(x/2)=x/2 s1=s1+1 else s2=s2+1 endif found if div(x,3)=0 s3=s3+1 endif x=x-1 enddo thisform.text2.value=s1 thisform.text3.value=s2 thisform.text4.value=s3 thisform.text5.value=s1+s2+s3 错误1:改为 STORE 0 TO x,s1,s2,s3。 错误2:改为 x=val(thisform.text1.value)。 错误3:改为 if mod(x,3)=0。 步骤2:以同样的方法修改"退出"按钮的Click事件代码为"Thisform.Release" (综合应用) 在考生檔夹下有一个名为zonghe的窗体文件,其中:单击“添加>“命令按钮可 以讲做列表框中被选中的项添加到右边的列表框中;单击”<移去“命令按钮可以将 右边列表框中的项移去(删除) 。 请完善“确定“命令按钮的Click事件代码,其功能是:查询右边列表框所列课 程的学生的考试成绩(依次包含姓名、课程名称和考试成绩3个字段) ,并先按课程 名称升序排列,最后将查询结果存储到表zonghe中。 步骤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 步骤3:保存并运行窗体。 第10套(简单应用) 1. 在SCORE MANANGE数据库中查询学生的姓名和2003年的年龄(计算年龄的 公式是;2003-Year(出生日期) ,年龄为字段名) ,结果保存在一个新表 NEW_REPORT1,。建立菜单query_menu。该菜单只有“查询“和”退出“两 个主菜单(条形菜单) ,其中单击”退出“菜单项时,返回到VFP系统菜单 (响应命令写在命令框中,不要写在过程中) 。 步骤1:在命令窗口中输入如下语句,并按回车执行。 SELECT 姓 名 ,2003-Year( 出 生 日 期 ) as 年 龄 FROM student INTO TABLE new_table1.dbf 步骤2:单击工具栏中的"新建"按钮,在"新建"对话框中选择"报表",单击"向 导"按钮,在"向导取向"对话框中双击"报表向导"。 步骤3:在"报表向导"步骤1中,选择表new_table1,并将其全部字段添加到"选 定字段"。 步骤4:连续单击"下一步"按钮直到"报表向导"步骤5,选择按字段"年龄"升序 排序。 步骤5:单击"下一步"按钮,输入报表标题"姓名-年龄",单击"完成"按钮。 步骤6:将报表保存为"NEW_REPORT1.FRX"。 (2)【操作步骤】 步骤1:单击工具栏中的"新建"按钮,在"新建"对话框中选择"菜单",单击"新 建文件"按钮, 在"新建菜单"对话框中单击"菜单"。 在菜单设计器的"菜单名称"中分 别输入"查询"和"退出"。 步骤2:在"退出"的结果中选择"命令",并在后面的框中输入: SET SYSMENU TO DEFAULT 步骤3:保存菜单为query_menu并生成可执行菜单。 (综合应用) 窗体运行时,首先在文本框中输入学号,然后单击“查询“按钮,如果输入学 号正确,在窗体右侧表格形式显示该生所选课程和成绩,否则提示”学号不存在“, 请重新输入学号。 查询"按钮的Click事件代码******

SELECT course.课程名, score1.成绩; FROM course ,score1; WHERE course. 课 程 号 =score1. 课 程 号 AND score1. 学 号 = ThisForm.Text1.text; INTO TABLE coruse_cursor IF RECC() = 0 MESSAGEBOX("学号不存在,请重新输入学号") ELSE ThisForm.Grid1.RecordSource="coruse_cursor" ThisForm.Grid1.refresh ENDIF (第11套) (基本操作) 1. 用SQL语句从rate_exchange表中提取外币名称、现钞买入价和卖出价3个 字段的值,并将结果存入rate_ex表中(字段顺序为外币名称、现钞买入 价和卖出价,字段宽度和类型与原表相同) ,并将相应的SQL语句存储在文 本文件one.txt中。 2. 用SQL语句将rate-exchange表中外币名称为“美元”的卖出价修改为 829.01,并将相应的SQL语句存储在文本文件two.txt中。 (1)单击工具栏中的"新建"按钮,新建一个文本文件,写入如下代码,保存文本 文件为one,在命令窗口输入" DO one.txt",执行代码。 one.txt中输入的代码 SELECT 外币名称,现钞买入价,卖出价; FROM rate_exchange; INTO TABLE rate_ex.dbf (2)单击工具栏中的"新建"按钮,新建一个文本文件,写入下面的代码,保存 文本文件为two。在命令窗口输入"DO two.txt",按下回车键执行代码。 two.txt中输入的代码 Update Rate_exchange set 卖出价=829.01 where 外币名称='美元' (简单应用) 3. 设计一个表单:显示系统时间的一个表单 4. 提示:使用即时控件,将该控件的Interval属性设置为500,即每500毫秒 触发一次计时器控件的Timer事件(显示系统时间) ,将该控件的Interval 属性设置为0将触发Timer控件的Interval属性设置为500.(包括三个按 钮:暂停、继续(显示系统时间) 、退出)。 "暂停"按钮的Click事件代码 ThisForm.Timer1.Interval=0 "继续"按钮的Click事件代码 ThisForm.Timer1.Interval=500 "退出"按钮的Click事件代码 ThisForm.Release

"计时器"的timer事件代码 ThisForm.Label1.Caption=time() 第12套(基本操作) 1. 使用SQL语句查询“教师表”中工资大于4500的教师的全部信息,将查询 结果按职工号升序排列,查询结果存储在文本文件one.txt中,SQL语句存 储在文件two.prg中。 SELECT FROM college!教师表; WHERE 教师表.工资 > 4500; ORDER BY 教师表.职工号; TO FILE one.txt 2. (简单应用) 3. 修改并执行程序four.prg,改程序的功能是:根据“学院表” “教师表”计 算“信息管理”系教师的平均工资。注意,只能修改表有错误的语句行, 不能修改其他句。 第一处:WHILE改为WHERE。 第二处:OPEN改为USE。 第三处:WHERE改为FOR。 第四处:填入num = num +1。 4. (综合应用) 5. 为“生成”命令按钮编写程序代码。程序的功能是:表单运行时,跟剧组 和考核选项框中选定的“系名”和“计算内容” ,将相应“系”的“平均 工资”或“总工资”存入自由表salary中,表包括“系名”“系号”以及 、 “平均工资”或“总工资”3个字段。 生成"按钮的Click事件代码******* x = thisform.combo1.value if thisform.optiongroup1.value = 1 SELECT 学院表.系名, 学院表.系号, avg(教师表.工资) as 平均工资; FROM college!学院表 INNER JOIN college!教师表 ; ON 学院表.系号 = 教师表.系号; WHERE 学院表.系名 = x; GROUP BY 学院表.系号; INTO TABLE salary.dbf else SELECT 学院表.系名, 学院表.系号, sum(教师表.工资) as 总工资; FROM college!学院表 INNER JOIN college!教师表 ; ON 学院表.系号 = 教师表.系号; WHERE 学院表.系名 = x; GROUP BY 学院表.系号; INTO TABLE salary.dbf Endif

第13套(简单应用) 1. 用SQL语句完成下列操作:列出“林始英”持有的所有外币名称(源自 rate_exchange表)和持有数量(源自currency_sl表) ,并检索结果按持 有数量升序排序存储在表rate_temp中, 同时将使用的SQL语句存储在新建 的文本文件rate.txt中。 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.dbf (综合应用) 2. 运行表单时。在文本框Text1中输入姓名,然后单击“查询‘命令按钮, 则在表控件Gridl中显示出他所持有的全部”外币名称“及相应的”人民 币数量“,并按人民币数量降序排列,同时将结果存储在自由表DBFA中。 查询按钮的Click事件代码******** select 外币名称,现钞买入价*持有数量 as 人民币数量; from rate_exchange,currency_sl; where rate_exchange.外币代码 = currency_sl.外币代码 and currency_sl. 姓名 = thisform.text1.value; order by 人民币数量 desc; into dbf dbfa thisform.grid1.recordsource = "dbfa" 第14套(基本操作) 1.使用SQL的SELECT语句查询“客户“表中性别为”男“的客户号、身份证、 姓名和工作单位字段及相应的记录值,并将结果存储在名为TABA的表。 SELECT 客户号,身份证,姓名,工作单位 FROM 客户 WHERE 性别="男" INTO TABLE TABA.DBF (简单应用) 1. 修改命令文件THREE.PRG.。该命令文件用来查询与“姚小敏“同一天入住宾 馆的每个客户的客户号、身份证、姓名和工作单位,查询结果包括”姚小敏 “,查询结果输出到表TABC。命令文件中3、5、7、8行有错。 第3行改为:FROM 客户,入住 WHERE 客户.客户号 = 入住.客户号; 第5行改为:( SELECT 入住日期; 第7行改为:WHERE 客户.客户号 = 入住.客户号 AND 姓名 = "姚小敏"); 第8行改为:INTO TABLE TABC (综合应用) (1) 查询按钮;该按钮的Click事件代码,通过SQL的SELECT命令查询退房日

期大于或等于输入日期的客户号、身份证、姓名、工作单位和该客户入 住的客户号、类型名、价格信息,查询结果按价格降序排列,并将查询 结果存储在表TABD.表的字段名为客户号、身份证、姓名、工作单位、 客房号、类型名和价格。 查询"按钮的Click事件代码 SET CENTURY ON SET DATE TO YMD SELECT 客户.客户号, 客户.身份证, 客户.姓名, 客户.工作单位, 客房.客房 号, 房价.类型名, 房价.价格; FROM 客户,房价,入住,客房; WHERE 客户.客户号 = 入住.客户号; AND 客房.客房号 = 入住.客房号; AND 房价.类型号 = 客房.类型号; AND 入住.退房日期>=ctod(ThisForm.Text1.value); ORDER BY 房价.价格 DESC; INTO TABLE tabd 第15套(简单应用) 1. 打开“课程管理”数据库,使用SQL语句建立一个视图salary,该视图包 括系好和平均工资两个字段,并且按平均工资降序排列。将该SQL存入 four.prg。 CREATE sql VIEW salary AS SELECT 教师表.系号, AVG(教师表.工资) AS 平 均工资 FROM 教师表; GROUP BY 教师表.系号 ORDER BY 2 DESC 2. 打开表单:登录的功能:当用户输入用户名和口令以后,单击“登录”按 钮时,程序在自由表“用户表”中进行查询,若找不到相应的用户名,则 提示“用户错误” ,若用户名输入正确,而口令输入错误,则显示“口令 错误” 。修改“登录“命令按钮Click事件语句标有错误的语句,使其能够 正确运行。 错误1:将"WHILE"改为"DO WHILE"。 错误2:将"NEXT"改为"SKIP"。 错误3:将"CASE"改为"IF"。 (综合应用) 为“生成表“命令按钮编写Click事件代码,起功能是根据表单运行是复制 框指定的字段和单选钮指定的排序方式生成新的自由表。如果两个复选框都被 选中,生成的自由表命名为two,dbf,two.dbf的字段包括职工号、姓名、系名、 工资和课程号; 如果只有” “复选框被选中,生成的自由表命名为one_x.dbf, 系名 one_x.dbf的字段包括职工号、姓名、系名和课程号;如果只有”工资“复选框 被选中, one_xx.dbf,one_xx.dbf的字段包括职工号、姓名、工资和课程号。 *"生成表"按钮的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 第16套(简单应用) 1. 将歌手分为4个组,修改程序。 步骤1:单击工具栏中的"打开"按钮,打开考生文件夹下的程序文件five。 步骤2:修改程序中的错误语句 第1处:将"WHILE"改为"DO WHILE"; 第2处:将"歌手表.歌手编号"改为"LEFT(歌手表.歌手编号,2)"; 第3处:将"INTO"改为"WITH"。 (综合应用) “计算“的事件代码: ELECT * FROM 评分表; WHERE left( 评 分 表 . 歌 手 编 号 ,2) = ThisForm.List1.list(ThisForm.List1.listindex); INTO TABLE two.dbf; ORDER BY 评分表.歌手编号 DESC, 评分表.分数 第17套(基本操作) SQL语句:为“教师表“和(职工号)字段增加有效性规则:职工号的最后四位 字符是”1102“存储在three.prg。 "alter table 教师表 alter 职工号 set check LEFT(职工号,4)="1102"", (简单应用) 修改“大学管理“的程序: CREATE TABLE 工资表(职工号 C(8) primary KEY,姓名 C(6) ,工资 N(10,2)) INSERT INTO 工资表 VALUES ("11020034","宣喧",4500) USE 工资表 APPEND FROM 教师表 UPDATE 工资表 set 工资=工资*1.1 WHERE 工资<3000 DELETE FROM 工资表 where 姓名="Thomas" PACK (综合应用) 取前三名和前五名的事件代码: "取前三名"菜单项中的代码 SELECT TOP 3 学院表.系名,avg(教师表.工资) as 平均工资; FROM 学院表,教师表 ;

WHERE 学院表.系号 = 教师表.系号; GROUP BY 学院表.系名; ORDER BY 2 DESC; INTO TABLE sa_three.dbf "取前五名"菜单项中的代码 SELECT TOP 5 学院表.系名, avg(教师表.工资) as 平均工资; FROM 学院表,教师表 ; WHERE 学院表.系号 = 教师表.系号; GROUP BY 学院表.系名; ORDER BY 2 DESC; INTO TABLE sa_five.dbf 第18套(基本操作) 用SQL插入一条记录:学号“993503433“、课程号”0001“、成绩”99“ NSERT INTO SCORE1(学号,课程号,成绩) VALUES("993503433","0001",99) (综合应用) “统计“菜单下只有一个”平均“菜单项,统计用来计算平均成绩,结果包括” 课程名“和”平均成绩“,保存在表NEW_TABLE32中。 SET TALK OFF OPEN DATABASE SCORE_MANAGER SELECT Course.课程名, AVG(Score1.成绩) as平均成绩; FROM course,score1 ; WHERE Course.课程号 = Score1.课程号; GROUP BY Course.课程名; ORDER BY Course.课程名; INTO TABLE NEW_TABLE32 CLOSE ALL SET TALK ON 第19套(基本操作) “统中所有”歌手出生地“ “的事件代码:执行命令是将”歌手表“中所有”歌 手出生地“与组合框相同的信息,存入到birthplace。 select * from 歌手表.dbf; where 歌手出生地 = ThisForm.combo1.list(ThisForm.combo1.listindex); INTO TABLE birthplace.dbf (综合应用) 编写程序文件two.prg。计算“01“组的得分,存入到FINAL. "two.prg"中的代码******** SELECT 歌手表.歌手姓名, avg(评分表.分数) as 得分; FROM 歌手表,评分表; WHERE 歌手表.歌手编号 = 评分表.歌手编号; AND left(歌手表.歌手编号,2) = "01";

GROUP BY 歌手表.歌手姓名; ORDER BY 2 DESC, 歌手表.歌手姓名 DESC; INTO TABLE final.dbf 第20套(简单应用) 修改two.prg文件的SQL命令。 第1处错误改为:from employee p join employee c ; 第2处错误改为:on p.组别=c.组别 where c.职务="组长" 名;

and c.姓名<>p.姓

(综合应用) “开始查询“的事件代码:职员101的信息,存入t101中。 x=ThisForm.textn.Value a = "SELECT Order.订单号, Order.客户号, Order.签订日期, Order.金额 FROM order WHERE Order.职员号 = x ORDER BY Order.签订日期 INTO TABLE t" + x &a 第21套(基本操作) 用SQL建立一个与自由表“金牌榜‘结果一致的表golden。 用SQL添加记录(011,9,7,11) USE 金牌榜 COPY STRU TO GOLDEN "insert into golden Value("011",9,7,11)" (简单应用) 用SQL,根据“国家” “获奖牌情况”统计每个国家的金牌数。 "three.prg"中的程序代码******* SELECT 国家.国家名称, COUNT(获奖牌情况.名次) AS 金牌数; FROM 国家,获奖牌情况 ; WHERE 国家.国家代码 = 获奖牌情况.国家代码; AND 获奖牌情况.名次=1; GROUP BY 国家.国家名称; ORDER BY 2 DESC, 国家.国家名称 DESC; INTO TABLE temp.dbf (综合应用) 编写程序four.prg。根据“国家” “获奖牌情况”两个表统计一个新表“假奖牌 表” 。 SELECT 国家.国家名称,COUNT(获奖牌情况.名次) AS 奖牌总数; FROM 国家,获奖牌情况 WHERE 国家.国家代码=获奖牌情况.国家代码; GROUP BY 国家.国家名称; ORDER BY 2 DESC,国家.国家名称; INTO TABLE 假奖牌榜.dbf 第22套(简单应用) 修改“确定”的事件代码:单击表单按钮时,显示签订的日期,包括“订单号、

签订日期、金额“3个字段。 步骤2:双击表单中的"确定"按钮,修改其Click事件代码如下。 错误1:set century to 4 正确:set century on 4 错误2:va=text1.value 正确:va=thisform.text1.value 错误3:this.grid1.RowdSource=st 正确:thisform.grid1.RecordSource=st (综合应用) “统计“的功能是以某年某月为单位求订单金额的和。 "统计"菜单项的过程代码******* SELECT year(orders.签订日期) as 年份,month(orders.签订日期) as 月份,; sum(orders.金额) as 合计; FROM orders ; GROUP BY 2,1; HAVING 合计 >= 0; ORDER BY 1 DESC, 2; INTO TABLE tabletwo.dbf 第23套(综合应用) 编写程序prog.prg,在xuesheng 表和chenji 表中查询所有成绩不及格的。 如 果有一个学生多门课程不及格,则在表中有多条记录。 prog1.prg中的代码********* SET TALK OFF OPEN DATABASE cj_m SELECT * FROM table3 WHERE .f. INTO TABLE temp SELECT 1 USE xuesheng INDEX ON 学号 TAG 学号 SELECT 2 USE chengji INDEX ON 学号 TAG 学号 SET RELATION TO 学号 INTO xuesheng GO TOP DO WHILE .NOT.EOF() IF chengji.数学<60 INSERT INTO temp Values (xuesheng.学号,xuesheng.姓名,'数学',chengji. 数学) ENDIF IF chengji.英语<60 INSERT INTO temp Values (xuesheng.学号,xuesheng.姓名,'英语',chengji.

英语) ENDIF IF chengji.信息技术<60 INSERT INTO temp Values (xuesheng. 学 号 ,xuesheng. 姓 名 ,' 信 息 技 术 ',chengji.信息技术) ENDIF SKIP ENDDO SELECT * FROM temp ORDER BY 分数,学号 DESC INTO ARRAY arr INSERT INTO table3 FROM ARRAY arr CLOSE DATABASE CLOSE TABLES ALL DROP TABLE temp SET TALK ON RETURN 第24套(简单应用) 修改各年度的部门号、部门名、年度、全年销售额等。在5、6、8、9有错误。 将第5行改为:(一季度利润+二季度利润+三季度利润+四季度利润)/(一季度销 售额+二季度销售额+三季度销售额+四季度销售额) AS 利润率; 将第6行改为:FROM S_T,DEPT; 将第8行改为:ORDER BY 年度,利润率 DESC; 将第9行改为:INTO TABLE S_SUM 第25套(简单应用) 用SQL完成:列出所有盈利的股票简称、现价、买入价和持有数量。 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 (综合应用) 双击“查询“,计算公式是浮云金额=(现价—买入价)*持有数量 双击“清空“的事件代码:清楚全部记录。 双击"查询"命令按钮,在"Command1.Click"编辑窗口中输入命令组,接着关闭 编辑窗口。 pinyin=alltrim(thisform.text1.value) open database stock use stock_name locate for 汉语拼音=pinyin

if found() SELECT 持有数量,股票简称; FROM stock_sl,stock_name ; WHERE 汉语拼音=pinyin and stock_sl.股票代码=stock_name.股票代码; INTO array a thisform.text1.value=a[2] thisform.text2.value=a[1] else wait "没有查询到,请重输" window timeout 2 endif 步骤5:双击"清空"命令按钮,在"Command2.Click"编辑窗口中输入命令组,接 着关闭编辑窗口。 thisform.text1.value="" thisform.text2.value="" 第26套(综合应用) 编写“计算“菜单命令的事件代码:根据xuesheng表和chenji表分别统计汉族 学生和少数民族学生数学和英语课程的平均分。 在"计算"菜单项的过程中输入下列代码。 SELECT Xuesheng.民族,avg(Chengji.数学) as x,AVG(Chengji.英语) AS y; FROM xuesheng,chengji; WHERE Xuesheng.学号 = Chengji.学号 AND Xuesheng.民族="汉"; INTO ARRAY a INSERT INTO table3 FROM ARRAY a SELECT Xuesheng.民族,avg(Chengji.数学) as x,AVG(Chengji.英语) AS y; FROM xuesheng,chengji; WHERE Xuesheng.学号 = Chengji.学号; AND Xuesheng.民族!="汉" INTO ARRAY a INSERT INTO table3 FROM ARRAY a UPDATE table3 SET 民族='其他' WHERE 民族!="汉" 第27套(综合应用) “计算“命令的事件代码 (1)用ALTER TABLE语句在order表中添加一个字段“总金额,该字段为数值型, 宽度为7,小数位数为2. (2)根据orderiten表和goods表中的相关数据计算各订单的总金额,其中,一个 订单的总金额等于他包含的各商品的金额之和,每种商品的金额等于其数量乘以单 价,填入刚建立的字段中。 "计算"菜单项中的代码******* ALTER TABLE ORDER ADD 总金额 N(7,2) SELECT Orderitem.订单号, sum(goods.单价*orderitem.数量) as 总金额; FROM goods,orderitem ;

WHERE Goods.商品号 = Orderitem.商品号; GROUP BY Orderitem.订单号; ORDER BY Orderitem.订单号; INTO TABLE temp.dbf CLOSE ALL SELECT 1 USE TEMP INDEX ON 订单号 TO ddh1 SELE 2 USE ORDER INDEX ON 订单号 TO ddh2 SET RELATION TO 订单号 INTO A DO WHILE .NOT.EOF() REPLACE 总金额 WITH temp.总金额 SKIP ENDDO BROW 第28套(综合应用) 单击“查询统计“按钮,会在左边的表格内显示该职员的所签订单的金额,并 在其中的最高金额、最低金额和平均金额存入。 查询统计"按钮的Click事件代码***** ThisForm.Grid1.RecordSource="select order. 订 单 号 ,order. 金 额 from order inner join employee on order.职员号=employee.职员号 where employee. 姓名=alltrim(thisform.Text1.Value)" SELECT Employee.姓名, max(Order.金额) as 最高金额, min(Order.金额) as 最低金额, avg(Order.金额) as 平均金额; FROM employee INNER JOIN order ; ON Employee.职员号 = Order.职员号; where employee.姓名=alltrim(thisform.Text1.Value); GROUP BY Employee.职员号; INTO cursor temp insert into tablethree(姓名,最高金额,最低金额,平均金额) values(temp. 姓名,temp.最高金额,temp.最低金额,temp.平均金额) 第29套(简单应用) 1. 编写程序,根据记录中的a/b/c三个字段的值,求解一元二次方程的根。 CLOS ALL USE TABA SCAN IF A<>0 AND B*B-4*A*C >=0 REPL x1 WITH (-B+SQRT(B*B-4*A*C))/(2*A),x2 WITH

(-B-SQRT(B*B-4*A*C))/(2*A) ELSE REPL NOTE WITH "无实数解" ENDIF ENDSCAN (综合应用) “查询“按钮的事件代码:使用SQL从“学生表”中查询学生注册日期等于文本 框的指定的主粗日期的学生的学号、 、姓名、年龄、性别、年纪和注册信息。 查询"按钮的Click事件代码****** CLOSE ALL SELECT * FROM 学生表; WHERE 学生表.注册日期 = CTOD(ThisForm.Text1.Value); ORDER BY 学生表.年龄 DESC; INTO TABLE temp.dbf USE TABE DELE ALL PACK APPEND FROM TEMP THISFORM.GRID1.RECORDSOURCE="SELECT * FROM 学生表 WHERE 学生表.注册日 期 = CTOD(ThisForm.Text1.Value) INTO CURSOR XX ORDER BY 学生表.年龄 DESC" 第30套(综合应用) (1) 编写“生成表‘的事件代码表单运行时列表框所选的国家名称,将” 获奖牌情况“表相应的记录存入该国家的表中,包括”运动员名称“、 ” 项目名称“、 ”名次“。 生成表"按钮的Click事件代码***** SELECT 运动员名称,项目名称,名次; FROM 获奖牌情况,国家; WHERE 国家.国家代码=获奖牌情况.国家代码; AND 国家名称=ThisForm.List1.list(ThisForm.List1.listindex); INTO TABLE ThisForm.List1.list(ThisForm.List1.listindex) ; order by 名次 第31套(简单应用) 修改功能“林诗因“的事件代码: 第1处错误改为:locate for 姓名="林诗因" 第2处错误改为:do while not eof() 第3处错误改为:summ=summ+a[1] * currency_sl.持有数量 (综合应用) 单击“统计“按钮,根据选项组按钮控件的选择将持有相应的外币的姓名和持 有数量存入表日元、欧元、美元。 If ThisForm.myOption.Value=1

Select 姓名,持有数量 from currency_sl,rate_exchange; where rate_exchange.外币代码=currency_sl.外币代码.and.; rate_exchange.外币名称="日元"; into table rate_ry else If ThisForm.myOption.Value=2 Select 姓名,持有数量 from currency_sl,rate_exchange; where rate_exchange.外币代码=currency_sl.外币代码.and.; rate_exchange.外币名称="美元"; into table rate_my else Select 姓名,持有数量 from currency_sl,rate_exchange; where rate_exchange.外币代码=currency_sl.外币代码.and.; rate_exchange.外币名称="欧元"; into table rate_oy endif endif 第32套(简单应用) 编写 “查询 “按钮事件代码: 从customers表中查询指定日期的以后出生的客户, 查询结果依次包含姓名、性别、出生日期。 "查询"按钮的Click事件代码 x = ThisForm.Text1.Value SELECT Customers.姓名, Customers.性别, Customers.出生日期; FROM customers; WHERE Customers.出生日期 >= x; ORDER BY Customers.出生日期 DESC; INTO TABLE tableone.dbf 第33套(简单应用) 用SQL完成“自由表“的操作:将职称”教授“的教师工资设置为原来的120%, 其他教师不变。并插入一条新纪录:林红、讲师、原工资10000、新工资12000. 在命令窗口依次输入下列命令并按回车。 update 教师 set 新工资=原工资*1.2 where 职称="教授" update 教师 set 新工资=原工资 where !(职称="教授") inse into 教师 Values("林红","讲师",10000,12000) (综合应用) 单击“查询“按钮,表格显示6系(系子段字符值等于6)的学生姓名、选课的 课程和成绩。 *"查询"按扭的Click如下代码****** thisform.grid1.recordsourcetype=4 thisform.grid1.recordsource=;

"SELECT 学生.姓名, 课程.课程名称, 选课.成绩; FROM 学生,选课,课程 ; WHERE 选课.课程号 = 课程.课程号 ; AND 学生.学号 = 选课.学号; AND 学生.系 = '6'; INTO CURSOR temp" thisform.refresh 第34套(简单应用) 1. 查询没门课程的最高分,课程包括“课程名称、分数“,查询结果(字段名” 课程名称“、分数) 。 2. 查询成绩不及格的课程,将查询结果名称存入文本文件,并将相应的SQL存 入到文件two.prg. "one.prg"中的程序代码******* SELECT Course.课程名称, max(score.成绩) as 分数; FROM course,score ; WHERE Course.课程编号 = Score.课程编号; GROUP BY Course.课程名称; INTO TABLE max.dbf *******"two.prg"中的程序代码******* SELECT Course.课程名称; FROM course,score ; WHERE Course.课程编号 = Score.课程编号; AND Score.成绩 < 60; GROUP BY Course.课程名称; TO FILE new.txt (综合应用) 添加一个表格控件,要求按升序显示“学生选课“及”考试成绩“信息。包括 两个按钮”保存“、 ”退出“。 步骤1:新建一个数据库"学生",将自由表"学生"、"课程"和"选课成绩"添加到 新建的数据库中。 步骤2:在命令窗口中输入:Crea form formlist,新建一个表单。按题目要求 为表单添加一个表格控件和两个命令按钮控件,修改各控件的相关属性如下。

步骤3:在表单的Init事件中写入代码。 ********表单的"Init"事件代码******** thisform.grid1.recordsourcetype=4 thisform.grid1.recordsource=; "SELECT Student.学号, Student.姓名, Student.院系, Course.课程名称,;

Score.成绩; FROM student,score,course ; WHERE Score.课程编号 = Course.课程编号 ; AND Student.学号 = Score.学号; ORDER BY Student.学号; into cursor abc" 步骤4:在"保存"命令按钮中输入 select * from abc into table results 步骤5:在命令按钮退出中写入"ThisForm.Release"。 步骤6:保存并按题目要求运行表单。 第35套(综合应用) “计算“的功能: (1) 用SQL完成查询:按学号降序列出学生的学号、姓名、及其数学和信息技 术的分数。 (2) 用ALTER TABLE语句在表table3中添加一个“等级“字段、字符型、宽度 为4. (3) 划分等级,3门课程都及格(大于等于60)且平均分大于等于90为“优“, 3门都及格且平均分大于等于80,小于90为”良“,3门课程平均分大于 等于70,小于80为”中“,3门及格平均分小于70为”及格“,其余为” 差“。 "计算"菜单项的过程代码****** SELECT Xuesheng.学号, Xuesheng.姓名, Chengji.数学, Chengji.英语,; Chengji.信息技术; FROM chengji,xuesheng ; WHERE Chengji.学号 = Xuesheng.学号; ORDER BY Xuesheng.学号 DESC; INTO TABLE table3.dbf ALTER TABLE table3 ADD COLUMN 等级 char(4) UPDATE table3 SET 等级="优" WHERE table3.数学>=60 AND table3.英语>=60 AND table3. 信 息 技 术 >=60 AND (table3. 数 学 +table3. 英 语 +table3. 信 息 技 术)>=270 UPDATE table3 SET 等级="良" WHERE table3.数学>=60 AND table3.英语>=60 AND table3. 信 息 技 术 >=60 AND (table3. 数 学 +table3. 英 语 +table3. 信 息 技 术)>=240 AND (table3.数学+table3.英语+table3.信息技术)<270 UPDATE table3 SET 等级="中" WHERE table3.数学>=60 AND table3.英语>=60 AND table3. 信 息 技 术 >=60 AND (table3. 数 学 +table3. 英 语 +table3. 信 息 技 术)>=210 AND (table3.数学+table3.英语+table3.信息技术)<240 UPDATE table3 SET 等级="及格" WHERE table3.数学>=60 AND table3.英语>=60 AND table3. 信 息 技 术 >=60 AND (table3. 数 学 +table3. 英 语 +table3. 信 息 技 术)>=180 AND (table3.数学+table3.英语+table3.信息技术)<210

UPDATE table3 SET 等级="差" WHERE 等级=" " 第36套(基本操作) 使用SQL语句,根据顾客点菜表和菜单表查询点菜金额大于等于40元的顾客号、 菜单号、菜名、单价和数量,结果按菜单编号降序排列。存储到TABA。 SELECT 顾客号,顾客点菜表.菜编号,菜名,单价,数量; FROM 顾客点菜表 JOIN 菜单表; ON 顾客点菜表.菜编号 = 菜单表.菜编号; WHERE 单价 >= 40; ORDER BY 顾客点菜表.菜编号 DESC; INTO TABLE taba (简单应用) 编写Click事件代码;使每项选项按钮组中选择一个文本类型,列表框(list1) 就列出该类型所对应的文件。列表框的列数为1. Do Case Case thisform.optiongroup1.value=1 thisform.list1.rowsource="*.doc" Case thisform.optiongroup1.value=2 thisform.list1.rowsource="*.xls" Case thisform.optiongroup1.value=3 thisform.list1.rowsource="*.txt" Endcase。 (综合应用) “查询”的代码;用SQL命令查询结账日期等于在文本框输入日期的顾客序号、 顾客姓名、单位和消费金额、查询结果按消费金额降序排列,最后存储到TABC中。 “显示”按钮:再按按钮的Click事件中使用命令表TABC的记录在表格控件中显 示。 :双击"查询"按钮,写入Click事件代码如下。 "查询"按钮的Click事件代码 Select 顾客序号,顾客姓名,单位,消费金额 from 点菜!结帐表 where 结帐日 期 = ctod(thisform.text1.text) order by 消费金额 desc INTO TABLE tabc.dbf 步骤5:双击"显示"按钮,写入Click事件代码如下。 "显示"按钮的Click事件代码 thisform.grid1.recordsource="Select 顾客序号,顾客姓名,单位,消费金额 from 点菜!结帐表 where 结帐日期 = ctod(thisform.text1.text) order by 消费 金额 desc INTO TABLE tabc.dbf" 第37套(简单应用) 编写“确定”按钮的事件代码:表单运行时,单击该命令按钮可以查询在文本 框中输入的指定的所有信息,查询结果依次包含订单号、签订日期、商品名、单价 和数量5项内容。个记录按订单号升序排列,若订单号相同按商品名升序排列,结果

存储在tabletwo。 打开表单myform,双击"确定"按钮,在其Click事件里写入如下语句。 ******"确定"按钮的Click事件代码****** x=allt(ThisForm.Text1.Value) sele a.订单号,签订日期,商品名,单价,数量; from order a,orderitem b,goods c; where a.订单号=b.订单号 and b.商品号=c.商品号 and 客户名=x; order by a.订单号,商品名 into table tabletwo (综合应用) “计算”菜单命令的功能是计算商品2001年的订购总金额,若某商品没有被订 购,则其总金额为零。将计算结果保存在tablethree表中,其中包含商品名和总金 额两个字段,各记录按商品升序排列。 sele 商品名,sum(数量*单价) 总金额; from orderitem a,goods b,order c; where a.商品号=b.商品号 and c.订单号=a.订单号 and year(签订日期)=2001; group by a.商品号 order by 商品名 into table tablethree 第38套(综合应用) 程序运行时,在文本框中输入部门名,然后单击’“单击”命令按钮,计算该 部门各年度的销售额和利润, 按年度升序将结果, 同时在Gridl控件中显示计算的结 果。 确定"按钮的Click事件代码****** x="SELECT Sell.年度, sum(Sell.销售额) as 销售额,sum(Sell.销售额 - Sell. 工资额) as 利润" x=x+" FROM test_db!sell where 部门号 in (select 部门号 FROM DEPT.DBF WHERE 部门名='"+myform.text1.value+"')" x=x+" GROUP BY Sell.年度" x=x+" ORDER BY Sell.年度" x=x+" INTO TABLE "+myform.text1.value &x myform.Grid1.recordsource=myform.text1.value 第39套(基本操作) 用SQL的UPDATE命令将学生“王三风”的出生日期修改为1983年5月1日,并将该 语句粘贴在SQL_TXT文件。 UPDATE 学生 SET 出生日期={^1983/05/01} WHERE 姓名='王三风' (简单应用) 用SQL语句查询至少有3门的课程成绩在70以上的学生姓名,并在结果按升序存 入result表, SELE 姓名 FROM 学生 WHERE 学号 IN; (SELE 学号 FROM 选课 WHERE 成绩>=70; GROUP BY 学号;

HAVING COUNT(*)>=3); ORDER BY 1; INTO DBF RESULTS 第40套(简单应用) 用SQL SELECT语句查询所有客户的订单信息,要求在结果中包括公司名称、订 单编号、金额和送货方式4个字段的信息,并按公司名称升序排列,名称相同按编号 升序排列。 sql.prg"中的命令语句******* SELECT Customer.公司名称, Order.订单编号, Order.金额, Order.送货方式; FROM customer,order; WHERE Customer.客户编号 = Order.客户编号; ORDER BY Customer.公司名称, Order.订单编号; INTO TABLE results 第41套(综合应用) 编写“确定”的click事件代码:查询指定的商品的订购信息,该商品由用户在 文本框给定的商品指定 ,查询结果依次包含订单号、客户号、签订日期、商品名、 单价和数量6项内容。订单号升序,存入tablethree。 "确定"按钮的Click事件代码***** x=allt(ThisForm.Text1.Value) SELECT Orderitem.订单号, Order.客户名,Order.签订日期, Goods.商品名, Goods.单价,; Orderitem.数量; FROM goods,orderitem,order ; WHERE Orderitem.订单号 = Order.订单号 ; AND Goods.商品号 = Orderitem.商品号; AND Goods.商品号=x ; ORDER BY Orderitem.订单号 into dbf tablethree 第42套(综合应用) 单击“查询”按钮,查询每门课程的最高分,查询结果包含“课程名”和“最 高分”字段,课程名升序排列存入到NEW_TABLE3。 "查询"按钮的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 第43套(综合应用) “计算” 菜单命令的功能:每门课程的成绩都大于等于所有同学在该门课程的平

均分。存入表table2,按学号降序排列。 "计算"菜单项的过程代码****** 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.dbf 第44套(基本操作) 1,利用SQL SELECT语句将表stock_sl.dbf复制到stock_bk.dbf中。 2,利用SQL INSERT语句插入记录( “600028,4.36,4.60,5500” )到表stock_bk 3,利用SQL UPDATE语句将stock_bk.dbf表中“股票代码“为”600007“的股票” 现价“改为8,88。 4,利用SQL DELETE语句删除stock_bk.dbf“股票代码“为”600000“的股票。 5, 题应分为两个步骤完成: (1)在命令窗口中分别输入相应命令,并按回车以执行。 ① SELECT * FROM stock_sl INTO DBF stock_bk 或 SELECT * FROM stock_sl INTO TABLE stock_bk ② INSERT INTO stock_bk VALUES("600028",4.36,4.60,5500) ③ UPDATE stock_bk SET 现价=8.88 WHERE 股票代码="600007" ④ DELETE FROM stock_bk WHERE 股票代码="600000" (简单应用) Modi.prg中的SQL计算“银行“的股票。修改代码在第1、4、6行。 错误1:SELECT COUNT((现价-买入价)*持有数量) ; 修改为:SELECT SUM((现价-买入价)*持有数量) ; 错误2:= ; 修改为:IN ; 错误3:WHERE "银行" LIKE 股票简称) 修改为:WHERE 股票简称 LIKE "%银行%") 步骤3:保存并运行修改后的程序文件,查看程序运行结果。 (综合应用) 两个控件分别显示两个表中。Init事件代码; :在表单的Init事件中输入以下代码。 ********************************** SET SAFETY OFF CLOSE DATABASE ALL SELECT 1 USE stock_Name

INDEX ON 股票代码 TAG dm SELECT 2 USE stock_sl INDEX ON 股票代码 TAG dm SELECT 1 SET RELATION TO 股票代码 INTO stock_sl ThisForm.grdStock_Name.RECORDSOURCE="stock_Name" ThisForm.grdStock_Name.REFRESH ThisForm.grdStock_sl.RECORDSOURCE="stock_sl" ThisForm.grdStock_sl.REFRESH SET SAFETY ON 第45套(简单应用) 修改程序文件,根据“教师表”计算各系的教师人数,并在结果填入表“学院 表”中,程序中有3出错误,请修改。 错误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个字段,结果按“职工号”升序排列。 , select 职工号,姓名,工资 from 教师表 inner join 学院表 on 学院表.系号= 教 师 表 . 系 号 where 系 名 =thisform.list1.list(thisform.list1.listindex) into tabl thisform.list1.list(thisform.list1.listindex) order by 职工号 第46套(简单应用) 使用SQL语句查询2005年度的各部门的部门号、部门名、一季度利润合计、二季 度利润合计、三季度利润合计和四季度利润合计。查询结果按部门号升序排列,存 入account中,最后将SQL语句存入four,prg. four.prg中的程序代码********** SELECT 部门表.部门号, 部门表.部门名,; sum(销售表.一季度利润) as 一季度利润,; sum(销售表.二季度利润) as 二季度利润,; sum(销售表.三季度利润) as 三季度利润,; sum(销售表.四季度利润) as 四季度利润; FROM 部门表,销售表 ; WHERE 部门表.部门号 = 销售表.部门号 and 销售表.年度="2005";

GROUP BY 部门表.部门号; ORDER BY 部门表.部门号; INTO TABLE account.dbf (综合应用) “查询”事件代码:根据输入的部门号和年度,在表格的显示该部门号销售的 “商品号”“商品名”“一季度利润” 、 、 、二季度利润、 “三季度利润”和“四季度利 润” ,将查询结果存储到以“xs+部门号”为名称的表中。字段分别为:商品号、商 品名、一季度利润、二季度利润、三季度利润、四季度利润。 "查询"按钮的Click事件代码******* x='xs'+ThisForm.TEXT1.Value SELECT 商品代码表.*,销售表.一季度利润,销售表.二季度利润,销售表.三季 度利润, 销售表.四季度利润; FROM 销售表,商品代码表; WHERE 商品代码表.商品号 = 销售表.商品号; AND 销 售 表 . 部 门 号 =alltrim(ThisForm.Text1.Value) AND 销 售 表 . 年 度 =alltrim(ThisForm.Text2.Value); INTO TABLE &X ThisForm.Grid1.RecordSource="select * from " + x 第47套(简单应用) 使用SQL语句查询,存储到results,该表含有“姓名”和“人民币价值” 。按“人 民币价值”降序排列。 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.dbf (综合应用) “查询”命令按钮,单击按钮表格控件按持有数量升序显示所查询的人所持有 的外币名称和数量,结果存储到以姓名命名DBF表文件中,如张三丰.DBF; "查询"按钮的Click事件代码***** x=allt(thisform.text1.value) thisform.grid1.recordsourcetype=4 thisform.grid1.recordsource=; "SELECT Rate_exchange.外币名称, Currency_sl.持有数量; FROM 外汇管理!currency_sl INNER JOIN 外汇管理!rate_exchange ; ON Currency_sl.外币代码 = Rate_exchange.外币代码; WHERE Currency_sl.姓名 =x; ORDER BY Currency_sl.持有数量;

INTO TABLE &x" thisform.refresh 第48套(简单应用) 计算歌手最高分、最低分和平均分,使用SQL语句,并将结果存储到result表, 按平均分降序排列。 SELECT 歌手表.歌手姓名, MAX(评分表.分数) AS 最高分,; MIN(评分表.分数) AS 最低分, AVG(评分表.分数) AS 平均分; FROM 歌手表,评分表 ; WHERE 歌手表.歌手编号 = 评分表.歌手编号; GROUP BY 歌手表.歌手姓名; ORDER BY 4 DESC; INTO TABLE result.dbf (综合应用) 为“生成表”命令按钮事件代码:根据简单应用题生成的result表中按指定的 顺序方式生成新的表,单选按钮选择“按评分升序”时,按最高分、最低分和 平均分3个字段升序排列成表six-a,单选钮选择“按评分降序”时,依次按最高 分、最低分和平均分3个字段依次降序排序生成表six-d. "生成表"按钮的Click事件代码***** DO CASE CASE ThisForm.Optiongroup1.VALUE=1 SELECT *; FROM result; ORDER BY Result.最高分, Result.最低分, Result.平均分; INTO TABLE six_a.dbf CASE ThisForm.Optiongroup1.VALUE=2 SELECT *; FROM result; ORDER BY Result.最高分 DESC, Result.最低分 DESC, Result.平均分 DESC; INTO TABLE six_d.dbf ENDCASE 第49套(简单应用) , 编写SQL语句,从customers表,统计结果依次包含“年份”和“人数”两个字 段,各记录按年份升序排列,统计结果存储到tableone表中。最后执行该SQL语 句存储到pone.prg。 SELECT year(customers.出生日期) as 年份,; count(customers.姓名) as 人数; FROM customers; GROUP BY 1; ORDER BY 1;

INTO TABLE tableone.dbf 第50套(简单应用) 查询每个学生的平均成绩,使用SQL的SELECT语句,结果包括“姓名” (取自 student表)和“平均成绩” (score表中的成绩平均值)两个字段,并按“平均 成绩”降序排列, “成绩相等”按姓名升序排列,存储到表avgsscore.dbf中。 ELECT Student.姓名, AVG(Score.成绩) AS 平均成绩; FROM score,student ; WHERE Score.学号 = Student.学号; GROUP BY Student.姓名; ORDER BY 2 DESC,Student.姓名; INTO TABLE avgscore.dbf (综合应用) 1.为“生成表”编写代码:SQL命令,先按“学号”升序排列,若“学号”相同 按“成绩”降序排列,存储到result. 2.为“运行报表”编写代码:预览报表three.frx: SELECT * FROM viewsc ORDER BY 学号,成绩 DESC INTO TABLE result report form three preview 第51套(简单应用) 使用SQL命令小于等于30岁的会员信息(取自customers) ,列出会员号、年龄和 姓名,查询结果按年龄降序排列存入cut_ab.txt中,SQL命令存入命令文件 cmd_ab.prg。 "cmd_ab.prg"中的命令语句 SELECT Customer.会员号, Customer.姓名, Customer.年龄; FROM customer; WHERE Customer.年龄 <= 30; ORDER BY Customer.年龄 DESC; TO FILE cut_ab.txt (综合应用) 编写“查询”代码,根据文本框Text1输入的日期,查询会员号在指定的日期后 (大于等于指定日期0签订的各商品总金额, 查询结果的字段为 “会员号、 姓名、 总金额”3项,其中“总金额”为 各商品的数量乘以单价的总和;总金额降序排列,存入dbfa中。 "查询"按钮的Click事件代码 SELECT Customer.会员号, Customer.姓名,; (orderitem.数量 * article.单价) as 总金额; FROM article,orderitem,customer ; WHERE Orderitem.会员号 = Customer.会员号 ; AND Article.商品号 = Orderitem.商品号; AND Orderitem.日期 >= ThisForm.Text1.Value; ORDER BY 3;

INTO TABLE dbfa.dbf 第52套(简单应用) 修改four.prg。计算每个系的“平均工资”和“最高工资”存入表three。 错误1:改为"SELECT 学院表.系名, avg(工资) as 平均工资, max(工资) as 最 高工资;"。 错误2:改为"FROM 教师表,学院表 WHERE 教师表.系号 = 学院表.系号;"。 错误3:改为"GROUP BY 学院表.系名;"。 错误4:改为"ORDER BY 3 DESC, 2 DESC;"。 错误5:改为"INTO TABLE three.dbf"。 (综合应用) 为“生成表”编写代码:程序的功能:表单运行时,根据“系名”和“计算方 法”将相应的“系”和“平均工资”或“总工资”存入表salary中,包括“系 名、平均工资、总工资” 。 "生成"按钮的Click事件代码 x = ThisForm.Pageframe1.Page1.combo1.Value if ThisForm.Pageframe1.Page2.Optiongroup1.Value = 1 SELECT 学院表.系名, 学院表.系号, avg(教师表.工资) as 平均工资; FROM 学院表,教师表 ; WHERE 学院表.系号 = 教师表.系号; AND 学院表.系名 = x; GROUP BY 学院表.系号; INTO TABLE salary.dbf else SELECT 学院表.系名, 学院表.系号, sum(教师表.工资) as 总工资; FROM 学院表 ,教师表 ; WHERE 学院表.系号 = 教师表.系号; AND 学院表.系名 = x; GROUP BY 学院表.系号; INTO TABLE salary.dbf Endif 第53套(基本操作) 用SQL语句将 “课程” 表中查询课程名为 “数据库” 的课程教师更改为 “T2222” , 并将相应的SQL语句存储到文件four.prg. UPDATE 课程 SET 任课教师="T2222" WHERE 课程名="数据库" 第54套(简单应用) 建立命令文件,有两个语句: (1) 第一条使用SQL计算和更新student表的年龄字段值 (2) 第二条使用SQL语句查询各种“政治面貌‘的学生人数和平均年龄,结果 存入表sqlresults. UPDATE student SET 年龄=year(date()) - year(出生日期)

SELECT Student.政治面目, COUNT(*) AS 人数, avg(年龄) AS 平均年龄 FROM student GROUP BY Student.政治面目 INTO TABLE sqlresults (综合应用) 考生文件下的gnht.dbf是同一个管理表的文件,部分字段意义: HTH(合同号)、DHDW(订货单位)、GHDW(供货单位)、JHSL(订货数量) 编写程序progzh.prg分别统计订货单位数、供货单位数、顶货总数,结果存入 jieguo.dbf。 select 1 use jieguo select 2 use gnht sum jhsl to asum && 计算订货总数 index on dhdw to aaa uniq count to adhdw && 计算订货单位数 index on ghdw to bbb uniq count to aghdw && 计算供货单位数 use select 1 replace num with adhdw && 把订货单位数存放第1条记录中 skip replace num with aghdw && 把供货单位数存放第2条记录中 skip replace num with asum && 把订货总数存入第3条记录中 list && 显示结果 use 第56套(基本操作) 使用SQL命令在employee表中查询年龄最大的前五名员工的姓名和出生日期, 查 询 结 果 按 年 龄 降 序 排 列 存 入 表 emage.dbf 中 , 同 时 使 用 SQL 命 令 存 入 文 件 emage.txt. 在命令窗口输入以下语句。 SELECT TOP 5 姓名,出生日期; FROM employee; ORDER BY 出生日期; INTO TABLE emage (综合应用) 单击“计算“,就会在”计算结果“下的文本框Text3中显示计算结果,要求使 用DOCASE语句判断选择的计算分类, 在CASE表达式直接应用选项组的相关属性。 do case case thisForm.optiongroup1.value=1

thisForm.Text3.Value=val(thisForm.Text1.Value)+val(thisForm.Text2.Value) case thisForm.optiongroup1.value=2 thisForm.Text3.Value=val(thisForm.Text1.Value)-val(thisForm.Text2.Value) case thisForm.optiongroup1.value=3 thisForm.Text3.Value=val(thisForm.Text1.Value)*val(thisForm.Text2.Value) case thisForm.optiongroup1.value=4 thisForm.Text3.Value=val(thisForm.Text1.Value)/val(thisForm.Text2.Value) endcase 第57套(简单应用) 以表employee.dbf和order,dbf中数据为基础,使用SQL命令检索订单数最多的 前三名职工的职工号、姓名和订单数,检索结果按订单数降序存入表 newcoun.dbf,同时将使用SQL命令存入new.txt SELECT TOP 3 Orders.职工号, Employee.姓名, COUNT(*) AS 订单数; FROM employee INNER JOIN orders ON Employee.职工号 = Orders.职工 号; GROUP BY Orders.职工号; ORDER BY 订单数 DESC; INTO TABLE newcoun.dbf 第58套(简单应用) 使用SQL命令查询customer数据表中“电话“字段的首字符是”6“、性别为” 女“的会员信息,列出姓名,年龄和电话, 查询结果年龄升序存入表 , tenp,cus.dbf,SOL语句命令存入文件temp_sql.txt中。 在命令窗口输入下列语句. SELECT 姓名,年龄,电话; FROM customer; WHERE LEFT(电话,1)='6' AND 性别="女"; ORDER BY 年龄; INTO TABLE temp_cus 将语句复制到文本文件temp_sql.txt中。 (综合应用) (1) 单击 “女客户信息 使用SQL的SELECT命令查询客户表Customers”女” “, 客户的全部信息。 (2) 单击“客户购买商品情况“按钮,使用SQL的SELECT命令查询简单应用中 创建的sb_view的视图的全部信息。 (3) 单击“输出客户信息“按钮,在屏幕上预览myreport报表的文件的内容。 双击"女客户信息"按钮,在"Command1.Click"编辑窗口中"SELECT * FROM customer WHERE 性别 = "女""

步骤10:双击"客户购买商品情况"按钮,在"Command2.Click"编辑窗口中 "SELECT * FROM sb_view" 步骤11:双击"输出客户信息"按钮,在"Command3.Click"编辑窗口中"REPORT FORM myreport PREVIEW" 步骤12:双击"退出"命令按钮,在"Command4.Click"编辑窗口中输入 "ThisForm.Release",接着关闭编辑窗口。 第59套(综合应用) “查询“按钮:使用SQL命令查询每个学生所选的所有课程的成绩都是60分以上 的学生的学号、姓名、平均成绩和最低分,存入到FOUR中, SELECT Student.学号, Student.姓名, AVG(成绩) AS 平均成绩,MIN(成绩) AS 最 低分; FROM sdb!student INNER JOIN sdb!sc ON Student.学号 = Sc.学号; GROUP BY Student.学号 HAVING MIN(成绩) >= 60; ORDER BY Student.学号; INTO TABLE four.dbf 第60套(综合应用) “查询“使用SQL语句命令查询选课数量大于等于4门且平均成绩大于等于75分 的每个同学的学号、姓名、平均成绩和选课门数,存入表TWO中。 SELECT student.学号,姓名,AVG(成绩) AS 平均成绩, COUNT(*) AS 选课门数; FROM student,sc; WHERE student.学号=sc.学号; GROUP BY sc.学号 HAVING COUNT(*)>=4 AND 平均成绩>=75; ORDER BY 平均成绩 DESC; INTO dbf two 第 61 套(基本操作) 在会员表 CUS 增加一个字段,字段名为手机号,数据类型为字符,宽度为 11; 给单价和数量增加有效性规则;数量等于大于 1,默认值为 1,单价大于等于 1,默 认值为 1; 打开数据库cbd,在命令窗口输入如下命令。 ALTER TABLE cus ADD COLUMN 手机号 C(11) ALTER TABLE CBC ALTER 数量 SET CHECK 数量>=1 ALTER TABLE CBC ALTER COLUMN 数量 SET DEFAULT 1 ALTER TABLE CBC ALTER 单价 SET CHECK 单价>=1 ALTER TABLE CBC ALTER COLUMN 单价 SET DEFAULT 1 使用 SQL 语句查询 CUS 会员号、会员名和单位字段,结果存入到 NCUS. SELECT 会员号,会员名,单位 FROM cus INTO TABLE ncus (简单应用) 修改文件,查询累计消费金额在 5000 元以上,在第 3、6、7 有错误。 第3行:WHERE 性别 = "女" AND 会员号 =ANY;

第6行:WHERE 数量 >= 10; 第7行:GROUP BY 会员号 HAVING SUM(数量*单价) >= 5000); (综合应用) 在“统计”按钮,根据所购买的总金额(数量*单价),确定该会员为“金卡会员、 银卡会员、通卡会员和普通会员”。 金卡会员,总金额>=15000元, 银卡会员,总金额<15000元AND>=10000元, 铜卡会员,总金额<10000yuanAND>=5000元, 普通会员,总金额<5000元。 UPDATE CUS SET 会员类型="金卡会员" WHERE 会员号=ANY(SELECT 会员号 FROM cbc GROUP BY 会员号 HAVING SUM(数量*单价) >= 15000) UPDATE CUS SET 会员类型="银卡会员" WHERE 会员号=ANY(SELECT 会员号 FROM cbc GROUP BY 会员号 HAVING SUM(数量*单价) < 15000 AND SUM(数量*单价)>= 10000) UPDATE CUS SET 会员类型="铜卡会员" WHERE 会员号=ANY(SELECT 会员号 FROM cbc GROUP BY 会员号 HAVING SUM(数量*单价) < 10000 AND SUM(数量*单价)>= 5000) UPDATE CUS SET 会员类型="普通会员" WHERE 会员号=ANY(SELECT 会员号 FROM cbc GROUP BY 会员号 HAVING SUM(数量*单价) < 5000) 第62套(简单应用) 打开文件下three,prg, 该命令查询所有成绩度高于或等于平均分饿学生的考生号和 姓名。在3、6、9有错误。 第3行:INTO ARRAY tem 第6行:WHERE not exists; 第9行:WHERE 成绩 < tem(1) and 考生号 = ksb.考生号); (综合应用) 在“录取”按钮,查询总成绩大于或等于330分的考生号、性别、姓名、单位和该生 的政治成绩、外语成绩、高数成绩、专业课成绩、总成绩,存入表FOUR中。 close all CREATE TABLE test (考生号 C(4), 政治成绩 N(5,1), 外语成绩 N(5,1), 高数成绩 N(5,1), 专业课成绩 N(5,1), 总成绩 N(5,1)) use select 2 use test select 1 use kscjb do while .not.eof() select test locate for 考生号=kscjb->考生号 if not found() then

append blank replace 考生号 with kscjb->考生号 endif do case case kscjb->考试科目="101" replace 政治成绩 with kscjb->成绩 case kscjb->考试科目="102" replace 外语成绩 with kscjb->成绩 case kscjb->考试科目="103" replace 高数成绩 with kscjb->成绩 case kscjb->考试科目="104" replace 专业课成绩 with kscjb->成绩 endcase select kscjb skip enddo close all update test set 总成绩=政治成绩+外语成绩+高数成绩+专业课成绩 SELECT Ksb.考生号, Ksb.姓名, Ksb.性别, Ksb.单位, Test.政治成绩,; Test.外语成绩, Test.高数成绩, Test.专业课成绩, Test.总成绩; FROM sdb!ksb INNER JOIN test ON Ksb.考生号 = Test.考生号; WHERE Test.总成绩 >= 330; ORDER BY Test.总成绩 DESC; INTO TABLE four 第66套(基本操作) 使用SQL在“外汇”建立一个数据库表rate,4个字段“币种1代码(C)”、“币种2 代码C(2)”、“买入价”N(8,4)、卖出价N(8,4),存入two.txt CREATE TABLE rate (币种1代码 C(2), 币种2代码 C(2), 买入价 N(8,4), 卖出 价 N(8,4)) (简单应用) 编写程序,根据“外汇汇率‘,由于”外汇汇率“的币种1和币种2存放的是外币名 称,而rate表中的币种1代码和币种2代码应该存放外币代码,所以插入时要做相应 的改动,外币名称与外币代码的对应关系存储”外汇代码“表中。 close all select 0 use 外汇代码 select 0 use rate select 0 use 外汇汇率

do while .not. eof() select 外汇代码 locate for 外币名称=外汇汇率->币种1 mm1=外币代码 locate for 外币名称=外汇汇率->币种2 mm2=外币代码 select rate append blank select rate replace 币种1代码 with mm1,币种2代码 with mm2,买入价 with 外汇汇率 ->买入价,卖出价 with 外汇汇率->卖出价 select 外汇汇率 skip enddo close all (综合应用) 表单运行时,首先在选项组控件中选择“现钞“或”现汇“,单击”查询“按钮, 根据选项控件的选择将”外汇账户“表的”现钞“或”现汇“,存入显示的表格控 件中。 thisform.grid1.recordsource="SELECT * FROM 外汇账户 WHERE 钞汇标志 ='"+iif(thisform.myOption.value=1, "现汇","现钞")+"' INTO cursor lsb" 第67套(简单应用) 用SQL语句查询;查询“外汇账户“表中的日元信息。查询结果包括钞汇标志、金额, 按金额降序排列,存入two.dbf,并存入three.txt. SELECT 钞汇标志,金额; FROM 外汇账户; WHERE 外币代码="27"; ORDER BY 金额 DESC; INTO TABLE two 第68套(简单应用) 用SQL UPDATE命令为所有的商品编码首字符是“3“的水平计算销售价格:销售价格 为在进货基础上加22.68%,存入文本文件cmb_ab.txt UPDATE 商品 SET 销售价格=进货价格*(1+0.2268) WHERE substr(商品编 码,1,1)="3" (综合应用) 三个选项按钮组:饮料,调味品、酒类、小家电 单击“确定“,显示选中的商品,要求使用DO CASE语句判断选择的商品分类。 DO CASE CASE THISFORM.OPTIONGROUP1.VALUE=1 SELECT * FROM 商品 WHERE 分类编码=ANY(SELECT 分类编码 FROM 分

类 WHERE 分类名称="饮料") CASE THISFORM.OPTIONGROUP1.VALUE=2 SELECT * FROM 商品 WHERE 分类编码=ANY(SELECT 分类编码 FROM 分 类 WHERE 分类名称="调味品") CASE THISFORM.OPTIONGROUP1.VALUE=3 SELECT * FROM 商品 WHERE 分类编码=ANY(SELECT 分类编码 FROM 分 类 WHERE 分类名称="酒类") CASE THISFORM.OPTIONGROUP1.VALUE=4 SELECT * FROM 商品 WHERE 分类编码=ANY(SELECT 分类编码 FROM 分 类 WHERE 分类名称="小家电") ENDCASE 第69套(简单应用) 使用SQL语句查询每个职工所经手的具有最高金额的订购信息(orders)表,结果按 金额降序排列、金额相同按订购单号升序存入表results. 使用SQL语句建立视图,视图中是目前在orders表中的没有签订的订单职工 (employee)信息,记录按仓库号降序排列。同时存入文本文件view_b.txt. (1) 【操作步骤】 在命令窗口输入以下语句。 SELECT *; FROM orders; ORDER BY 金额; WHERE 职工号+str(金额,10,0) IN; (SELECT 职工号+str(MAX(orders.金额),10,0); FROM orders; GROUP BY 职工号); INTO TABLE results (2) 【操作步骤】 打开数据库orders_manager,在命令窗口输入以下语句。 CREATE view view_b as SELECT* FROM employee WHERE 职工号 NOT IN (SELECT 职工号 FROM orders) ORDER BY 仓库号 DESC 将语句复制到文件view_b.txt中。 第70套(简单应用) 使用SQL语句建立视图view_cb,视图中显示每个职工的所有订单总金额大于15000的 职工号、姓名及其所签订的订单的总金额,结果按总金额升序排列,存文本文件 cmb_cb.txt。 OPEN DATABASE orders_manage CREATE view view_cb as SELECT employee.职工号,姓名,sum(金额) as 总 金额 FROM employee,orders WHERE employee.职工号=orders.职工号 GROUP BY employee.职工号 HAVING sum(金额)>=15000 ORDER BY 总金额 将语句复制到文件cmd_cb.txt中。

(综合应用) 程序运行时,在文本框Text1中输入一个职工号的值,并单击DO按钮,然后再Text2 文本框中显示职工的姓名, 在Text3文本框显示性别, 表格控件显示职工的订单信息。 zgh=ALLTRIM(ThisForm.Text1.Value) If Used("employee") SELECT employee ELSE USE employee ENDIF LOCATE FOR 职工号=zgh ThisForm.Text2.Value=姓名 ThisForm.Text3.Value=性别 ThisForm.Grdorders.RecordSource="SELECT * FROM orders WHERE 职工号 =='"+zgh+"' INTO CURSOR LSB" 第71套(基础操作) 使用SQL命令从employee表中查询所有已婚记录的职工号、 姓名、 性别和出生日期信 息,结果按出生日期降序排列表infor_da,同时存入文本文件cmd_da.txt。 SELECT 职工号,姓名,性别,出生日期 FROM employee WHERE 婚否 ORDER BY 出 生日期 DESC INTO TABLE infor_da (简单应用) 使用SQL语句从works中查询年龄最大的三个职工信息;职工号、姓名、出生日期,查 询结果按年龄降序存入表inor_db.dbf。 SELECT TOP 3 职工号,姓名,出生日期 FROM worker ORDER BY 出生日期 INTO TABLE infor_db.dbf (综合应用) 单击“退出”按钮,若“存盘”复选框比选中,则用SQL语句查询将选项组指定的表 内容存入表temp中,否则用SQL语句显示该表的内容。 IF thisform.optiongroup1.option1.value=1 IF thisform.check1.value=1 SELECT * FROM employee INTO TABLE temp ELSE SELECT * FROM employee ENDIF ELSE IF thisform.check1.value=2 SELECT * FROM orders INTO TABLE temp ELSE SELECT * FROM orders ENDIF ENDIF

第72套(综合应用) 根据order_detail表中的记录重新计算order_list表的总金额字段的值。 一条order_list记录可以对应order_detail记录。 在编程前应保证在基础操作正确建立了order_list表,在简单应用中为该表追加记 录。 最后将order_list表中的记录按总金额降序排列存入表od_new表中。程序保存在 prog1.prg. close database use order_list SELECT 订单号,sum(单价*数量) as aa FROM order_detail GROUP BY 订单号 ORDER BY 订单号 INTO cursor ff sele order_list do while !eof() sele ff locate for 订单号=order_list.订单号 sele order_list repl 总金额 with ff.aa skip enddo SELECT * FROM order_list ORDER BY 总金额 DESC INTO dbf od_new 第73套(简单应用) 将order_detail表中的全部记录追加到order_detail表中, 列出所有订单的订单 号、 订购日期、 器件号、 器件名和总金额(按订单号升序, 订单号相同按总金额降序) 存入表results. 在命令窗口输入下列语句。先把order_detail1表的记录全部添加到 order_detail表中 USE order_detail APPEND FROM order_detail1 步骤2:SQL SELECT语句完成查询 SELECT Order_list.订单号, Order_list.订购日期, Order_detail.器件 号, Order_detail.器件名, Order_list.总金额; FROM 订货管理!order_list INNER JOIN 订货管理!order_detail ON Order_list.订单号 = Order_detail.订单号; ORDER BY Order_list.订单号, Order_list.总金额 DESC; INTO TABLE results.dbf 第74套(简单应用) 将customer1表中的记录追加到customer表中,然后用SQL SELECT语句查询,列 出目前有订购单的客户信息,按客户号升序排列,结果存入results. 在命令窗口输入下列语句。先把customer1表的记录全部添加到customer表中

USE customer APPEND FROM customer1 步骤2:SQL SELECT语句完成查询 SELECT DISTINCT Customer.*; FROM 订货管理!customer INNER JOIN 订货管理!order_list ON Customer. 客户号 = Order_list.客户号; ORDER BY Customer.客户号; INTO TABLE results.dbf 第75套(简单应用) 列出客户名为“三益贸易公司”的订购单明细记录,订单号升序,同一订单的再 按“单价”降序排列,结果存入results. 客户名为"三益贸易公司"的客户号为"C10001" 在命令窗口输入以下SQL命令是: SELECT Order_detail.*; FROM 订货管理!order_list INNER JOIN 订货管理!order_detail ON Order_list.订单号 = Order_detail.订单号; WHERE Order_list.客户号 = "C10001"; ORDER BY Order_detail.订单号, Order_detail.单价 DESC; INTO TABLE results.dbf 修改form1表单,有三个命令按钮错误,请修改。 (1) 单击“刷新标题”按钮,是表单的标题为“简单应用”; (2) 单击“订单记录”按钮,是表格控件中显示order_list表中的记录; 步骤1:单击常用工具栏中的"打开"按钮,选择打开表单文件form1。 步骤2:双击"刷新标题"按钮,在"Command1.Click"中进行修改 要求刷新表单标题,所以应改为:Thisform.Caption="简单应用" 步骤3:双击"订单记录"按钮,在"Command2.Click"中进行修改 要 求 显 示 order_list 表 中 的 记 录 , 所 以 应 改 为 : Thisform.grid1.RecordSource ="order_list.dbf" (综合应用) 首先增加一个字段:新单价(于原来的单价字段相同),然后编写:根据 order_list表的“订购日期“字段的值确定order_list表的”新单价“字段值,原 则是订购日期为2001的“新单价”字段的值为原价的90%,订购日期为2002的“新单 价”为原价的110%。保存在prog1.prg. 步骤1:在命令窗口输入下列语句。 增加新字段: ALTER TABLE order_detail ADD COLUMN 新单价 F(10,2) 步骤2:创建程序文件,在程序文件中输入下列语句。 UPDATE order_detail SET 新单价=单价*0.9 WHERE 订单号=(SELECT 订单 号 FROM order_list WHERE 订 单 号 =order_detail. 订 单 号 AND YEAR( 订 购 日 期)=2001) UPDATE order_detail SET 新单价=单价*1.1 WHERE 订单号=(SELECT 订单

号 FROM order_list WHERE 订 单 号 =order_detail. 订 单 号 AND YEAR( 订 购 日 期)=2002) 保存程序文件名为prog1.prg并运行。 第76套(简单应用) 列出总金额大于所有的订购总金额平均值的订购单清单,按客户号降序排列,结 果存入表ressults. 在命令窗口输入下列语句。 SELECT * FROM order_list WHERE 总 金 额 >(SELECT AVG( 总 金 额 ) FROM order_list) ORDER BY 客户号 INTO TABLE results (综合应用) 首先将order_detail表的全部内容复制到od_bak表, 1、将od_bak表中订单号字段值保留最后一个字母; 2、用SQL语句对od_bak表编写如下操作: (1)把“订单号”相同的“器件号”相同的订单合并为一个记录,“单价为”取最 低价,“数量”取合计; (2)结果按新“订单号“升序排列,再按”器件号“升序排列; (3)最终记录存入表od_new表中,表的字段有“订单号“、器件号、器件名、单价、 数量。存入prog1,prg. 创建程序文件prog1.prg,输入以下语句,并执行该程序。 SET SAFETY OFF SELECT * FROM order_detail INTO DBF od_bak SELECT od_bak REPLACE ALL 订单号 WITH RIGHT(ALLTRIM(订单号),1) SELECT 订单号,器件号,器件名,MIN(单价) AS 单价,SUM(数量) AS 数量 FROM od_bak GROUP BY 订单号,器件号,器件名 ORDER BY 订单号,器件号 INTO DBF od_new BROWSE CLOSE DATABASE 第77套(简单应用) 根据sbd数据库使用的SQL命令查询学生的学号、 姓名、 课程名和成绩。 结果按 “课 程名“降序排列,若相同再按”成绩“降序排列。存入表sclist表。 在命令窗口输入以下语句。 SELECT student.学号, student.姓名, course.课程名, sc.成绩; FROM student,course,sc; WHERE student.学号 = sc.学号 AND sc.课程号 = course.课程号; ORDER BY course.课程名, sc.成绩 DESC; INTO TABLE sclist 第78套(简单应用) 修改form表单文件: (1) 将按钮“刘览雇佣工资”修改为“浏览雇员工资”;

(2) 单击“浏览雇员工资”,使用SELECT查询所有字段的信息; 步骤1:单击常用工具栏中的"打开"按钮,选择打开表单文件"form1"。 步骤2: 单击"刘缆雇员工资"命令按钮, 在"属性"的Caption处输入"浏览雇员工 资"。 步骤3: 双击"浏览雇员工资"命令按钮, 在"Command1.Click"编辑窗口中把语句 修改为"SELECT * FROM salarys",关闭编辑窗口。 第79套(简单应用) 创建视图,SELECT查询,查询结果包括部门号、雇员号、姓名、工资、补贴、奖 励、失业保险、医疗统筹和实发工资字段,其中实发工资有工资、补贴和奖励三项 相加,然后减去失业保险和医疗统筹,按“部门号”降序排列,存入表T1,prg 创建程序文件,在程序文件中输入以下语句。 OPEN DATABASE salary_db CREATE VIEW sview AS; SELECT 部门号,雇员号,姓名,工资,补贴,奖励,失业保险,医疗统筹,工资+ 补贴+奖励-失业保险-医疗统筹 AS 实发工资; FROM salarys; ORDER BY 部门号 DESC CLOSE ALL 保存程序文件名为T1.PRG,并运行。 第80套(基础操作) 1、修改one.prg,如下功能;将“销售表”中的日期在2000年12月31日前的记录复制 到一个新表’“销售表2001.dbf” 2、修改并执行two.prg中的语句, 使之完成如下功能: “销售表” 将 中的日期在2000 年12月31日前的记录物理删除。 打开one.prg程序文件,将程序修改为: SELECT* FROM 销售表 INTO dbf 销售表2001 WHERE 日期<={^2000-12-31} 保存文件后运行该程序。 (2)打开two.prg程序文件,将程序修改为: CLOSE ALL DELETE from 销售表 WHERE 日期<={^2000-12-31} Pack (简单应用) 在“数据销售“数据库中,根据”销售表’和”商品名“查询每种商品的商品 号、商品名、单价、销售数量和销售金额,结果按销售金额降序排列,存入表see_a 表中。 在命令窗口输入以下语句。 SELECT 商品表.商品号,商品表.商品名,销售表.单价,销售表.销售数 量,(销售表.单价*销售表.销售数量) AS 销售金额; FROM 商品表,销售表; WHERE 商品表.商品号 = 销售表.商品号 ;

ORDER BY 销售金额 DESC; INTO TABLE see_a (综合应用) 编写名称change_c的命令,将“商品表”进行备份,备份文件名为“商品表备 份.dbf”将“商品表”中的“商品号‘前两位标号为”10“的商品的”单价“修改 为出厂价的10%。 步骤1:在change_c.prg文件中输入以下语句。 CLOSE ALL USE 商品表 IF FILE("商品表备份.DBF") ZAP APPEND FROM 商品表备份 ELSE COPY TO 商品表备份 ENDIF REPLACE ALL 单价 WITH 出厂单价*.1 for SUBSTR(商品号,1,2) = '10' SELECT 2 USE 单价调整表 ORDER 商品号 SELECT 商品表 SET RELATION TO 商品号 INTO 单价调整表 REPLACE ALL 出厂单价 WITH 单价调整表.出厂单价 for 商品号 = 单价 调整表.商品号 SET RELATION TO CLOSE ALL 第82套(简单应用) 用SQL语句:将选课在5门课程以上的学生的学号、姓名、平均分和选课门数按平 均分降序排列,存入表stu_temp 在命令窗口输入以下语句。 SELECT 学生.学号,姓名,AVG(成绩) AS 平均分, COUNT(*) AS 选课门数; FROM 学生,选课; WHERE 学生.学号=选课.学号; GROUP BY 选课.学号 HAVING COUNT(*)>=5; ORDER BY 平均分 DESC; INTO DBF stu_temp (综合应用) 单击“计算“命令按钮,按照成绩”升序“和”降序“将选修了”C语言“的学 生号和成绩存入stu_sort.dbf和stu_sort.dbf. 双击"计算"命令按钮,在"Command1.Click"编辑窗口中输入命令组,接着关闭编辑 窗口。 if thisform. myOption.value=1

SELECT 学号,成绩 FROM 选课,课程 WHERE 选课.课程号=课程.课程号 AND 课程名称="C语言" ORDER BY 成绩 INTO dbf stu_sort1 else SELECT 学号,成绩 FROM 选课,课程 WHERE 选课.课程号=课程.课程号 AND 课程名称="C语言" ORDER BY 成绩 DESC INTO dbf stu_sort2 endif 第83套(基本操作) 在商品销售数据库CDB使用的SQL的CEATE TABLE语句创建数据库表;顺序号为字 符型,宽度为6;日期为日期型;商品号为字符型,宽度为6,商品名为字符型,宽 度为10;金额为数值型 ,宽度为10,存入文件ONE.PRG. CREATE TABLE 销售明细表(顺序号 C(6) PRIMARY KEY ,日期 D,商品号 C(6),商品 名 C(10),金额 N(10.2)) (综合应用) “查询“按钮,再改按钮的”Click“用SQL查询顾客号等于输入的”顾客号“的 顾客的顾客号、顾客名和顾客地址,以及购买商品的商品号、商品名、单价、数量 和金额。 在查询按钮的单击事件中输入下列程序代码: SELECT cust.顾客号,顾客名,地址,order.商品号,商品名,单价,数量,单价* 数量 AS 金额 FROM comm,cust,order; WHERE comm.商品号=order.商品号 AND cust.顾客号=order.顾客号 AND cust.顾客号=THISFORM.TEXT1.VALUE; INTO CURSOR LSB SELECT DIST 顾客号,顾客名,地址 FROM LSB INTO DBF TABB SELECT 商品号,商品名,单价,数量,金额 FROM LSB INTO DBF TABC THISFORM.GRID1.RECORDSOURCE="SELE * FROM TABB INTO CURSOR A" THISFORM.GRID2.RECORDSOURCE="SELE * FROM TABC INTO CURSOR b" 第84套(简单应用) 修改TWO.PRG命令,文件统计每个顾客购买商品的金额合计,存入临时表ls中, 然后用sl中的每个顾客数据区修改表scust记录。 错误1:SELECT 顾客号,数量*单价 应付款; 修改为:SELECT 顾客号,sum(数量*单价)应付款; 错误2:DO WHILE EOF() 修改为:DO WHILE.NOT.EOF() 错误3:REPLACE ALL 应付款 = money 修改为:REPLACE 应付款 WITH money (综合应用) “查询“按钮,根据地一个文本框输入的顾客号进行查询。在表格控件中显示该 顾客的顾客号和购买的每件商品的商品号、商品名、单价、数量和金额,记录升序 排列。存入表”tjb,dbf“另外需要统计该顾客的应付款,结果在Text中显示。 设置"查询"按钮的Click事件代码:

ThisForm.Grid1.RecordSource="SELECT Order.顾客号,Comm.商品号,商品名, 单价,数量,Comm.单价* Order.数量 as 金额 FROM cdb!comm INNER JOIN cdb!order ON Comm.商品号=Order.商品号 WHERE 顾客号=ALLTRIM(ThisForm.Text1.Value) order by Comm.商品号 INTO TABLE tjb" SELECT sum(Comm.单价* Order.数量) FROM cdb!comm INNER JOIN cdb!order ON Comm.商品号=Order.商品号 WHERE 顾客号=ALLTRIM(ThisForm.Text1.Value) INTO ARRAY temp ThisForm.Text2.Value=temp 第85套(综合应用) “统计“功能是统计2007年有关客户签订的订单数。统计结果依次包含”客户名 “和”订单数“,其中客户名即为客户的姓名记录按订单数降序排列,订单数相同 按客户名生序排序,存入表tabletwo. :选择"统计"的结果为"过程"。在过程中输入下列命令: SELECT Customers.姓名 AS 客户名,count(Orders.订单号) as 订单数; FROM customers INNER JOIN orders ON Customers.客户号=Orders.客户号; WHERE year(Orders.签订日期)=2007 GROUP BY Customers.姓名; ORDER BY 2 DESC,Customers.姓名 INTO TABLE tabletwo 第86套(综合应用) 建立程序SQL功能是;查询7月份以后签订订单的客户名,图书名、数量、单价和金 额,按客户号、再按图书名升序排列存入表MYSQLABLE SELECT 客户名,图书名,数量,单价,单价*数量 AS 金额 ; FROM mybase!goods INNER JOIN mybase!orderitem ; INNER JOIN mybase!order ; ON Orderitem.订单号 = Order.订单号 ; ON Goods.图书号 = Orderitem.图书号 ; WHERE month(order.签订日期)>=7 ; ORDER BY 客户名,图书名 INTO TABLE MYSQLTABLE 第87套(简单应用) 编写SELECT语句。 从orders表中统计2007年各月份签订的订单数。 统计结果包含 “月份“和”订单数量“,按月份降序排列,存入表tabletwo,存入文件pone.prg。 select month(签订日期) as 月份,count(订单号) as 订单数 from orders ; where year(签订日期)=2007 group by 月份 order by 月份 into table tableone (综合应用) “查询“事件代码:查询功能:从order.Orderitems,customer goods查询指定日期 的详细信息,查询结果为签订日期、订单号、客户名、商品名、单价和数量、按签 订日期升序排列,日期相同按订单号升序排列,订单号相同按商品名升序排列,结 果存入表tablethree中。 双击"查询"按钮,在Click事件中输入如下代码: SELECT 签订日期,orders.订单号,姓名 as 客户名,商品名,单价,数量 ;

FROM goods INNER JOIN orderitems ; INNER JOIN orders INNER JOIN customers; ON customers.客户号=Orders.客户号 ; ON Orderitems.订单号=Orders.订单号 ; ON Goods.商品号=Orderitems.商品号 ; WHERE 签订日期>=ctod(thisform.Text1.Text) ; ORDER BY 签订日期,orders.订单号,商品名 ; INTO TABLE tablethree.dbf 第88套(简单应用) 使用SQL查询每个读者订购的数量和金额, 查询结果包括客户名、 订购总册数和金额, 按金额降序排列,存入表apptwo.dbf, 在命令窗口中输入如下语句: SELECT Order.客户名, sum(orderitem.数量) as 订购总册数,; sum(orderitem.数量* Goods.单价) as 金额 ; FROM goods INNER JOIN orderitem INNER JOIN order ; ON Orderitem.订单号 = Order.订单号 ; ON Goods.图书号 = Orderitem.图书号 ; GROUP BY Order.客户名 ; ORDER BY 金额 DESC ; INTO TABLE apptwo.dbf


相关文章:
计算机等级考试二级VF上机题答案
计算机等级考试二级VF上机题答案_IT认证_资格考试/...基本操作题(共 4 小题,第 1 和 2 题是 7 分...本题还考对查询的排序和查询的去向进行了考核.可以...
VF2级上机试题及答案
试试 帮助 全部 DOC PPT TXT PDF XLS 百度文库 教育专区 资格考试/认证 ...VF2级上机试题答案VF2级上机试题答案隐藏>> VF2 级上机试题答案 第八...
全国二级VF上机考试注意事项
按回车或选 择“考号验证” ,将弹出考生信息窗口,...2、 很多同学在上机时直接打开 VF 就作题,这样的...这样就避免了,全对的答案结果是 0 分的 情况。 ...
计算机二级_VF_上机1试题及答案
计算机二级_VF_上机1试题答案_IT认证_资格考试/认证_教育专区。上机考试题(第...考号 tag xh1 sele 2 use cj index on 考号 tag xh2 sele 1 update on...
国家计算机二级VF考试题库答案合集
国家计算机二级VF试题答案合集_IT认证_资格考试/认证_教育专区。01 一、(1)启动 Visual FoxPro 6.0,按照题目的要求新建一个名为"供应"的项目文件。 (2)...
vf二级考试上机试题2
试试 帮助 全部 DOC PPT TXT PDF XLS ...关键词:vf二级考试上机试题 1/2 同系列文档 vf二级...VF国家二级上机考题答案 20页 2财富值如...
2016年计算机二级VF备考练习题及参考答案(6).doc_图文
2016 年计算机二级 VF 备考练习题及参考答案(6) 1...参考解析: 【考点分析】本大题主要考查的知识点是...所以 RIGHT(a, 2)的值是 “机” , b+RIGHT(a...
计算机二级VF机考答案 84题
计算机二级VF机考答案 84题_IT认证_资格考试/认证_教育专区。博大计算机培训学校...(二)参考评分中的试题评析 (三) use order_list do while not eof() sele...
计算机等级考试二级VF历年笔试试题及答案
计​算​机​等​级​考​试​二​级​V​F​历​年...月全国计算机等级考试二级 VF 试题与参考答案 一选择题(每小题 2 分,共 70 ...
计算机2级考试机试题库答案
2013计算机二级(VB)考试... 暂无评价 177页 4下载券 计算机等级考试二级VF机....计​算​机​2​级​考​试​机​试​题​库​答​案...
更多相关标签: