|
第八章 查询数据
内容摘要:属性表建立后,图元的基本属性可与属性表关联,或者通过模板图元创建图元,而另一些属性则需要经过查询和计算才能得到,这就需要建立查询结构,以便通过查询,建立查询属性表与图元关联,或者得到绘制图元所需的位置
属性表建立后,图元的基本属性可与属性表关联,或者通过模板图元创建图元,而另一些属性则需要经过查询和计算才能得到,这就需要建立查询结构,以便通过查询,建立查询属性表与图元关联,或者得到绘制图元所需的位置和内容,从属性表数据计算中间和最终结果,获得创建图元所需的数据。
前面说过,我们提倡建立多个结构简单属性表的风格,但这样的属性表若直接输入数据,会感觉零碎而条理不清,还易造成数据输入不完整的情况。通过编辑完好的查询表,用“快捷输入查询数据”方式可以同时向同一查询下的多个属性表输入条理清楚的数据,就如向同1个属性表中输入所有数据一样直观。
查询表也是属性表的一种,只不过查询表的数据不是人工录入的,而是对已经存在的属性表数据的引用、表达式计算得到的。
一、[编辑查询表结构]
打开或激活“查询结构编辑”主视图。如果尚未建立查询表,则打开新查询表,否则打开已经存在的查询表。
查询结构编辑主视图分上下两部分(与ACCESS的查询编辑窗口相似),上部为查询表关联信息,放置属性表(包括查询表)及其之间的关联图形,对于新建的查询表是空白的。下部是查询表结构编辑。
编辑查询结构时,命令窗口显示如下:
命令窗口窗眉显示当前编辑的查询表名及五个命令:“添加关系表”,“添加属性联结”,“添加空间联结”,“插入函数”,“插入变量”。前三个命令对上部查询关联窗口起作用,也可以从查询结构编辑主视图上部的右键菜单得到。
命令窗口的窗体内显示查询定义的表达式的语法正误和操作提示。
(一)查询关联表的操作
“添加关系表”:
执行命令弹出“添加关系”对话框(右图),其中“属性表”页面只列出当前数据库中的属性表,“查询”页面只列出当前数据库中的查询表,“两者都有”页面则列出所有属性表和查询表。可根据需要和个人习惯选择页面。
这是个单选列表,每添加一个表到关联信息窗口,需选择表再点击“添加”按钮完成表的添加,可以连续添加多个表,最后关闭退出。
“添加属性联结”:
执行命令弹出“修改或新建字段联结”对话框(右图)。建立一个联结,需要选择6个项目:左表,左表的一个字段,右表,右表的一个字段,联结两字段的逻辑关系(5个关系中选1种),查询结果记录(3选1)。
最后一个选项有3个子选项。第1子选项的查询结果只包含两个表中联结字段的值符合联结表达式的记录。第2子选项的查询不检查左表,只检查右表,其结果包含左表的所有记录,右表只有符合联结表达式条件的记录进入查询结果。第3子选项则检查左表不检查右表,其结果包含右表的所有记录,左表只有符合联结表达式条件的记录进入查询结果。
使用“拖放”操作同样可以建立两个表的字段联结,方法是将查询表关联信息窗口“左表”的字段拖到“右表”的对应字段处释放,当联结字段类型不同时联结失败。拖放建立的联结默认逻辑关系为“等于”,默认查询结果为第2子选项,如不符合要求可点击联结线(弹出对话界面)修改。
注意:这里的“左表”与“右表”不是屏幕上看到的 “左”“右”位置关系,而是查询时逻辑表达式的“左”“右”关系,而这种“左”“右”关系只有在逻辑关系为“等于”时互换才不影响结果,其他4种逻辑关系“左”“右”互换结果是不同的。
在[查阅修改图元当前查询中的属性数据]、[新建图元当前查询中的属性数据]、[选择图元插入当前查询中的属性数据]这几个命令中,在查询数据页面显示的属性数据表是“左表”,“右表”作为其次级子表,因此应该将希望显示的属性表设置为子查询的左表。
[在快捷输入查询数据]功能中,是从一个总表即“左表”出发,“右表”作为其一级子表、“右表”的“右表”作为其二级子表…。因此,总查询表结构中,也是按此原则,将直接与总表联系的属性表作为右表与总表关联,而隶属于子表的属性表其右表是上级子表而不是总表。如柱状图属性表中,“重II测试”作为“钻孔概况”的右表,而“重II击数”设计为“重II测试”的子表,其左表必须设置为“重II测试”而不是“钻孔概况”。
|
|