Access中查询列总和值无法加载到表单文本框的求助
嘿,我来帮你搞定这个Access表单的问题!你遇到的文本框不显示总和的情况,大概率是这几个原因之一,咱们一步步排查:
先确认你的查询是否真的有数据
先手动打开qryTotalQty看看,是不是真的返回了一个数值?如果查询本身没有结果(比如所有零件的数量都是0,或者没有匹配的记录),那DLookup肯定返回空,文本框自然啥都不显示。这是最常见的原因!检查
DLookup的拼写是否完全正确
Access对对象名称的拼写很敏感,哪怕多一个空格或者字母错了都不行。再核对一遍:[SumOfQty_FRL]字段名和[qryTotalQty]查询名是不是和数据库里的完全一致?包括大小写(虽然Access不区分,但拼写错了绝对不行)。换用更可靠的
OpenRecordset方法试试DLookup有时候会因为查询结构的问题出意外,不如直接用记录集来获取值,还能方便调试。试试把代码改成这样:Private Sub Form_Load() Dim rs As DAO.Recordset ' 打开查询的记录集 Set rs = CurrentDb.OpenRecordset("qryTotalQty") If Not rs.EOF Then ' 如果有记录,把值赋给文本框 Me.txt_TotQty = rs!SumOfQty_FRL Else ' 如果没记录,显示0(或者你想要的默认值) Me.txt_TotQty = 0 End If ' 记得关闭记录集,释放资源 rs.Close Set rs = Nothing End Sub这样如果查询没结果,你也能明确给文本框设一个默认值,不会空着。
检查文本框的格式设置
有时候不是值没传过去,而是文本框的格式把值隐藏了。比如你是不是设置了“隐藏零值”?打开文本框的属性窗口,看看“格式”选项是不是设成了;;;"(这种格式会把零值和空值都隐藏)。改成“常规数字”或者“标准”格式试试。确认表单事件是否正确触发
你是把代码写在Form_Load事件里吗?有没有可能事件没绑定?右键表单→“事件生成器”,确认加载事件确实指向了你写的代码。另外,Form_Open事件里控件可能还没完全加载,尽量用Form_Load。还有个偷懒的方法:直接设置控件来源
其实不用写代码也行!在设计视图里,选中txt_TotQty,把“控件来源”设为=DLookup("[SumOfQty_FRL]", "[qryTotalQty]")或者更简单的=qryTotalQty![SumOfQty_FRL],表单加载时会自动获取值,省得写VBA。
内容的提问来源于stack exchange,提问作者jrussin

