1

这次是访问问题。我有一个绑定到某个表的表单,我希望这个表单只允许通过单击“保存”按钮添加新条目(而不是编辑或删除)。第一个问题是在编辑文本框时更新了记录。我的解决方案有几个问题

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:每次打开表单时ID列都会增加,即使我之前没有添加记录

一般来说,我的解决方案感觉不是很健壮和优雅。非常感谢任何建议

非常感谢乔恩

4

2 回答 2

1

您将数据输入表单直接绑定到目标表。结果,当用户输入数据时,他们直接编辑表,包括创建新记录。这就是 ID 自动递增的原因(因为用户会立即创建新记录)。您当前的部分解决方法是使用隐藏的文本框来存储值。

您的数据输入表单的目标听起来很常见。试试这个:

  1. 首先,不要将目标表设置为表单的源。暂时将源留空,并且您的所有字段都未绑定。由于它们现在是分开的,因此用户不能仅通过输入数据来编辑现有记录或添加新记录。事实上,如果用户只是输入数据然后关闭表单,什么都不会发生。

  2. 继续并制作您的保存按钮。此按钮将验证数据以确保它是您想要的,然后创建并执行 SQL 插入查询以将数据添加到目标表中。

于 2013-07-11T16:17:03.370 回答
1

这不是我的解决方案,但它允许您使用绑定字段,同时防止它们自动更新。

http://bytes.com/topic/access/insights/891249-how-stop-bound-forms-updating-automatically

于 2013-07-16T13:18:14.610 回答