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

MS Access列表框SQL查询用IIF转换字段值触发报错求助

报错原因

你写的IIF条件判断逻辑本身没有问题,触发语法错误的核心原因是:计算字段的别名Effectif Contractualisé包含空格和法语重音特殊字符,Access SQL无法直接识别未加界定符的特殊标识符,因此抛出标点/拼写错误提示。
额外提示:你最初写的查询同时保留了存储0/1值的原始字段SALARIE_effectif_contractualise和转换后的文本字段,绑定到列表框后会多出一列冗余的数值列,不符合预期展示效果。

修复方法
  • 对包含空格、特殊字符的字段别名,使用Access SQL规定的*方括号[]*包裹,让数据库引擎正确识别标识符边界
  • 如果不需要在列表框中展示原始的0/1数值,可以直接用IIF转换表达式替换原有的数值字段,无需额外新增计算列,避免冗余列出现
修正后可直接运行的SQL
SELECT 
T_SALARIE_EMPLOI.SALARIE_EMPLOI_id, 
T_SALARIE_EMPLOI.SALARIE_EMPLOI_salarie_nni, 
T_SALARIE.SALARIE_nom, 
T_SALARIE.SALARIE_prenom, 
T_SALARIE_EMPLOI.SALARIE_EMPLOI_date_fin_emploi_actuel, 
IIF(T_SALARIE.SALARIE_effectif_contractualise = 1, 'Oui', 'Non') AS [Effectif Contractualisé]
FROM 
   T_EMPLOI 
INNER JOIN (T_SALARIE INNER JOIN T_SALARIE_EMPLOI ON T_SALARIE.SALARIE_NNI = T_SALARIE_EMPLOI.SALARIE_EMPLOI_salarie_nni) ON T_EMPLOI.EMPLOI_identifiant = T_SALARIE_EMPLOI.SALARIE_EMPLOI_emploi_identifiant 
WHERE (((T_SALARIE_EMPLOI.SALARIE_EMPLOI_statut_id)=2) And ((T_SALARIE_EMPLOI.SALARIE_EMPLOI_emploi_identifiant)=Forms!F_Vue_Emploi.Form!EMPLOI_identifiant));

如果你需要保留原始0/1字段用于后续窗体逻辑判断,只需把原字段加回SELECT子句即可,只要确保计算列的别名始终用方括号包裹就不会触发语法错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 00:09:33