技术开发 频道

DB2 9与Microsoft Access 2007(二)

【IT168 技术】在本系列文章的第一部分中,我向您展示了如何把Access 2007配置成相对于后端DB2服务器的图形前端处理机,详细解释了如何连接多个表格并基于表格创建一个提取层,这样信息技术人员就可以直接利用这些商业实体来工作而不用担心不同的命名约定了;从始至终,数据都存储在DB2服务器上,并且基本对于工作效率没有丝毫的影响。在这篇文章中,我想要深入的探讨一下针对那些存储在链接表格中的数据,您能够做些什么,以及向前端的Access 2007添加更多的表格来演示怎样把DB2变成一个整合层,最后论证一下当向信息技术人员演示DB2数据时,Access 2007所支持的一些商业规则。

  准备工作

  本系列文章假设您已经创建了文章第一部分DB2 9与Microsoft Access 2007(一):获取数据所涉及的Access 2007数据库,且将其链接到DB2样本数据库中的ORG, EMPLOYEE, STAFF, DEPT, 和INVENTORY表格,以及基于那些表格创建了提取层,这样您的All Tables视图应该如下所示:

Microsoft Access 2007中处理DB2数据

  如果您需要准备工作的指导,请参阅本系列文章第一部分。

  在Access 2007中处理DB2数据

  此时,对于那些DB2样本库中的数据您已经有了若干连接过的表格。就像之前提到过的,您可以在All Tables视图中双击那些表格来轻松查看其中的数据。在下图中,我打开了Staff商业实体,该实体连接了样本数据库中的Staff表格:

如何在Microsoft Access 2007中处理DB2数据

  在上图中您可以看到,Access 2007可以在本地的Microsoft数据栅格(data grid)中反映出相应所给表格的数据。这项功能提供给您处理数据的有效方法。

提示:data grid这个名词指Access 2007中管理数据集的对象。数据集(data set)就是由一个查询,存储过程,链接表格等所返回的数据集合。对于信息技术人员来说,一个data grid是用来显示Access 2007中的一个数据集。在本文中,当我提到data grid时,我是指任意的Access 2007所允许您进行的操作控件;比如 ,当我提到数据集时,我是指数据本身;例如,在前面的图像中, 就是数据的一部分。

  观察下面在DB2命令行(CLP)中运行查询指令SELECT * FROM STAFF时所得到的对于样本数据库的结果集:

如何在Microsoft Access 2007中处理DB2数据

  您可以利用Access 2007轻易的通过链接的Staff表格添加一条记录。要给数据添加新的记录,定位到Access 2007数据栅格底部空白格中,就可以添加一个新行。一个星号(*)会指出所输入的这一行。如下所示,增加一个新行:

如何在Microsoft Access 2007中处理DB2数据

  可以注意到当您开始编辑一行时,一个编辑图标( )会出现在您所要编辑的数据栅格行的左侧。这个图标代表您正在修改或添加数据(在本例中,指STAFF表格)。

  您也可以修改那些已经存在的数据行。例如,对于员工Gafney,可以把他的职业Clerk更改为Mgr。您可以点击本行的任何一部分来把焦点转移过来,然后Access 2007会高亮显示本行来表示焦点已经被转移。

如何在Microsoft Access 2007中处理DB2数据

  当您完成对一行数据的修改,只需点击数据栅格中的其他部分,把焦点转移开就可以保存您刚刚修改或添加的行。

提示:如果您在编辑时按Enter键,Access 2007会把焦点转移到本行的下一格。

  数据栅格边缘的颜色会随着您正进行的操作而有所变化。如之前图像所示,在整行被选择时,边缘会默认变成一条橙色线包围整行。当您改变具体的一列时,包围区域的橙色
线会改变,边缘的标识会从( )变为橙色的( )来指出您已经把焦点转移到一行中的具体的格中。当您改变数据时,边缘图标( )会再次出现。

  要保存您所作出的修改,点击如下所示的 :

如何在Microsoft Access 2007中处理DB2数据

  如果您现在在DB2 CLP中运行同样的查询,可以看到如下变化。(我在演示DB2 CLP中的结果,这样您就可以看到所发生的变化;当然,您也可以重新打开数据栅格来观察它们):

如何在Microsoft Access 2007中处理DB2数据

  如果您是数据库管理员(DBA)并且在阅读本文,您也许会因为想到那些繁琐的数据修改会扰乱您所处理的事务而感到有些发晕。您尽可以放心:Access 2007会保存那些授权给DB2用户的认证。换句话说,如果您没有权利修改数据,您就不能进行这些操作。

  在下面的图像中,您可以看到对于STAFF表格,我授权给Chloe,但是她只能观察数据:

如何在Microsoft Access 2007中处理DB2数据

  现在如果用户Chloe想要利用Access 2007来观察STAFF表格中的数据,她可以进行相应操作,但是无权修改任何数据。例如,对于ORG表格,如果Chloe尝试作出如下修改:

如何在Microsoft Access 2007中处理DB2数据

  Access 2007会返回如下错误信息:

如何在Microsoft Access 2007中处理DB2数据

  您也可以看到Chloe根本就没有访问ORG表格的权利(这一点可以在Access 2007中的Organization中看到)。

如何在Microsoft Access 2007中处理DB2数据

  如果她想要在Access 2007中访问此表,她会得到如下错误信息:

如何在Microsoft Access 2007中处理DB2数据

  这种权力分配是动态的:数据库管理员对所包含的数据库对象集操作权力设置的修改会即刻生效。

  除了修改和添加数据,如果具有相应的权利,您也可以把数据从栅格中删除出去。

如何在Microsoft Access 2007中处理DB2数据

  现在如果您观察STAFF表格,此行将不会再出现:

如何在Microsoft Access 2007中处理DB2数据

  但是毫无疑问,您可以看到对于员工350所做出的修改依然存在。

  Access 2007会保留表格的高级属性,如产生的列,顺序等等。比如,使用如下DDL(数据库定义语言)创建一个COMPLAINTS表格(在适当的地方替换您对PAULZ的描述)。


  CREATE TABLE PAULZ.COMPLAINTS(COMPLAINTNUMBER SMALLINT NOT NULL
  GENERATED ALWAYS AS IDENTITY (START WITH +1 INCREMENT BY +1
  MINVALUE +1 MAXVALUE +32767 NO CYCLE CACHE 20 NO ORDER),
  LASTNAME VARCHAR(50) NOT NULL,
  COMPLAINT CLOB(1048576) NOT LOGGED NOT COMPACT);

  现在把COMPLAINTS添加成Access 2007数据库的链接表格,并在表格中添加一些值。利用Access 2007数据栅格,您可以添加一些新行,不用考虑数据中的COMPLAINTNUMBER列,因为它们会被DB2自动生成。当您保存这些修改并重新打开data grid时,您将看到生成的列已经被添加到表格中:
如何在Microsoft Access 2007中处理DB2数据

  当您试图给COMPLAINTNUMBER列设定确切值的时候会发生什么呢?如果您试图使用INSERT语句和DB2 CLP来设定本列的值时,您同样也会得到Access 2007的错误信息:

如何在Microsoft Access 2007中处理DB2数据

  您可以把DB2 作为后端服务器来对链接表格做出很多不同的处理。尽管下面的范例超出了本文讨论的范畴,但我还是在DB2中创建了一个可以包含Access 2003表格的视图(这个版本号没有弄错)。您可以在下图中看到我把它设置成了Access 2007的链接表格。当我选择这个对象时,Access 2007会通过DB2取出它所认为是DB2视图但实际上属于OLE DB功能的数据,然后再从Access 2003中得到数据。怎么样,很便捷吧。

如何在Microsoft Access 2007中处理DB2数据

  然而,这虽然初想起来像是一个比较极端的例子,而且我并不是希望您不必要的透过IT基础架构层来获得数据,但试想一下把您的DB2服务器看做一个数据整合平台而不是仅仅存储数据的地方。在本例中,您可以获得如下收益:您的商务用户会继续处理他们的商务实体,信息技术会因为他们逐渐增强的数据控制力而得到满足,接着越来越多的不同的系统会被整合在一起,而他们也会更加集中的管理,控制和维护这些系统。

  在下面的图像中,您可以看到我已经从Access 2003和Excel 2003中把更多的链接表格添加到作为整合前端的Access 2007中 – 它们在DB2均已被设置好并通过Access 2007显示出来:

如何在Microsoft Access 2007中处理DB2数据

  就像我刚才陈述过的,您所连接的究竟是哪一个DB2服务器无关紧要。在下图中,我添加了一个存储在z/OS的DB2上的表格,但是需要注意一下,此表格中要添加的数据违反在列中非空的规则:

如何在Microsoft Access 2007中处理DB2数据

  当然,您也可以从z/OS的DB2服务器上观察并进行我在本文所讲过的所有操作:

如何在Microsoft Access 2007中处理DB2数据

  下面的例子是一个连接到多维集群(MDC)的表格,该表格存储在高级交互执行体(AIX)中的DB2且包含10,000条以这两个维度所组织起来的条目: DIVISION 和DEPARTMENT:

如何在Microsoft Access 2007中处理DB2数据

  Access 2007提供一定数量的本地数据栅格属性用来处理数据集。例如,Access 2007拥有嵌入式的命令操作:

如何在Microsoft Access 2007中处理DB2数据

  它甚至支持借助于由具有资格的列所首先指派的数值来进行综合过滤,这些列下面都跟随一个附属分类子列:

如何在Microsoft Access 2007中处理DB2数据

  您可以在上图中看到Access 2007会把NULL值看作大于已定义的值,所以它会最终把那些带有空值的列(如YEARS)排在其他列之前,然后排出SALARY列的顺序。

  如果一个排序操作已经在列中被设置,Access 2007会提醒您在列边使用排序图标( )来指示所设置的排序操作。您可以点击这个图标并选择适当的操作来对任意一列进行排序:

如何在Microsoft Access 2007中处理DB2数据

  您也可以选择隐藏这些列表。只需选择表头,右键点击该列,然后选择Hide Columns选项:

如何在Microsoft Access 2007中处理DB2数据

  隐藏这些列表仅仅是隐藏而已,并不是将它们从表格中移除出去。要把它们还原,只要右键点击数据栅格的任意地方然后选择Unhide Columns:

如何在Microsoft Access 2007中处理DB2数据

  在处理这些庞大数据时,我所喜爱的另一个特点就是位于Access 2007数据栅格底部的search bar,它可以根据具体的数值来进行数据的快速搜索。在下图中,您可以看到我在搜索栏中输入了一个员工的名字,然后Access 2007就能快速的定位到该名字在数据栅格中所出现的首个位置:

如何在Microsoft Access 2007中处理DB2数据

  您可以使用row navigator(列表导航)来在行间转移焦点,它的控件处于数据栅格的底部( ),或者只需手动在Record区域( )中输入行号,然后Access 2007就会跳转到数据中的该条记录。

复制和粘贴操作会使转移数据变得更加简便:

如何在Microsoft Access 2007中处理DB2数据

  我会在本系列的后续文章中继续向您展示在管理一个DB2服务器时这个属性的作用。

  Access 2007有一个非常精妙的属性叫做quick filters(快速过滤),您可以在数据栅格中选择一个数组,右键点击,然后选择filtering(过滤)选项来实现它。例如,在下图中您可以看到我应用了一个quick filter使得只有那些属于department 20的员工才会显示出来:
如何在Microsoft Access 2007中处理DB2数据

  如果数据经过过滤,Access 2007会使一个过滤图标( )出现在列表旁以提醒您列表中的数据是经过过滤处理得到的。您可以改变过滤方法,关闭它,修改其过滤规则,以及通过点击过滤图标来选择更多的操作。

如何在Microsoft Access 2007中处理DB2数据

  小结

  本文展示了如何在包含着DB2数据的Access 2007中进行数据处理。您可以看到,您保持了所有以前在Access 2007上所具有的的工作效率并获得了您的IT部门所期望的通过DB2获得的所有数据管理效益。同时,在本文中论证了一些您可以在Access 2007上针对DB2数据所进行的DML语言操作,以及DB2上的授权操作是如何扩展应用在Access 2007中创建的链接表格上的等等。

  在本系列文章的下一部分,我将为您展示当Access 2007已连接到DB2数据之后您所能做的一些事情,例如创建基于DB2的报表,窗体等等。(转载IT专家网)

0
相关文章