2016-05-13 1529 views
0

我被要求對我使用的組使用的Access數據庫中的表單進行一些修改。我不得不添加一個類似於存在的數據輸入表單,所以我複製了一個現有的表單並做了一些修改。當我點擊按鈕打開窗體來測試它時,我得到這個錯誤:MS Access OpenForm被取消 - 錯誤2501

運行時錯誤'2501' OpenForm操作被取消。

這裏是被稱爲導致此錯誤代碼:

Private Sub cmdCPE_EntryForm_Click() 
On Error GoTo Err_cmdCPE_EntryForm_Click 

    Dim stDocName As String 
    Dim stLinkCriteria As String 

    stDocName = "CPE_EntryForm" 
    DoCmd.OpenForm stDocName ', , , stLinkCriteria 

Exit_cmdCPE_EntryForm_Click: 
    Exit Sub 

Err_cmdCPE_EntryForm_Click: 
    MsgBox Err.Description 
    Resume Exit_cmdCPE_EntryForm_Click 

End Sub 

THX提前任何assitance。

+0

感覺就像當表單被複制時搞砸了一些東西。如果我將按鈕鏈接到一個新的窗體,它可以正常工作並打開它。 – JasonR

+0

問題是我在這個表單上做了很多格式化處理,所以再次做到這一點會有些勉強。如果這可以解決,那將是非常棒的! – JasonR

回答

0

運行時錯誤2501可能會在調用OpenForm方法時發生,如果數據庫出現問題。

請按照標題「從腐敗中恢復」和「症狀:無法打開表單或報告」標題下的步驟進行操作。

http://allenbrowne.com/ser-47.html

也可能是與新形式的開放或負載活動時出現問題,可能是值得張貼的代碼以及審查。

+0

非常感謝,我會考慮這一點。 – JasonR

+1

我的投注在Form_Open上。 – Andre

0

當我的表單引用不再存在的查詢時,出現此錯誤。 一旦我更新表單以指向現有的查詢,我的代碼工作正常。

0

當我想要打開包含其數據位於另一個文件夾中的子表單的表單時,發生了完全相同的錯誤。通過減少背基的路徑,這已經修復了錯誤。例如,第一條路徑是C:\Dev\Application\Vers1\Prog\Debug\myAppDB.accdb,所以我減少了路徑的長度:C:\Dev\Debug\myAppDB.accdb,這解決了問題。網絡路徑發生同樣的錯誤,我用相同的方法修復了它。

通過假設您有: 名爲「cmdOpenForm」和 一個名爲形式的命令按鈕:「myForm的」

我還添加對在此代碼單擊命令按鈕的事件:

Private Sub cmdOpenForm_Click() 
On Error GoTo Err_cmdOpenForm_Click 
    If CurrentProject.AllForms("myForm").IsLoaded = True Then 
     DoCmd.Close acForm, "myForm" 
    Else 
     DoCmd.OpenForm "myForm", acNormal, , , , acWindowNormal, Me.Form.Name 
    End If 
Exit_cmdOpenForm_Click: 
Exit Sub 
Err_cmdOpenForm_Click: 
MsgBox "Error number : " & Err.Number & vbCrLf & "Error: " & Err.Description, vbCritical 
Resume Exit_cmdOpenForm_Click 
End Sub