程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Access數據庫 >> 關於Access數據庫 >> 窗體類中慎用Option Explicit

窗體類中慎用Option Explicit

編輯:關於Access數據庫

今天遇到一個怪病,困擾了我幾個小時,我有一段程序讀取窗體上的切換按鈕狀態,在一個新文件中運行得很好,但是同樣一個按鈕,同樣代碼,貼到另外一個窗體,卻怎麼也無法正常運行。

  經過一個小時的單步跟蹤調試,終於發現原來問題出在Option Explicit上。Option Explicit原來是用於提高程序性能,也為了減少編程錯誤而使用的,他要求用戶必須聲明變量後才能使用。避免了系統自動使用占用資源很多的Variant類型,也強迫程序員養成良好習慣,寫出便於調試的代碼。

  但是Option Explicit如果在窗體類中使用,將導致另外一個惡果。那就是未賦值的窗體控件,你對其取值都將得到NULL,例如切換按鈕,如果不使用Option Explicit,那麼你對未操作的切換按鈕取值將得到Boolean值False,但是如果使用了Option Explicit,那麼你就將得到NULL。

  這個細節很難被注意到,而且一旦窗體類中使用了Option Explicit,那麼你將面對很多的IsNull判斷,當然這還不是最致命的,畢竟IsNull也就是多寫了幾行代碼,但是如果你在代碼中使用了criteria,比方說域聚合函數,那麼域聚合函數將報錯,中止代碼。而控件本身內涵在Criteria中,你根本無法對其進行IsNull判斷。

  另外一個副作用就是條件格式將可能得到預期之外的結果,比方說切換按鈕狀態,如果使用了Option Explicit,那麼你必須注意,除了True和False之外,還可能有個值就是Null,你在條件格式中不應該使用=False,而應該使用<>True,看起來是不是完全等價?其實完全不同。

  我個人對於Option Explicit的建議是,盡量不要在窗體類中使用,但是同時也盡量把大量的程序放在使用Option Explicit的模塊中,窗體類中盡可能少用變量。

  如果你一定要在窗體類中使用Option Explicit的話,你有兩個選擇:

1、對於每個訪問的值都進行IsNull判斷。
2、對於每個控件都設定默認值。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved