首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ms-Access不使用组合框显示值作为查找值。

问ms-Access不使用组合框显示值作为查找值。
EN

Stack Overflow用户
提问于 2021-04-17 21:12:26
回答 1查看 154关注 0票数 0

注意:,我对我的原始帖子进行了大量编辑,以包含更多相关信息,并删除了一些无关紧要的信息。有些评论是基于删除的信息,但原始问题的完整性仍然完整,评论仍然是相关的和有用的。

在我的数据库中,我有一个表tblStandards,它有一个包含复合名称及其关联字段的列表。我创建了一个表单来生成一个子表单,当您选择一个混合解决方案时,它只填充复合名称及其数据(我称之为这些“句柄”)。我使用这个子形式作为一种方法,产生一个“位置查找”的所有相关化合物相关的溶液混合物“手柄”。问题是,有些化合物在多种不同的混合物中使用,因此有多个“把手”。我已经按照@June7的建议包括了一个级联组合框,但是我遇到了最后一个组合框过滤器的问题。

我不希望将一个单独的字段附加到我的tblStandards上,并使用组合框显示值(“句柄”)来过滤我的表(这是我过去所做的)。使用组合框显示值字段在我的表工作,但它是有限的,我希望使它更模块化。我有第二个表tblComboBox,它有三个字段:复合名称、Standard_InternalStd和Cal_QC_Handle。

我有级联组合箱工作,除了最后一个过滤器。我想我找到了一种基于我的桌子进行过滤的方法。我使用一个带有After_Update函数的FilterOn事件来过滤一个TempSubform,它是在将Cal_QC_Handle与cboxSecondChoice匹配的基础上过滤tblComboBox,然后使用TempSubform![Compound Names]字段作为第二个FilterOn函数。我的代码正在工作,但是第二个FilterOn只使用来自TempSubform的第一个复合名称来筛选MainSubform。我想根据我的Tempsubform.[Compound Name]中的所有行进行过滤。我认为我的问题在我的" & Me.Temsubform![Compound Name] &"代码块中。

代码语言:javascript
复制
Private Sub cboxSecondChoice_AfterUpdate()

Dim Filter_Tempsubform As String
Filter_Tempsubform = "[Cal_QC_Handle] ='" & Me.cboxSecondChoice & "'"
Forms![Standards_Form]![TempSubform].Form.FilterOn = False
Forms![Standards_Form]![TempSubform].Form.Filter = Filter_Tempsubform
Forms![Standards_Form]![TempSubform].Form.FilterOn = True

Dim Filter_MainSubform As String
Filter_MainSubform = "[Compound Name] = '" & Me.TempSubform![Compound Name] & "'"
Forms![Standards_Form]![MainSubform].Form.FilterOn = False
Forms![Standards_Form]![MainSubform].Form.Filter = Filter_MainSubform
Forms![Standards_Form]![MainSubform].Form.FilterOn = True

End Sub

问题是过滤器仅使用一个复合名称(列表中的第一个名称)进行筛选。我需要过滤器来使用--所有的--来自新过滤的TempSubform的复合名称。很抱歉,如果这是一个非常复杂的方法。到目前为止,我看到的每个示例都将组合框值嵌入到它们正在筛选的表中,这是我希望避免的。

更新

我已经放弃了我的第一次尝试(带有临时子表单的双FilterOn函数),并且我有一个工作表单!我不得不修改我的tblStandards,以包括一个新的字段,其中包含了我最后选择的组合框中的值(由于我认为这个设计的局限性,我最初想绕过这个选项)。我的表上的新Form-Handle字段是一个具有多个单“句柄”的字符串,如果最后的组合框选择(只能选择一个“句柄”)在子表单中使用通配符"Like *“,则使用该字符串。这些“手柄”中的每一个对应于一个溶液混合物,这是一个特定的化合物列表。

这个解决方案允许我有一个单一的化合物用于制造多个不同的解决方案,如果您从下拉组合框中选择这些解决方案中的任何一个,那么复合将被返回。我认为这是我的问题的最简单的解决方案,我可能只是太固执地寻找一个过于复杂的解决方案。

我从Allen Browne的ms-Access“在子表单中的字段上筛选表单”修改了代码

关系(全部)

具有级联组合框和过滤器按钮的窗体

工作代码

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-18 16:35:07

正如@June7所说,级联ComboBoxes (或ListBoxes)是对数据表进行多级过滤的标准UI设计。如果我有可用的房地产形式,我更喜欢级联ListBoxes而不是ComboBoxes,因为它们提供了视觉提示。例如,看看数字钥匙是如何实现的。级联ComboBoxes的问题已经被这里质疑致死。筛选数据的框(列表或组合框)通常是未绑定的,不应同时用于更新数据。它们的唯一目的是显示项选择,选择一个项,并将其值传递给下一个筛选器。

下面我链接到一些教程,这些教程只需要很少到不需要VBA代码。第三个教程过滤“植物和动物,按其分类等级”,这是一个类似的情况过滤化学物质。第四题是我以前对类似问题的回答之一。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67142989

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档