2012年全国计算机等级VF机试题库

更新时间:2023-05-03 00:26:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

(1)新建一个名为"图书管理"的项目。

(2)在项目中建一个名为"图书"的数据库。

(3)考生文件夹下的自由表books、borrows和loans添加到"图书"数据库中。

(4)在项目中建立查询tscx,查询books表中"价格"大于等于"70"的图书的所有信息,查询结果按"价格"排序。

【操作步骤】

(1)在命令窗口执行命令:CREATE PROJECT 图书管理,新建一个项目管理器。

(2)①在项目管理器中选中"数据"选项卡内的"数据库"项,然后单击"新建"按钮,系统弹出"新建数据库"对话框。

②单击"新建数据库"图标按钮,在弹出的"创建"对话框的"数据库名"文本框中输入"图书"。

③单击"保存"命令按钮将数据库保存在考生文件夹下。

(3)①接上一小题操作,在新建的"图书"数据库设计器中单击右键,选择【添加表】快捷菜单命令,

在弹出的"打开"对话框中双击自由表Books,将表添加到数据库中。

②以同样的方法,将borrows表和loans表添加到数据库中。

(4)①在命令窗口执行命令:CREATE QUERY TSCX,打开查询设计器,在"添加表或视图"对话框中,双击books表,将表添加到查询设计器中。

②在"字段"选项卡中单击"全部添加"按钮,将"可用字段"中的全部字段添加到"选定字段"中。

③在"筛选"选项卡的"字段名"下拉列表中选择"books.价格"字段,在"条件"下拉框中选择">=",在"实例"框中输入"70"。

④在"排序依据"选项卡内双击"选定字段"列表框中的"books.价格"字段,将字段添加到"排序条件"列表框中,在"排序选项"中选择"降序"单选项。

⑤单击"常用"工具栏中的"运行"按钮查看结果,将查询文件保存到考生文件夹下。

【知识拓展】

在Visual FoxPro中,除了利用命令方式建立项目管理器外,还可以通过以下方法建立:

执行【文件】→【新建】菜单命令,或单击"常用"工具栏的"新建"按钮,在弹出的"新建"对话框中选中"项目"选项(此为系统默认选项),然后单击"新建文件"图标按钮,在弹出的"创建"对话框的"数据库名"文本框中输入项目文件名,单击"确定"按钮即可创建一个新的项目文件。

(1)在"学籍"数据库中有student、score和course三个表,使用菜单设计器制作一个名为menu1的菜单,菜单只有一个"查询"菜单项。该菜单项中有"按学号"、"按课程号"和"退出"3个子菜单:"按学号"和"按课程号"子菜单分别使用SQL语句的A VG函数统计各学生和课程的平均成绩。统计结果中分别包括"学号"、"姓名"、"平均成绩"和"课程编号"、"平均成绩"。"退出"子菜单负责返回到系统菜单。

(2)在数据库"图书"中建立视图"tsview",显示表loans中的所有记录,并按"借书日期"降序排序。建立表单form1,在表单上添加"表格"控件显示新建立的视图的记录。

(1)【操作步骤】

步骤1:在命令窗口执行命令:CREATE MENU MENU1,在弹出的"新建菜单"对话框中单击"菜单"图标按钮,打开菜单设计器。

步骤2:在菜单设计器"菜单名称"列的文本框中输入"查询","结果"下拉框中选择为"子菜单",单击"创建"按钮进入下级菜单设计,在"菜单名称"列的第1、2、3行文本框中依次输入子菜单名"按学号"、"按课程号"和"退出",将3个子菜单的"结果"都设置为"命令",然后在3个菜单命令的"选项"文本框中分别输入相应的命令。

步骤3:三条命令语句如下:

"按学号"菜单命令:SELECT 学号,AVG(成绩) FROM SCORE GROUP BY 学号。

"按课程号"菜单命令:SELECT 课程号,AVG(成绩) FROM SCORE GROUP BY 课程号。

"退出"菜单命令:SET SYSMENU TO DEFAULT。

步骤4:执行【菜单】→【生成】菜单命令,在弹出的Visual FoxPro对话框中单击"是"按钮,接着系统会弹出"生成菜单"对话框,单击"生成"按钮生成一个可执行的菜单文件。

步骤5:在命令窗口执行命令:DO MENU1.MPR,运行菜单查看结果(注意:执行文件时,文件扩展名不

能缺省)。

【知识拓展】

在菜单设计器的"结果"下拉框中有4个选项:"命令"、"子菜单"、"过程"和"填充名称/菜单项#"(当设计主菜单项时为"填充名称",设计子菜单项时为"菜单项#"),当要设计子菜单时,"结果"下拉框必须选择"子菜单"项,然后进入子菜单设计下级菜单。

(2)【操作步骤】

步骤1:在命令窗口执行命令:OPEN DATABASE 图书,打开"图书"数据库环境。

步骤2:继续在命令窗口执行命令:CREATE VIEW,打开视图设计器。在"添加表或视图"对话框中双击loans 表,将表添加到视图设计器中。

步骤3:在"字段"选项卡中单击"全部添加"按钮,将"可用字段"中的全部字段添加到"选定字段"中;在"排序依据"选项卡中双击"选定字段"列表框中的"loans.借书日期"字段,将字段添加到"排序条件"列表框中,在"排序选项"中选择"降序"单选项;单击"常用"工具栏中的"运行"按钮查看结果,将视图文件以文件名tsview保存(视图设计器的操作界面与查询设计器类似,部分操作界面可参考查询设计器图示)。

步骤4:在命令窗口执行命令:CREATE FORM FORM1,打开表单设计器。右击表单选择【数据环境】快捷菜单命令,打开表单数据环境,在"添加表或视图"对话框单击"视图"选项,然后双击tsview视图文件,将视图添加到表单数据环境中;将表单数据环境中的tsview视图文件拖放到表单中,会出现一个表格控件自动显示视图中的数据。

步骤5:单击"常用"工具栏中的"运行"按钮查看结果,将表单文件保存到考生文件夹下。

【知识拓展】

在Visual FoxPro中,利用数据环境,将字段拖到表单中,默认情况下,拖动字符型字段产生文本框控件;拖动逻辑型字段产生复选框控件;备注型字段产生编辑框控件;表或视图则产生表格控件。

考生文件夹下存在数据库"学籍",其中包含course和score表,这两个表存在一对多的联系。

对"学籍"数据库建立文件名为form2的表单,表单标题为"课程成绩查看",其中包含两个表格控件。第一个表格控件用于显示"课程"表的记录,第二个表格控件用于显示与"课程"表当前记录对应的"成绩"表中的记录。

表单中还包含一个标题为"退出"的命令按钮,要求单击此按钮退出表单,如图2-1所示。

图2-1 表单示例

【操作步骤】

步骤1:在命令窗口执行命令:CREATE FORM FORM2,打开表单设计器新建表单。从"表单控件"工具栏中依次向表单添加两个表格控件和一个命令按钮控件。

步骤2:在"属性"面板的下拉框中选择表单对象,在"全部"选项卡中修改对象属性值,如图3-7所示;表单及控件属性设置,见表3-1。

表3-1 表单及控件属性设置

步骤3:右击表单选择【数据环境】快捷菜单命令,继续在表单数据环境中单击右键选择【添加】快捷菜单命令,在"添加表或视图"对话框中双击course和socre表,将表添加到表单的数据环境中。

步骤4:右击第一个表格(Grid1)选择【生成器】快捷菜单命令,在"表格项"选项卡中,单击"数据库和表"下方的按钮打开,在弹出的"打开"对话框中选择course表,将"可用字段"中的字段全部添加到"选定字段"中,单击"确定"按钮;以同样的方法为第二个表格(Grid2)设置score表中的字段。

步骤5:双击"退出"命令按钮(Command1),在Click事件中编写程序代码:THISFORM.RELEASE。

步骤6:单击"常用"工具栏中的"运行"按钮查看结果,将表单文件保存到考生文件夹下。

【知识拓展】

除了利用表格生成器设置表格的数据来源,还可以通过表格的RecordSourceType属性和RecordSource属性指定表格的数据来源,也可以直接拖动表单数据环境中数据表到表单中形成表格控件,以建立表格和数据表之间的关系。

(1)请在考生文件夹下建立一个项目xm。

(2)将考生文件夹下的数据库kshj加入到新建的项目xm中。

(3)利用视图设计器在数据库中建立视图myview,视图包括"获奖情况"表的全部字段(顺序同"获奖情况"表中的字段)和全部记录。

(4)从表"获奖情况"中查询"等级"为"一等奖"的学生的全部信息("国籍"表的全部字段),并按"分数"的升序存入新表temp中。

【操作步骤】

(1)在命令窗口执行命令:CREATE PROJECT XM,新建一个项目管理器。

(2)在项目管理器中选中"数据"选项卡内的"数据库"项,然后单击"添加"按钮,在弹出的"打开"对话框中双击kshj数据库文件,将数据库添加到项目管理器中。

(3)①在项目管理器中单击"数据库"前面的"+"号,依次展开"数据库"→"kshj"。

②选中"本地视图"项单击"新建"按钮,接着在弹出的"新建本地视图"对话框中单击"新建视图"图标按钮,打开视图设计器。在"添加表或视图"对话框中双击"获奖情况"表,将表添加到视图设计器中。

③在"字段"选项卡中单击"全部添加"按钮,将"可用字段"中的全部字段添加到"选定字段"中。

④单击"常用"工具栏中的"运行"按钮查看结果,将视图文件以文件名myview保存。

(4)在命令窗口输入以下命令,将结果输出到temp表中(以下程序是通过查询设计器生成)。

SELECT 国籍.*; && 选择需要输出的字段,"*"表示表中所有字段

FROM kshj!国籍 INNER JOIN kshj!获奖情况;&& 选择要进行连接的表

ON 国籍.姓名 = 获奖情况.姓名; && 设置两个表的连接条件

WHERE 获奖情况.等级 = "一等奖"; && 设置输出记录要满足的条件

ORDER BY 获奖情况.分数; && 设置输出记录的排序条件

INTO TABLE TEMP.DBF && 指定查询结果输出到数据表temp中

(注意:程序中的"&&"符号是功能注释符,该符号及后面的注释文字不会影响程序的执行,是对命令功能的说明,非查询设计器生成的内容,考生在做题过程中可以不输入该注释内容,凡书中后面出现此符号者与本题相同,不再加以说明。)

【知识拓展】

第4小题中,大家也可以在命令窗口输入以下SQL语句进行查询:

SELECT 国籍.* FROM 国籍,获奖情况; && 选择输出字段及要查询的数据表

WHERE 国籍.姓名=获奖情况.姓名 AND 获奖情况.等级="一等奖"; && 设置表的连接条件及筛选条件ORDER BY 获奖情况.分数 INTO TABLE TEMP.DBF && 设置排序条件及指定查询输出的表名

(1)根据考生文件夹下的xxx表和jjj表建立一个查询chaxun,查询"工作单位"是"复旦大学"的所有教师的"姓名"、"职称"、"联系电话",要求查询去向是表,表名是cx1.dbf,并执行该查询("姓名"、"职称"取自表jjj,"联系电话"取自表xxx)。

(2)建立表单form1,表单中有两个命令按钮,按钮的名称分别为query和close,标题分别为"查询"和"关闭"。

(1)【操作步骤】

步骤1:在命令窗口执行命令:CREATE QUERY CHAXUN,打开查询设计器。在"添加表或视图"对话框中单击"其他"按钮,然后在弹出的"打开"对话框中双击xxx表,将表添加到查询设计器中,以同样的方法将jjj 表也添加到查询设计器中。

步骤2:添加两个表后,系统弹出"连接条件"对话框,自动查找两个表中相匹配的字段进行连接,单击"确定"按钮设置两个表的联系。

步骤3:依次双击两个表中的"姓名"、"职称"和"联系电话"字段,添加到"字段"选项卡的"选定字段"列表中;然后在"筛选"选项卡的"字段名"下拉列表中选择"xxx.工作单位"字段,在"条件"下拉框中选择"=",在"实例"框中输入"复旦大学"。

步骤4:执行【查询】→【查询去向】菜单命令,在弹出的"查询去向"对话框中单击"表"图标按钮,接着在"表名"中输入文件名cx1,单击"确定"按钮。

步骤5:最后单击"常用"工具栏中的"运行"按钮查看结果,将查询文件保存到考生文件夹下。

(2)【操作步骤】

步骤1:在命令窗口执行命令:CREATE FORM FORM1,打开表单设计器新建表单。从"表单控件"工具栏中依次向表单添加两个命令按钮控件。

步骤2:在"属性"面板的下拉框中选择表单对象,在"全部"选项卡中修改对象属性值,见表3-2。

表3-2 表单及控件属性设置

【知识拓展】

Name属性表示的是对象内部的名称,在引用对象时所使用的名字,每个控件都有Name属性值,在表单运行时不可见;而Caption属性表示对象的标题,在表单运行时可见,不是每个控件对象都有Caption属性,例如命令按钮组(CommandGroup)、选项组(OptionGroup)就没有该属性,但它们所包含的单个命令按钮或选项按钮有Caption属性。

在考生文件夹下,打开ec数据库,完成如下综合应用(所有控件的属性必须在表单设计器的属性窗口中设置):

设计一个文件名和表单名均为form2的表单,表单标题为"客户基本信息"。

要求该表单上有"女客户信息查询"(Command1)、"客户信息输出"(Command2)和"退出"(Command4)三个命令按钮。各命令按钮功能如下:

①单击"女客户信息查询"按钮,使用SQL的SELECT命令查询客户表cust中"女客户"的全部信息。

②单击"客户信息输出"按钮,调用考生文件夹中的报表文件report1在屏幕上预览(PREVIEW)客户信息。

③单击"退出"按钮,关闭表单。

【操作步骤】

步骤1:在命令窗口执行命令:CREATE FORM FORM2,打开表单设计器新建表单。从"表单控件"工具栏中依次向表单添加三个命令按钮控件。

步骤2:在"属性"面板的下拉框中选择表单对象,在"全部"选项卡中修改对象属性值,见表3-3。

表3-3 表单及控件属性设置

续表:

步骤3:双击命令按钮,编写各个命令按钮的Click事件代码。

***"女客户信息查询"按钮的Click事件代码***

SELECT * FROM CUST WHERE 性别="女"

***"客户信息输出"按钮的Click事件代码***

REPORT FORM REPORT1 PREVIEW

***"退出"按钮的Click事件代码***

THISFORM.RELEASE

步骤4:单击"常用"工具栏中的"运行"按钮查看结果,将表单文件保存到考生文件夹下。

3(1)新建一个名为"供应"的项目文件。

(2)将数据库"零件供应"加入到新建的项目文件中。

(3)通过"零件号"字段为"零件"表和"供应"表建立永久联系("零件"是父表,"供应"是子表)。

(4)为"供应"表的"数量"字段设置有效性规则:数量必须大于0并且小于9999;错误提示信息是"数量值不符合要求"。

【操作步骤】

(1)在命令窗口执行命令:CREATE PROJECT 供应,新建一个项目管理器。

(2)在项目管理器中选中"数据"选项卡内的"数据库"项,然后单击"添加"按钮,在弹出的"打开"对话框中双击"零件供应"数据库文件,将数据库添加到项目管理器中。

(3)①在项目管理器中单击"数据库"前面的"+"号,依次展开"数据库"→"供应零件"→"表"。

②选中"零件"表单击"修改"按钮,弹出"零件"表设计器,在表设计器的"字段"选项卡中选中"零件号"字段名,然后在"索引"列的下拉框选择"升序"排序方式(此时为表已建立了普通索引),接着在"索引"选项卡中将"类型"设置为"主索引",单击"确定"按钮保存表结构修改。

③参照"零件"表的操作,为"供应"表建立"零件号"字段的普通索引。

④在项目管理器中选中数据库"零件供应",然后单击"修改"命令按钮,打开数据库设计器,拖动"零件"表"索引"下方的主索引"零件号"到"供应"表中"索引"下方的普通索引"零件号"上,为两个表建立联系,建立好联系的两个表之间会出现一条连线。

(4)打开"供应"表设计器,选中"数量"字段行,然后在"字段有效性"的"规则"文本框中输入:数量>0.AND.数量<9999,在"信息"框中输入:"数量值不符合要求",单击"确定"按钮保存表结构修改。

(1)用SQL语句完成下列操作:列出所有与"蓝"颜色零件相关的信息("供应商号","工程号"和"数量"),并将检索结果按"数量"升序存放于temps表中,将SQL语句保存在mysql.txt中。

(2)建立一个名为quickmenu的快捷菜单,菜单中有两个菜单项"查找"和"运行"。在表单mainform中的RightClick事件中调用该快捷菜单。

(1)【操作步骤】

步骤1:在命令窗口执行命令:MODIFY FILE MYSQL,打开文本编辑器编写SQL命令。

步骤2:在编辑器中输入如下程序代码(以下程序是通过查询设计器生成):

SELECT 供应.供应商号, 供应.工程号, 供应.数量;

FROM 零件供应!零件 INNER JOIN 零件供应!供应 ;

ON 零件.零件号 = 供应.零件号;

WHERE 零件.颜色 = "蓝";

ORDER BY 供应.数量;

INTO TABLE temps.dbf

步骤3:在命令窗口执行命令:DO MYSQL.TXT,执行文件(注意:执行文件时,文件后缀名.txt不能缺省)。【知识拓展】

对表进行简单查询、连接查询、排序查询、简单计算查询、分组与分组计算、空值查询、超连接查询时,大家可以根据题目要求,参照以下步骤来编写SQL语句:

①确定需要输出的字段。需要输出的字段紧接SELECT命令之后,各字段之间用逗号隔开;在指定输出字段名时,可以指出该字段所属的表,也可以省略表名直接写字段名,但若是在两个表中出现同名的字段时,则引用同名字段时要指定该字段所属的表名,注意如果写上表名时,在表名和字段名之间要用英文半角状态下的句点隔开,例如,供应.供应商号,其中"供应"是表名,"供应商号"是字段名。

②确定进行连接的字段。一般情况下,两个表中字段名相同的两个字段就是两个表进行连接的字段,语句

格式为:FROM <表1> INNER JOIN <表2> ON <表1.字段表达式>=<表2.字段表达式>,该语句可以通俗地理解为:"表1"和"表2"是通过"表1"与"表2"两个表中"字段表达式"值相等记录进行连接;在指定表名时,可以指出该表所属的数据库名,也可以省略,如果要指定数据库名时,数据库名和表名之间要用惊叹号隔开,例如,零件供应!零件,其中"零件供应"是数据库名,"零件"是表名。

③确定筛选记录的条件。该条件一般在题目要求中给出,按照要求将条件表达式接在WHERE短语之后。

④确定分组记录的条件。该条件多用于分组计算查询表中的数据,例如分别统计成绩表中所有学生的总分,则需要对表中的学号字段进行分组,将所有学号相同的记录看作一组,然后再进行求和。分组表达式紧跟在GROUP BY短语之后,如果用于分组的字段在两个表中都存在,则指出该字段来自哪个数据表。

⑤确定记录排序的字段。该条件也会在题目要求中给出,排序字段紧接在ORDER BY短语之后,有"升序"(ASC,默认方式,可省略该关键字)和"降序"(DESC,不可缺省该关键字)两种。

⑥记录输出方式。SQL查询输出最常见的是输出到屏幕(缺省方式)、表(INTO TABLE)、临时表(INTO CURSOR)和数组(INTO ARRAY)。

注意:一个再简单的SQL查询语句也不能缺少SELECT(输出字段)和FROM(需要查询的表)两个短语内容,其他短语则可以根据题目要求来判断时候需要使用。

(2)【操作步骤】

步骤1:在命令窗口执行命令:CREATE MENU QUICKMENU,在弹出的"新建菜单"对话框中单击"快捷菜单"图标按钮,打开快捷菜单设计器。

步骤2:在菜单设计器"菜单名称"列的文本框中输入两个菜单项名"查找"和"运行"。执行【菜单】→【生成】菜单命令,生成一个可执行的菜单文件。

步骤3:在命令窗口执行命令:CREATE FORM MAINFORM,打开表单设计,双击表单,在事件代码编辑窗口的"过程"下拉框中选择RightClick(鼠标右击)事件代码,编写该事件的代码:DO QUICKMENU.MPR。步骤4:单击"常用"工具栏中的"运行"按钮查看结果,将表单文件保存到考生文件夹下。

对考生文件夹下的"零件供应"数据库及其中的"零件"表和"供应"表建立如下表单:

设计名为sform的表单(表单控件名和文件名均为sform),表单的标题为"工程使用零件情况浏览"。

表单中有一个表格控件和两个命令按钮"查询"和"退出"。运行表单时,单击"查询"命令按钮后,表格控件中显示了工程号"JC11"所使用的零件的零件名、颜色和重量。

单击"退出"按钮关闭表单。

【操作步骤】

步骤1:在命令窗口执行命令:CREATE FORM SFORM,打开表单设计器新建表单。从"表单控件"工具栏中依次向表单添加两个命令按钮和一个表格控件。

步骤2:在"属性"面板的下拉框中选择表单对象,在"全部"选项卡中修改对象属性值,见表3-4。

表3-4 表单及控件属性设置

续表:

步骤3:双击命令按钮,编写各个命令按钮的Click事件代码。各按钮代码如下:

*****"查询"按钮的Click事件代码*****

THISFORM.GRID1.RECORDSOURCE=";&& 指定表格的数据源,此处为SQL查询语句

SELECT DISTINCT 零件名,颜色,重量 FROM 零件; && DISTINCT用来消除查询结果中重复的记录

WHERE 零件号 IN;&& 利用IN短语查找内层循环中包含的记录,此处的IN相当与集合运算符∈

(SELECT 零件号 FROM 供应WHERE 工程号='JC11');

INTO CURSOR TEMP" && 将最终查询结果输出到临时表temp中

*****"退出"按钮的Click事件代码*****

THISFORM.RELEASE

步骤4:单击"常用"工具栏中的"运行"按钮查看结果,将表单文件保存到考生文件夹下。

【知识拓展】

①字符串常量的定界符包括英文半角状态下的双引号(" ")、单引号(' ')和方括号([ ]),定界符必须成对出现,且一种定界符中不能再包含相同的定界符。

②SQL查询语句中,"INTO CURSOR <表名>"短语可以将查询结果临时存放到一个只读的.dbf表文件中,当关闭文件时该文件自动被删除。

4(1)创建一个名为"学生管理"的项目文件。

(2)将考生文件夹下的数据库"班级学生"添加到新建的项目文件中。

(3)打开数据库"班级学生",将考生文件夹下的自由表"教师"添加到数据库"班级学生"中;为"教师"表创建一个索引名和索引表达式均为"教师编号"的主索引(升序)。

(4)通过"班级号"字段建立"班级"表和"学生"表间的永久联系。

【操作步骤】

(1)在命令窗口执行命令:CREATE PROJECT 学生管理,新建一个项目管理器。

(2)在项目管理器中选中"数据"选项卡内的"数据库"项,然后单击"添加"按钮,在弹出的"打开"对话框中双击"班级学生"数据库文件,将数据库添加到项目管理器中。

(3)①在项目管理器中单击"数据库"前面的"+"号,依次展开"数据库"→"班级学生"→"表"。然后单击"添加"按钮,在弹出的"打开"对话框中双击"教师"表文件,将自由表添加到数据库中。

②选中"教师"表单击"修改"按钮,弹出"教师"表设计器,在表设计器的"字段"选项卡中选中"教师编号"字段名,然后在"索引"列的下拉框选择"升序"排序方式,接着在"索引"选项卡中将"类型"设置为"主索引",单击"确定"按钮保存表结构修改。

(4)①参照"教师"表的操作,为"班级"表建立"班级号"字段的主索引;为"学生"表建立"班级号"字段的普通索引。

②在项目管理器中选中数据库"班级学生",然后单击"修改"命令按钮,打开数据库设计器,拖动"班级"表"索引"下方的主索引"班级号"到"学生"表中"索引"下方的普通索引"班级号"上,为两个表建立联系。

(1)根据"班级学生"库中的表用SQL SELECT命令查询学生的学号、姓名、课程号和成绩,结果按"课程号"降序排序,"课程号"相同时按"成绩"降序排序,并将查询结果存储到cjb表中,将使用的SQL语句保存到mysql.txt中。

(2)使用表单向导选择"学生"表生成一个名为myform1的表单。要求选择"学生"表中所有字段,表单样式为"浮雕式";按钮类型为"图片按钮";排序字段选择"学号"(降序);表单标题为"学生基本情况输入维护"。

(1)【操作步骤】

步骤1:在命令窗口执行命令:MODIFY FILE MYSQL,打开文本编辑器编写SQL命令。

步骤2:在编辑器中输入如下程序代码(以下程序是通过查询设计器生成):

SELECT 学生.学号, 学生.姓名, 成绩.课程号, 成绩.成绩;

FROM 班级学生!学生 INNER JOIN 班级学生!成绩 ;

ON 学生.学号 = 成绩.学号;

RDER BY 成绩.课程号 DESC, 成绩.成绩 DESC; && 查询结果先按"课程号"降序,再按"成绩"降序

INTO TABLE cjb.dbf

步骤3:在命令窗口执行命令:DO MYSQL.TXT,执行文件(注意:执行文件时,文件后缀名.txt不能缺省)。(2)【操作步骤】

步骤1:在命令窗口执行命令:OPEN DATABASE 班级学生,打开数据库环境。

步骤2:执行【文件】→【新建】菜单命令,或单击"常用"工具栏的"新建"按钮,在弹出的"新建"对话框中选中"表单"选项,然后单击"向导"图标按钮,系统弹出"向导取向"对话框,选中"表单向导"项,单击"确定"按钮,启动表单向导。

步骤3:在表单向导的"步骤1 - 字段选取"界面的"数据库和表"下选中"学生"表,将"可用字段"中的字段全部添加到"选定字段"中,单击"下一步"按钮。

步骤4:在表单向导的"步骤2 - 选择表单样式"界面中选中"样式"列表中的"浮雕式",再在"按钮类型"选项中选中"图片按钮",单击"下一步"按钮。

步骤5:在表单向导的"步骤3 - 排序次序"界面中双击"可用的字段或索引标识"中的"学号"字段到"选定字段"列表中,然后选中"降序"选项,单击"下一步"按钮。

步骤6:在表单向导的"步骤4 - 完成"界面中的"请键入表单标题"下方文本框中输入"学生基本情况输入维护",单击"完成"按钮。

步骤7:在"另存为"对话框的"保存表单为:"框中输入表单文件名myform1,单击"保存"按钮。

【知识拓展】

在Visual FoxPro中,不能通过命令方式打开表单向导,使用命令将直接进入表单设计器,除非了在"新建"对话框中启动向导之外,还可以通过执行【工具】→【向导】→【表单】菜单命令启动向导,或在项目管理器中新建文件也可以打开表单向导。

在考生文件夹下,完成如下综合应用:

设计一个表单名为myform2的表单,表单文件名为myform2,表单的标题为"教师课程学生基本信息浏览"。表单上有1个包含3个选项卡的"页框"(Pageframe1)控件和一个"退出"按钮(Command1)。如图2-2所示。其他功能要求如下:

①为表单建立数据环境,向数据环境依次添加"学生"表、"班级"表和"教师"表。

②要求表单的高度为300,宽度为500;表单显示时自动在主窗口内居中。

③3个选项卡的标签的名称分别为"学生表"(Page1)、"班级表"(Page2)和"教师表"(Page3),每个选项卡分别以表格形式浏览"学生"表、"班级"表和"教师"表的信息。选项卡距离表单的左边距为20,顶边距为15,选项卡的高度为240,宽度为450。

④单击"退出"按钮时关闭表单。

图2-2 表单示例

【操作步骤】

步骤1:在命令窗口执行命令:CREATE FORM MYFORM2,打开表单设计器新建表单。从"表单控件"工具栏中依次向表单添加一个命令按钮和一个页框控件。

步骤2:在"属性"面板的下拉框中选择表单对象,在"全部"选项卡中修改对象属性值,见表3-5。

表3-5 表单及控件属性设置

续表

步骤3:右击表单选择【数据环境】快捷菜单命令,继续在表单数据环境中单击右键选择【添加】快捷菜单命令,在"添加表或视图"对话框中双击"学生"、"班级"和"教师"表,将表添加到数据环境中。

步骤4:然后右击"页框"控件,选择【编辑】快捷菜单命令,让页框处于编辑状态,再将数据环境中的三个数据表分别拖到三个对应的页面中(注意:操作过程,当独立的页面被选中时,页框处于编辑状态,在页框四周会出现蓝色边框;另外,表单设计器窗口应为"还原"状态,而非最大化窗口,否则将遮盖表单数据环境内容,无法将表拖到页面中)。

步骤5:双击"退出"命令按钮,编写按钮的Click事件代码:THISFORM.RELEASE。

步骤6:单击"常用"工具栏中的"运行"按钮查看结果,将表单文件保存到考生文件夹下。

【知识拓展】

Visual FoxPro中的表单控件可以分为基本型控件和容器型控件,基本型控件是指不能包含其他控件的控件,如标签、文本框等,而容器型控件是指可以包含其他控件的控件,如本题的页框控件,它可以再包含若干个页面对象,每个页面都可以独立编辑。在页框中只能增减页面而不能添加其他对象,但在每个独立的页面中却可以包含其他控件对象。

5(1)打开"学生选课"数据库,永久删除"学生"数据库表。

(2)建立一个自由表"教师",表结构如下:

教师编号字符型(3)

教师姓名字符型(8)

性别字符型(2)

职称字符型(8)

(3)利用查询设计器建立一个名为kcquery.qpr的查询文件,该查询包含课程名为"数据库原理"的"课程"表中的全部信息。

(4)用SQL UPDATE语句将"课程"表中课程名称为"数据库原理"的任课教师更改为"T55",并将相应的SQL语句存储在文件tcupdate.prg中。

【操作步骤】

(1)①在命令窗口执行命令:MODIFY DATABASE 学生选课,打开数据库设计器。

②右击数据库设计器中的"学生"表,选择【删除】快捷菜单命令,在弹出的Visual FoxPro对话框中单击"删除"按钮,将"学生"表永久性删除。

(2)①在命令窗口执行命令:CLOSE ALL,关闭所有文件。

②继续在命令窗口执行命令:CREATE 教师,打开表设计器新建"教师"表结构。

③根据题意,在表设计器中逐行输入每个字段的"字段名",并设置字段"类型"和"宽度",然后单击"确定"按钮,此时系统会弹出一个对话框询问"现在输入数据记录吗?",本题不需要录入数据,单击"否"按钮。(3)①在命令窗口执行命令:OPEN DATABASE 学生选课,打开数据库环境。

②在命令窗口执行命令:CREATE QUERY KCQUERY,打开查询设计器,在"添加表或视图"对话框中,双击"课程"表,将表添加到查询设计器中。

③在"字段"选项开中单击"全部添加"按钮,将"可用字段"列表中的字段全部添加到"选定字段"列表中。

④在"筛选"选项卡的"字段名"下拉列表中选择"课程.课程名称"字段,在"条件"下拉框中选择"=",在"实例"框中输入"数据库原理"。

⑤最后单击"常用"工具栏中的"运行"按钮查看结果,将查询文件保存到考生文件夹下。

(4)①在命令窗口执行命令:MODIFY COMMAND TCUPDATE,打开程序文件编辑器。

②在编辑器中输入代码:UPDATE 课程 SET 教师编号="T55" WHERE 课程名称="数据库原理"。

③在命令窗口执行命令:DO TCUPDATE.PRG,执行程序文件。

(1)建立表单,表单文件名和表单控件名均为testform,表单标题为"计算机考试系统",表单背景为黄色(BackColor=255,255,0),其他要求如下:

①表单上有"欢迎使用考试软件"(Label1)8个字,标签背景颜色为黄色(BackColor=255,255,0),字体为隶书,字号为20,字的颜色为红色(ForeColor=255,0,0),自动调整标签大小显示全部文字;当表单运行时,"欢迎使用考试软件"8个字向表单右侧移动,移动由计时器控件Timer1控制,间隔(interval属性)是每500毫秒右移5个点,设计界面如图2-3所示。(提示:在Timer1控件的Timer事件中写语句:626359176c175f0e7cd137f0bel1.Left=626359176c175f0e7cd137f0bel1.Left+5)。当完全移出表单后,又会从表单左侧进入。

图2-3 表单示例

②表单有一个命令按钮(Command1),按钮标题为"退出",表单运行时单击此按钮关闭并释放表单。

(2)在"学生选课"数据库中利用视图设计器建立一个视图xkview,该视图包含"课程号"、"课程名称"和"选课人数"。然后利用报表向导生成一个报表xkrepo,该报表包含视图xkview的全部字段和内容。

(1)【操作步骤】

步骤1:在命令窗口执行命令:CREATE FORM TESTFORM,打开表单设计器新建表单。从"表单控件"工具栏中依次向表单添加一个标签、一个计时器和两个命令按钮。

步骤2:在"属性"面板的下拉框中选择表单对象,在"全部"选项卡中修改对象属性值,见表3-6。

表3-6 表单及控件属性设置

续表

步骤3:双击计时器(Timer1),编写该控件的Timer事件代码,代码如下:

*****计时器(Timer1)的Timer事件代码*****

IF 626359176c175f0e7cd137f0BEL1.LEFT>THISFORM.WIDTH

626359176c175f0e7cd137f0BEL1.LEFT=626359176c175f0e7cd137f0BEL1.WIDTH

ELSE

626359176c175f0e7cd137f0BEL1.LEFT=626359176c175f0e7cd137f0BEL1.LEFT+5

ENDIF

步骤4:双击"退出"命令按钮,编写命令按钮的Click事件代码,代码如下:

*****"退出"按钮的Click事件代码*****

THISFORM.RELEASE

步骤5:单击"常用"工具栏中的"运行"按钮查看结果,将表单文件保存到考生文件夹下。

(2)【操作步骤】

步骤1:在命令窗口执行命令:OPEN DATABASE 学生选课,打开数据库环境。

步骤2:继续在命令窗口执行命令:CREATE VIEW,打开视图设计器。在"添加表或视图"对话框中依次双击"课程"表和"成绩"表,将表添加到视图设计器中,添加两个表后,系统弹出"连接条件"对话框,自动查找两个表中相匹配的字段进行连接,单击"确定"按钮设置两个表的联系。

步骤3:在视图设计器中双击"课程"表中"课程号"和"课程名称"字段,添加到"选定字段"中;然后在"字段"选项卡的"函数和表达式"下的文本框中输入表达式:COUNT(成绩.学号) AS 选课人数,再单击"添加"按钮,将其添加到"选定字段"列表中。

步骤4:单击"常用"工具栏中的"运行"按钮查看结果,将视图文件以文件名xkview保存。

步骤5:执行【文件】→【新建】菜单命令,或单击"常用"工具栏的"新建"按钮,在弹出的"新建"对话框中选中"报表"选项,然后单击"向导"图标按钮,系统弹出"向导取向"对话框,选中"报表向导"项,单击"确定"按钮,启动报表向导。

步骤6:在报表向导的"步骤1 - 字段选取"界面的"数据库和表"下选中xkview视图文件,将"可用字段"中的字段全部添加到"选定字段"中。

步骤7:由于本题不再要求其他操作,可以直接单击"完成"按钮跳至向导最后一个界面。继续单击"完成"按钮,在"另存为"对话框的"保存报表为:"框中输入报表文件名xkrepo,单击"保存"按钮。

在考生文件夹下打开mainform表单文件,将该表单设置为顶层表单,然后设计一个菜单,并将新建立的菜单应用于该表单(在表单的load事件中运行菜单程序)。

新建立的菜单文件名为mainmenu,结构如下(记录浏览、打印和退出是菜单栏中的3个菜单项):

图2-4 表单示例

记录浏览

课程浏览

选课统计浏览

打印

报表预览

退出

如图2-4所示。各菜单项的功能如下:

①选择"课程浏览"时在表单的表格控件中显示"课程"表的内容(在"过程"中完成,直接指定表名)。

②选择"选课统计浏览"时在表单的表格控件中显示简单应用题建立的视图xkview的内容(在"过程"中完成,直接指定视图名)。

③选择"报表预览"时预览简单应用题建立的报表xkrepo(在命令中完成)。

④选择"退出"时关闭和释放表单(在"命令"中完成)。

注意:最后要生成菜单程序,并注意该菜单将作为顶层表单的菜单。

【操作步骤】

步骤1:在命令窗口执行命令:CREATE MENU MAINMENU,在弹出的"新建菜单"对话框中单击"菜单"图标按钮,打开菜单设计器。在菜单设计器"菜单名称"列的文本框中依次输入"记录浏览"、"打印"和"退出"3个主菜单名,"结果"下拉框中选择为"子菜单",单击"记录浏览"行的"创建"按钮进入下级菜单设计。

步骤2:在"菜单名称"列依次输入子菜单名"课程浏览"和"选课统计浏览",选择"结果"列都为"过程",分别单击两个"过程"后面的"创建"按钮打开过程编辑器,编写过程代码。

*****"课程浏览"菜单命令的过程代码*****

MAINFORM.GRID1.RECORDSOURCE="课程"

*****"选课统计浏览"菜单命令的过程代码*****

MAINFORM.GRID1.RECORDSOURCE="XKVIEW"

步骤3:通过"菜单级"下拉框返回主菜单项设计界面,以同样的方法,设计"打印"菜单项的下级子菜单"报表预览",注意选择"报表预览"的"结果"项为"命令",然后在后面的文本框中输入命令代码:

REPORT FORM XKREPO PREVIEW

步骤4:再次返回主菜单项设计界面,选择"退出"菜单命令的"结果"项为"命令",并输入命令语句:MAINFORM.RELEASE

步骤5:执行【显示】→【常规选项】菜单命令,在弹出的"常规选项"对话框中勾选"顶层表单"复选框,然后单击"确定"按钮,保存修改。

步骤6:执行【菜单】→【生成】菜单命令,在弹出的Visual FoxPro对话框中单击"是"按钮,接着系统会弹

出"生成菜单"对话框,单击"生成"按钮生成一个可执行的菜单文件,关闭菜单设计器。

步骤7:在命令窗口执行命令:MODIFY FORM MAINFORM,打开表单设计器。选中表单,在"属性"窗口中修改表单(Form1)的"ShowWindow"属性值设置为"2 - 作为顶层表单"。

步骤8:右击表单选择【数据环境】快捷菜单命令,继续在表单数据环境中单击右键选择【添加】快捷菜单命令,在"添加表或视图"对话框中双击"课程"表,将表添加到数据环境中;再选择"视图"单选项,将XKVIEW 视图也添加到数据环境中。

步骤9:双击表单(Form1)编写表单的Load事件代码,代码如下:

*****表单(Form1)的Load事件代码*****

DO MAINMENU.MPR WITH THIS,"TTT"

步骤10:单击"常用"工具栏中的"运行"按钮查看结果,将表单文件保存到考生文件夹下。

6(1)为x_t创建一个主索引和普通索引(升序),主索引的索引名为"CNO",索引表达式为"部门号+年度";普通索引的索引名和索引表达式均为"部门号"。

(2)在x_t表中增加一个名为"说明"的字段,字段数据类型为"字符",宽度为50。

(3)使用SQL的ALTER TABLE语句将x_t表的"年度"字段的默认值修改为"2008",并将该SQL语句存储到命令文件"one.prg"中。

(4)通过"部门号"字段建立x_t表和dep表间的永久联系,并为该联系设置参照完整性约束:更新规则为"限制";删除规则为"级联";插入规则为"忽略"。

【操作步骤】

(1)①在命令窗口执行命令:MODIFY DATABASE SALARY,打开salary数据库设计器。

②右击数据库设计器中的x_t表,选择【修改】快捷菜单命令,打开x_t表设计器,选中"索引"选项卡,在"索引名"下方的文本框中输入"CNO",在"索引"选项卡中将"类型"选择"主索引",在表达式下方的文本框中输入"部门号+年度",建立主索引。

③接着在"字段"选项卡中选中"部门号",然后在"索引"列中选择"升序",建立"部门号"字段的普通索引,单击"确定"按钮保存表结构修改。

(2)继续打开x_t表设计器,在表设计"字段"选项卡的"字段名"列的最后一个空白文本框中输入字段名"说明",在"类型"下拉框中选择"字符型",在"宽度"文本框中输入"50",保存表结构修改。

(3)①在命令窗口执行命令:MODIFY COMMAND ONE,打开程序文件编辑器。

②在编辑器中输入SQL查询代码:ALTER TABLE X_T ALTER 年度 C(4) DEFAULT "2008"。

③在命令窗口执行命令:DO ONE.PRG,执行程序文件。

(4)①参照1小题的操作首先为dep表建立"部门号"的主索引,在数据库设计器中拖动dep表"索引"下方的主索引"部门号"到x_t表中"索引"下方的普通索引"部门号"上,为两个表建立联系。

②选中两个表之间的关联线(被选中的连线会变粗),首先执行【数据库】→【清理数据库】菜单命令,清空数据表中带有删除标记的记录,然后执行【数据库】→【编辑参照完整性】菜单命令。

③在打开的"参照完整性"对话框的表格中,选择"更新"下的单元格内容为"限制";"删除"下的单元格内容为"级联";"插入"下的单元格内容为"忽略"。单击"确定"按钮保存参照完整性的修改。

(1)使用"一对多表单向导"生成一个名为sala_edit的表单。要求从父表dep中选择所有字段,从子表x_t 表中选择所有字段,使用"部门号"建立两表之间的关系,样式为"凹陷式";按钮类型为"文本按钮";排序字段为"部门号"(升序);表单标题为"销售数据输入维护"。

(2)在考生文件夹下打开命令文件progerr.prg,该命令文件用来查询各部门的分年度的"部门号"、"部门名"、"年度"、"全年销售额"、"全年利润"和"利润率"(全年利润/全年销售额),查询结果先按"年度"升序,再按"利润率"降序排序,并存储到c_sum表中。

注意,程序在第5行、第6行、第8行和第9行有错误,请直接在错误处修改。修改时,不可改变SQL语句的结构和短语的顺序,不允许增加或合并行。

(1)【操作步骤】

步骤1:在命令窗口执行命令:OPEN DATABASE SALARY,打开数据库环境。

步骤2:执行【文件】→【新建】菜单命令,或单击"常用"工具栏的"新建"按钮,在弹出的"新建"对话框中选中"表单"选项,然后单击"向导"图标按钮,系统弹出"向导取向"对话框,选中"一对多表单向导"项,单击"确定"按钮,启动表单向导。

步骤3:在表单向导的"步骤1 - 从父表中选定字段"界面的"数据库和表"下选中"dep"表,将"可用字段"中的字段全部添加到"选定字段"中,单击"下一步"按钮。

步骤4:在表单向导的"步骤2 - 从子表中选定字段"界面的"数据库和表"下选中"x_t"表,将"可用字段"中的字段全部添加到"选定字段"中,单击"下一步"按钮。

步骤5:在表单向导的"步骤3 - 建立表之间的关系"界面系统自动建立两个表的联系,单击"下一步"按钮。步骤6:在表单向导的"步骤4 - 选择表单样式"界面中选中"样式"列表中的"凹陷式",再在"按钮类型"选项中选中"文本按钮",单击"下一步"按钮。

步骤7:在表单向导的"步骤5 - 排序次序"界面中双击"可用的字段或索引标识"中的"部门号"字段到"选定字段"列表中,单击"下一步"按钮。

步骤8:在表单向导的"步骤6 - 完成"界面中的"请键入表单标题"下方文本框中输入"销售数据输入维护",单击"完成"按钮。

步骤9:在"另存为"对话框的"保存表单为:"框中输入表单文件名sala_edit,单击"保存"按钮。

(2)【操作步骤】

步骤1:在命令窗口执行命令:MODIFY COMMAND PROGERR.PRG,打开progerr程序文件,文件中的命令代码如下(说明:本程序由于书中排版原因,最长一行的代码与其下一行属于一行):

OPEN DATABASE SALARY

SELECT X_T.部门号,部门名,年度,;

一季度销售 + 二季度销售 + 三季度销售 + 四季度销售 AS 全年销售额,;

一季度利润 + 二季度利润 + 三季度利润 + 四季度利润 AS 全年利润,;

一季度利润 + 二季度利润 + 三季度利润 + 四季度利润 / 一季度销售 + 二季度销售 + 三季度销售 + 四季度销售 AS 利润率;

FROM X_T DEP;

WHERE X_T.部门号 = DEP.部门号;

GROUP BY 年度利润率 DESC;

INTO C_SUM

修改程序中的错误行,修改后的程序如下:

OPEN DATABASE SALARY

SELECT X_T.部门号,部门名,年度,;

一季度销售 + 二季度销售 + 三季度销售 + 四季度销售 AS 全年销售额,;

一季度利润 + 二季度利润 + 三季度利润 + 四季度利润 AS 全年利润,;

(一季度利润 + 二季度利润 + 三季度利润 + 四季度利润) / (一季度销售 + 二季度销售 + 三季度销售+ 四季度销售) AS 利润率; && 根据运算符的优先次序,此处表示式应先加后除,原程序中缺少括号

FROM X_T,DEP;&& 两个表之间应用逗号分开,而不是空格

WHERE X_T.部门号 = DEP.部门号;

ORDER BY年度,利润率 DESC; && 字段排序的短语是ORDER BY,而非GROUPY,且两字段间要用逗号隔开

INTO TABLE C_SUM && 查询结果输出到表的短语是INTO TABLE,而非INTO短语

步骤2:保存文件修改,在命令窗口执行命令:DO PROGERR.PRG,执行程序文件。

在考生文件夹下完成如下综合应用:

设计一个表单名为myform1、表单文件名为yearsele、表单标题名为"部门分年度数据查询"的表单。其他要求如下:

图2-5 表单示例

①为表单建立数据环境,向数据环境添加x_t表(Cursor1)。

②当在"年度"标签微调控件(Spinner1)中选择年度并单击"查询"按钮(command1)时,则会在下边的表格(Grid1)控件内显示该年度各部门的四个季度的"销售额"和"利润"。指定微调控件上箭头按钮(SpinnerHighValue属性)与下箭头按钮(SpinnerLowValue属性)值范围为2010-2004,缺省值(Value属性)为2008,增量(Imcrement属性)为1。

③单击"退出"按钮(Command2)时,关闭表单。

要求:表格控件的RecordSourceType属性设置为"4-SQL说明"。例如查询2004年的记录,如图2-5所示。【操作步骤】

步骤1:在命令窗口执行命令:CREATE FORM YEARSELE,打开表单设计器新建表单。从"表单控件"工具栏中依次向表单添加一个标签、一个微调器、两个命令按钮和一个表格控件。

步骤2:在"属性"面板的下拉框中选择表单对象,在"全部"选项卡中修改对象属性值,见表3-7。

表3-7 表单及控件属性设置

续表

步骤3:右击表单选择【数据环境】快捷菜单命令,继续在表单数据环境中单击右键选择【添加】快捷菜单命令,在"添加表或视图"对话框中双击x_t表,将表添加到数据环境中。

步骤4:双击命令按钮,编写各个命令按钮的Click事件代码。各按钮代码如下:

*****"查询"按钮的Click事件代码*****

THISFORM.GRID1.RECORDSOURCE=";

SELECT * FROM X_T;

WHERE 年度=ALLTRIM(THISFORM.SPINNER1.TEXT); && 年度等于微调器中显示的数值

INTO CURSOR TEMP"

*****"退出"按钮的Click事件代码*****

THISFORM.RELEASE

步骤5:单击"常用"工具栏中的"运行"按钮查看结果,将表单文件保存到考生文件夹下。

7(1)新建一个名为"外汇管理"的数据库。

(2)将自由表"汇率"、"账户"、"代码"加入到新建的"外汇管理"数据库中。

(3)用SQL语句新建一个表"rate_bak",其中包含4个字段"币种代码1"C(2)、"币种代码2"C(2)、"买入价格"N(10,4)、"卖出价格"N(10,4),请将SQL语句存储于sql_rate.txt中。

(4)表单文件t_form中有一个名为form1的表单,请将文本框控件Text1设置为只读。

【操作步骤】

(1)在命令窗口执行命令:MODIFY DATABASE 外汇管理,新建数据库并打开数据库设计器。

(2)在数据库设计器中右击鼠标,选择【添加表】快捷菜单命令,在弹出的"打开"对话框中双击"汇率"表,将表添加到数据库中,以同样的方法将"账户"和"代码"表添加到数据库中。

(3)①在命令窗口执行命令:MODIFY FILE SQL_RATE,打开文本文件编辑器。

②在编辑器中输入SQL定义表结构的代码:

Create Table Rate_Bak (; && 定义表名,括号内包括表字段名、类型、宽度等内容的定义币种代码1 C(2),币种代码2 C(2),买入价格 N(10,4),卖出价格 N(10,4))

③在命令窗口执行命令:DO SQL_RATE.TXT,执行文本文件。

(4)①在命令窗口执行命令:MODIFY FORM T_Form,打开表单设计器修改t_form表单。

②选中表单中的文本框(TEXT1)控件,在"属性"面板中修改控件的ReadOnly属性值为:.T.,保存修改。

(1)编写程序hl.prg,完成下列操作:根据"汇率"表中的数据产生ratet_bak表中的数据。要求将所有"汇率"表中的数据插入rate_bak表中且顺序不变,由于"汇率"中的"币种1"和"币种2"存放的是"外币名称",而rate_bak表中的"币种代码1"和"币种代码2"应该存放"外币代码",所以插入时要做相应的改动,"外币名称"与"外币代码"的对应关系存储在"代码"表中。

注意:程序必须执行一次,保证rate_bak表中有正确的结果。

(2)使用查询设计器建立一个查询文件mo.qpr。查询要求:"账户"中有多少"美元"和"英镑"。查询结果包括了"外币名称"、"钞汇标志"、"金额",结果按"外币名称"降序排序,在"外币名称"相同的情况下按"金额"降序排序,并将查询结果存储于表tj.dbf中。

(1)【操作步骤】

步骤1:在命令窗口执行命令:MODIFY COMMAND HL,打开程序文件编辑器。

步骤2:在编辑器中输入如下程序代码(以下程序是通过查询设计器生成):

SELECT 代码.外币代码 AS 币种代码1,;

代码_a.外币代码 AS 币种代码2, 汇率.买入价格, 汇率.卖出价格;

FROM 外汇管理!代码 INNER JOIN 外汇管理!汇率;

INNER JOIN 外汇管理!代码代码_a ;

ON 汇率.币种2 = 代码_a.外币名称 ;

ON 代码.外币名称 = 汇率.币种1;

INTO ARRAY ARR1

INSERT INTO RATE_BAK.DBF FROM ARRAY ARR1

步骤3:在命令窗口执行命令:DO HL.PRG,执行程序文件。

【知识拓展】

本题容易产生错误的地方是将"代码"表中的"外币代码"字段同时与"汇率"表的"币种1"和"币种2"进行连接,而不通过将表引用两次的方法进行连接,因为一个表中的字段每次只能引用一次,因此不能同时与另一个表中的两个字段同时建立联系。另外,在查询设计中要对同一个表引用两次的方法是将该表向查询设计器中添加两次即可。

(2)【操作步骤】

步骤1:在命令窗口执行命令:OPEN DATABASE 外汇管理,打开数据库环境。

步骤2:在命令窗口执行命令:CREATE QUERY MO,打开查询设计器,在"添加表或视图"对话框中,分别双击"代码"表和"账户"表,将表添加到查询设计器中。

步骤3:添加两个表后,系统弹出"连接条件"对话框,自动查找两个表中相匹配的字段进行连接,单击"确定"按钮设置两个表的联系。

步骤4:依次双击"代码"表中的"外币名称"和"账户"表中的"钞汇标志"、"金额"字段,添加到"字段"选项卡的"选定字段"列表中。

步骤5:在"筛选"选项卡的"字段名"下拉列表中选择"代码.外币名称"字段,在"条件"下拉框中选择"=",在"实例"框中输入"美元",在"逻辑"下拉框中选择"OR";接着在第二行接着输入查询条件,在"字段名"下拉列表中选择"代码.外币名称"字段,在"条件"下拉框中选择"=",在"实例"框中输入"英镑"。

步骤6:在"排序依据"选项卡内双击"选定字段"列表框中的"代码.外币名称"字段,将字段添加到"排序条件"列表框中,在"排序选项"中选择"降序"单选项;以同样的方法再设置"账户.金额"字段的降序。

步骤7:执行【查询】→【查询去向】菜单命令,在弹出的"查询去向"对话框中单击"表"图标按钮,接着在"表名"中输入文件名tj,单击"确定"按钮。

步骤8:最后单击"常用"工具栏中的"运行"按钮查看结果,将查询文件保存到考生文件夹下。

设计一个文件名和表单名均为mycount的表单。表单的标题为"外汇持有情况查询"。

表单中有一个选项按钮组控件(myopgroup)、一个表格控件(Grid1)以及两个命令按钮"查询"(Command1)和"退出"(Command2)。其中,选项按钮组控件有两个按钮"现汇"(Option1)、"现钞"(Option2)。运行表单时,在选项组控件中选择"现钞"或"现汇",单击"查询"命令按钮后,根据选项组控件的选择将"账户"表的"现钞"或"现汇"(根据"钞汇标志"字段确定)的情况显示在表格控件中。

单击"退出"按钮,关闭并释放表单。

图2-6 表单示例

注:在表单设计器中将表格控件Grid1的数据源类型设置为"4-SQL说明"。如图2-6所示。

【操作步骤】

步骤1:在命令窗口执行命令:CREATE FORM MYCOUNT,打开表单设计器新建表单。从"表单控件"工具栏中依次向表单添加一个选项按钮组、一个表格及两个命令按钮控件。

步骤2:在"属性"面板的下拉框中选择表单对象,在"全部"选项卡中修改对象属性值,见表3-8。

表3-8 表单及控件属性设置

续表

步骤3:双击命令按钮,编写各个命令按钮的Click事件代码。各按钮代码如下:

*****"查询"按钮的Click事件代码(以下SQL查询语句是通过查询设计器生成)*****

DO CASE

CASE THISFORM.MYOPGROUP.VALUE=1 && 当选择选项组第一个选项时

THISFORM.GRID1.RECORDSOURCE="SELECT 账户.外币代码, 账户.金额;

FROM 外汇管理!账户;

WHERE 账户.钞汇标志 = '现汇'; && 此处注意字符串的定界符要与双引号定界符不同

INTO CURSOR TEMP" && 将查询结果输出到临时表temp中

CASE THISFORM.MYOPGROUP.VALUE=2 && 当选择选项组第二个选项时

THISFORM.GRID1.RECORDSOURCE="SELECT 账户.外币代码, 账户.金额;

FROM 外汇管理!账户;

WHERE 账户.钞汇标志 = '现钞'; && 此处注意字符串的定界符要与双引号定界符不同

INTO CURSOR TEMP" && 将查询结果输出到临时表temp中

ENDCASE

*****"退出"按钮的Click事件代码*****

THISFORM.RELEASE

步骤4:单击"常用"工具栏中的"运行"按钮查看结果,将表单文件保存到考生文件夹下。

【知识拓展】

DO CASE

CASE <条件1>

<语句序列1>

CASE <条件2>

<语句序列2>

……

CASE <条件n>

<语句序列n>

[OTHERWISE

<语句序列>]

ENDCASE

功能:语句执行时,依次判断CASE后面的条件是否成立。当发现某个CASE后面的条件成立时,就执行该CASE和下一个CASE之间的命令序列,然后执行ENDCASE后面的命令。如果所有的条件都不成立,则执行OTHERWISE与ENDCASE之间的命令序列,然后再转向ENDCASE后面的语句。

8(1)建立数据库"订单管理",将自由表"职工"和"订单"添加到新建的数据库中。

(2)为"职工"表的"性别"字段设置默认值"男"。

(3)为"职工"表的"性别"字段定义有效性规则,规则表达式为:性别$"男女",出错提示信息为:性别必须是男或女。

(4)使用SQL命令从"职工"表中查询所有未婚(婚否字段值为逻辑假)记录的"职工号"、"姓名"和"上岗日期"信息,结果按"出生日期"降序排序存入"职工bk"表中,同时把SQL命令存入文本文件zksql.txt。【操作步骤】

(1)①在命令窗口执行命令:MODIFY DATABASE 订单管理,新建数据库并打开数据库设计器。

②在数据库设计器中右击鼠标,选择【添加表】快捷菜单命令,在弹出的"打开"对话框中双击"职工"表,将表添加到数据库中,以同样的方法将"订单"表添加到数据库中。

(2)右击数据库设计器中的"职工"表,选择【修改】快捷菜单命令,打开"职工"表设计器,选中"字段"选项卡中的"性别"字段,然后在"字段有效性"的"默认值"文本框中输入:"男"。

(3)紧接上小题操作选中"性别"字段,在"字段有效性"的"规则"文本框中输入:性别$"男女",在"信息"框中输入:"性别必须是男或女"。

(4)①在命令窗口执行命令:MODIFY FILE ZKSQL,打开文本文件编辑器。

②在编辑器中输入如下程序代码(以下程序是通过查询设计器生成)。

SELECT 职工.职工号, 职工.姓名, 职工.上岗日期;

FROM 订单管理!职工;

WHERE 职工.婚否 <> .T.;

ORDER BY 职工.出生日期 DESC;

INTO TABLE 职工BK.DBF

③在命令窗口执行命令:DO ZKSQL.TXT,执行文件(注意:执行文件时,文件后缀名.txt不能缺省)。

【知识拓展】

建立字段有效性规则时,"规则"是逻辑表达式,"信息"是字符串表达式,"默认值"的类型则视字段的类型而定。

(1)建立表单,表单文件名和表单控件名均为myform1。为表单建立快捷菜单quickmenu,快捷菜单有"日期"和"时间"两个菜单项;运行表单时,在表单上单击鼠标右键弹出快捷菜单,选择"日期"菜单项,表单标题将显示当前系统日期,选择"时间"项,表单标题将显示当前系统时间。

注意:显示日期和时间是通过"过程"实现的。

(2)使用SQL命令从"职工"表中查询年龄最大的三名职工信息:"职工号"、"姓名"、"出生日期"和"职称",查询结果按"出生日期"升序排序并保存在表zkbk.dbf中。

(1)【操作步骤】

步骤1:在命令窗口执行命令:CREATE MENU QUICKMENU,在弹出的"新建菜单"对话框中单击"快捷菜单"图标按钮,打开快捷菜单设计器。

步骤2:在快捷菜单设计器"菜单名称"列的文本框中依次输入"日期"和"时间"两个主菜单名,在"结果"下拉框中选择为"命令"。然后在两个菜单命令的"选项"文本框中分别输入相应的命令。两条命令语句如下:

本文来源:https://www.bwwdw.com/article/0bke.html

Top