我有表1(Part_Photos),记录源设置为表(tbl_Photos) .
Tbl_Photos:Part_Number是文本字段,图片是附件字段
Cbo_Parts未绑定并列出表中的所有部分(Part_Number字段),并且当选择部件时,表中的附件显示在图片(附件)控件中 . List_Parts_Selected列表框是根据用户选择的要审阅的部分列表从前一个表单和不同的记录源填充的,并且在此表单上仅供参考(只读控件) .
用户应验证列表框中的部件是否已在表中 . 如果没有,则单击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具有相同的记录来源 .
用户可以双击列表框中的某个部分来填充文本框(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时阻止附件控件显示表中的第一条记录?目前,它不会像最初打开时那样显示空白记录 .
研究类似的问题,我偶然发现了这篇文章,并试图将代码插入我的数据库: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的初学者,我知道这是一个很长的帖子,但我试图提供所有相关数据(我在之前的几个问题中一直在努力) . 任何可以提供的智慧都非常感谢!