问题 问答题

在考生文件夹下有仓库数据库GZ3包括两个表文件:
ZG(仓库号C(4),职工号C(4),工资N(4))
DGD(职工号C(4),供应商号C(4),订购单号C(4),订购日期D,总金额N(10))
首先建立工资文件数据表:CJ3(职工号C(4),工资N(4))
设计一个名为YEWU3的菜单,菜单中有两个菜单项“查询”和“退出”。
程序运行时,单击“查询”应完成下列操作:检索出与供应商S7,S4和S6都有业务联系的职工的职工号和工资,并存放到所建立的GJ3文件中。
单击“退出”菜单项,程序终止运行。
(注:相关数据表文件存在于考生文件夹下)

答案

参考答案:表结构的建立、菜单的建立.结构化查询语言(SQL)中的联接查询、查询的排序、临时表的概念、查询结果的去向,HAVING子句,聚合函数COUNT()等的使用等知识。

解析:[解题思路]
第一步:利用莱单设计器定义两个菜单项,在菜单名称为“查询”的菜单项的结果列中选择“过程”,并通过单击“编辑”按钮打开一个窗口来添加“查询”菜单项要执行的命令。在菜单名称为“退出”的菜单项的结果列中选择“命令”,并在后面的“选项”列中输入以下退出菜单的命令:SET SYSMENU TO DEFAULT
第二步:在单击“计算”菜单项后面的“编辑”按钮所打开的窗口中添加如下的过程代码:
SET TALK OFF &&在程序运行时关闭命令结果的显示
OPEN DATABASE GZ3 &&打开数据库文件GZ3
USE DGD &&打开表DGD
CREATE TABLE GJ3(职工号C(4),工资N(4))
SELECT职工号FROM DGD WHERE供应商号IN("S4","S6","S7"):
GROUP BY职工号;
HAVING COUNT(DISTINCT供应商号)=3;
INTO CURSOR Cur Table
&&SELECT SQL语句中的GROUP BY子句可以用来指定结果集的组,
&&要得到"供应商号"是"S4"、"S6"或"S7"的订购单,同时以订购单所在的职工员进行分组
&&并且保证每个分组里面供应商号有三个(也就是三个供应商都应有订购单);这样就得到了满
&&足条件的职工号,将返回的结果集放于一个临时表Cur Table中:INTO CURSOR Cur Table
SELECT ZG.职工号,工资FROM ZG,Cur Table WHERE ZG.职工号=Cur Table.职工号:
ORDER BY工资DESC;
INTO ARRAY A Fields Value
&&将生成的临时表与DGD表进行联接查询,便可以得到满足条件的职工号和工资
&&返回的结果集放入数组A Fields Value中:INTO ARRAY A Fields Value
INSERT INTO GJS FROM ARRAY A fields Value &&在新建的表中追加记录
CLOSE ALL &&关闭打开的文件
SET TALK ON &&复命令结果的显示设置
第三步:以文件名YEWU3.MNX保存菜单源文件,并生成菜单,运行菜单。

单项选择题
单项选择题