我有两个具有不同视图的表格链接到同一张表:连续表格和单一表格。
连续表单列出了表中所有可用的记录以及添加,编辑和删除选项。表单被锁定以进行添加,编辑和删除。
单个表单用于加载记录以进行添加和编辑用户以连续形式选择的记录。
如果用户希望编辑记录,则他必须选择记录并单击编辑按钮。然后,我将开放参数中的ID(主键)传递给“单一表单”以进行编辑。
[为了添加新记录,我目前正在一列中输入一些空数据以生成ID,然后将其发送到类似于编辑记录的“单一表单”。
此方法的问题是:我强迫用户在系统中输入一条记录。当前,我没有设置验证规则,并且由于用户错误地单击添加按钮,因此有很多空白记录。在某些时候,我想提出验证规则。这使用户很难在不输入某些数据的情况下退出表单。
是否有一种方法可以导航到“单一表单”中的新记录,而无需以“连续表单”创建一个新记录;如果用户对“保存更改”拒绝,则可以撤消该记录?
提前感谢!
如果用户希望编辑记录,则必须选择该记录并单击编辑按钮。然后我打开ID(主键)“ Single form”的参数进行编辑。
不要那样做。只需在新记录上打开表单,而无需输入任何内容。
当然,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
这对我有用。