ConcatRelated函数实现异常:合并行后仅显示病历编号求助
问题排查与修复方案
核心问题梳理
- 查询1的WHERE子句错误:原SQL引用了未生成的查询自身字段
[was on treatment query].[Number_medical_history],导致查询1无法正确筛选数据,直接影响后续合并逻辑。 - 查询2的SELECT子句错误:直接写
[was on treatment query]是引用整个查询对象而非具体分组字段,导致仅返回分组字段,合并后的United字段无法正常输出。 - ConcatRelated参数错误:原条件用
Id = & ...,但实际要按Number_medical_history分组合并,条件完全不匹配;同时字段引用多了不必要的查询前缀。 - GROUP BY子句不匹配:SELECT中的字段和GROUP BY字段未对应,不符合Access SQL的语法要求。
修复后的查询1 SQL (was on treatment query)
SELECT [was on treatment].[Number_medical_history] AS "Number medical history", [was on treatment].datefrom AS datefrom, [was on treatment].dateto AS dateto, [was on treatment].[hospital name] AS "hospital name", "from " & [datefrom] & " to " & [dateto] & " in " & [hospital name] & ";" AS United FROM [was on treatment] WHERE [was on treatment].[Number_medical_history] = [Forms]![Forms_1]![Number_medical_history];
- 修正WHERE子句的字段引用,改为直接从原数据表
[was on treatment]获取字段 - 简化字符串拼接的冗余空格,让语句更简洁
修复后的查询2 SQL (was on treatment query united)
SELECT q.[Number medical history], ConcatRelated( "United", "[was on treatment query]", "[Number medical history] = '" & q.[Number medical history] & "'" ) AS United INTO healing_from_to IN 'C:\AAC\BD\Onlytable.accdb' FROM [was on treatment query] AS q WHERE q.[Number medical history] = [Forms]![Forms_1]![Number_medical_history] GROUP BY q.[Number medical history];
- 给查询起别名
q,简化字段引用 - SELECT明确指定分组字段
q.[Number medical history],确保和GROUP BY对应 - 修正ConcatRelated的筛选条件,改为按
Number medical history匹配同组数据,同时移除不必要的查询前缀 - 保留WHERE子句的筛选逻辑,确保只处理表单指定的病历号数据
内容的提问来源于stack exchange,提问作者Wild YT
相关产品推荐
相关产品推荐

