范圍和對(duì)象命名的兼容性

此頁沒有內(nèi)容條目
內(nèi)容

expandtri全部顯示

Visual Basic 的范圍規(guī)則將影響為對(duì)象、模塊過程選擇的名稱。

同名的模塊和其他對(duì)象

在命名模塊時(shí),應(yīng)避免將模塊的名稱以 Form_ 或 Report_ 開頭,因?yàn)橐源朔绞矫K,會(huì)與那些為窗體和報(bào)表編寫的已有的代碼發(fā)生沖突。

如果在一個(gè)應(yīng)用程序中有一個(gè)模塊,而該應(yīng)用程序是在 Microsoft Access 的 1.x 或 2.0 版本中創(chuàng)建的,這些版本不遵循上述命名規(guī)則,那么試圖轉(zhuǎn)換該應(yīng)用程序時(shí),Microsoft Access 將產(chǎn)生錯(cuò)誤。例如,Microsoft Access 1.x 或 2.0 版數(shù)據(jù)庫中的名為 Form_Orders 的模塊將導(dǎo)致出錯(cuò),在轉(zhuǎn)換該模塊之前,Microsoft Access 會(huì)要求對(duì)模塊重命名。

同名的模塊和過程

雖然不建議這種用法,但還是可以使用與模塊同名的過程。若要在應(yīng)用程序的表達(dá)式中調(diào)用該過程,必須使用過程的完整名稱,包括模塊名稱和過程名稱,如下例所示:

IsLoaded.IsLoaded("Orders")

注釋  在宏的 Runcode 操作中這種方法不可用。宏不能訪問與模塊同名的過程。

同名的過程和控件

如果從窗體調(diào)用一個(gè)過程,而該過程與窗體上的控件同名,則必須使用過程所在的模塊的名稱來完整地標(biāo)識(shí)該過程。例如,要調(diào)用名為 PrintInvoice 的過程,該過程保存在名為 Utilities 的標(biāo)準(zhǔn)模塊中,而在相同的窗體上有一個(gè)名為 PrintInvoice 的按鈕,則當(dāng)從窗體或窗體模塊中調(diào)用該過程時(shí),應(yīng)使用完整的名稱 Utilities.PrintInvoice。

名稱相似的控件

如果一個(gè)控件名稱與已有的控件名稱只差一個(gè)空格或符號(hào),那么不能使用該控件名稱。例如,如果已有名為 Last_Name 的控件,就不能使用名為 Last Name 或 Last+Name 的控件。

與類型庫同名的模塊

類型庫同名的模塊是不能保存的。如果試圖使用 ADO、Access、DAO 或 VBA 等名稱保存模塊,將得到錯(cuò)誤消息,該消息表明這個(gè)名稱與已有模塊、工程或對(duì)象庫的名稱沖突。類似地,如果已經(jīng)設(shè)置了對(duì)另一類型庫(如 Microsoft Excel 類型庫)的引用,就不能使用 Excel 作為名稱來保存模塊。

與方法同名的字段

如果表中的字段名與 ADO Recordset 對(duì)象上的 ActiveX 數(shù)據(jù)對(duì)象 (ADO) 方法或 Recordset 對(duì)象上的數(shù)據(jù)訪問對(duì)象(DAO)方法的名稱相同,則不能用 .(點(diǎn))語法引用記錄集內(nèi)的相應(yīng)字段。而必須使用 !(驚嘆號(hào))語法,否則 Microsoft Access 將產(chǎn)生錯(cuò)誤。下面的示例顯示如何引用在 Contacts 表上打開的記錄集內(nèi)的 AddNew 字段:

ADO

Dim rst As New ADODB.Recordset

rst.Open "Contacts",CurrentProject.Connection, _

    adOpenKeySet,adLockOptimistic

Debug.Print rst!AddNew

DAO

Dim dbs As Database, rst As DAO.Recordset

Set dbs = CurrentDb

Set rst = dbs.OpenRecordset("Contacts")

Debug.Print rst!AddNew

與 Visual Basic 函數(shù)同名的模塊

如果使用與 Visual Basic 固有函數(shù)相同的名稱保存模塊,那么試圖執(zhí)行該函數(shù)時(shí),Microsoft Access 將產(chǎn)生錯(cuò)誤。例如,以 MsgBox 作為名稱保存模塊后,當(dāng)試圖運(yùn)行一個(gè)調(diào)用 MsgBox 函數(shù)的過程時(shí),Microsoft Access 將顯示“調(diào)用的是變量或程序,而不是模塊”的錯(cuò)誤消息。

與對(duì)象同名的模塊

如果舊版本 Microsoft Access 創(chuàng)建的數(shù)據(jù)庫中包含一個(gè)模塊,該模塊與 Microsoft Access 對(duì)象、ADO 對(duì)象或 DAO 對(duì)象具有相同的名稱,那么在轉(zhuǎn)換數(shù)據(jù)庫時(shí),可能會(huì)遇到編譯錯(cuò)誤。例如,名為 Form 或 Database 的模塊將引起編譯錯(cuò)誤。要避免這些錯(cuò)誤,必須重新命名模塊。

命名表達(dá)式中使用的字段或與窗體和報(bào)表上的控件綁定的字段

當(dāng)在表中創(chuàng)建一個(gè)字段,而該字段將綁定到報(bào)表上的控件,或用在控件或報(bào)表的 ControlSource 屬性的表達(dá)式中時(shí),要避免字段的名稱與 Application 對(duì)象的方法相同。若要查看 Application 對(duì)象的方法列表,請(qǐng)?jiān)谀K“設(shè)計(jì)”視圖中,單擊“視圖”菜單上的“對(duì)象瀏覽器”,單擊“工程/庫”框中的 Access,然后單擊“類”框中的 Application,在“成員”框中查看 Application 對(duì)象的方法。

當(dāng)在表中創(chuàng)建一個(gè)字段,而該字段將綁定到窗體或報(bào)表上的控件時(shí),不要將字段名稱指定為下列名稱:AddRef、GetIDsOfNames、GetTypeInfo、GetTypeInfoCount、Invoke、QueryInterface、Release。

與 Visual Basic 關(guān)鍵字同名的標(biāo)識(shí)符

Microsoft Access 97(或更高版本)使用的 Visual Basic 版本中包含一些新的 Visual Basic 關(guān)鍵字,不能使用這些關(guān)鍵字作為標(biāo)識(shí)符。這些關(guān)鍵字是 AddressOfAssert、Decimal、DefDec、EnumEvent、Friend、ImplementsRaiseEventWithEvents。當(dāng)轉(zhuǎn)換用 Microsoft Access 舊版本開發(fā)的數(shù)據(jù)庫時(shí),與新的 Visual Basic 關(guān)鍵字同名的標(biāo)識(shí)符將引起編譯錯(cuò)誤。若要更正這些錯(cuò)誤,必須重新命名標(biāo)識(shí)符。

使用與 Microsoft Access 對(duì)象同名的項(xiàng)目

項(xiàng)目名稱是一個(gè)字符串,代表 Microsoft Access 應(yīng)用程序的名稱。在舊版本的 Microsoft Access 中,項(xiàng)目名稱就是數(shù)據(jù)庫的名稱。自 Microsoft Access 2000 開始,項(xiàng)目名稱由 ProjectName 屬性設(shè)置指定,該屬性的默認(rèn)設(shè)置即為數(shù)據(jù)庫的名稱。如果要轉(zhuǎn)換的數(shù)據(jù)庫與某一類對(duì)象具有相同的名稱,例如 application、form 或 report,Microsoft Access 將在數(shù)據(jù)庫名稱后面追加一個(gè)下劃線字符,來創(chuàng)建不與已有對(duì)象沖突的項(xiàng)目名稱。