【发布时间】:2016-05-04 13:22:31
【问题描述】:
我想在插入新记录时自动为用户提供默认值。对我来说重要的是,当用户希望开始将数据输入到记录中时,应该提供这些默认值,而不仅仅是在记录完成之后。
这个问题与Field default value from query in MS Access基本相同,只是默认值是基于另一个表的,而在这种情况下,我希望根据上次创建的记录填写默认值,这不起作用正如 user7116 在他的评论中指出的那样。
(澄清:那里提到的方法,使用表单控件的默认值,最初确实有效。问题是当用户弄脏新记录时,访问已经为下一个,未来的新记录设置了默认值。问题是,此时第一个新记录还不存在,因此默认值将基于之前的记录,因为那将是 Dlookup 和 DMax 将看到的。)
我尝试使用表单的Current 事件来初始化默认值:
Private Sub Form_Current()
If Form.NewRecord Then
Clinic = DLookup("Clinic", "Invoices", "InvoiceID = " & DMax("InvoiceID", "Invoices")) 'Default to the same clinic as the last record
[Tax receipt number] = DMax("[Tax receipt number]", "Invoices") + 1 'Basically autonumber, but editable
End If
End Sub
这很好用,也就是说,除非用户删除表单上的最后一条记录,否则删除记录没有成功。我的实验表明,下一条记录的 Current 事件(在本例中是一条新记录)甚至在 BeforeDelConfirm 事件之前被调用(尽管 the documentation 暗示 Current 事件没有“直到所有记录都被删除”),我想编辑记录会阻止删除被执行。
我应该如何解决这个问题?有没有办法从Current 事件中检测到它正在删除不同的记录,并且不应该中断它?
【问题讨论】: