(1)打开test db数据库,根据表dept和表sell并使用查询设计器设计一个名称为three的查询,按“年度”分部门(按年度和部门分组)统计“月平均销售”(通过销售额计算)、“月平均工资”(通过工资额计算)和“月平均利润”(通过“月平均销售-月平均工

admin2010-12-13  60

问题 (1)打开test db数据库,根据表dept和表sell并使用查询设计器设计一个名称为three的查询,按“年度”分部门(按年度和部门分组)统计“月平均销售”(通过销售额计算)、“月平均工资”(通过工资额计算)和“月平均利润”(通过“月平均销售-月平均工资”计算)。查询统计结果按“部门号”、“年度”升序排序,并将查询结果输出到表tabb中。表tabb的字段名依次为:“部门号”、“部门名”、“年度”、“月平均销售”、“月平均工资”、“月平均利润”。设计完成后,运行该查询。
    (2)打开文件名为testa的表单。该表单完成如下功能:每当用户输入用户名和口令并按“确认”按钮后,利用表pass中记录检查其输入是否正确,若正确,就显示“欢迎使用本系统!”字样,并关闭表单;若不正确,则显示“用户名或口令不对,请重输入1”字样;如果三次输入不正确,就显示“用户名或口令不对,登录失败1”字样,并关闭表单。
    ①修改口令输入文本框,使输入的口令显示为“*”。
    ②修改该表单“确认”按钮的Click事件中的程序。请将第3、4和12行语句修改正确。修改时不允许增加或删除行,只能在错误行上进行修改。

选项

答案(1)步骤1:在命令窗口执行命令;CREATE QUERY three,打开查询设计器,将考生文件夹下的dept表和sell表添加到查询设计器中。 步骤2:添加两个表后.系统弹出“联接条件”对话框,自动查找两个表中相匹配的字段进行联接,单击“确定”按钮设置两个表的联系。 步骤3:依次双击dept表中的“部门号”、“部门名”字段和sell表中的“年度”字段添加到“字段”选项卡的“选定字段”列表中,接着在“函数和表达式”框中输入:AVG(Sell.销售额) AS 月平均销售,再单击“添加”按钮,将表达式添加到“选定字段”列表中,以同样的方法,再添加“AVG(sell.工资额) AS 月平均工资”和“AVG(sell.销售额-Sell.工资额)AS月平均利润”两个表达式到“选定字段”列表框中。如图2-44所示。 [*] 步骤4:在“排序依据”选项卡中,依次双击“选定字段”列表框中的“Dept.部门号”和“Sell.年度”字段,将字段添加到“排序条件”列表框中。 步骤5:在“分组依据”选项卡内,依次双击“选定字段”列表框中的“Dept.部门号”和“Sell.年度”字段,将字段添加到“分组字段”列表框中。 步骤6:执行【查询】→【查询去向】菜单命令,在弹出的“查询去向”对话框中单击“表”图标按钮,接着在“表名”中输入文件名tabb,单击“确定”按钮。 步骤7:最后单击“常用”工具栏中的“运行”按钮查看结果,将查询文件保存到考生文件夹下。 (2)步骤1:在命令窗口执行命令:MODIFY FORM testa,打开表单设计器修改表单。 步骤2:选中第二个文本框(Text2),在“属性”面板中修改该文本框的PasswordChar属性值为:*。 步骤3;双击表单中的“确认”按钮,看到该按钮的Click 事件中代码如下: 在下面的程序中,第3、4、12行语句不正确,请修改!注意:修改时不允许增加或删除行,只能在错误行上进行修改! USE pass Key1=ALLTRIM(ThisForm.text1.value) Key2=ALLTRIM(ThisForm2) LIST ALL WHILE USER=Key1 IF FOUND() AND PASS=Key2 WAIT"欢迎使用本系统!"WINDOW TIMEOUT 1 thisform.release ELSE num=num+1 IF num=3 WAIT"用户名或口令不对,登录失败!" WINDOW T IMEOUT 1 LOOP ELSE WAIT"用户名或口令不对,请重输入! "WINDOW TIMEoUT 1 ENDIF ENDIF 修改后的代码如下: USE pass Key1=ALLTRIM(ThisForm.text1.value) Key2=ALLTRIM(ThisForm.Text2.Value) LOCATE ALL FOR USER=Key1 IF FOUND() AND PASS=Key2 WAIT "欢迎使用本系统!" WINDOW TIMEOUT 1 thisform.release ELSE num=num+1 IF num=3 WAIT"用户名或口令不对,登录失败! "WINDOW TIMEOUT 1 ThisForm.Release ELSE WAIT"用户名或口令不对,请重输入!" WINDOW TIMEOUT 1 ENDIF ENDIF 步骤4:单击“常用”工具栏中的“运行”按钮查看结果,将表单文件保存到考生文件夹下。

解析 (1)本题考查的是在查询设计器中新建查询的操作。由于涉及两个表的操作,因此在操作过程中要注意确认查询输出的字段来源于哪个数据表。
    本题的关键在于输出字段的设置。由于“月平均销售”、“月平均工资”和“月平均利润”字段需要根据表中字段计算得出,因此,需要在查询设计器“字段”选项卡的“函数和表达式”中输入表达式,或打开“表达式生成器”对话框进行输入计算字段的表达式,新字段名通过AS短语指定,求平均值的函数是AVG()。
    (2)本题主要考查的是Visual FoxPro记录查询语句和IF条件语句的使用。本题程序的功能大致如下:
    首先打开pass表,同时定义两个变量分别等于表单中两个文本框的数据。
    然后开始通过 LOCATE 命令查找 pass 表中所有的user 字段值是否有等于第一个文本框中的数据;如果找到,且pass表中的pass字段值等于第二个文本框中的数据,则弹出欢迎提示信息并关闭表单。
    接上面的第一个条件判断语句,如果pass表中的user 字段没有找到等于第一个文本框中的数据时,则转入条件语句的另一个分支,首先执行的分支语句是将一个计数变量的值累计加1,当该变量值达到3时,关闭表单(本题中,已在表单中定义了该变量,并赋初值为0,它是一个公共变量),如果没有达到3次,则弹出错误提示信息。
    根据以上程序的分析,可以得出:
    程序段第3行的错误是没有正确引用文本框中数据,应通过Value属性获得文本框中的数据。
    第4行是Visual FoxPro查询记录的命令使用错误,应使用LOCATE命令。
    第12行根据题意得出应执行的功能是释放表单,用来释放和关闭表单的方法是RELEASE。
转载请注明原文地址:https://jikaoti.com/ti/yRe0FFFM
0

随机试题
最新回复(0)