0

在过去的几天里,我一直在努力找出这个问题的根源。我在 Internet 上搜索导致此问题的原因并没有结果。

这是一个使用 Access 作为前端 UI 的程序,用户可以将客户端信息输入到托管在 SQL Server 上的数据库中。

交互应该如下:

  • 用户单击主窗体中的客户列表
  • 帐户列表显示在主窗体中
  • 用户点击一个帐户
  • 产品列表以表格形式显示(用于更新/添加新产品)
  • 用户选择其中一种产品
  • 相应的每月产品值显示在另一个子窗体上(不在产品列表子窗体下)

初始加载主窗体时,每月产品值过滤器值默认为 0。选择其中一种产品时,应动态更新过滤器。它是在产品表单的 Form_Current 事件下完成的。

我想不通的是:过滤器似乎停留在默认状态。我使用 Debug.Print 语句检查每月产品值表单的最新过滤器值,它显示了过滤器的正确产品 ID。但它根本没有在 UI 上更新。

更奇怪的是:当我更改 vba 代码(有时与过滤器无关)并在应用程序模式下保存它时,它会起作用(即列出每月值),例如:

.filter = "prod_id = " & iProdID

.filter = "[prod_id] = " & iProdID

但是当我将其更改为设计模式并开始进行与此问题无关的更改时,它再次处于应用程序模式时停止工作。这种行为是如此不可预测,以至于我不知道如何进行。我什至删除了表单并重新创建它,它的行为仍然相似。

我正在使用相同的方式在 VBA 中为其他子表单处理文件管理器,并且它们的行为正确。希望得到一些关于我忽略的反馈!

谢谢!基亚特

4

1 回答 1

0

我现在开始工作了。为产品值分配过滤器的原始方法是将过滤器值Form_ProductVals从产品表单的 ( Form_Products)Form_Current事件直接分配给产品值表单 ( )。这导致了结果的不一致。

现在我更改了代码以通过主 Clients 表单(包含 Products 和 ProductVals 子表单)分配过滤器值。所以代码从:

Form_ProductVals.Form.Filter = "prod_id = " & <new ID>

Form_Clients.ProductVals.Form.Filter = "prod_id = " & <new ID>

这就是诀窍。虽然我没有解释差异。

于 2013-03-18T19:15:27.057 回答