2013-07-11 57 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