我已經接管了一個舊的 Microsoft Access 專案,該專案在幾個程序中注釋掉了 XML。例如:
'------------------------------------------------------------
' closeManageEmployees_Click
'
'------------------------------------------------------------
Private Sub closeManageEmployees_Click()
On Error GoTo closeManageEmployees_Click_Err
' _AXL:<?xml version="1.0" encoding="UTF-16" standalone="no"?>
' <UserInterfaceMacro For="OpenNewEmployee" Event="OnClick" xmlns="http://schemas.microsoft.com/office/accessservices/2009/11/application"><Statements><Action Name="OpenForm"><Argument Name="For
' _AXL:mName">newEmployee</Argument><Argument Name="DataMode">Add</Argument><Argument Name="WindowMode">Dialog</Argument></Action></Statements></UserInterfaceMacro>
DoCmd.Close , ""
closeManageEmployees_Click_Exit:
Exit Sub
closeManageEmployees_Click_Err:
MsgBox Error$
Resume closeManageEmployees_Click_Exit
End Sub
這里有三行注釋掉的 XML 以_AXL. 除了圍繞“員工”這一同一主題,我看不出 XML 所描述的內容與例程所做的事情之間有任何關聯。事實上,看起來這段代碼甚至可能是復制粘貼的,OpenNewEmployee_Click()其中有一組類似的命令和格式,只是它缺少任何 XML:
'------------------------------------------------------------
' OpenNewEmployee_Click
'
'------------------------------------------------------------
Private Sub OpenNewEmployee_Click()
On Error GoTo OpenNewEmployee_Click_Err
DoCmd.OpenForm "newEmployee", acNormal, "", "", acAdd, acDialog
OpenNewEmployee_Click_Exit:
Exit Sub
OpenNewEmployee_Click_Err:
MsgBox Error$
Resume OpenNewEmployee_Click_Exit
End Sub
這種格式在這個專案中以幾種形式重復。我是否正確猜測 XML 只是從轉換為 VBA 代碼的宏中遺留下來的垃圾?
uj5u.com熱心網友回復:
這是使用宏轉換為 VBA 的結果。
請記住,在 Access 中,我們有兩種編程語言。
所謂的“易于”使用的宏語言 - 專為非程式員設計。
然后我們有 VBA(Visual Basic for Applications)。
那么,當您將按鈕放入表單時?
你有兩個選擇:

因此,如果您選擇宏生成器,那么您將不再使用 VBA,而是使用宏。
因此,您可以用該宏語言撰寫相當“簡單”的操作。事實證明,宏語言存盤為 xml。此更改發生在 Access 2010 中(因此,對于 25 年以上的訪問歷史來說,不是超級舊的)。在 Access 2010 之前,存在宏,但它們不存盤為 xml。
他們在 2010 年為宏添加了一個“不錯的”if/then 塊結構,以及一個重新改進的宏編輯器。
因此,作為開發人員,您可以(并且將會)快速超越宏,因此隨著時間的推移,您希望使用和采用 VBA 代碼來代替宏。
因此,有一個選項可以將這些“宏”轉換為 VBA,因此您看到的之前的 xml 代碼實際上是之前的宏代碼。事實上,您可以將該 xml 檔案剪切并粘貼到宏編輯器中,然后您就可以在眼前看到代碼。
您還可以在工具中將您的按鈕事件默認設定為使用 VBA - 因此沒有上述提示(使用宏或 VBA - 它會直接跳轉到 VBA 代碼和事件)。
還有一個小缺點?事件向導過去可以選擇使用 VBA,但現在它們總是使用 XML 宏 - 即使您的事件設定要使用 VBA。
那么,如果我將您的 xml 剪切并粘貼到宏編輯器中呢?你看到這個:

內置向導現在總是使用宏。但是,如果您想擴展或修改事件代碼或按鈕單擊代碼?然后使用轉換為 VBA 功能 - 這個:

使用宏有什么好的理由嗎?
好吧,不是真的,但一個重要的原因?
2010 年的 Access 收到了我們所說的 REAL 表觸發器,甚至在表級別存盤程序代碼。這意味著如果您從代碼更新表,則可以運行資料宏(表存盤代碼)。所以,這至少是學習使用宏的原因之一。這樣的表級宏代碼在您更新表時運行 - 即使您使用了 vb.net、FoxPro 或任何其他資料源 - 這些表觸發器和存盤代碼程序也會運行。
但是你看到的那個 xml 文本?它是從宏(在本例中為 UI 宏)轉換為 VBA 代碼的結果。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/459698.html
上一篇:將任意值插入自動編號列
下一篇:以編程方式更改所有報告
