2013-07-11 59 views
1

此次訪問問題。我有一個綁定到某個表的表單,我希望這個表單只允許通過點擊一個「保存」按鈕來添加新的條目(而不是編輯或刪除)。第一個問題是在編輯文本框時更新了記錄。我有解決方案有幾個問題Access 2010 VBA手動保存記錄

Option Compare Database 
Option Explicit 

Private bSaveRecord As Boolean 

Private Sub btCreateRecord_Click() 
    bSaveRecord = True 
    Me.tblUMgmtUser_UserDetailsID.Value = Me.tblUMgmtUserDetails_UserDetailsID.Value 
    Me.tbSetUserHashPW = "12312" 
    Me.cbSetInitPW = True 
    DoCmd.GoToRecord , , acNext 
End Sub 

Private Sub btResetRecord_Click() 
    ResetRecord 
End Sub 

Private Sub Form_AfterUpdate() 
    bSaveRecord = False 
End Sub 

Private Sub Form_BeforeUpdate(Cancel As Integer) 
    If Not bSaveRecord Then 
     Cancel = True 
     Me.Undo 
    End If 
End Sub 

Private Sub Form_Load() 
    Me.Username.SetFocus 
    DoCmd.GoToRecord , , acNewRec 
    bSaveRecord = False 
End Sub 

Private Sub ResetRecord() 
    Dim cControl As Control 

    bSaveRecord = False 
    For Each cControl In Me.Controls 
     If cControl.Name Like "Text*" Then cControl = vbNullString 
    Next 
    Me.cbResponsible.Value = False 
    Me.Undo 
End Sub 

問題1:我來補充隱藏的文本框將值保存到我要自動生成記錄

問題2:標識柱每一次計數我打開表格,即使我之前沒有添加記錄

通常我的解決方案並不覺得很健壯和優雅。任何建議都非常讚賞

非常感謝 喬恩

+2

你有創建一個表單,並在屬性形成不斷變化的數據錄入是的選項?這將打開一個空白表格,只允許添加。 – Grant

回答

1

您是直接綁定數據錄入形式到目標表。因此,當用戶輸入數據時,他們直接編輯表格,包括創建新記錄。這就是ID自動遞增的原因(因爲用戶立即創建新記錄)。您當前的部分解決方法是使用隱藏文本框來存儲值。

您的數據錄入表單的目標聽起來像是一種常見的情況。試試這個:

  1. 首先,不要將目標表設置爲表單的源。現在將源代碼留空,並且所有的域都解除綁定。由於它們現在是分開的,因此用戶不能僅通過輸入數據來編輯現有記錄或添加新記錄。事實上,如果用戶只是輸入數據並關閉表單,則不會發生任何事情。

  2. 繼續前進,並使您的保存按鈕。此按鈕將驗證數據以確保它是您想要的,然後創建並執行SQL插入查詢以將數據添加到目標表中。

+0

我擔心我必須這樣。謝謝,我會採取這種方式 – JonBlumfeld