在考生文件夹下,打开招生数据库sdb,完成如下简单应用: (1)使用一对多表单向导选择ksb表和kscb表生成一个名为two的表单。要求从父表ksb中选择所有字段,从子表kscjb中选择所有字段,使用“考生号”建立两表之间的关系,样式为阴影式;按钮类型为图

admin2013-03-31  17

问题 在考生文件夹下,打开招生数据库sdb,完成如下简单应用:
(1)使用一对多表单向导选择ksb表和kscb表生成一个名为two的表单。要求从父表ksb中选择所有字段,从子表kscjb中选择所有字段,使用“考生号”建立两表之间的关系,样式为阴影式;按钮类型为图片按钮;排序字段为考生号(来自ksb),升序:表单标题为“考生数据输入维护”。
    (2)在考生文件夹下打开命令文件three.prg,该命令文件用来查询所有成绩都高于或等于平均分的学生的考生号和姓名。并将查询结果存储到表three中。注意,该命令文件在第3行、第6行、第9行有错误,打开该命令文件,直接在错误处修改,不可改变SQL语句的结构和短语的顺序,不允许增加、删除或合并行。

选项

答案(1)步骤1:在命令窗口执行命令:OPEN DATABASE sdb,打开SDB数据库。 步骤2:执行【文件】→【新建】菜单命令,或单击“常用”工具栏的“新建”按钮,在弹出的“新建”对话框中选中“表单”选项,然后单击“向导”图标按钮,系统弹出“向导选取”对话框,选中“一对多表单向导”项,单击“确定”按钮,启动表单向导。如图2-38所示。 [*] 步骤3:在表单向导的“步骤1-从父表选择字段”界面的“数据库和表”下选中“kbs”表,将“可用字段”中的字段全部添加到“选定字段”中,单击“下一步”按钮。 步骤4:在表单向导的“步骤2-从子表选择字段”界面的“数据库和表”下选中“kscjb”表,将“可用字段”中的字段全部添加到“选定字段”中,单击“下一步”按钮。 步骤5:在表单向导的“步骤3-建立表之间的关系”界面中系统自动建立两个表的联系,单击“下一步”按钮。 步骤6:在表单向导的“步骤4-选择表单样式”界面的“样式”下选中“阴影式”,在“按钮类型”下选择“图片按钮”,单击“下一步”按钮。 步骤7:在表单向导的“步骤5-排序次序”界面中双击“可用的字段或索引标识”中的“考生号”字段到“选定字段”列表中,再选择“升序”,单击“下一步”按钮。 步骤8:在表单向导的“步骤6-完成”界面中的“请键入表单标题”下方文本框中输入“考生数据输入维护”,单击“完成”按钮。 步骤9:在“另存为”对话框的“保存表单为:”框中输入表单文件名two,单击“保存”按钮。 (2)步骤1:在命令窗口执行命令: MODIFY COMMAND three,打开恤three.prg程序,命令中的命令代码如下: *该命令文件用来查询所有成绩都高于或等于平均分的学生的考生号和姓名。并将查询结果存储到表THREE中。 *谈命令文件在笫3行、第6行、第9行有错误,打开该命令文件。 *直接在错误处修改,不可改变SQL语句的结构和短语的顺序,不允许增加、删除或合并行。 SELECT AVG(成绩); FROM kscjb; INTO CURSOR tem SELECT 考生号,姓名; FROM ksb; WHERE 考生号 EXISTS; ( SELECT *; FROM kscjb; WHERE 成绩<tem(1),考生号=ksb.考生号); INTO TABLE three 修改程序中的错误行,修改后的程序如下: SELECT AVG(成绩); FROM kscjb, INTO ARRAY tem &&将平均成绩存放到数组 array中 SELECT 考生号,姓名,&&外查询,在ksb表中将每一个考生编号与内查询的结果做比较 FROM ksb; WHERE NOT EXISTS; (SELECT*; &&在内查询中的kscjb表中判断是否该考生编号有一门成绩小于平均成绩 FROM kscjb; WHERE成绩<tem(1) and 考生号 =ksb.考生号); INTO TABLE three 步骤2:保存文件修改,在命令窗口执行命令:DO three.prg,执行程序文件。

解析 (1)本题主要考查的是表单向导的使用。操作比较简单,只需根据向导提示一步步完成操作即可。
    (2)本题主要考查的是SQL简单查询和嵌套查询.本题先用一个SQL简单查询获得平均分,由于平均分是一个数字,并且以后还要将考生成绩与谊平均分进行比较,所以应将其存放在一个数组中,而不是存放在临时表中,所以应将第一处错误INTO CURSOR temp改为INTO ARRAY temp。
题中第二个SQL语句为嵌套查询,使用了exists谓词,用来检查子查询中是否有结果返回.根据本题要求,要查找所有成绩都高于或等于平均分的学生的考生号和姓名,换句话说,也就是只要考生有一门成绩小于平均分,该考生就不符合条件.查询的基本过程是:对于外查询中的ksb表中的每个考生号,在内查询中的kscjb表中判断是否谊考生编号有一门成绩小于平均成绩,只要有一门成绩小于平均成绩,谊考生号都不该被查找出来,故第二处错误是在外查询中的条件中应使用not exits,而不是exists。在内查询中,条件“成绩<temp(1)”和“考生号=ksb.考生号”应该用AND联接。
转载请注明原文地址:https://kaotiyun.com/show/awsp777K
0

最新回复(0)