ms-access - 如何在与表中的值相关的多选列表框中自动选择项目?
问题描述
到目前为止,我已经完成了与此相反的操作——我已经根据在多选列表框中所做的选择将记录输入到表中。多选列表框命名为“lstboxColor”,表命名为 tblColors。这是通过以下代码完成的:
Set rs = New ADODB.Recordset
Dim itm As Variant
cnnLocal.CursorLocation = adUseClient 'avoid error 3705
'SET UP A LOOP TO ADD A COLOR RECORD IN THE COLORS TABLE FOR EACH SELECTED COLOR
rs.Open "tblColors", cnnLocal, adOpenDynamic, adLockOptimistic
For Each itm In lstboxColor.ItemsSelected
rs.AddNew
rs!CrayonID = CrayonID_HOLD
rs!ColorID = lstboxColor.ItemData(itm)
rs.Update
Next
rs.Close
所以,现在我想做相反的事情——我需要打开一个带有列表框的表单,并根据表中的值自动预选多选列表框中的项目。除了循环遍历表并使用 if 语句和 .Selected = true 之外,似乎无法弄清楚所需的方法。有任何想法吗?先感谢您。
编辑:添加了几乎可以工作的当前代码。更改了我需要做的事情 - 我正在使用 3 个表格,并且有一个组合框选择自动选择列表框中的行。代码在组合框的 AfterUpdate() 中。我添加了“Else: If rs.NoMatch Then .Selected(i) = False”——但这不是问题。认为它可能是 SQL 查询,但同样的查询在子表单中提取了正确的答案,所以我知道该查询有效。可能是我用于列表框行的查询(仅从 tblEquipment 中选择 EquipmentID 和 Equipment name)?请让我知道您对它可能仅突出显示列表框中的一行的原因有何看法。
编辑:此代码适用于 3 个表。组合框中的选择会自动选择列表框中的正确行。解决方案标记为 2 个表版本(或一个表),但概念相同。
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim i As Integer
Dim strSQL As String
Set db = CurrentDb
Set rs = db.OpenRecordset("SELECT tblMusicEquipment.EquipmentID, *
FROM tblMusic
INNER JOIN (tblEquipment INNER JOIN tblMusicEquipment
ON tblEquipment.EquipmentID = tblMusicEquipment.EquipmentID)
ON tblMusic.InstrumentID = tblMusicEquipment.InstrumentID
WHERE (((tblMusic.InstrumentID))) = " & [cboSelectInstrument])
With Me.LstEditEquip
For i = 0 To .ListCount - 1
rs.FindFirst "EquipmentID =" & .ItemData(i)
If Not rs.NoMatch Then
.Selected(i) = True
Else: If rs.NoMatch Then .Selected(i) = False
End If
Next
End With
解决方案
必须遍历列表框并与一个值进行比较以确定选择。在您的情况下,请在记录集上执行 FindFirst。如果找到匹配项,则选择项目。假设要匹配的值是数字键,请考虑:
Dim rs As DAO.Recordset, i As Integer
Set rs = CurrentDb.OpenRecordset("SELECT ColorID FROM tblColors WHERE CrayonID_HOLD=" & Me.CrayonID_HOLD)
With Me.lstboxColor
For i = 0 To .ListCount - 1
rs.FindFirst "ColorID = " & .ItemData(i)
.Selected(i) = Not rs.NoMatch
Next
End With
推荐阅读
- firebase - 我应该对数据查询进行分页吗?从 firebase 函数中获取 5000 个文档
- python - 二维数组初始化的差异
- c# - .NET Core webapi 启动时的 EF Core 查询
- go - 我可以重复使用空的或静态的 GRPC 响应吗?
- swift - 如何从 LineChartView 中删除黄色标记?| iOS 图表
- javascript - Uncaught TypeError: Cannot read properties of null (reading 'split') 是我在部署 chrome 扩展时遇到的错误
- vue.js - Vue.js 项目部署
- docker - 如何解决错误:无法访问容器组 'xxx' 中的图像 '***/xxxxx:latest'。请检查图像和注册表凭据
- log-likelihood - 使用四种情况的成对似然
- r - 比较两个相似元数据的名称和选项