如何阻止MS访问覆盖以前的记录



如何停止访问2016以停止擦除以前保存的记录中的数据?

非常感谢任何改进/建议

(这是我用有限的知识所能做的最好的事情(

有以下字段:Text7、ID、UPK、CheckTime。要保存回表的数据只是每个扫描项目的检查时间字段。

表:

-ID自动编号|-UPK编号|-CheckTime日期/时间|-Text7(是唯一未绑定的控件(

我需要能够做到这一点:

  1. 扫描Text7上的值
  2. 更新后,在表中搜索该值(已存在(,请参阅下面的Text7_AfterUpdate事件
  3. Text7_AfterUpdate事件将数据填充到表单中
  4. 自动计算Now((并将其添加到CheckTime字段(该字段在表中为空(
  5. 保存记录
  6. 清除所有txtboxes
  7. 将焦点放回文本7
  8. 移动到最后一个空记录并准备好接收下一次扫描

**编辑感谢@Jiggles32**

注意:取消了对我的知识水平来说过于繁琐的VBA代码,尝试了@Minty的建议,并进行了查询

我想我现在看得更清楚了。看起来您希望保存在新记录上,而不是已经存在的记录上。

这就是导致该问题的原因:

rs.FindFirst "[UPK]=" & Text7
If rs.NoMatch Then
MsgBox "Sorry, no such record '" & Text7 & "' was found.", _
vbOKOnly + vbInformation
Else
Me.Recordset.Bookmark = rs.Bookmark
End If
rs.Close

基本上,这部分代码是查找包含Text7中的UPK值的记录的第一个实例,并将该记录设置为当前记录集。将表单上的信息添加书签。因此,如果表中已经有一个值具有相同的UPK,它只会覆盖该值。

我确信你可以用这个来实现你想要的结果:

Dim ctrl As Control
...
'Update CheckTime to current time (for current UPK), save, and close
rs.AddNew
rs!UPK = Me.Text7
rs!CheckTime = Now()
rs.Update
rs.Close
Set rs = Nothing
'Clear all text boxes
For Each ctrl In Me.Controls
If (ctrl.ControlType = acTextBox) Then
ctrl.Value = Null
End If
Next ctrl
'Reset focus on Text7
Me.Text7.SetFocus

您仍然需要在...部分中设置记录集等。

最新更新