2016-08-02 85 views
1

我有一個報告列出了存款,並將存款ID設置爲超鏈接。 OnClick存款ID,它打開存款條目表格到那個特定的記錄。但是,表單會打開一個新記錄,而不是用戶點擊的記錄。我認爲這是因爲我有另一個運行OnLoad的代碼來執行新的記錄,並且它可能在執行OnClick代碼後執行。訪問VBA - 從報表打開窗體到特定記錄

DepositID從報告的OnClick:

DoCmd.OpenForm "DepositForm", acNormal, "", "[DepositID]= " & [DepositID] 

的OnLoad形式:

DoCmd.GoToRecord , , acNewRec 

是的OnClick代碼運行後在onload代碼,並有效地不顯示從報表中指定的記錄?不知道如何解決。

+2

有一種快速簡單的方法來檢查打印調試的功能!你是否試過在每個事件處理程序中放置一個'Debug.Print「Here或'MsgBox」Here?給他們不同的信息,你將能夠看到哪些信號按什麼順序觸發。如果在OnClick之後觸發OnLoad,您將能夠看到它。 – Mikegrann

+0

絕對的,表單打開的順序是「Open> Load> Resize> Activate> Current」。您可以移除OpenForm調用的Criteria部分,只需將'DepositID'移動到該語句的末尾(作爲打開的參數)。然後簡單地檢查打開參數的「打開」 - 如果沒有出現新記錄。 –

回答

2

我不會在OnLoad事件中使用AddNewRecord。

如果您使用的形成要編輯/添加的目的,你應該有一個開放的形式,兩個命令按鈕 - 每個目的

從的Form_Load

刪除此行
DoCmd.GoToRecord , , acNewRec 

使用你現在所擁有的正是因爲是編輯命令 - 或添加編輯模式

DoCmd.OpenForm "DepositForm", acNormal, "", "[DepositID]= " & [DepositID], acFormEdit 

添加一個新的按鈕添加新記錄如下所示:

DoCmd.OpenForm "DepositForm", acNormal, , , acFormAdd 
+0

這是一個完美的解決方案! – user646464