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

问题描述 投票:0回答:2

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

连续表单列出了表中所有可用的记录以及添加,编辑和删除选项。表单被锁定以进行添加,编辑和删除。

单个表单用于加载记录以进行添加和编辑用户以连续形式选择的记录。

如果用户希望编辑记录,则他必须选择记录并单击编辑按钮。然后,我将开放参数中的ID(主键)传递给“单一表单”以进行编辑。

[为了添加新记录,我目前正在一列中输入一些空数据以生成ID,然后将其发送到类似于编辑记录的“单一表单”。

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

是否有一种方法可以导航到“单一表单”中的新记录,而无需以“连续表单”创建一个新记录;如果用户对“保存更改”拒绝,则可以撤消该记录?

提前感谢!

ms-access access-vba ms-access-2016
2个回答
0
投票

如果用户希望编辑记录,则必须选择该记录并单击编辑按钮。然后我打开ID(主键)“ Single form”的参数进行编辑。

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

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

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


0
投票

我将连续形式的添加和编辑按钮代码修改为以下内容:

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

这对我有用。

© www.soinside.com 2019 - 2024. All rights reserved.