Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql “;操作必须使用可更新的查询”;MS访问中出现错误_Sql_Sql Server_Vba_Ms Access - Fatal编程技术网

Sql “;操作必须使用可更新的查询”;MS访问中出现错误

Sql “;操作必须使用可更新的查询”;MS访问中出现错误,sql,sql-server,vba,ms-access,Sql,Sql Server,Vba,Ms Access,这个问题已经被问了很多次,我的情况似乎是最简单的,但我仍然没有找到我的问题的答案 环境是Windows,Access 2013。 表tbl_rap已链接,驻留在MS SQL Server 2007上 表tbl_rap的结构如下: id - int (Identity) field_1 nchar(10) field_2 nchar(1) 下面的代码可以工作 sql_cmd = "INSERT INTO tbl_rap (field_1,field_2) VALUES ('010308HB3',

这个问题已经被问了很多次,我的情况似乎是最简单的,但我仍然没有找到我的问题的答案

环境是Windows,Access 2013。 表tbl_rap已链接,驻留在MS SQL Server 2007上

表tbl_rap的结构如下:

id - int (Identity)
field_1 nchar(10)
field_2 nchar(1)
下面的代码可以工作

sql_cmd = "INSERT INTO tbl_rap (field_1,field_2) VALUES ('010308HB3','R')"
DoCmd.RunSQL sql_cmd
但是这个代码

sql_cmd = "UPDATE tbl_rap SET field_2 = 'X' WHERE field_1 = '010308HB3'"
DoCmd.RunSQL sql_cmd
失败,出现运行时错误3037“操作必须使用可更新的查询”

任何帮助都将不胜感激。

当您使用nchar(10)时,必须传递一个包含10个字符的字符串,例如:

sql_cmd = "UPDATE tbl_rap SET field_2 = 'X' WHERE field_1 = '010308HB3 '"
使用nchar(10)时,必须传递一个包含10个字符的字符串,例如:

sql_cmd = "UPDATE tbl_rap SET field_2 = 'X' WHERE field_1 = '010308HB3 '"

这很像,但只有一个答案对我来说是合适的。尝试
updatedistinctrow
而不是仅仅
UPDATE
。我在发布这篇文章之前尝试过。这非常类似,但只有一个答案看起来适合我。尝试
updatedistinctrow
而不是仅仅
UPDATE
。我在发布此消息之前尝试过。我按照建议更改了代码,不幸的是问题仍然存在……这只是一个示例。显然,搜索文本与实际字段文本不匹配,因此请仔细检查字段内容。如果更新无法在表中找到匹配的记录,它将以不同的方式失败。然后,您可能会丢失表中的时间戳字段,并在添加此字段后重新链接表。您是如何得出需要时间戳字段的概念的?我按照建议更改了代码,不幸的是,问题仍然存在……这只是一个示例。显然,搜索文本与实际字段文本不匹配,因此请仔细检查字段内容。如果更新无法在表中找到匹配的记录,它将以不同的方式失败。然后您可能会丢失表中的时间戳字段,并在添加此字段后重新链接表。您是如何得出需要时间戳字段的概念的?