Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.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 server 将ODBC链接表访问到SQL Server允许插入,但不允许更新_Sql Server_Ms Access_Ms Access 2007 - Fatal编程技术网

Sql server 将ODBC链接表访问到SQL Server允许插入,但不允许更新

Sql server 将ODBC链接表访问到SQL Server允许插入,但不允许更新,sql-server,ms-access,ms-access-2007,Sql Server,Ms Access,Ms Access 2007,基于Web阅读资料,我构建了一个新的ODBC连接,仔细寻找可能建议进行更新的微妙配置参数,但没有找到。然后我测试了新链接 要重新测试我的问题: 1) 我在SQL Server 2005上创建了下表: [TestTbl] column1: Key Type:Integer Column2: Name Type:varchar(5) 如下所示 Key Name === ==== 1 Apple 2 Bear

基于Web阅读资料,我构建了一个新的ODBC连接,仔细寻找可能建议进行更新的微妙配置参数,但没有找到。然后我测试了新链接

要重新测试我的问题:

1) 我在SQL Server 2005上创建了下表:

[TestTbl]

column1: Key      Type:Integer
Column2: Name     Type:varchar(5)
如下所示

   Key     Name
   ===     ====
    1      Apple
    2      Bear
    3      Cat
2) 然后在Access 2007中,使用我最新的ODBC连接创建了到SQL Server表TestTbl的链接

3) 接下来,使用链接并从Access 2007执行我的插入操作,成功地将以下新记录插入到SQL Server表中:

   Key     Name
   ===     ====
    4      Dog
    5      Elephant
4) 最后,我尝试执行以下简单的更新查询:

   UPDATE dbo_TestTable SET dbo_TestTable.TestName = "CatNip"
   WHERE (((dbo_TestTable.TestKey)=3));
我收到错误消息“操作必须是可更新的查询”

5) 出于沮丧,我插入了另一张唱片

   Key     Name
   ===     ====
    6      Nonsense
然后我发布了这个问题寻求帮助


任何人都可以解释为什么我可以向链接表插入新记录,但无法更新现有记录?

您遇到的问题是,没有定义主键,或者在Access中链接表时,没有定义主键。重新添加链接表(删除和添加)并选择一个主键字段,在本例中column1

varchar(50)是Column2的数据类型可能只是一个输入错误,但您的列被称为key和Name,但INSERT语句引用了TestKey和TestName。这是一个链接表,是吗?是否确实有主键?如果access数据库未处于只读模式,请使用传递查询检查解决。这很可能是正确答案。以后考虑使用ADP文件。