vba - 在访问表单中使用查询结果的问题
问题描述
SELECT ProductData.ShiftStart, ProductData.ExtrusionLine, Avg(ProductData.RollDensity) AS AvgOfRollDensity, StDev(ProductData.RollDensity) AS StDevOfRollDensity
FROM ProductData
GROUP BY ProductData.ShiftStart, ProductData.ExtrusionLine
HAVING (((ProductData.ShiftStart)=[Forms]![RollRelease]![ShiftStart]) AND ((ProductData.ExtrusionLine)=[Forms]![RollRelease]![Line]));
如果我打开“RollRelease”表单,输入数据,然后使用“RollRelease”运行“qryRollDensity”,则打开查询。当我尝试通过 select 语句使用查询时,出现不匹配错误或缺少参数错误等。最终,我需要表单中的 AvgOfRollDensity 和 StDevOfRollDensity 的值,以便进行一些计算。
解决方案
在聚合之前使用 WHERE 而不是 HAVING 过滤记录。
动态查询参数不会传递到 VBA 记录集 SQL 语句。
一种选择是在表单的文本框中使用域聚合函数;查询上的 DLookup() 表达式或具有 WHERE 条件的原始数据表上的 DAvg() 和 DStDev()。假设 ShiftStart 和 ExtrusionLine 是文本类型字段:
=DAvg("[RollDensity]", "ProductData", "[ShiftStart] = '" & Me.ShiftStart & "' AND [ExtrusionLine] = '" & Me.Line & "'"
=DStDev("[RollDensity]", "ProductData", "[ShiftStart] = '" & Me.ShiftStart & "' AND [ExtrusionLine] = '" & Me.Line & "'"
否则,请删除撇号并改为使用 # 分隔符作为日期/时间字段,而不使用分隔符作为数字类型。
推荐阅读
- database - 使用更多测量值或仅使用标签来提高性能更好吗
- .net - docker 检查不显示应用程序的 IP 地址
- java - 为什么我无法调用重绘方法?
- c# - 在 C# 中使用内部类处理套接字
- timer - 在我的湿度传感器低于 60% 后,需要帮助在我的 arduino 上创建 5 分钟计时器
- dart - 如何在 Flutter 中为抽屉菜单项添加徽章?
- ruby-on-rails - Rails 5 CarrierWave Gem 已投入生产,但尚未开发
- javascript - 用普通 JS 编写的中性网络的奇怪行为
- c - AF_PACKET 和以太网
- mysql - MySQL:使用带有 group by 的通配符时的列排序有奇怪的行为