在考生文件夹下有仓库数据库gz3 其中包括如下两个表文件: zg(仓库号C(4) 职工号C(
问题详情
在考生文件夹下有仓库数据库gz3,其中包括如下两个表文件:
zg(仓库号C(4),职工号C(4),工资N(4))
dgd(职工号C(4),供应商号C(4),订购单号C(4),订购日期D,总金额N(10))
首先在gz3库中建立工资文件数据表gj(职工号C(4),工资N(4))。设计一个名为chaxun的菜单,菜单中有两个菜单项“查询”和“退出”。程序运行时,单击“查询”应完成下列操作:检索出与供应商 S7、S4和S6都有业务联系的职工的职工号和工资,并按工资降序存放到所建立的gj文件中。单击“退出”单项,程序终止运行。
(注:相关数据表文件存在于考生文件夹下)请帮忙给出正确答案和分析,谢谢!
参考答案
正确答案:在命令窗口输入命令:MODIFY DATABASE gz3打开数据库设计器右击数据库选择“新建表”快捷菜单命令表名为gj保存到考生文件夹下接着在表设计器中根据题意设置两个字段的字段名、类型及宽度。在命令窗口输入命令:CREATE MENU chaxun系统弹出一个“新建菜单”对话框在对话框中单击“菜单”按钮进入菜单设计器环境。根据题目要求首先输入两个主菜单名称“查询”和“退出”接着在“查询”菜单行的“结果”下拉框中选择“过程”选项在“退出”菜单行的“结果”下拉框中选择“命令”选项。单击“查询”菜单行中的“创建”按钮进入程序设计的编辑窗口在程序编辑器中输入如下程序段:*********“查询”菜单命令的程序设计*********SELECT DISTINCT zg.职工号zg.32资FROM zgdgd;WHERE zg.职工号=dgd.职工号;ANDzg.职工号IN;(SELECT职工号FROM dgd WHERE供应商号="S4");AND zg.职工号IN(SELECT职工号FROM dgd WHERE供应商号="S6");AND zg.职工号IN(SELECT职工号FROM dgd WHERE供应商号="S7");ORDER BY zg.工资 DESC;INTO ARRAY arrINSERT INTO gi FROM ARRAY arr**********************************************在“退出”菜单项的“命令”文本框中编写程序代码SET SYSMENU TO DEFAULT。选择菜单命令“菜单”—“生成”生成一个菜单文件chaxun.mpr。关闭设计窗口在命令窗口输入命令:DOchaxun.mpr看到Visual FoxPro的菜单栏被新建的菜单所代替单击“退出”菜单命令将恢复系统菜单。执行“查询”菜单命令后查询结果将保存到gj.dbf表中。
在命令窗口输入命令:MODIFY DATABASE gz3,打开数据库设计器,右击数据库,选择“新建表”快捷菜单命令,表名为gj保存到考生文件夹下,接着在表设计器中根据题意,设置两个字段的字段名、类型及宽度。在命令窗口输入命令:CREATE MENU chaxun,系统弹出一个“新建菜单”对话框,在对话框中单击“菜单”按钮,进入菜单设计器环境。根据题目要求,首先输入两个主菜单名称“查询”和“退出”,接着在“查询”菜单行的“结果”下拉框中选择“过程”选项,在“退出”菜单行的“结果”下拉框中选择“命令”选项。单击“查询”菜单行中的“创建”按钮,进入程序设计的编辑窗口,在程序编辑器中输入如下程序段:*********“查询”菜单命令的程序设计*********SELECT DISTINCT zg.职工号,zg.32资FROM zg,dgd;WHERE zg.职工号=dgd.职工号;ANDzg.职工号IN;(SELECT职工号FROM dgd WHERE供应商号="S4");AND zg.职工号IN(SELECT职工号FROM dgd WHERE供应商号="S6");AND zg.职工号IN(SELECT职工号FROM dgd WHERE供应商号="S7");ORDER BY zg.工资 DESC;INTO ARRAY arrINSERT INTO gi FROM ARRAY arr**********************************************在“退出”菜单项的“命令”文本框中编写程序代码SET SYSMENU TO DEFAULT。选择菜单命令“菜单”—“生成”,生成一个菜单文件chaxun.mpr。关闭设计窗口,在命令窗口输入命令:DOchaxun.mpr,看到Visual FoxPro的菜单栏被新建的菜单所代替,单击“退出”菜单命令将恢复系统菜单。执行“查询”菜单命令后,查询结果将保存到gj.dbf表中。 解析:本大题主要考查的是利用SQL中特殊运算符进行多表的联接查询,本题中可使用IN运算符进行包含查询,将查询结果写入新表时,由于表已经存在于数据库中,因此不能直接使用SQL直接输出到表的短语,但可以将结果先写入数组,然后通过数组将查询结果插入到新表由中。