我已经为我的小组在工作中建立了一个MS Access课程管理工具。我有一个表单,最终用户可以在其中添加特定课程的培训材料。表单中的一个字段要求提供材料所用于的特定医院。要填充此表单,用户单击一个按钮,该按钮将打开一个表单("sbfrmcoursematerialsite"),其中包含系统中用户可以多选的所有可能医院的列表。表单是使用以下SQL代码填充的:
SELECT pklistEntSites.Site FROM pklistEntSites UNION SELECT " [Enterprise]" FROM pklistEntSites
ORDER BY pklistEntSites.Site;这个多重选择将医院缩写连接在一起,并创建一个字符串插入到"sbfrmTrainingElements“(这是名为txtSite的txtBox的控件源)中的"Site”字段中。我的问题是,当我单击"sbfrmcoursematerialsite“上的Ok按钮时,我得到一个错误消息: Cannot Perform this Operation。下面是"sbfrmcoursematerialsite“表单中包含的VBA代码。连接函数正在工作,但错误出现在代码中粗体显示的行上。我没有正确地引用要添加数据的子窗体吗?
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发布于 2017-03-16 11:01:04
必须引用该子窗体容器控件。我总是给容器起一个与它持有的对象不同的名称,比如ctrTraining。
表单
发布于 2017-03-17 01:22:25
谢谢你的帮助。我发现了问题所在。字段"Site“实际上有一个与之相关联的查找(lookup是由一位后来离开项目的同事创建的)。我试图通过删除lookup选项卡中的信息来删除查找,尽管如此,它仍然保留了某种查找功能。我所要做的就是删除这个字段,并创建一个同名的新字段。现在一切都很好。再次感谢!
https://stackoverflow.com/questions/42822436
复制相似问题