1、VFP_数据的统计与查询1.菜单方式1.菜单方式1.未打开任何数据库 创建查询的目的无非是为了进行表的查询处理,因此启动查询设计器以后的第一件事就是指定所要查询的表。可以继续加入其他的表 1.未打开任何数据库选择要操作的表 2.已经打开数据库数据表中所有的字段,其中“*”号代表所有的字段3.添加与删除数据表1.通过字段选项卡 来源表的所有字段 将在查询结果中出现的字段 2.使用鼠标直接拖放 用鼠标拖到 改变顺序 保存查询文件 1.用菜单选项查询程序 2.用命令 这是查询文件的名称,您必须加上文件扩展名.qpr 直接在命令窗口中使用DO命令来运行查询文件。DO QueryFileName 语法范
2、例3.编辑查询文件 这是查询文件的名称,可不加文件扩展名.qprMODIFY QUERY QueryFileName 语法 可以随时在查询设计器中打开查询文件,然后在设计器窗口中编辑修改查询文件。也可以用命令打开查询设计器,编辑一个已经存在的查询文件;4.查看查询程序 可以随时在查询设计器中打开查询文件,然后在设计器窗口中编辑修改查询文件。也可以用命令打开查询设计器,编辑一个已经存在的查询文件。查询程序1.操作方法 查询程序输入函数和表达式输入函数和表达式1.操作方法 常用查询函数:MIN()在表中计算出指定字段值最小的数据项。MAX()在表中计算出指定字段值最大的数据项。COUNT()计算表
3、中记录数。通常以星号(*)作为参数。AVG()计算出所有记录指定字段的数据平均值。SUM()计算出所有记录指定字段的数据总和。1.操作实例 从表Foxman.dbf中查询:1.总共有多少条记录。2.薪水的最大值。3.薪水的最小值。4.薪水的平均值。查询内容1.操作实例 从表Foxman.dbf中查询:1.总共有多少条记录。2.薪水的最大值。3.薪水的最小值。4.薪水的平均值。查询结果 在查询结果的浏览窗口中,新增加字段的列标题是由Visual FoxPro自动替您决定的,如果希望自行指定列标题,在所键入的表达式中加入AS参数即可。表达式 AS 列标题语法1.操作方式修改统计项的表达式为:COU
4、NT(*)AS 员工人数MAX(Foxman.薪水)AS 最高薪MIN(Foxman.薪水)AS 最低薪AVG(Foxman.薪水)AS 平均薪水2.操作实例检查表Foxman中所有员工的下列字段内容:身份证号码姓名性别婚姻状况IIF(Foxman.性别,“男”,“女”)AS 性别IIF(Foxman.婚姻状况,已婚,未婚)AS 婚姻状况2.操作实例检查表Foxman中所有员工的下列字段内容:身份证号码姓名性别婚姻状况查询结果查询表Foxman中所有员工是来自哪些部门的.在输出查询结果时,默认数据表中所有的记录都会显示出来。但如果您不想计算或显示重复的数据记录,可以在查询设计器的“杂项”选项卡
5、页面上,选定复选框“无重复记录”。范例1查询表Foxman中所有员工是来自哪些部门的.范例2查询结果3在Foxman表中要求查询:薪水最高的前10名员工。Visual FoxPro 6.0的查询有一项极为重要但却是经常被人所遗忘或未发觉的功能,那就是它能够很容易地找出数据表中名列前茅或垫底者。范例 一1在Foxman表中要求查询:薪水最高的前10名员工。范例一 23前10名记录前10名查询结果在Foxman表中要求查询:薪水最高的前3 的员工。范例二 12降序排序排序结果3在查询设计器窗口选择“筛选”选项卡可以指定查询的条件。选择查询条件中的字段名 条件表达式 筛选操作的条件值 表达式的操作性
6、质 忽略字母大小写相反值 条件之间的逻辑关系 范例一查出表Foxman中有哪些员工住在上海市。12查询条件范例二查询结果3查出表Foxman中有哪些员工住在上海市。范例二3查询结果查询条件查询表 Foxman 中有多少位员工住在北京市。范例三按照下列需求显示表Foxman的数据记录:1.字段排列顺序任职部门、姓名、性别、婚姻状况、薪水、雇用日期2.替换汉字将逻辑型字段性别与婚姻的值替换为汉字显示。3.选择满足下列条件的记录在信息部、财务部或业务部任职。薪水介于$50000$55000之间。1994年1月10号以后才到任。男性已婚职员。范例三选定字段IIF(Foxman.性别,“男”,“女”)A
7、S 性别 IIF(Foxman.婚姻状况,已婚,未婚)AS 婚姻状况 查询条件查询结果 为了满足某种查询的需要,往往要求显示结果以一个或几个字段为基准,重新排列浏览窗口中记录的顺序。有关设置在“排序依据”选项卡。升降序选择 在上一小节实例3中,希望查询结果中的数据记录能够先按照员工任职部门的降序排列;而同一部门中,男性员工排列在前,女性员工排列在后;若性别相同时,已婚者排列在前,未婚者排列在后;如果婚姻状况也相同时,则依据薪水从高到低的顺序排列记录。范例范例查询条件查询结果 利用函数可以获得查询结果中某一字段“所有”记录的统计值,但是如果希望分类统计,比方说,您想要计算出各个部门的员工人数,或
8、计算出各个部门的平均薪水等诸如此类的计算,则必须利用分组小计功能实现。在查询设计器中的“分组依据”选项卡进行相关设置。检查表 Foxman 中,各个部门的平均薪水。范例一查询条件分组结果范例二检查表Foxman中,各个部门的男性与女性员工的平均薪水。查询结果分组条件选定字段范例三1234字段选项卡分组依据选项卡排序依据选项卡杂项选项卡利用查询显示表Foxman中平均薪水最高的前 3 个部门。范例三查询结果利用查询显示表Foxman中平均薪水最高的前 3 个部门。设置组别过滤条件可以限制各分组信息能否输出。有关设置在分组依据选项卡。在“分组依据”选项卡中,单击“满足条件”按钮,将打开“满足条件”
9、对话框。范例检查表Foxman中,平均薪水大于30000的部门,显示它们的平均薪水是多少。单击此按钮设置条件范例检查表Foxman中,平均薪水大于30000的部门,显示它们的平均薪水是多少。查询结果 在前面的所有练习中,查询结果都是输出至浏览窗口,这是系统默认的输出目的地。事实上您可以自行指定要将查询结果送到何处。查询去向 1.临时表 将查询结果输出至一个由用户命名的虚拟临时只读数据表(Cursor)中。系统一旦退出,临时表就会消失。临时表名称 2.表 可将查询结果输出至一个由用户命名,在外存上创建的数据表中;不同的查询结果放在多个表中。表名称 利用Microsoft Graph使查询结果以商
10、业统计分析图的形式显示。只是在您运行查询时才会提供向导,让您临时生成所需要的图形。范例计算出员工表Foxman中各部门员工的起薪平均值与薪水的平均值,并根据运算结果绘制出一个垂直方向的立体直方图。范例计算出员工表Foxman中各部门员工的起薪平均值与薪水的平均值,并根据运算结果绘制出一个垂直方向的立体直方图。选择图形范例计算出员工表Foxman中各部门员工的起薪平均值与薪水的平均值,并根据运算结果绘制出一个垂直方向的立体直方图。图形标题范例计算出员工表Foxman中各部门员工的起薪平均值与薪水的平均值,并根据运算结果绘制出一个垂直方向的立体直方图。保存文件运行结果 Visual FoxPro允
11、许您在将查询输出至活动窗口或桌面的同时,也可将查询结果输出至打印机或一个文本文件中。可以将查询结果以报表的形式输出,要实现这一操作,事先必须创建一个报表格式文件(.FRX),而查询结果仅仅作为报表格式文件的数据源。将查询结果以邮寄标签的形式输出。必需注意,您所创建的标签格式文件中,各数据字段必需与查询结果的输出字段完全匹配,否则将发生错误。表查询操作最大的特点,一是必须将所要查询的各表依次添加到查询中,应当是先添加父表,再添加子表。二是必须指定表间的联接类型。可以随时通过“联接条件”对话框来创建或修改两个表之间的联接条件也就是定义关系表达式。范例父表的联接字段 子表的联接字段 指定连接的类型
12、范例两个表之间创建了联接 范例联接条件选中后按DELETE键删除修改联接从父表student与子表Score中,查询出每一位学生的考试成绩。范例1父子表从父表student与子表Score中,查询出每一位学生的考试成绩。范例选定字段2从父表student与子表Score中,查询出每一位学生的考试成绩。范例查询结果3 利用交叉表能够清楚地分析出不同分类下的统计信息,因此实际应用很广。范例针对表Foxman,利用下表所示的交叉表来统计出各个部门男性员工与女性员工的薪水平均值。范例针对表Foxman,利用下表所示的交叉表来统计出各个部门男性员工与女性员工的薪水平均值。单击此按钮范例针对表Foxman
13、,利用下表所示的交叉表来统计出各个部门男性员工与女性员工的薪水平均值。范例针对表Foxman,利用下表所示的交叉表来统计出各个部门男性员工与女性员工的薪水平均值。列数据行范例针对表Foxman,利用下表所示的交叉表来统计出各个部门男性员工与女性员工的薪水平均值。范例针对表Foxman,利用下表所示的交叉表来统计出各个部门男性员工与女性员工的薪水平均值。范例针对表Foxman,利用下表所示的交叉表来统计出各个部门男性员工与女性员工的薪水平均值。19 存储文件查询结果一、是非题 1.查询的结果是允许编辑的 2.2.如果我只是要搜索符合某特定条件的数据记录,最好使用SEEK、SEEK()等搜索命令或函数,但若要取得符合某特定条件的视图集合,并针对这些视图集合作更进一步的统计与分析的话,应使用查询