在Access中运行预建查询时的语法错误3075

时间:2019-04-10 16:19:28

标签: sql ms-access syntax-error

我正在尝试使用旧线程中的代码来适应我的数据: Concatenate fields from one column in one table into a single, comma delimited value in another table

我有一个包含3600条记录的表,与下面显示的677个唯一AcousticTagCode相似:

AcousticTagCode PITtag  bkm Type    SiteCode
5004.24 3D6.001569C022  ap  STND    IC3
5004.24 3D6.001569C022  ap  STND    IC2
5004.24 3D6.001569C022  ap  STND    IC1
5004.24 3D6.001569C022  ap  STND    RGD1
5004.24 3D6.001569C022  ap  STND    RGU1
5004.24 3D6.001569C022  ap  STND    ORS1
5004.24 3D6.001569C022  ap  STND    WC1
5004.24 3D6.001569C022  ap  STND    WC2
5004.24 3D6.001569C022  ap  STND    WC3
5010.04 3D6.001569C01C  ap  STND    IC3
5010.04 3D6.001569C01C  ap  STND    IC2
5010.04 3D6.001569C01C  ap  STND    IC1
5010.04 3D6.001569C01C  ap  STND    RGD1

AcousticTagCode是数字,所有其他字段是文本。

当我尝试跑步时

SELECT AcousticTagCode, ConcatRelated("SiteCode", "tblAllDetectionSites", 
    "AcousticTagCode = " & [AcousticTagCode]) AS Sites
    FROM tblAllDetectionSites;`

我收到错误:

错误3075:查询表达式'AcousticTagCode ='中的语法错误(缺少运算符)。

我尝试像这样放置':

SELECT AcousticTagCode, ConcatRelated("SiteCode", "tblAllDetectionSites", 
    "AcousticTagCode = '" & [AcousticTagCode]) AS Sites
    FROM tblAllDetectionSites;

但是会收到此错误:

错误3075:查询表达式'AcousticTagCode =“

中的字符串中的语法错误

我对SQL查询不是很熟悉,因此将不胜感激!

最终结果应为每个AcousticTagCode和与该TagCode相关联的所有SiteCode提供一行。 (我尚未添加DISTINCT运算符,因为它会使所有操作变慢)

1 个答案:

答案 0 :(得分:1)

我建议将ConcatRelated函数更改为:

ConcatRelated
(
    "SiteCode", 
    "tblAllDetectionSites", 
    iif
    (
        [AcousticTagCode] is null, 
        "AcousticTagCode is null", 
        "AcousticTagCode = " & Str([AcousticTagCode])
    )
)

这应该解决两个问题:

  • AcousticTagCode为空的记录帐户(将这些记录分组在一起)。
  • 使用Str函数转换AcousticTagCode字段保留的Double值,以避免区域设置的影响。