用户需要创建一个新订单。为了实现这一点,我们有一个按钮,可以打开订单表中的空白记录:
DoCmd.OpenForm "frmOrder", , , , acFormAdd
表格上来了,准备好了。但新的订单ID号显示(New)
。该字段是一个自动编号。当我在表单上的任何位置输入时,(New)
都会被ID号所取代。但我马上就要。
我想这是因为新纪录没有兑现。我可以进行初始提交,以便在打开时显示主键吗?
我尝试在Form_Load()
事件中使用RunCommand acCmdSaveRecord
强制提交,但没有成功。
这可能是个坏主意
如果您先提交,如何在不修改数据库的情况下取消订单?
默认情况下,即使为acFormAdd打开frmOrder,如果用户单击按钮[Close],也不会修改自动编号。如果通过VBA或用户触发器修改表单上的任何字段,则"自动编号"将增加1,甚至不会在末尾插入任何记录,甚至取消。
无论如何,有一种方法,假设
Me.txtOrderDate.Controlsource = "OrderDate"
然后
Private Sub Form_Load()
Me.txtOrderDate.Value = Now()
End Sub
如果您有OrderDate字段或类似字段,ID将由Access自动生成。
请注意,如果使用SQL服务器后端,则在提交记录之前不会分配ID。