第八章 查询数据

2013-05-09 YTL YTLWorld数字地球

摘要:属性表建立后,图元的基本属性可与属性表关联,或者通过模板图元创建图元,而另一些属性则需要经过查询和计算才能得到,这就需要建立查询结构,以便通过查询,建立查询属性表与图元关联,或者得到绘制图元所需的位置


属性表建立后,图元的基本属性可与属性表关联,或者通过模板图元创建图元,而另一些属性则需要经过查询和计算才能得到,这就需要建立查询结构,以便通过查询,建立查询属性表与图元关联,或者得到绘制图元所需的位置和内容,从属性表数据计算中间和最终结果,获得创建图元所需的数据。

前面说过,我们提倡建立多个结构简单属性表的风格,但这样的属性表若直接输入数据,会感觉零碎而条理不清,还易造成数据输入不完整的情况。通过编辑完好的查询表,用“快捷输入查询数据”方式可以同时向同一查询下的多个属性表输入条理清楚的数据,就如向同1个属性表中输入所有数据一样直观。

查询表也是属性表的一种,只不过查询表的数据不是人工录入的,而是对已经存在的属性表数据的引用、表达式计算得到的。

一、[编辑查询表结构]

打开或激活“查询结构编辑”主视图。如果尚未建立查询表,则打开新查询表,否则打开已经存在的查询表。

查询结构编辑主视图分上下两部分(与ACCESS的查询编辑窗口相似),上部为查询表关联信息,放置属性表(包括查询表)及其之间的关联图形,对于新建的查询表是空白的。下部是查询表结构编辑。

编辑查询结构时,命令窗口显示如下:


命令窗口窗眉显示当前编辑的查询表名及五个命令:“添加关系表”,“添加属性联结”,“添加空间联结”,“插入函数”,“插入变量”。前三个命令对上部查询关联窗口起作用,也可以从查询结构编辑主视图上部的右键菜单得到。

命令窗口的窗体内显示查询定义的表达式的语法正误和操作提示。

(一)查询关联表的操作

添加关系表”:

执行命令弹出“添加关系”对话框(右图),其中“属性表”页面只列出当前数据库中的属性表,“查询”页面只列出当前数据库中的查询表,“两者都有”页面则列出所有属性表和查询表。可根据需要和个人习惯选择页面。

这是个单选列表,每添加一个表到关联信息窗口,需选择表再点击“添加”按钮完成表的添加,可以连续添加多个表,最后关闭退出。

添加属性联结”:

执行命令弹出“修改或新建字段联结”对话框(右图)。建立一个联结,需要选择6个项目:左表,左表的一个字段,右表,右表的一个字段,联结两字段的逻辑关系(5个关系中选1种),查询结果记录(3选1)。

最后一个选项有3个子选项。第1子选项的查询结果只包含两个表中联结字段的值符合联结表达式的记录。第2子选项的查询不检查左表,只检查右表,其结果包含左表的所有记录,右表只有符合联结表达式条件的记录进入查询结果。第3子选项则检查左表不检查右表,其结果包含右表的所有记录,左表只有符合联结表达式条件的记录进入查询结果。

使用“拖放”操作同样可以建立两个表的字段联结,方法是将查询表关联信息窗口“左表”的字段拖到“右表”的对应字段处释放,当联结字段类型不同时联结失败。拖放建立的联结默认逻辑关系为“等于”,默认查询结果为第2子选项,如不符合要求可点击联结线(弹出对话界面)修改。

注意:这里的“左表”与“右表”不是屏幕上看到的 “左”“右”位置关系,而是查询时逻辑表达式的“左”“右”关系,而这种“左”“右”关系只有在逻辑关系为“等于”时互换才不影响结果,其他4种逻辑关系“左”“右”互换结果是不同的。

[查阅修改图元当前查询中的属性数据][新建图元当前查询中的属性数据][选择图元插入当前查询中的属性数据]这几个命令中,在查询数据页面显示的属性数据表是“左表”,“右表”作为其次级子表,因此应该将希望显示的属性表设置为子查询的左表。

[在快捷输入查询数据]功能中,是从一个总表即“左表”出发,“右表”作为其一级子表、“右表”的“右表”作为其二级子表。因此,总查询表结构中,也是按此原则,将直接与总表联系的属性表作为右表与总表关联,而隶属于子表的属性表其右表是上级子表而不是总表。如柱状图属性表中,“重II测试”作为“钻孔概况”的右表,而“重II击数”设计为“重II测试”的子表,其左表必须设置为“重II测试”而不是“钻孔概况”。

添加空间联结”:

空间联结是图元(属性表或查询表生成的图元)之间的联结关系,有线条相交、区域包含两种。

使用“拖放”操作建立的空间联结,默认为左表区域图元包含右表图元(第2选项),若不合要求应点击联结线修改。

(二)查询表结构的编辑

命令窗口后两个命令对下部查询表结构编辑起作用。

插入函数

这个命令只能用在查询字段的后5个属性(字段值表达式,总计函数,总计值表达式,条件表达式,或表达式)的输入中,执行后弹出函数列表,用来选择输入查询表达式的计算函数。

插入变量

这个命令只能用在查询字段的4个表达式属性(字段值表达式,总计值表达式,条件表达式,或表达式)的输入中,执行后弹出字段变量列表,用来选择输入的字段变量。

查询表每一个字段有11个可设置的属性值(下图):

标题(查询字段标题):可输入编辑。当选择“字段值表达式”改变时,如果已有标题为人工输入,则标题不会改变,否则会以新选择的字段值表达式的字段名作为默认标题。

数据类型(查询字段数据类型):可于下拉组合框中选择合适的字段类型。“字段值表达式”选择改变时,会以该表达式字段的数据类型作为默认数据类型。

数据格式:部分数据类型如数字,时间/日期,角度有多种数据显示格式,可在下拉组合框内选择。“字段值表达式”选择改变时,会以该表达式字段的数据格式作为默认值。

小数位数:直接输入。仅对数字型字段有效。“字段值表达式”选择改变时,会以该表达式字段的小数位数作为默认值。

排序:有不排序,升序,降序3种选择,默认不排序(空白)。(排序是不是记录排序,如果多个字段要求排序又出现矛盾如何处理,比如顶板孔深用降序,底板孔深用升序,会出现怎么样的结果?)

显示:当此查询表作为其他查询的关系表时该字段是否显示。

字段值表达式:查询字段值的计算表达式,输入字段变量时可从下拉组合框(格式是“属性表名.字段名”)中选取。字段值表达式的选择改变时,数据类型、数据格式、小数位数等属性会改变为所选择字段值表达式字段的值,标题若是空白或与原字段值表达式的字段名相同,也会改为新选择的字段名。

总计函数:默认值为“分组”。可从下拉列表选择或点击“插入函数”选择合适的总计函数。本栏可插入函数为“聚合类函数”,与其他栏不同。

总计值表达式:输入表达式,进一步计算总计函数的值,生成查询记录。

条件表达式:输入条件表达式,对生成的查询记录进行筛选。

或表达式:输入条件表达式,与前面的条件表达式为“或”关系,对生成的查询记录进行筛选。

(三)查询表的设计原则

一般说来,总查询表的关联图必须包含所有直接生成图元的属性表和子查询表,总查询由一系列中间查询过程构成。中间查询过程既包含直接生成图元的子查询表,还包含不直接生成图元但对于最终生成图元不可缺少的中间结果查询表。

如果将总查询表视为一个复杂的查询,中间查询过程就是一系列简单的查询。将复杂的分解为简单的,由简单的组合成复杂的,就是编辑查询时应遵循的原则。

查询表设计参见“自动生成柱状图”实例。

二、[查询快捷输入数据]

本功能与[属性数据]下的[快捷输入属性数据]功能、编辑方法基本相同。

利用查询表快捷输入属性数据,比之快捷输入属性数据,有明显的优点。根据查询表,系统将查询涉及的属性表串在了一起。下图是进入命令展开钻孔JK1及其下重II测试的一条记录时的界面。同一钻孔的数据输入以树状属性表与文件夹形式组织在一起,可以有条理地将整个钻孔的数据全部输入,而且作为关联字段的工程名称与钻孔名称只需输入一次。

查询快捷输入数据的数据输入窗口(左侧)右键菜单比属性快捷输入数据多了一个菜单项:

[显示记录所属关系(B)]:除查询关联的主属性表外,在每一个属性表的记录文件夹后面显示所属主属性表记录名。执行本命令后,菜单名改为[不显示记录所属关系(B)],执行该菜单即取消记录所属关系的显示,并且菜单名变为[显示记录所属关系(B)]。

下图是查询快捷输入数据的主视图。

对于没有快捷数据可用的字段,需要一个字段一个字段地输入数据;有快捷数据的字段,右边快捷数据窗口会显示出当前可用快捷数据。譬如土层特征的分层孔深输入回车后,输入光标跳到土层名称字段,右边显示出土层名称的快捷数据,此时只要输入快捷数据的序号(如输入“1”)并回车,对应的土层名(淤泥)就输入到土层名称字段内,光标即跳到岩土描述字段,快捷数据即显示淤泥的快捷数据,如此循环。

三、[表格浏览查询数据]

本功能用表格形式浏览每一个查询表的查询结果。对查询结果的浏览有助于发现查询表编辑错误。

四、[拷贝查询表]

本功能在当前数据库与其他YTL数据库间相互拷贝查询表。

欲打开的数据库必须是磁盘文件且未在其他视图打开,否则弹出共享冲突的提示信息,打开失败。

其他YTL数据库打开后,该数据库内的查询表列表显示于视图内,可以将视图中的查询表与查询项目窗口的查询表互相拖放进行拷贝(未实现)。或者选择查询表后拷贝到剪贴板,再进行粘贴实现查询表的拷贝。目前通过剪贴板粘贴的查询表存在数据丢失现象,粘贴后需要进行检查编辑。

拷贝视图可使用右键菜单的剪切项或拷贝项将选择查询表拷贝到剪贴板,或者使用WINDOWS剪贴板的剪切和拷贝按钮。查询项目窗口只能使用右键菜单的剪切项或拷贝项。

拷贝视图可使用右键菜单的粘贴项,或者使用WINDOWS剪贴板的粘贴按钮从剪贴板粘贴查询表。查询项目窗口只能使用右键菜单的粘贴项。

五、[查阅浏览图元查询结果数据]

对查询生成的图元,查阅其查询结果数据,因为是查询结果数据,修改没有意义。

进入命令时,屏幕左侧上部的项目窗口加入“查询数据”并成为当前页面,下部加入“查询快捷”页面提供修改属性表的快捷数据。“查询数据”页面显示了当前查询的属性表生成图元的记录,括号内数字为该记录生成的图元数。

点击图元或查询记录内的数据,可浏览其查询数据或生成图元。

六、[查阅修改当前查询中的属性数据]

本功能与上一功能类似,这里是查阅修改当前查询生成图元涉及的属性表数据。图元与属性互相联动(选择图元,查询数据窗口以红色记录显示与图元对应属性,选择属性记录,对应图元成为当前选择图元),可对属性进行修改。

在尚未退出命令状态下,要查阅修改其他查询图元的属性数据,只需改变查询表窗口的当前查询即可。

退出本功能时,查询数据窗口与查询快捷窗口自动销毁。

 

可以与图元直接联动的属性表是查询的“左表”,如果将希望联动的属性表设置成“右表”,该属性表成为当前属性表的子表,必须展开子表文件夹进入到子表内才能进行联动。

七、[新建图元当前查询中的属性数据]

进入命令后,在命令窗口“标记图元”复选项选中情况下,当前查询表生成的图元显示青色标记,选择没有标记的图元,在查询数据窗口出现的新记录中(或在查询数据窗口选择属性表出现的新记录)输入属性值并回车,即在该属性表创建一条属于此图元的新记录。如果新记录是有效的数据记录,在重新生成图形时就会生成新的图元。

八、[选择图元插入当前查询中的属性数据]

本功能与[属性数据]-[选择图元插入到当前属性记录]的作用相同,即建立属性表记录与图元的关联,只是这里关联的是查询中的属性表的记录。

进入命令,查询数据页面自动添加到左侧上部图形项目窗口,查询快捷页面添加到左侧下部属性表窗口。查询数据页面以当前查询为根,查询中左表的记录以文件夹列表显示,目录名后的括号内为该记录关联的图元数。查询中的右表作为左表的子表,子表的记录文件夹列表于子表之下。

建立图元与属性记录的关联,先要选择属性记录,然后选择图元,右击确定关联。操作时应将命令窗口的“标记图元”选项选中,否则关联图元与选择图元均无特殊显示,可能产生关联错误。

选择属性记录方法是在查询数据页面点击记录文件夹将其展开,在展开的文件夹内部点击,该文件夹的记录名(目录名)呈红色文字显示,即成为当前选择记录。视图中与该记录关联的图元即显示出红色标记。然后在视图内点击欲与该记录关联的无标记图元,被点击图元亦显示红色标记,表示加入了与当前记录关联的图元选择集(若发现选错图元,可将命令窗口“剔除选择”选中再点击图元将红色标记清除),需要关联的图元均选择后,右击,有红色标记的图元选择集均与当前记录建立了关联,红色标记消失。

命令执行中可通过查询表页面改变当前查询表以建立图元与其他属性表的关联。

九、[删除图元与当前查询中属性数据的关联]

本功能与[属性数据]-[删除图元与当前属性数据关联]的作用相同,即删除属性表记录与图元的关联,只是这里是通过查询表删除属性表与图元的关联。

在查询数据窗口选择当前属性表的记录,再在视图中选择与此属性表相关图元,按右键删除此图元与属性表的关联。

命令执行中应将命令窗口的“标记图元”选项选中,否则关联图元与选择图元的标记无法显示。

进入命令,查询数据页面与查询快捷页面分别添加于左侧上部的图形项目窗口和左侧下部的属性表项目窗口。查询数据中当前查询左表的记录文件夹列表显示,右表作为左表的子表包含在左表文件夹内。与当前查询左表关联的图元显示青色标记,展开记录文件夹并在其中点击使其成为当前记录(即记录文件夹名显示为红色文字)时,与当前记录关联的图元标记显示为红色,点击红色标记图元,标记变为蓝色,命令窗口“增加选择”选中时,点击红色标记图元其标记变蓝色加入选择集,“剔除选择”选中时,点击蓝色标记图元将其从蓝色选择集中删除(被删除图元恢复红色标记),蓝色图元选择集构造完成后,右击,蓝色标记消失,该选择集图元与当前属性表的关联即删除。

命令执行中,可通过查询表页面改变当前查询表。

十、[查询记录创建当前图形图元]

只有原状样图元显示

十一、[查询过程创建当前图形]

 

十二、创建查询高程点数据表达式

十三、创建查询标注点数据表达式

十四、创建查询界线点数据表达式

十五、创建查询实体点数据表达式

十六、创建查询控制点数据表达式