我为我的小组在工作中构建了一个MS Access课程管理工具。我有一个表单,最终用户可以为特定课程添加培训材料。表格中的一个字段要求使用该材料的特定医院。要填充此表单,用户单击一个按钮,该按钮会显示一个表单(“sbfrmcoursematerialsite”),其中包含用户可以多选的系统中所有可能医院的列表。使用此SQL代码填充表单:
SELECT pklistEntSites.Site FROM pklistEntSites UNION SELECT " [Enterprise]" FROM pklistEntSites
ORDER BY pklistEntSites.Site;
此multiselect连接医院缩写并创建一个字符串以插入“sbfrmTrainingElements”(这是一个名为txtSite的txtBox的控件源)的“Site”字段中。我的问题是,当我点击“sbfrmcoursematerialsite”上的“确定”按钮时,我收到一条错误消息:无法执行此操作。我的VBA代码包含在“sbfrmcoursematerialsite”表单中,如下所示。连接函数正在运行,但错误发生在代码中以粗体显示的行上。我没有正确引用我想要添加数据的子表单吗?
Private Sub cmdOk_Click()
Dim teID As Integer
Me.Refresh
teID = Me.txtTrainingElementID 'Document Training Element ID
DoCmd.SetWarnings False
'Update the Site field in tblTrainingElements for the specific training element
'DoCmd.RunSQL "UPDATE tblTrainingElements SET [Site] = '" & Me.txtSelectedSites & "' WHERE [Training Element ID] = " & teID & ";"
'Debug.Print Me.txtSite.Value
Debug.Print [Forms]![frmFullCourseInfo]![sbfrmTrainingElements]! [Site].Value
**[Forms]![frmFullCourseInfo]![sbfrmTrainingElements]![Site].Value = Me.txtSelectedSites**
DoCmd.SetWarnings True
'Close the site select form
DoCmd.Close
End Sub
Private Sub Form_Load()
'Show current site selection
Me.txtSelectedSites = [Forms]![frmFullCourseInfo]! [sbfrmTrainingElements]![Site]
'Pass the training element ID from the last screen to current form
Dim i As Integer
i = CInt(Me.OpenArgs)
Me.txtTrainingElementID.Value = i
End Sub
Private Sub lboAllSites_Click()
Dim strSelected As String
Dim varItem As Variant
With Me.lboAllSites
For Each varItem In .ItemsSelected
strSelected = strSelected & "," & .ItemData(varItem)
Next varItem
Me.txtSelectedSites = Mid(strSelected, 2)
End With
End Sub
答案 0 :(得分:0)
必须引用子窗体容器控件。我总是给容器一个与它所拥有的对象不同的名字,比如ctrTraining。
[表格]![frmFullCourseInfo]![ctrTraining]![网站]
答案 1 :(得分:0)
感谢您的帮助。我发现了问题所在。 “Site”字段实际上有一个与之关联的查找(查找是由一位已离开项目的同事创建的)。我试图通过删除查找选项卡中的信息来删除查找,尽管它仍然保留了某种查找功能。我要做的是删除此字段,并创建一个具有相同名称的新字段。现在一切都很好。再次感谢!