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

时间:2018-07-26 21:14:12

标签: ms-access access-vba

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

Cbo_Parts是未绑定的,并且列出了表中的所有零件(“ Part_Number”字段),并且选择了零件后,表中的附件将显示在“图片(附件)”控件中。 List_Parts_Selected列表框是根据用户选择的要查看的零件列表从上一表格和其他记录源填充的,在此表格上仅供参考(只读控件)。

Part_Photos form

用户应验证列表框中的零件是否已在表格中。如果没有,请单击“添加记录”命令按钮。

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

用户可以双击列表框中的零件以填充文本框(控制源=零件编号)。然后,用户在Picture控件中单击以添加附件(控件来源= Picture),然后单击Save Photo命令按钮。对要添加到表中的每个零件/照片组合重复此操作。添加完照片后,用户单击“退出”命令。或者可以启动取消命令。

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

还不是完全相关,但是当我返回到Form 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 个答案:

答案 0 :(得分:1)

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

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