2017-03-15 46 views
0

我为工作组建立了一个MS Access课程管理工具。我有一个表格,最终用户可以为特定课程添加培训材料。表格中的一个字段要求特定医院使用该材料。为了填充这个表单,用户点击一个按钮,弹出一个表单(“sbfrmcoursematerialsite”),列出我们系统中所有可能的医院列表,用户可以多选。MS Access VBA:正确引用一个子表格

SELECT pklistEntSites.Site FROM pklistEntSites UNION SELECT "   [Enterprise]" FROM pklistEntSites 
ORDER BY pklistEntSites.Site; 

这多选地连接了医院的缩写,并在“sbfrmTrainingElements”创建一个字符串插入到“网站”领域(这是一个名为txtSite txtBox控制源:形式使用该SQL代码填充)。我的问题是,当我点击“sbfrmcoursematerialsite”上的Ok按钮时,出现错误消息:无法执行此操作。我的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

尝试添加* Form *对象参考:'[Forms]![frmFullCourseInfo]![sbfrmTrainingElements] .Form![Site]' – Parfait

+0

@Parfait:同时强调'sbfrmTrainingElements'必须是子窗体的名称_control_形式'frmFullCourseInfo'。 – Gustav

回答

0

必须引用子窗体容器控件。我总是给容器一个与它所持有的对象不同的名称,比如ctrTraining。

[窗体]![frmFullCourseInfo]![ctrTraining]![现场]

0

谢谢您的帮助。我发现问题是什么。 “Site”字段实际上有一个与之相关的查找(lookup是由一个已经离开项目的同事创建的)。我试图通过删除查找选项卡中的信息来删除查找,尽管这仍然保留了某种查找功能。我所要做的就是删除这个字段,并创建一个具有相同名称的新字段。现在一切正常。再次感谢!