2011-12-20 22 views
0

這是一段時間,因爲我必須對Access項目做任何事情,所以請原諒我,如果這很容易。Access 2007項目表單不允許輸入/更新數據的問題

我有一個Access 2007數據庫,我已經轉換成Access 2007項目。我在SQL 2008服務器上創建了所有表&視圖,並授予了所有必需的權限並開始測試。

我遇到麻煩的是,我有一個用於更新數據的表單。表單是從視圖中提取的(視圖中的所有表都有主鍵),視圖是模式綁定的。在一些字段的表單中,我有一個「更改」事件處理程序,用於更新「Last_Worked」字段,以便我們可以跟蹤這些字段上次更改的時間。 (SQL服務器中的「Last_Worked」字段是「datetime」)事件處理程序基本上是「Last_Worked = Now()」。

問題是,對於那些我有一個「更改」事件處理程序的領域,我不能把任何東西放到這些領域,我開始輸入,並沒有任何顯示在該字段中。當我檢查表中的「Last_Worked」字段時,它正在更新,但是我試圖從表單中更改的字段沒有更改。

我可以更新數據並從數據視圖插入新記錄,因此提供表單的視圖不是隻讀的。如果我刪除事件處理程序,問題就會消失,但我需要記錄更新這些字段的時間。我在事件處理程序中嘗試過「我!Last_Worked = Now()」和「Me!Last_Worked.Value = Now()」,並且遇到同樣的問題,我無法更新/編輯這些字段。

這在Access中完美工作,我甚至創建了一個空白的Access數據庫,將表格複製過來,創建鏈接表到服務器中的視圖,它的工作。它只是不能用作訪問項目。

任何幫助,將不勝感激。

回答

0

當你說事件處理程序,你的意思是你已經設置了控制源?如果您需要控制數據輸入,則不能這樣做。還要注意,更改事件會針對每一個小改動運行。您可以使用新記錄的默認值,也可以在某個相關控件的更新事件中運行某些VBA。我估計在這種情況下你需要:

Private Sub Form_BeforeUpdate(Cancel As Integer) 
    Me.LastChanged = Now() 
End Sub 
+0

對不起,遲到的回覆,一直很忙。至於「事件處理程序」,我的意思是像變化,BeforeUpdate等,我已經解決了問題,通過將代碼移動到AfterUpdate,它工作得很好。謝謝您的幫助。 – ByerRA 2012-01-12 15:02:48

+0

@ByerRA表單更新後的表單不是用於更改表單上任何內容的好事件,因爲它會導致無限循環。我確定你必須使用控件的after update事件或以其他方式更新數據。 – Fionnuala 2012-01-12 15:23:39

相關問題