微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

MS Access:拆分形式的相关下拉组合框而不影响其余部分?

如何解决MS Access:拆分形式的相关下拉组合框而不影响其余部分?

我正在尝试使用我的数据库进行依赖下拉式工作,但由于我将解释的不同原因,这让我感到很困难。

这就是我所拥有的:

一个名为“tblOTS”的表单(基于实际的“tblOTS”表的拆分表单):

frmOTS1

还有一个名为“tblAlphaCode”的表:

tblAlphaCode

在我的 tblOTS 表单上查看“Alpha Code”组合框(实际上称为“strOTSAlphaCode”)的属性表时,这就是我所拥有的:

strOTSAlphaCode_Properties

这个strOTSAlphaCode在“Row Source”下的当前sql语句是:

SELECT tblAlphaCode.strAlphaCode,tblAlphaCode.strCategory,tblAlphaCode.ID,tblAlphaCode.numSortingOrder 
FROM tblAlphaCode 
ORDER BY tblAlphaCode.strCategory,tblAlphaCode.numSortingOrder;

基本上,当用户从“tblOTS”表单的下拉列表中选择一个 Alpha 代码时,它会将 tblAlphaCodes 的 ID 添加到实际的 tblOTS 记录中。

我的目标是让用户添加/修改 OTS 记录时首先选择“类别”(此处为紧固件/硬件...),然后根据类别下拉“Alpha 代码”刚刚被选中。

我首先尝试根据表单类别字段本身,在类别字段上使用 WHERE 条件更改 sql 语句:

SELECT tblAlphaCode.strAlphaCode,tblAlphaCode.numSortingOrder
FROM tblAlphaCode
WHERE (((tblAlphaCode.strCategory)=[Forms]![tblOTS]![strOTSCategory]))
ORDER BY tblAlphaCode.strCategory,tblAlphaCode.numSortingOrder;

并在我的 Form_Current 事件中创建了一个 strOTSAlphaCode.requery 以每次更新它。

但是,它会影响整个表单本身,因为我的控件源在此实例中直接受我的 Row Source 影响,并且表单如下所示:

frmOTS2

您可以看到下拉菜单工作得很好,但是,所有与我处理的当前记录(FASTENER HARDWARE here)不具有相同类别的字段都缺少它们的 Alpha 代码(第二个与这篇文章第一张图片相比,记录缺少“O-RING”); 这种行为有问题!

我试图通过将 strOTSAlphaCode 更改为仅包含 Alpha 代码 ID 的简单文本框来寻找解决方法,在顶部添加一个带有 dlookup 功能的未绑定文本框以查找与此 ID 相关的实际 Alpha 代码,并在两者之间添加一个未绑定的组合框在行源属性中使用完全相同的 sql 语句,这将使用一些 VBA 更新 strOTSAlphaCode ......不理想,对吧?啊哈哈。这就是为什么我相信有一种我不知道的更简单的方法,但我也想稍后为此组合框使用“键入时搜索代码,而这个解决方案使它变得非常困难。

我怎样才能做到这一点?我相信答案是放在我的 Row Source 属性中的简单/不同的 sql 语句,这可能与某种类型的 JOIN 语句有关?或者是其他东西?我希望编写一些 VBA 代码来使所有这些工作完美无缺,但我想首先确保我有正确的 sql 语句。

解决方法

谢谢June7;

是的,您给我的链接 ( this link ) 陈述了 2 个解决方案,第二个是我在描述我的问题时谈到的那个:

  • 对于连续或数据表视图中的表单,在表单记录源中包含查找表,将文本框绑定到查找的描述性字段 表,将文本框放置在组合框的顶部,将文本框设置为锁定是 和 TabStop 否

所以我想,答案是对于我的情况,我必须有一个带有 dlookup 设置的文本框;我把它设置为“锁定”,这样如果用户想通过输入来改变它,他首先必须选择箭头。这将适用于我想做的事情

干杯,

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。