【发布时间】:2021-12-30 00:47:27
【问题描述】:
这是最简单的更新。
访问前端、SQL 后端、链接表。
UPDATE Available SET Status = 'New'
WHERE ((SerialNumber)='HAJ1376');
运行没有错误,但返回 1 条记录显示“已使用”
SELECT [Status], * FROM Available
WHERE SerialNumber = 'HAJ1376';
还返回“已使用”。
请注意,我是否通过字符串 SerialNumber 或数字 ID 进行更新或选择并不重要。
从 SSMS 运行相同的查询会正确更改数据。 这似乎适用于任何表上的任何字段。我无法从 Access 更新任何内容。
这个系统在生产中运行良好,只是在我的开发机器上失败了。
我回到了产品备份,但它仍然会发生,所以我不应该对数据库进行任何更改。与旧版本的代码相同。
我尝试删除并重新创建与表的连接、重新启动、停止和重新启动 SQL、修复 Office。
连接字符串是
DRIVER=SQL "Server;SERVER=WORKPC\SQLEXPRESS;DATABASE=mydatabase;Network=DBMSSOCN;Trusted_Connection=No"
区别:
- prod 使用的是完整的 SQL,而我使用的是 express。
- 数据库在本地而不是在专用机器上。
- 我使用的是 accdb 而 prod 是 accde。
访问 365,v16.0.13801.21072,64 位
MS-SQL Server 2017,14.0.1000.169,速成版,64 位
Windows 10 家庭版 10.0、X64、内部版本 19042
【问题讨论】:
-
我相信它正在读取正确的记录,因为我可以更改 SQL 中的值并在 Access 中查看它。
-
Trusted_Connection=No并且没有 UID/PWD 详细信息?访客帐户是否有权更新? -
如果打开链接表可以编辑一行数据吗?首先检查一下,看看链接表是否允许更新。如果 Access UI 中的链接表不起作用,那么您的更新也将不起作用。所以尝试通过双击该链接表来编辑一行 - 查看是否允许编辑。
标签: sql-server ms-access