【问题标题】:How to stop MS access from overwriting previous record?如何阻止 MS 访问覆盖以前的记录?
【发布时间】:2018-07-19 13:30:07
【问题描述】:

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

非常感谢任何改进/建议!

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

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

表:

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

我需要能够做到这一点:

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

**编辑谢谢@Jiggles32 **

注意:废弃 VBA 代码对于我的知识水平来说太麻烦了,尝试了 @Minty 的建议并进行了查询

【问题讨论】:

  • 我真的很困惑你的 SaveAllRecords 函数应该做什么。发布的代码基本上什么都不做。 If Me.Dirty [no expression] Then。该代码似乎所做的只是将一个名为Checkin_Time 的变量设置为等于""(不管前面的语句如何)。你能澄清一下你试图用这个做什么吗?更具体地说,您提到您希望项目编号 5.“保存记录”,什么记录以及到哪里?你的表结构是什么样的?
  • 你的代码真的触发了吗? Text 7 是绑定的还是未绑定的?是文字还是数字?如果它的文本你应该在 rs.findfirst 中得到类型不匹配。您是否添加了一些调试以查看您的代码实际在做什么? @Jiggles IF Me.dirty 是布尔值,所以你不需要 = true 位,因为它是隐含的。
  • @Jiggles32 我已经把代码澄清了一点,谢谢
  • @Minty 我在顶部添加了一些注释,Text7 未绑定。是的,除了提到的覆盖先前记录的日期的原始问题之外,代码启动时没有错误。
  • 我想我会简单地对从未绑定表单扫描的 ID 运行更新查询,并且基于它没有检查日期。如果 ID 不存在,则会弹出警告以检查扫描。

标签: ms-access vba ms-access-2016


【解决方案1】:

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

这是导致该问题的原因:

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 值的记录的第一个实例,并将该记录设置为表单上的当前Recordset.Bookmark 信息。因此,如果表中已经存在具有相同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

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

【讨论】:

  • 感谢@Jiggles32 的快速响应;但是,由于我缺乏知识,因此存在一些误解。我正在尝试从条形码中扫描 UPK 值,在表中搜索所述值,使用 Now() 添加此值的创建时间,因为表中的字段为空,将此时间值保存回 UPK 记录,并做好准备用于下一次条码扫描。 UPK 代码已在表中。 ——
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多