在考生文件夹下有仓库数据库CK3,包括如下所示两个表文件:
CK(仓库号C(4),城市C(8),面积N(4))
ZG(仓库号C(4),职工号C(4),工资N(4))
设计一个名为ZC3的菜单,菜单中有两个菜单项“统计”和“退出”。
程序运行时,单击“统计”菜单项应完成下列操作:检索出所有职工的工资都大于。1220元的职工所管理的仓库信息,将结果保存在wh1数据表文件中,该文件的结构和CK数据表文件的结构一致,并按面积升序排序。
单击“退出”菜单项,程序终止运行。
(注:相关数据表文件存在于考生文件夹下)
参考答案:菜单的建立、结构化查询语言(SQL)中的嵌套查询、查询结果的去向等知识。
解析:[解题思路]
利用菜单设计器定义两个菜单项,在菜单名称为“统计”的菜单项的结果列中选择“过程”,并通过单击“编辑”按钮打开一个窗中来添加“统计”菜单项要执行的命令。在菜单名称为“退出”的菜单项的结果列中选择“命令”,并在后面的“选项”列中输入以下退出菜单的命令:SET SYSMENU TO DEFAULT
“统计”菜单项要执行的程序:
首先中打开数据库文件OPEN DATABASE CK3.DBC
下面我们分析所要用到的查询语句的实现,题面要求“检索出所有职工的工资都大于1220的职工所管理的仓库信息”,所以得到满足以上条件的仓库号成为解答本题的关键。“所有职工的工资都大于1220的职工所管理的仓库”这个条件可以将其分解为同时满足以下两个条件的结果“仓库号不存在于职工的工资小于等于1220的职工所管理的仓库号中”并且“仓库号存在于表ZG中”,而以上两个条件我们可以利用SQL轻松写出来。所以最后形成的查询语句以下:SELECT*FROM CK WHERE仓库号NOT IN(SELECT仓库号FROM ZG WHERE 工资<=1220)AND仓库号IN(SELECT仓库号FROM ZG)INTO TABLE wh1.dbf。后面的INTOTABLE wh1.dbf决定了查询的结果是生成一个wh1.dbf文件。
本题还考对查询的排序和查询的去向进行了考核,可以用ORDER BY order_ Item[ASC|DESC]来让查询的结果按某一列或某几列的升序(ASC)或降序(DESC)进行排列。而查询的去向可以通过INTO TABLE str Table Name而直接生成一个文件名为str Table Name的.DBF表。