2015-07-02 28 views
1

我是ms access 2013中的數據宏的新手,需要一些幫助。所以我們假設我有一個簡單的數據庫,只有一個用戶表。 當我更改表中的「Age」字段時,我想運行一個外部exe文件(爲什麼dosent問題)。 所以我在最近幾天學習這個主題,並最終得到這個: 1.我在ms訪問中創建一個名爲RunMiniFix的模塊(MiniFix是我想運行的exe文件的名稱)。該模塊使用ShellExecute函數和整個模塊看起來像這樣:如何使用數據宏在vba中運行函數?

Option Compare Database 
Const SW_SHOW = 1 
Const SW_SHOWMAXIMIZED = 3 

Public Declare Function ShellExecute Lib "Shell32.dll" Alias "ShellExecuteA" 
    (ByVal hwnd As Long, _ 
    ByVal lpOperation As String, _ 
    ByVal lpFile As String, _ 
    ByVal lpParameters As String, _ 
    ByVal lpDirectory As String, _ 
    Optional ByVal nShowCmd As Long) As Long 

Public Function RunMiniFix() 
    Dim RetVal As Long 
    On Error Resume Next 
    RetVal = ShellExecute(0, "open", "C:\Program Files\MiniFix\MiniFix.exe", "<arguments>", _ 
         "<run in folder>", SW_SHOWMAXIMIZED) 
End Function 

現在,激活模塊時,一切都運行得很好,exe文件運行。

  • 在MS Access,我建立基於一個一個數據宏 '如果則' 語句,詢問 如果[用戶]![年齡]> x和然後調用建設 - 在調用RunMiniFix函數的操作目錄中的RunCode事件中。 現在,當保存數據宏時,ms訪問會彈出一個消息框,指出Microsoft訪問沒有能力找到我在短語中提到的名稱「Users」,並建議我在表單中尋找正確的控件。 「表格」?是的,表格! 此數據庫不是基於表單的。我沒有gui設計過這樣的東西。我沒有按鈕或點擊事件來處理。 我問的是如何在年齡字段被修改時觸發RunMiniFix模塊。請,這是非常重要的!

    謝謝你,

    oron。

  • 回答

    0

    請使用從數據宏操作列表setLocalVar並設置表達你的函數 樣品名稱: 名稱「測試」 表達= RunMiniFix()

    +0

    感謝您的哈桑幫了我很多。雖然我必須問,有沒有辦法在MS Access 2007中做到這一點? – oron

    +0

    o.k,現在我有另一個問題了......我試圖在vb.net中使用winform應用程序更改訪問數據庫中的字段值。當字段在應用程序中改變時什麼都沒有發生。當我通過數據庫手動更改字段時,它會觸發該函數。爲什麼是這樣的,我該如何解決它?非常感謝! – oron