MS访问组合框FORM滤波器1)时下一记录被选择2不更新)不变更以后3)查看更改后停留在最后的值清楚

问题描述:

我有一个表格(产品SKU和它们各自的详情)与组合框,用于在我的表单中选择并显示特定sku的信息。组合框工作并选择正确的记录。MS访问组合框FORM滤波器1)时下一记录被选择2不更新)不变更以后3)查看更改后停留在最后的值清楚

组合框的问题在于它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是有意义的。

我已经试过宏和VBA在所有我能想到的两种形式与CBO的事件属性。我已经尝试了各种查询,刷新,值=空值,值= id。没有结果。

2:

如果ComboBox不能反映当前记录,则我会至少像NO值被更新后显示。无论如何,不​​要从表单记录中显示不同的sku是我会解决的一个结果。我已经尝试过所有我能想到的从这个角度来解决问题的东西,而且也是空着的。

3:

的另一个问题是,当我来回切换从表单视图设计视图组合框过滤器这种形式停留在最后选择的值,而形式总是从我的表显示的第一条记录。再次,这两个不同步。我还没有准备好分割出前端和后端,因为我仍在设计数据库,但我也必须进行数据输入。在这一点上分割它会使我的效率降低。

我研究这个问题的时间超过我愿意承认。我发现一些人解决这个问题,但没有可接受的解决方案。或者,也许我遇到的编程解决方案是有效的,但我只是为了将理论应用于实践而努力。我需要一个语法来引用。

Here's the closest help I've found in my research

建议中途有帮助的评论者是bhammerstrom,他说:“我所做的是:在组合的AfterUpdate事件中,取消隐藏放置的文本框(me.txt.visible = True)直接在cbo的相同位置(除了向下箭头可见)。文本框被绑定到子窗体中的字段以显示当前信息。“

我试过,但重点仍然是在变更后的CBO,直到我移动光标到另一个领域,会出现组合框后面的未隐藏的文本框中。我已经采取了一些措施,但无法弄清楚在更新后如何编程cbo以放松焦点。 Google永久搜索。没有。如果我能做到这一点,那就足够了#2,但我还是空手而归#3。

此链接线程上其他的答案听起来很有前途,但我试了一下,我可以从信息提供我没有运气。这可能是一个很好的建议,但我太愚蠢了,无法使用它,需要更彻底的指导,希望有一个语法参考。

我能想到的,我没有尝试过的唯一的事情就是让一个新列在我的Tbl_UniqueSku,只是存储空值存在。然后在我的组合框行源查询中,我可以添加该字段。然后在我的表单属性中,我可以将null存储列作为组合框的显示列,因此在选择后它始终为空。但是,这种解决方法看起来像是对数据库应该支持的所有内容的完全亵渎。

请帮帮我!

+1

应使用UNBOUND组合框来输入/选择过滤条件。由于它是UNBOUND它不会'更新'。导航后,使用代码将组合框设置为Null。使用绑定文本框来显示记录值。混乱消除了。将组合框放在表头中。 – June7

唉唉答案是如此简单,我只是不知道如何在VBA中使用=!

这里是解决这一切:

从形式在当前的情况下创建具有以下代码的事件过程:

me.cbobox = me.ID

变化cbobox到您的未绑定组合和ID的名称,以 的名称搜索。

您需要在误差控制添加,如果你有 导航到该记录是一个新的记录(因此ID为空或空)

所以在我的情况:

我。 cbobox = me.txtbox

我的文本框引用了我的Tbl_UniqueSku的主键。我很早就尝试了这种方法,但是尝试重新刷新而不是=,因为我不知道如何编写代码。 :)

我还没有需要添加错误处理程序。当我添加一条新记录并且我没有收到任何错误消息时,组合框已经显示一个空值。

奖励提示:总是仔细检查设计对象的名称。

非常感谢Ajax over at this forum