我有表格1(Part_Photos),记录源设置为表格(tbl_Photos)。
Tbl_Photos:Part_Number是文本字段,Picture是附件字段
Cbo_Parts是未绑定的,并且列出了表中的所有零件(“ Part_Number”字段),并且选择了零件后,表中的附件将显示在“图片(附件)”控件中。 List_Parts_Selected列表框是根据用户选择的要查看的零件列表从上一表格和其他记录源填充的,在此表格上仅供参考(只读控件)。
用户应验证列表框中的零件是否已在表格中。如果没有,请单击“添加记录”命令按钮。
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具有相同的记录来源。
用户可以双击列表框中的零件以填充文本框(控制源=零件编号)。然后,用户在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时,如何防止附件控件在表中显示第一条记录?当前,它不像最初打开时那样显示空白记录。 在研究类似问题时,我偶然发现了这篇文章,并尝试将代码插入到我的数据库中: 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的初学者,我知道这是一篇很长的文章,但是我试图提供所有相关数据(在之前的几个问题中我一直在努力进行)。任何能提供的智慧都将不胜感激!
答案 0 :(得分:1)
如果打开“添加新零件表格”作为模态对话框,则在关闭模态表格之前,原始表格中的其他任何代码都不会运行。
如果此时要重新查询原始表单,则应包含新数据。 您还可以将新数据传递回原始表单,也可以传递给隐藏的控件,然后使用它指向新数据。