首页 文章

从表单2添加新记录时,不会刷新Access 2007表单1

提问于
浏览
1

我有表1(Part_Photos),记录源设置为表(tbl_Photos) .
Tbl_Photos:Part_Number是文本字段,图片是附件字段

Cbo_Parts未绑定并列出表中的所有部分(Part_Number字段),并且当选择部件时,表中的附件显示在图片(附件)控件中 . List_Parts_Selected列表框是根据用户选择的要审阅的部分列表从前一个表单和不同的记录源填充的,并且在此表单上仅供参考(只读控件) .

Part_Photos form

用户应验证列表框中的部件是否已在表中 . 如果没有,则单击Add Record(s)命令按钮 .

Private Sub Cmd_Add_Click()

Dim ctrl As Control
Dim varItem As Variant

Set ctrl = Forms!CommercialSummary.List_PN

    DoCmd.OpenForm "Add_Part_Photos", acNormal, , , , acDialog

    'empty PN listbox on Form Add_Part_Photos
    Forms!Part_Photos.List_Parts_Selected.RowSource = vbNullString

    'Loop through selected PNs in Commercial Summary Form and copy to PN 
combo box in Photos form

    For Each varItem In ctrl.ItemsSelected
       Forms!Part_Photos.List_Parts_Selected.AddItem ctrl.Column(2, varItem)
    Next varItem

End Sub

然后打开表单2(Add_Part_Photos),使用与表单1相同的列表框 - 仅供参考,以提醒用户最初选择哪些部分进行查看 . 表格2与表格1具有相同的记录来源 .

Add_Part_Photos form

用户可以双击列表框中的某个部分来填充文本框(Control Source = Part_Number) . 然后,用户单击“图片”控件以添加附件(“控件来源=图片”),然后单击“保存照片”命令按钮 . 对于要添加到表格的每个部分/照片组合重复此操作 . 完成添加照片后,用户单击“退出”命令 . 或者可以启动取消命令 .

Private Sub Cmd_Save_Click()

    'Save the record.
    RunCommand acCmdSaveRecord
    'Load a new record after the save.
    DoCmd.GoToRecord , , acNewRec

End Sub

Private Sub Cmd_Exit_Click()

  If Me.Dirty Then
     Me.Dirty = False
  End If
  Me.Visible = False

End Sub

Private Sub Cmd_Cancel_Click()

  Me.Undo
  Me.Tag = "Cancel"
  DoCmd.Close , , acSaveNo

End Sub

返回到表单1后,只有最后添加的部分显示在组合框中 . 如何显示所有添加的部件?我尝试将此添加到Form 1 On Activate事件,但它不起作用:

Private Sub Form_Activate()
    Form.Requery
End Sub

此外,并不完全相关,但如何在返回到表单1时阻止附件控件显示表中的第一条记录?目前,它不会像最初打开时那样显示空白记录 .
Return to Form 1 - first picture in table displayed but PN's not updated
研究类似的问题,我偶然发现了这篇文章,并试图将代码插入我的数据库:Access: How can I display a new record in one form after creating in a second form

Dim lngPK as String
  If Forms!Add_Part_Photos.Tag <> "Cancel" Then
     lngPK = Forms!Add_Part_Photos!Part_Number
     Application.Echo False
     Me.Requery
     With Me.RecordsetClone
       .FindFirst "[Part_Number]=" & lngPK
       If Not .NoMatch Then
          If Me.Dirty Then
             Me.Dirty = False
          End If
          Me.Bookmark = .Bookmark
       End If
     End With
     Application.Echo True
  End If

  DoCmd.Close acForm, "Add_Part_Photos"

当我这样做时,当我返回到表单1时,只显示添加的最后一条记录 .

我是VBA的初学者,我知道这是一个很长的帖子,但我试图提供所有相关数据(我在之前的几个问题中一直在努力) . 任何可以提供的智慧都非常感谢!

1 回答

  • 1

    如果打开“添加新零件表单”作为模态对话框,则在关闭模态窗体之前,不会运行原始表单中的任何其他代码 .

    如果您要在此时重新查询原始表单,则应包含新数据 . 您还可以将新数据传递回原始表单,也可以传递给隐藏控件,然后使用它来指向新数据 .

相关问题