MS ACCESS 中的组合框显示所有可能的结果
Posted
技术标签:
【中文标题】MS ACCESS 中的组合框显示所有可能的结果【英文标题】:Having Combo Box in MS ACCESS show all possible results 【发布时间】:2021-04-12 11:37:36 【问题描述】:我有一个包含很多列的非常宽的数据集。大多数只有 2-6 个可能的选项。用户将来可能对这些列有不同的选择。
我的解决方案是使用 MS Access 创建一个搜索表单,以允许用户根据输入查找记录,其中大部分列是组合框。
我已经成功地为我的组合框获取了不同的值并返回了值,但是当例如选择“是”时,我只返回了一条记录,即使我的数据集有很多匹配的是。我尝试使用用 * 封装的 LIKE 甚至硬线 YES 但得到相同的结果。当我选择“否”时,我没有得到任何结果,我希望得到一条“否”的记录。 我怎样才能得到所有的记录?我也希望我的组合框以空白开头,或者包含一个空白选项。
我的行源
SELECT DISTINCT WeddingList.[Location Shots/drone shots] FROM WeddingList;
我的“更新后”VBA
Private Sub cboLocationShot_AfterUpdate()
Dim locationShot As String
locationShot = "Select * from WeddingList Where ([Location Shots/drone shots] LIKE '*" & Me.cboLocationShot & "*')"
'locationShot = "SELECT * from WeddingList WHERE [Location Shots/drone shots] LIKE '*YES*'"
Me.WeddingList_subform2.Form.RecordSource = locationShot
Me.WeddingList_subform2.Form.Requery
Screenshot of my Form
【问题讨论】:
但是我只返回一条记录 - 在哪里?这还不清楚。 我编辑了我的问题,如果可以澄清问题,请告诉我。 嗯,这应该(两者)都有效。要检查的事项:子表单上是否有任何其他过滤器? -- How to debug dynamic SQL in VBA 即将生成的 SQL 粘贴到新查询中。 子表单上没有任何其他过滤器。这将是我的第一个组合框,但是一旦我掌握了语法,我将不得不创建更多组合框。 另外,我将我的 SQL 运行到 SQL 视图中的一个新查询中,并且输出符合预期。即我必须硬编码 NO 和 YES 值,因为我不能使用 Me.cboLocationShot 但它返回了选择时匹配 YES 的所有记录以及选择时匹配 NO 的所有记录。 【参考方案1】:在您的代码中,“LIKE”匹配中没有指定与您的组合框相关的列。匹配将发生在绑定列上 - 通常是组合框中的第一个。
【讨论】:
好的,你能解释一下我应该如何修改我的代码吗?就像你说的,它似乎只匹配或不匹配第一条记录,具体取决于选项。该列是[位置拍摄/无人机拍摄] 在 where 子句中,可以通过添加 column 属性来澄清您匹配的组合框列,如下所示:Me.cboLocationShot.column(0)。列像数组一样编号,从零开始。确定行源中要匹配的列的位置。例如,如果要匹配的列是查询中的第二列,则语法为:Me.cboLocationShot.column(1)。 所以你建议 locationShot = "Select * from WeddingList Where ([Location Shots/drone shot] LIKE '" & Me.cboLocationShot.Column(3) & "' )" 如果是这样,这将不起作用。 Where 子句左侧是您要比较数据的位置,右侧是必须满足的条件。我认为以这种方式将一列与一列进行比较。所以 cboLocationShot 是我的组合框的名称,应该存储组合框选择的结果。这通常适用于我的测试。现在我想在表单中查找该值并获取所有匹配的记录。 谢谢你的帮助顺便说一句!我想知道您是否建议我的组合框可以有多个列,这最初是正确的。但是,为了获得 Distinct 列,我必须不包含标识列,所以我只返回 1 列。【参考方案2】:这就是解决我的问题的方法。
Select * FROM Mytable Order By Desc
运行表单
重新添加来自我的组合框的逻辑。
【讨论】:
以上是关于MS ACCESS 中的组合框显示所有可能的结果的主要内容,如果未能解决你的问题,请参考以下文章