当前位置:首页 >> 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


相关文章:
计算机2级考试机试题库答案
暂无评价 177页 4下载券 计算机等级考试二级VF机... 232页 7下载券喜欢...计​算​机​2​级​考​试​机​试​题​库​答​案 ...
计算机二级vf机试(40套含答案)
最新计算机二级VF机试题... 97页 2下载券 计算机二级VF机试题目与... 暂无评价...的职工所管理的仓库信息", 所以得到满足以上条件的仓库号成为解答 本题的关键...
vf上机答案
vf上机题库50套 108页 免费 VFP电子教案 78页 免费 四川省计算机2级考试(VF...vf上机85套的答案vf上机85套的答案隐藏>> 第一套 1. 考查知识点: 项目文件...
二级VF题及答案
vf二级机试 基本操作题 ... 55页 1下载券 二级VF上机真题答案 10页 免费...GO 2 C.LIST D.DISPLAY 是一个具有两个备注型字段的数据库文件, 命令进行...
VF试题
计算机等级考试二级VF历年... 47页 免费 VF试题 4页 1财富值 vf上机试题库...(2)在两种基本测试方法中, (2) 测试的原则之一是保证所测模块中每一个独立...
VF2级上机试题及答案
试试 帮助 全部 DOC PPT TXT PDF XLS 百度文库 教育专区 资格考试/认证 ...VF2级上机试题答案VF2级上机试题答案隐藏>> VF2 级上机试题答案 第八...
vf2题
10财富值 国二vf常考100题库vf2 31页 10财富值 vf2 38页 2财富值 vf2 ...VF2级2 2页 1财富值 计算机二级vf2 44页 2财富值 VF2级上机试题答案 5...
VF二级试题
二级VF机试试题 4页 免费 计算机二级VF试题(1)及答... 7页 1下载券 喜欢...一个数组 二, 填空题 (每空 2 分, 30 分) 共 请将答案分别写在答题卡...
二级vf考试试题及答案
试试 7 帮助 全部 DOC PPT TXT PDF XLS ...二级vf考试试题答案_电脑基础知识_IT/计算机_专业...你的答案:0 标准答案:3 2.菜单中定义访问键,在...
计算机等级考试二级VF上机题答案
计算机等级考试二级VF上机题答案_IT认证_资格考试/...基本操作题(共 4 小题,第 1 和 2 题是 7 分...本题还考对查询的排序和查询的去向进行了考核.可以...
更多相关标签: