最火下载站首页
手机版
最火下载站
关注公众号
最火下载站

当前位置:首页 > 网络知识 > 网络编程 > 编程综合> 关注于使用常用对象来加快Access 2007数据库

关注于使用常用对象来加快Access 2007数据库

文章作者:网友投稿 发布时间:2008-09-08 12:53:10 来源:网络

很多时候我们需要加快Access数据库。这篇文章讲述了使用数据可以怎样使得这个需求更加受到关注。这篇文章还探究了Access 2007 ACCDB一个叫做TempVars的特性。但是首先让我们讨论一些用户场景。   情景一:一个经验丰富的Excel技术人员建立了一个具有众多关联数据表的

很多时候我们需要加快Access数据库。这篇文章讲述了使用数据可以怎样使得这个需求更加受到关注。这篇文章还探究了Access 2007 ACCDB一个叫做TempVars的特性。但是首先让我们讨论一些用户场景。

  情景一:一个经验丰富的Excel技术人员建立了一个具有众多关联数据表的数据库。他坚信他需要升级到SQL server来加快这个数据库。这个数据库只有20MB大小,但是一些表单非常慢,在许多子表单里有许多标签控件和成百上千的离散字段。此外,使用这个数据库的用户需要每次都翻找记录来找到他们所要找的记录。只要添加一个找到记录框就可以使查找数据快得多。

  情景二:一个复杂的数据库开发了六年了,而现在开发人员离开了这家公司。在最近的三年他们除了压缩和修复数据库之外没有做任何事,但是数据库的性能很糟糕。在这个数据库中,一些表格在按压关闭按钮之后需要两分钟才能关闭。而且,一些报表的运行需要一个小时。

  情景三:一个大型数据库已经转变为使用SQL Server作为后台;它有250个表格和80个表。在高峰期它的性能是非常缓慢的。

  好。那么你可以做些什么?首先我们可以假定慢数据库是一个复杂数据库。因此,如果你想加快每个对象,那么它需要很长时间。这意味着你只可以使用数据库的一部分,而确认数据库中有哪些对象是值得使用的最好方法就像下面讲述的。

  访问主要用户来找出哪些表单和报表是缓慢的,并制作一个列表。从这个列表中找出最常用的五个缓慢对象并使用这些。这将告诉你可以做到多大的不同以及它将花费多长时间。

  那么让我们看看我们可以怎样找出一个表单或一个报表被使用的频率,然后你可以关注于怎样使这些常用对象来变得快些。

  提示:记住,这个数据库可能需要重新设计,所以不要为了加快真需要重新设计的数据库而过多的投入和改变很多有限的细节。
当在Access 2007中使用了表单或报表时进行日志记录

  这里有一个日志记录代码解决方案。为了用一个好的Access 2007数据库进行测试,从Access模板(图1)套件下载任务模板,并添加代码“new age”日志记录解决方案。#p#副标题#e#

  图1 –Access 2007数据库所包含的一些这篇文章用到的任务

  关注于使用常用对象来加快Access 2007数据库

  必做: 如果你下载了一个任务数据库模版或下载示例代码,保存ACCDB文件到一个安全的文件中,否则你将受到关闭内容信息框的阻碍。

  当你打开任务模板数据库时,四处浏览看一下这个应用程序直到你对这个数据库是怎样工作的有些感觉。这个新的任务模板设计得很好,而且与Outlook 2007有一些巧妙的集成。不管怎样,当你看过之后,点击导航条中向下的箭头(如图2所示),并选择所有的Access对象和对象类型,如图3所示。

  图2 –任务模板带来的导航条视图

  关注于使用常用对象来加快Access 2007数据库

  图3 –对象类型视图–仿效旧的Access数据库容器的对象类型视图

  关注于使用常用对象来加快Access 2007数据库

  使这个数据库代码可以使用

  为了使这个示例代码在你的数据库中使用,你需要导入图4中所示的四个对象到你的数据库中。这个表是数据存储的地方,查询是用来添加日志记录的,宏是你从你的报表或表单中运行的,而模块具有捕捉用于日志信息的代码。#p#副标题#e#
图4 –你需要导入到你Access 2007数据库的对象

  关注于使用常用对象来加快Access 2007数据库

  添加日志宏到你的表单中

  这是你要对你的数据库添加对象日志记录所需要做的所有事情。以设计模式打开你的表单,如图5中所做的。并打开设计条栏上的属性面板,选择On Close事件。从列表中选择“mcrLogUsage.LogForm”。注意,在代码中使用的是Close事件,因为它在这个日志记录代码中要比On Open事件更好。这些是所要做的所有步骤,下一次当你的用户打开这个表单(之后关闭)时,就会在日志中添加一条记录。

  图5 –怎样在你的表单和报表中建立日志宏

  关注于使用常用对象来加快Access 2007数据库

  当你遵循下面的建立指导,那么每次有人打开这个表单时都会有一个日志记录(如图6所示)。

  图6 -保存到UserObjects日志表中的数据

  关注于使用常用对象来加快Access 2007数据库

  添加日志宏到你的报表中

  要创建报表的一个日志入口,所要做的和为表单所做的一样。在设计视图中打开报表,显示属性面板,找到Close Event,这一次选择mcrLogUsage.LogReport。

  找出某对象被使用了多少次

  要找出一个对象被使用了多少次,建立一个具有以下SQL语句的查询。

  SELECT ObjectName, ObjectType, Count(OpenTime) AS NoTimes#p#副标题#e#
FROM UserObjectLogs

  GROUP BY ObjectName, ObjectType;

  如果你运行它,你将得到如下面图7所示的结果。

  关注于使用常用对象来加快Access 2007数据库

  图7 你的对象使用总计

  软件安装总结

  这是你找出你最常用的表单和报表所需要的所有东西。然后如果你需要加快一些表单和报表,那么集中于那些最常被使用的。记住,子表单和子报表不会包含进这个日志中。

  技术(和兴趣)细节

  对Access 2007的许多改进都是旨在制作很好的、可下载的模板(如图1中所示)。因此在宏方面有许多创新来创建可以自由传送VBA代码的数据库模板。使其发生的最重要的一个改变是一个叫做TempVar的新对象。让我们看看在这个数据库中怎样使用TempVar。

  在模块logObjects_FXL12中,你将看到提取所关注的最后一个表单或报表并找出用户Windows帐户的代码。然后这些结果将放到3个不同的TempVar中。然后会打开一个使用这些TempVars的查询来插入一个新记录到我们的用户日志表中。

   OptionCompareDatabase
  OptionExplicit
  PublicFunctionLogFormUsage()
  OnErrorResumeNext
  TempVars.Add"ObjectName",Screen.ActiveForm.Name
  TempVars.Add"ObjectType","3"
  CallLogUsage
  ExitFunction
  EndFunction
  PublicFunctionLogReportUsage()
  OnErrorResumeNext
  TempVars.Add"ObjectName",Screen.ActiveReport.Name
  TempVars.Add"ObjectType","4"
  CallLogUsage
  ExitFunction
  EndFunction
  PublicSubLogUsage()
  OnErrorResumeNext
  TempVars.Add"WindowsAccount",User_FX
  DoCmd.SetWarningsFalse
  DoCmd.OpenQuery"qryUpdateLogs"
  DoCmd.SetWarningsTrue
  ExitSub
  EndSub

 

  注意:如果你仔细地看了这个代码,你会看到一个叫做User_FX的函数,它提取Windows用户帐户。这个代码在下载的数据库中。

  TempVars与全局VBA变量相比较

  TempVars在查询和表单控制和宏以及VBA间转移值方面是很方便的。在2007年之前,你只能使用全局变量来做到这些,而且它还只能用于VBA代码。全局变量的问题,是如果VBA代码失败了,那么你将丢失全局变量中的信息。而TempVars比它强大得多。

  使用TempVars的查询

  在这个数据库中你将发现添加了叫做qryUpdateLogs的查询。它从TempVars获得它的值,如图8所示。TempVars 真的是一个不用使用docmd.RunSQL或CurrentDB.Execute就将复杂的东西放到一个查询中的简单方法。

  图8-这显示了TempVars怎样在对象间移动信息

  关注于使用常用对象来加快Access 2007数据库

  宏

  最后,如果你看看图9,你将看到我所建立的两个添加到你表格和报表Close events中的宏。你将看到这些宏存储在一个宏容器中,而且你还将注意到在顶端有两行宏逻辑,用来阻止任何人让宏自己运行,因为在这种情况下这个代码会失败。

  关注于使用常用对象来加快Access 2007数据库

  图9

上一篇: 低劣的数据库归档会导致法律风险提升

下一篇: phpMyAdmin 3.0.0 RC1 - MySQL管理利器

共有0条评论网友评论