2013-02-15 41 views
3

當我將訪問窗體ActivityTracker打開到新記錄時,我希望它使用當前時間now()自動填充字段* start_time *。無法使用新記錄設置Access窗體中的字段值

Private Sub Form_Open(Cancel As Integer) 
    If IsNull(Form_ActivityEntry.Start_time) And IsNull(Form_ActivityEntry.id) Then 
     Form_ActivityEntry.Start_time = Now() 
    End If 
End Sub 

這會引發錯誤「您無法爲此對象賦值」並停止執行。

我可以明確地去一個新的紀錄由

Private Sub Form_Open(Cancel As Integer) 
    If IsNull(Form_ActivityEntry.Start_time) And IsNull(Form_ActivityEntry.id) Then 
     Me.Recordset.AddNew 
     Form_ActivityEntry.Start_time = Now() 
    End If 
End Sub 

但無論這些原因一個彈出警告

Private Sub Form_Open(Cancel As Integer) 
    If IsNull(Form_ActivityEntry.Start_time) And IsNull(Form_ActivityEntry.id) Then 
     DoCmd.RunCommand acCmdRecordsGoToNew 
     Form_ActivityEntry.Start_time = Now() 
    End If 
End Sub 

或修正錯誤,「你不能去到指定的記錄。」

我試圖抑制警告本

DoCmd.SetWarnings False 
    DoCmd.RunCommand acCmdRecordsGoToNew 
    DoCmd.SetWarnings True 

或通過設置錯誤處理,

On Error GoTo Err_SomeName 

,但我仍然得到警告。

AllowAdditions設置爲True。記錄集類型是Dynaset。

否則,一切工作正常,這種形式。

我在做什麼錯?是否有「開放新紀錄」而不是「開放式」的事件?

感謝您的幫助!

回答

3

我建議您將控件的默認值設置爲Now()或Date()。默認值僅適用於新記錄,並且一旦您完成任何其他字段,該值就會被分配。

在這種特殊情況下,甚至有一個參數用於設置表中字段的默認值。

,請不要使用設置警告:What's the difference between DoCmd.SetWarnings and CurrentDB.Execute

+0

荷馬說,「哦!」這太明顯了。 :-)當我創建表單時,我想到了這一點,但選擇不這樣做,因爲我認爲我想讓它啓動。 – MrMoxy 2013-02-15 23:49:51

-1

我不是移動到一個新的記錄表單上的粉絲。有太多的數據漏洞可能會發生,並且遇到像您這樣的問題。

我建議您爲每個要添加的字段填入一個空白的未綁定表格,並帶有文本框,calander conrol,數字向下......等。通過這種方式,您可以鍵入檢查每個字段或根據需要進行其他檢查。然後,當用戶很高興時,然後用插入查詢添加記錄。

然而,你問的問題。它看起來像你試圖給綁定字段賦值。嘗試將值分配給該字段綁定的對象。

5

這裏的問題仍然沒有人正確回答爲什麼發佈的代碼不起作用。

原因爲什麼您使用的是公開事件。

不像。網絡和大多數系統訪問都有一個很好的設計,當你有一個打開的表單事件(可以取消)和一個有效的事件時,你有兩個事件發生。

這極大訪問的設計意味着代碼試驗條件和防止形式負載可以被放置在上打開事件。如果你看看CLOSE,你會發現即使有開放也有取消。如果您設置取消=真,那麼表單將不會加載,也不會顯示。

所以,你可以測試沒有數據,或用戶權限或任何其他,並且小屋取消表單加載。如果你可以取消表單加載,那麼允許修改綁定控件的值是沒有意義的 - 因爲所有的綁定控件都是隻讀的。

您不允許更改公開事件中BOUND控件的值。這很快就會過時,並且通過產品的設計和意圖。

因此,測試條件以防止表單負載進入公開狀態。

因此,這表明,變量,,的控制設置,設置的控制值,你的基本形式啓動代碼安裝在有載事件所屬。開啓時間太早。

如果您的代碼要取消一個表單負荷的:原因和,那麼它是合乎邏輯的,你的所有形式的啓動和設置代碼不應該,也不需要運行。

總之

在開事件:

可以設置取消=真 代碼都在這裏進行測試,如果你想阻止加載形式和被用戶看到。

載事件:

你所有的啓動代碼,變量的設置,控件等設置現在推薦和可能。

而且在訪問這個簡單的設計也意味着,作爲一個開發者,你現在知道去哪裏找有阻止和取消形式加載代碼。當然,如果沒有這種對差異的基本理解,爲什麼Access中存在兩個事件,那麼混淆海報和給出的答案就顯而易見了。

相關問題