在没有公开参数的情况下在单一表单视图中创建新记录

Create a new record in single form view without open arguments

我有两个具有不同视图的表单链接到同一个 table:连续表单和单一表单。

连续表格列出了 table 中可用的所有记录,并带有添加、编辑和删除选项。表单已锁定,无法添加、编辑和删除。

单表用于载入记录,对用户select以连续表编辑的记录进行添加和编辑。

如果用户希望编辑记录,他必须 select 记录并单击编辑按钮。然后我将开放参数中的 ID(主键)传递给 "Single form" 进行编辑。

为了添加新记录,我目前正在一个列中输入一些空数据以生成 ID,然后将 ID 发送到 "Single form",类似于编辑记录。

这个方法的问题是:我强迫用户在系统中输入一条记录。目前,我没有设置验证规则,并且有很多空白记录,因为用户错误地点击了添加按钮。在某些时候,我想加入验证规则。这使得用户很难在不输入一些数据的情况下退出表单。

有没有一种方法可以导航到 "single form" 中的新记录,而无需在 "Continuous form" 中创建新记录,如果用户拒绝 "Save Changes?"

,则撤消

提前致谢!

If the user wishes to edit a record, he has to select the record and click on edit button. Then I pass the ID (Primary key) in open arguments to "Single form" for editing.

不要那样做。只需在新记录上打开表格而不输入任何内容。

  • 如果用户后悔并关闭表单,则不会有新的记录 已保存
  • 如果用户输入了一些数据但后悔了,一个或多个按键 按 Esc 将取消记录
  • 如果用户输入一些数据并关闭 表格,记录将被保存

当然,ID 必须是自动编号。

我修改了连续表单的添加和编辑按钮代码如下:

Private Sub AddButton_Click()
   DoCmd.Close acForm, "frmContinuous"
   DoCmd.OpenForm "frmSingle", OpenArgs:="Add"
End Sub
Private Sub EditButton_Click()
    ' Variables
    Dim ProdID As Integer
    Dim rs As Recordset
    ' Check if there is a record selected
    Set rs = Me.Recordset
    If rs.EOF = True Then
        MsgBox prompt:="No record selected", title:="Oops!"
        Set rs = Nothing
        Exit Sub
    End If
    ' Send Prod ID to Single form for editing
    ProdID = Me!ProdID
    DoCmd.Close acForm, "frmProduction"
    DoCmd.OpenForm "frmProductionReporting", OpenArgs:=ProdID
End Sub

单窗体打开事件如下:

Private Sub Form_Open(Cancel As Integer)
   If Nz(OpenArgs, "") = "Add" Then
        Me.RecordSource = "tbltemp"
        DoCmd.RunCommand acCmdRecordsGoToNew
    Else
        Me.RecordSource = "SELECT tbltemp.* FROM tbltemp WHERE (((tbltemp.ProdID)=" & Me.OpenArgs & "));"
    End If
End Sub

这对我有用。