我有一个带有组合框的表单(产品 sku 及其各自的详细信息),可以在我的表单中选择并显示特定 sku 的信息。组合框工作并选择正确的记录。
组合框的问题在于 1) 使用下一个或上一个箭头选择另一条记录时不更新 2) 更改后不清除 3) 视图从表单更改为设计视图后保持在最后一个值。我需要 #1 或 #2 才能工作。如果#3 也能奏效,那将是有史以来最大的胜利!
我知道人们通常将组合框过滤器保存在表单标题中,然后只显示下面的数据。但这在这种情况下不起作用,因为它会鼓励数据输入错误。它只是一个突出显示 sku 编号的组合框。即使我也在表单上显示了 sku 编号,记录和过滤器仍然会不同步并导致混乱。
(我的表单记录源是 Tbl_UniqueSku。此表主要存储外键,因此我的组合框行源基于查询。该查询由 Tbl_UniqueSku.ID | Tbl_Category.CategoryCode | Tbl_PartNumber.PartNo | Tbl.PartNumber.PartName 组成。这有与为什么通过按钮或记录选择器推进记录时组合中显示的数据不与表单同步的原因无关.我尝试了一个仅基于一个表的虚拟简单表单,该表具有基于单个字段的组合框过滤器同一张桌子,我有同样的问题。)
1:
如果我使用其他记录选择按钮导航到表单中的不同记录,则此 cbo 选择器中的数据(sku 编号)不会更新。
所以这个组合框中显示的 sku 与我的表单不同步,除非我只使用组合框进行导航。
我的 sku 按时间顺序排列:1001、1002、1003 等。因此,专门使用组合框导航到每个后续记录是没有意义的。将组合框和下一个/上一个箭头作为导航到所需 sku 的选项是有意义的。
我已经在我能想到的表单和 cbo 的所有事件属性中尝试了宏和 vba。我已经尝试过 requery、refresh、value = null、value = id 的所有变体。没有结果。
2:
如果组合框不能反映当前记录,那么我至少希望在更新后显示 NO 值。无论它不显示与表单记录不同的 sku 需要什么都是我会接受的结果。我已经尝试了所有我能想到的从这个角度解决问题的方法,但我也一无所获。
3:
另一个问题是,当我从表单视图来回切换到设计视图时,此表单的组合框过滤器停留在最后一个选定的值上,而表单始终显示我的表中的第一条记录。再说一次,这两个不同步。我还没有准备好拆分前端和后端,因为我仍在设计数据库,但我还必须进行数据输入。在这一点上,拆分它会降低我的效率。
我研究这个问题的时间比我愿意承认的要长。我发现一些人解决了这个问题,但没有可接受的解决方案。或者也许我遇到的编程解决方案是有效的,但我只是将理论应用于实践。我需要一个语法来参考。
提供半点帮助的评论者是 bhammerstrom,他说:“我所做的是:在组合的 AfterUpdate 事件中,取消隐藏直接放置在同一个文本框中的文本框 (me.txt.visible = True)点在 cbo(除了让向下箭头可见)。文本框绑定子表单中的字段以显示当前信息。
我尝试了这个,但焦点仍然在更改后的 cbo 上,因此未隐藏的文本框出现在组合框后面,直到我将光标移动到另一个字段。我已经对其进行了破解,但无法弄清楚如何对 cbo 进行编程以在更新后放松焦点。谷歌永远。没有什么。如果我能让它发挥作用,那么#2就足够了,但我仍然对#3空手而归。
这个链接线程上的其他答案听起来很有希望,但是当我尝试从提供的信息中尽我所能时,我没有运气。这可能是个好建议,但我太笨了,无法使用它,需要更彻底的指导,希望有语法参考。
我能想到的唯一没有尝试过的事情是在我的 Tbl_UniqueSku 中创建一个新列,并在那里存储空值。然后在我的组合框行源查询中,我可以添加该字段。然后在我的表单属性中,我可以将该空存储列设置为组合框的显示列,因此在选择后它始终为空。但是这种解决方法似乎完全亵渎了数据库应该代表的一切。
请帮我!