程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Access數據庫 >> 關於Access數據庫 >> 關注於使用常用對象來加快Access 2007數據庫下

關注於使用常用對象來加快Access 2007數據庫下

編輯:關於Access數據庫

  添加日志宏到你的表單中

  這是你要對你的數據庫添加對象日志記錄所需要做的所有事情。以設計模式打開你的表單,如圖5中所做的。並打開設計條欄上的屬性面板,選擇On Close事件。從列表中選擇“mcrLogUsage.LogForm”。注意,在代碼中使用的是Close事件,因為它在這個日志記錄代碼中要比On Open事件更好。這些是所要做的所有步驟,下一次當你的用戶打開這個表單(之後關閉)時,就會在日志中添加一條記錄。

  圖5 –怎樣在你的表單和報表中建立日志宏

  

  當你遵循下面的建立指導,那麼每次有人打開這個表單時都會有一個日志記錄(如圖6所示)。

  圖6 -保存到UserObjects日志表中的數據

  

  添加日志宏到你的報表中

  要創建報表的一個日志入口,所要做的和為表單所做的一樣。在設計視圖中打開報表,顯示屬性面板,找到Close Event,這一次選擇mcrLogUsage.LogReport。

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

要找出一個對象被使用了多少次,建立一個具有以下SQL語句的查詢。

  SELECT ObjectName, ObjectType, Count(OpenTime) AS NoTimes

 FROM UserObjectLogs

  GROUP BY ObjectName, ObjectType;

  如果你運行它,你將得到如下面圖7所示的結果。

  

  圖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怎樣在對象間移動信息

  

  宏

  最後,如果你看看圖9,你將看到我所建立的兩個添加到你表格和報表Close events中的宏。你將看到這些宏存儲在一個宏容器中,而且你還將注意到在頂端有兩行宏邏輯,用來阻止任何人讓宏自己運行,因為在這種情況下這個代碼會失敗。

  

  圖9

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved