过去几天我一直在努力找出这个问题的根源。我的互联网搜索导致这个问题的原因并不富有成效。
这是一个程序使用Access作为前端UI,用户可以将客户端信息输入到SQL Server上托管的数据库中。
互动应如下:
初始加载主窗体时,默认情况下每月产品值过滤器值为0。选择其中一个产品时,应动态更新过滤器。它是在产品表单的Form_Current事件下完成的。
我无法弄清楚:过滤器似乎停留在默认状态。我使用Debug.Print语句检查每月产品值表单的最新过滤器值,并显示过滤器的正确产品ID。但它根本没有在UI上更新。
甚至更奇怪的是:当我对vba代码进行更改(有时与过滤器无关)并且在应用程序模式下保存时,它可以正常工作(即列出月度值),例如:
.filter = "prod_id = " & iProdID
到
.filter = "[prod_id] = " & iProdID
但是当我将其更改为设计模式并开始进行与此问题无关的更改时,它再次处于应用程序模式时停止工作。行为是如此不可预测,我不知道如何继续。我甚至删除了表单并重新创建它,它仍然表现得相似。
我使用相同的方法在VBA中为其他子表单处理文件管理器并且它们的行为正确。希望对我忽略的内容得到一些反馈!
谢谢! KIAT
答案 0 :(得分:0)
我现在就开始工作了。为产品值分配过滤器的原始方法是将过滤器值直接分配给Products表单(Form_ProductVals
)Form_Products
事件中的“产品值”表单(Form_Current
)。这导致了结果的不一致。
现在我更改了代码,通过主客户端表单(包含Products和ProductVals子表单)分配过滤器值。所以代码改为:
Form_ProductVals.Form.Filter = "prod_id = " & <new ID>
到
Form_Clients.ProductVals.Form.Filter = "prod_id = " & <new ID>
这就是诀窍。我虽然没有对这种差异的解释。