如何在MS Access主窗体的OnActivate事件中筛选子窗体?
Access子窗体筛选SQL Server bit字段无结果的解决方法
问题根源
你当前代码的核心问题是Filter使用了窗体控件名txtComplete,而非记录源中的实际字段名。另外SQL Server的bit类型在Access链接表中会被识别为Yes/No类型,筛选语法需匹配字段名而非控件名。
修正步骤
- 确认查询
qTakeFromInventoryCompleteRequest_AllData中,对应bit类型的字段名(通常控件名txtComplete绑定的字段名不会带txt前缀,比如可能是Complete)。 - 将Filter语句中的
txtComplete替换为实际字段名。 - 保持筛选语法
字段名 = 0(Access对Yes/No类型支持用0/1或False/True筛选)。
修正后代码
Me.subAllData.SourceObject = "Form.TakeFromInventoryCompleteRequestAllDataSub" Me.subAllData.Form.RecordSource = "qTakeFromInventoryCompleteRequest_AllData" ' 替换为查询中实际的bit字段名,示例用Complete Me.subAllData.Form.Filter = "Complete = 0" Me.subAllData.Form.FilterOn = True Me.subAllData.Requery
额外检查点
- 确保查询
qTakeFromInventoryCompleteRequest_AllData确实包含你要筛选的bit字段,且字段名拼写完全一致。 - 如果字段名确实是
txtComplete(不推荐控件与字段同名),直接替换即可,但建议后续区分控件和字段命名,避免混淆。
内容的提问来源于stack exchange,提问作者TheMortiestMorty
相关产品推荐
相关产品推荐

