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

admin2017-03-29  44

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

选项

答案(1)步骤1:命令窗口执行: OPEN DATABASE sdb,打开SDB数据库。 步骤2:执行【文件】→【新建】菜单命令,或单击“常用”工具栏的“新建”按钮,在“新建”对话框中选“表单”选项,单击“向导”按钮,“向导选取”对话框中选“一对多表单向导”项,单击“确定”,启动向导。 步骤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:保存文件修改,在命令窗口执行命令:DOthree.prg,执行程序文件。 SQL简单查询、嵌套查询。

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

最新回复(0)