在没有公开参数的情况下在单一表单视图中创建新记录
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
这对我有用。
我有两个具有不同视图的表单链接到同一个 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
这对我有用。