Visual FoxPro 数据库报表设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一节介绍查询设计器
启动“查询设计器”可以在“文件”菜单中单击“新建”,选择“查询”并按“新建查询”按钮。

如果当前没有数据库或表打开,则显示“打开”窗口以打开查询的表,再显示“添加表或视图”;如果当前已有数据库打开,则显示直接显示“添加表或视图”。

在“数据库中表”中显示当前数据库中的所有表以供添加。

如果不是基于当前数据库表查询,则单击“其他”按钮,以选择合适的表。

如果添加表在“选定”单选框中选择“表”,如果想添加视图,则选择“视图”。

这里我们单击“职工表”并选择“添加”按钮,则可以看到职工表已添加到“查询设计器”中了。

重复这样的操作,就可以将多个表添加到查询设计器中。

单击“添加表和视图”中的“关闭”按钮,将其关闭,查询设计器窗口即成为当前窗口。

这个窗口是不是很熟悉,它和我们上一课学习的视图设计器很相似。

但是我们仔细看一下就会发现,查询设计器比视图设计器少了一个“更新条件”选项卡,(如上图),而在工具栏中,查询设计器则多了一项(查询去向)按钮(如下图)。

(作为对照)查询设计器工具栏的其他几个按钮的样式和视图设计器的一样,其含义也大致相同,只是操作的对象不同(一个是查询,一个是视图)。

这里只介绍“查询去向”按钮,其余不做介绍了。

前面几课中,我们看到了,实现一种操作,可以通过几个不同的途径,例如:从系统菜单、从快捷菜单、从相应工具栏、从项目管理器都可以实现。

常用哪一种或哪几种方式,则根据个人的习惯。

当我们单击工具栏上的“查询去向”()按钮,或从“查询”菜单中选择“查询去向”,或单击右键并在快捷菜单中选择“输出设置”都可以出现下面的“查询去向”对话框。

它有七个不同的选项,允许将查询结果传送给七个不同的输出设备。

选择不同的按钮,其窗口中的选项也不一样。

上图中是默认的“浏览”,即将查询结果送到“浏览”窗口中显示,以进行检查和编辑。

当单击“临时表”时,窗口如下:
以指定的名称把查询结果存贮于临时表中。

此临时表只读,并在“数据工作期”窗口中出现。

临时表可用于浏览,生成报表或其他目的。

当关闭这个表时,查询结果随之消失。

当单击“表”时,窗口如下:
用指定的文件名,将查询结果存为(.dbf)表文件。

“表名”选项用来指定表的名称。

既可以在文本框中键入名称,也可以使用三点按钮来选择一个已有的、要覆盖的表。

单击“图形”按钮,产生可由 Microsoft Graph处理的图形。

在设置GENGRAPH之后才可用。

单击“屏幕”按钮,使查询结果在活动输出窗口中显示。

通过选择“次级输出”中的单选按钮可以在把查询结果输出到屏幕的同时输出到打印机或文本文件。

“选项”复选框可以设置是否输出列标头和是否在屏幕之间暂停。

如下图:
单击“报表”按钮,将查询结果按某一报表布局显示。

使用此选项必须先设置报表文件 (.frx),来容纳查询中的输出字段。

如下图:
在“打开报表”文本框中输入报表名,或单击“打开报表”按钮选择报表名,或者单击右侧的报表向导按钮进入报表向导,产生一个报表。

“次级输出”同“屏幕”。

如果选择“页面预览”将在“页面预览”窗口中显示输出结果。

如果选择“活动控件台”将在活动输出窗口中显示输出结果。

如果选择“报告之前释放页”,将在报表开始之前打印一空白页,以在打印机上隔开文档
如果选择“仅总结信息”,将不打印细节信息。

所生成的报表包括标头、注脚、总计信息等等,但不包括细节信息。

单击“标签”按钮,将会将查询结果输出到一个标签文件(.LBX)。

使用此选项必须先设置标签文件,来容纳查询中的输出字段。

其选项前面几个去向中已介绍。

如下图:
其中的选项卡由于在“视图设计器”中已介绍,这里不再赘述了。

前面在“向导”一课中已提到,查询保存在扩展名为.QPR的文件中。

以后使用此查询在命令窗口中输入:DO 查询名.QPR 即可。

第二节建立多表查询
2.1 为举例作准备--建立“图书订货库”
为了以后举例的方便,我们再建立一个“图书订货库”,它包括图书表、订货表、客户表三个表。

分别将图书表.书名、客户表.客户名称设置为主索引,将订货表.书名和客户名称设置为普通索引,并且在各表之间建立关联。

如下图:
在图书表中输入数据(所有数据为随意设置,不做实际参考),如下图:
在订货表中输入数据,如下图:
在客户表中输入内容,如下图:
2.2 建立多表查询
我们建立这个多表查询的目的是查询“客户名称”为新华书店的订货信息。

我们看到,图书订货数据库中图书表和客户表是多对多关系,即一种书可由多个客户订购,一个客户可订购多种书。

而图书表和订货表、客户表和订货表都是一对多关系。

我们打开“文件”菜单,单击“新建”,选择“查询”并单击“新件文件”按钮,进入查询设计器。

在“添加表或视图”窗口中依次将“图书订货库”的图书表、订货表和客户表加入到表设计器。

如下图:
由于我们在“图书订货库”中建立了表间永久关系,因此在添加的表之间自动产生关联。

注意:如果我们添加了图书表后接着添加客户表,由于我们在数据库中未建立两表的直接关联,便会弹出一个“联接条件”对话框,要求加入联接条件,我们不需要这两表建立直接关联,按“取消”按钮即可。

如下图:
我们需要了解的项目有客户名称、订购的书名、每本书的定价、订货数量、每种书的预付款总额、客户联系电话,联系人等。

因此我们在“字段”选项卡中选择加入相应的字段。

其中的每种书预付款总额没有与之相应的字段,需要在“函数和表达式”文本框中建立。

单击文本框右侧的三点按钮,进入“表达式设计器”,通过选择或输入,在“表达式”框中建立表达式“图书表.定价*订货表.订货数量*0.75",其中的0.75指当一次性交清款,将按75折给予优惠。

如下图:
按“确定”按钮关闭表达式生成器。

这时在查询设计器中的“表达式和函数”文本框中出现刚才建立的表达式,按“添加”按钮,将表达式加入“选定字段”,并用垂直双向箭头调整字段输出的顺序。

如下图:
在“联接”选项卡中我们取默认的内部联接。

由于要查询的是各表之间的匹配记录,因此在为各表间的联接都要为内部联接。

如下图:
在“筛选”选项卡中设置筛选条件。

一种条件可以有几种表示方法,如何设置根据个人习惯。

筛选条件和上面的联接条件类似,两者都是先比较值,然后输出满足条件的记录。

不同的是两者比较的对象,联接条件是将一个表的字段值与另一个表的字段值相比较,而筛选条件则是字段值与筛选值(实例文本)相比较。

这里我们选择、输入:订货表.客户名称=新华书店
我们希望按照预付款数额由小到大排列,因此我们从“选定字段”中将表达式添加到“排序条件”框中。

如下图:
我们不需要分组,“分组依据”选项卡不设置。

“杂项”取默认值。

这样,基于“图书订货库”的一个查询就完成了。

单击鼠标右键,在快捷菜单中选取“运行查询”,就会在默认的“浏览”窗口中看到我们查询的结果,如下图:
和输出到“浏览”窗口类似,如果我们选择“屏幕”则会将查询结果显示在屏幕上,下图为屏幕的一部分:
如果我们在“查询去向”中选择“临时表”,并在其文本框中输入“xhsd”作为表名,则在快捷菜单中“运行查询”时,就会将查询结果送到名为 xhsd 的临时表中。

从“窗口”菜单中单击“数据工作期”,则会看到,在“数据工作期”窗口中,出现了 xhsd 的表名,双击它可以从浏览窗口中打开该表,同上图。

数据工作期窗口如下图:
如果我们在“查询去向”中选择“表”,并在其文本框中输入“ls”,则当我们运行查询后,查询结果就送到ls.dbf表中,用来进行各种操作。

从“打开”窗口就可看到出现了 ls.dbf 的表名。

如下图:
和选择“表”类似,如果选择“报表”或“标签”,会将这次查询的结果送到指定的报表和标签中去。

选择“图形”的情况我们在下节中介绍。

我们在选择查询去向后将查询保存在“新华书店.QPR”中。

第三节建立交叉表查询
我们在实际工作中常用到下面的一类表,
这个表左边第一列是不同系所,其右边各列的第一行是不同技术职务,其余是平均考核成绩。

可见这个表反映
了各系所不同技术职务人员的平均考核成绩。

这样由左边、上边两个标头和右下角交叉数据构成的表我们称之为“交叉表”。

这一节我们分别用查询设计器和查询向导建立交叉表查询。

3.1 用查询设计器建立交叉表查询
打开“查询设计器”,添加“职工表”。

建立交叉表只能取三个字段,且其中一个是数值型字段作交叉数据,另两个是字符型字段,一个作为行标头,一个作为列标头。

在“字段”选项卡中选取“所在部门”、“技术职务”二个字段添加到“选定字段”框中。

从“表达式和函数”右侧的“表达式生成器”中生成平均成绩表达式:AVG(职工表.考核成绩),并将它也添加到选定字段中。

如下图:
在“杂项”选项卡中只有在前面选定的字段为三个时,“交叉数据表”才有效,我们选择此复选框。

如下图:
这时我们发现,“分组依据”选项卡中的“分组字段”和“排序”选项卡中的“排序条件”都已自行设置好,为“职工表.所在部门”和“职工表.技术职务”。

如下图:
而且,我们看到其中的设置项都为暗灰色,表明不可设置。

这是因为在“杂项”中选择了交叉表查询,前面的几个选项卡中的必需信息都自动设置好,不能再行设置。

如果想修改,则须去掉“杂项”中的“交叉表数据”复选框。

一个简单的交叉表就这样完成了。

在快捷菜单中单击“运行查询”,我们可以在“浏览”窗口中看到查询结果,如下图:
3.2 用查询向导建立交叉表查询
下面我们用查询向导建立上面举例的查询,并建立一个统计技术职务人员在各部门的分布情况的查询。

打开“文件”菜单,单击“新建”。

在“新建”窗口中选择“查询”并单击“向导”。

在向导选取中单击“交叉表向导”。

按“确定”进入“步骤1-字段选取”。

我们选取“所在部门”、“技术职务”“考核成绩”。

这一步无法建立平均成绩的表达式。

按“下一步”按钮,进入“步骤2-定义布局”,如下图:
在这一步里,我们想将“技术职务”字段的内容作为每列的标头,将“所在部门”字段的内容作为每行的标头。

因此,我们单击“所在部门”字段,并将它拖动到“行”空白区放开,这时空白区被灰色填充且显示“所在部门”。

同样,我们将“技术职务”字段拖动到“列”空白区,将“考核成绩”字段拖动到“数据”空白区。

做完这些操作后,“下一步”按钮将成为可选按钮,单击它进入“步骤3-加入总结信息”。

通过从“总结”和“分类汇总”区域选择合适的单选按钮,可以添加一个包含总结信息和小计的列。

总和将出现在交叉表查询结果中的最右列内。

我们在“总结”框内选择“平均值”,它相当于“AVG(职工表.考核成绩)”,在“分类汇总”框内选择“无”。

单击“下一步”按钮进入“步骤4-完成”。

“显示NULL值”指在无数据处显示NULL。

使用NULL 值是为了说明这样一种情况:在字段或记录里的信息目前还无法得到。

例如,如果一名雇员的保健津贴或税收状况在填写记录时还不清楚,那么,与其存储一个可能产生歧义的零或空格,则不如在字段中存储NULL值,直到存入有实际意义的信息为止。

这里,我们去掉选择,即不显示NULL值。

我们按“预览”按钮可以看到和上面用查询设计器建立的查询完全一样。

如果我们在“步骤3-加入总结信息”里选择“计数”和“数据求和”,如下图:
则完成的查询如下图:
我们可以看到,在最后一列出现了一个“总和”的列,它将每行的数据进行求和(这是上步“数据求和”的结果)。

而且,数据区内不再显示考核成绩,而是显示人数(这是上步“计数”的结果)。

这个查询显示了技术职务人员在各部门的分布情况。

从上面的例子,我们看到建立交叉表有时用查询设计器比较方便,有时用查询向导比较方便。

例如,在需要“总和”数据时,查询设计器不易实现,用查询向导则易于实现;而在建立如“图书表.定价*订货表.订货数量*0.75”的表达式数据时,则正好相反。

相关文档
最新文档