You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Access表单过滤:按附件字段有无文件筛选记录的代码实现

Access表单按附件字段筛选的正确方法

你之前用 Me.Filter = [Fichero].AttachmentCount = 0 无效的原因是:Filter属性需要的是字符串形式的SQL筛选条件,而AttachmentCount是字段对象的属性,不能直接嵌入到Filter的条件字符串里。以下是两种可行的解决方法:

方法1:直接用Exists子查询筛选

利用Access为附件字段自动生成的隐藏子表判断是否存在附件,这是最高效的方式:

筛选无附件的记录

Me.Filter = "NOT EXISTS (SELECT * FROM [Documentación_Fichero] WHERE [ParentID] = [Documentación].[Id])"
Me.FilterOn = True

筛选有附件的记录

Me.Filter = "EXISTS (SELECT * FROM [Documentación_Fichero] WHERE [ParentID] = [Documentación].[Id])"
Me.FilterOn = True

注意:Documentación_Fichero 是系统自动生成的隐藏子表,命名规则为「原表名_附件字段名」,如果你的表名或附件字段名有变动,需要对应调整这个子表名称。

方法2:修改基础查询,添加附件计数字段

如果需要更直观的筛选条件,可以先给基础查询增加一个计算附件数量的字段,再基于这个字段筛选:

第一步:更新查询语句

SELECT 
    Documentación.Fecha, 
    Documentación.Categoría, 
    Documentación.Médico, 
    Documentación.Paciente, 
    Documentación.Fichero, 
    Documentación.Fichero.FileName, 
    Documentación.Papel,
    (SELECT Count(*) FROM Documentación_Fichero WHERE ParentID = Documentación.Id) AS 附件数量
FROM 
    Pacientes RIGHT JOIN (Médicos RIGHT JOIN (Categorías RIGHT JOIN Documentación ON Categorías.Id = Documentación.Categoría) ON Médicos.Id = Documentación.Médico) ON Pacientes.Id = Documentación.Paciente
ORDER BY 
    Documentación.Fecha;

第二步:表单中用新字段筛选

筛选无附件:

Me.Filter = "[附件数量] = 0"
Me.FilterOn = True

筛选有附件:

Me.Filter = "[附件数量] > 0"
Me.FilterOn = True

内容的提问来源于stack exchange,提问作者Manuel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 10:16:09