我有一个MS-Access前端到MSSQL服务器后端。该工具现有的功能更新通过MSSQL视图应用,该视图作为链接表插入到MS-Access中。为此链接表格定义了一个主键。 (图)。
用户会看到与先前选择的条件匹配的记录子集,并使用组合框(未绑定)选择多个字段的值,然后使用DoCmd.RunSQL
Me.Filter
将其应用于所有匹配的记录"更新后"事件
用户已要求增加一项功能。
我有:
DoCmd.RunSQL
语句以生成UPDATE
通过表单更新新字段时,我得到标准消息"You are about to change x rows"
,其中x是适当的数字。按OK表示没有错误,但表格未更新。
要进行调试,我尝试直接更改链接表视图中的记录。同样没有抛出任何错误,并且该行似乎已更新,但这不会反映在SSMS中,并且在MS-Access中重新加载表不再存在更改。我可以更改新列之外的列值。
我还测试了将基础表添加为链接表,我可以在此表中编辑MS-Access中的行。
(更新)
在下面的@ErikvonAsmuth建议中,我尝试在绑定表单上使用Recordsets而不是DoCmd.RunSQL
。再次可以访问记录并且更新没有在rst.Update
上给出错误,但更改未反映在新字段的数据库中。我可以使用上述方法更改以前存在的字段。
似乎我的问题与更新方法无关
(/更新)
我很感激下一步检查的任何想法。
答案 0 :(得分:0)
我发现了这个问题。
在视图上定义了一个触发器来处理对表的保存。我在SSQL中对此进行了更改以添加新列,现在一切正常。
当我尝试编辑SSMS中的字段时发现了一个提示,它也无法正常工作 - 收到loadOptions
错误。
这导致我在[{3}}
上引用一个引用触发器的线程我将返回并更改Row failed to retrieve on last operation
语句以使用记录集。