双击MS Access ListBox打开表单到特定记录但无法编辑

时间:2017-01-10 06:07:57

标签: vba ms-access access-vba

我有一个Access数据库,其中包含一个患者入院表格,其中列出了列出患者所有程序的列表框。列表框包含ProcedureID,ProcedureDate和ProcedureTitle。列表框绑定到1或procedureID。

我有一个打开过程表单的列表框的双击事件。该表单具有选项卡子表单,其中包含与该过程相关的各种数据。

表单将打开正确的记录,并在表单和子表单中显示相关数据。问题是当我尝试编辑过程表单上的数据时,我收到以下错误消息..

you can't assign a value to this object

错误指向我的程序表单上的on dirty事件。这只是一个问题,如果我尝试编辑父表单中的数据,子表单工作正常,并接受任何编辑。

我在列表框中的双击事件中有这段代码

Private Sub lst_Procedure_DblClick(Cancel As Integer)

  'double click to open procedure form to the selected record

  Dim ProcID As Long

  ProcID = Me!lst_Procedure

  DoCmd.Close acForm, "frm_Admission"
  DoCmd.OpenForm "frm_Procedure", , , "[ProcedureID] = " & ProcID

End Sub

并在程序表单上打开正确记录的代码

Private Sub Form_Dirty(Cancel As Integer)

  'open Procedure form to record selected in procedure list
   Me.ProcedureID = Me.OpenArgs

End Sub

任何建议都将不胜感激。我试过在onLoad而不是onDirty接收openargs但是无济于事。

1 个答案:

答案 0 :(得分:0)

DoCmd.OpenForm "frm_Procedure", , , "[ProcedureID] = " & ProcID

打开包含现有记录的表单。您使用WhereCondition OpenForm参数。 https://msdn.microsoft.com/en-us/library/office/ff820845.aspx

因此无需在打开的表单中设置Me.ProcedureID。只需删除Dirty事件过程。

我猜ProcedureID是主键和自动编号? 无法更改自动编号值。