【问题标题】:Get Data Type Mismatch error when using Replace Function in WHERE clause of MS Access Update statement在 MS Access 更新语句的 WHERE 子句中使用替换函数时出现数据类型不匹配错误
【发布时间】:2016-09-19 01:00:54
【问题描述】:

我收到错误消息“条件表达式中的数据类型不匹配”,并在 MS Access 2013 中执行以下 UPDATE 语句。

UPDATE tblTasks 
   SET tblTasks.IconFilePath = "C:\Images\john.smith.jpg"
 WHERE (((Replace([PersonResponsible]," ",""))="Smith,John") 
   AND ((Len([PersonResponsible]))>0));

当我从 WHERE 子句中删除 Replace 函数调用时,语句执行时不会出错。

PersonResponsible 字段的数据类型是Short Text(255)。我尝试在 CStr 和 NZ 中包装 Replace 调用,但仍然出现数据类型不匹配错误。

感谢任何想法。

谢谢

【问题讨论】:

  • 我们可以看到 John Smith 数据线来重现我们的问题吗?
  • 嗨,对不起,我没有关注这个问题。 “Smith,John” 就是在查询中传递的字面意思。我肯定错过了什么。您能否详细说明对“John Smith 数据线”的请求?

标签: sql replace ms-access-2013


【解决方案1】:

如果 [PersonResponsible] 允许空值,请将您的 SQL 更改为:

UPDATE tblTasks 
   SET tblTasks.IconFilePath = "C:\Images\john.smith.jpg"
 WHERE (((Replace(Nz([PersonResponsible],"")," ",""))="Smith,John") 
   AND ((Len(Nz([PersonResponsible],"")))>0));

但实际上,您可以将其简化为:

UPDATE tblTasks 
   SET tblTasks.IconFilePath = "C:\Images\john.smith.jpg"
 WHERE (((Replace(Nz([PersonResponsible],"")," ",""))="Smith,John"));

在这种情况下,额外的 where 子句不会增加任何特殊性。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多