gpt4 book ai didi

sql-server - 带有 SQL Server 后端更新的 MS Access 失败且没有错误

转载 作者:行者123 更新时间:2023-12-03 16:29:07 25 4
gpt4 key购买 nike

这个简单的 VBA 语句没有按预期工作:

strSQl = "UPDATE Inventory SET NumberOfBlocks = BlocksReserved, LastUser = 'Me' WHERE InventoryID = 1234;"
CurrentDb.Execute strSQl, dbFailOnError + dbSeeChanges

LastUser 已更新,但 NumberOfBlocks 保持不变,没有错误。

如果我在 SSMS 中或作为 Access 查询运行此语句,它会起作用。

如果我在 VBA 语句中使用变量 ..."SET NumberOfBlocks = "& intBlocksReserved & ",...,它会起作用。

常量工作:..."SET NumberOfBlocks = 555"...

这个也有效:NumberOfBlocks = (BlocksReserved * 1)

NumberOfBlocks 和 BlocksReserved 都是 smallint 且不为 null;该记录有一个时间戳/行版本字段。

环境:使用 SQL 2016 后端 Access 2016。

知道为什么我的初始陈述无声无息地失败了吗?谢谢!


更多测试证实了我之前的发现:

  1. 创建了一个新的 Access 数据库,表 Inventory:ID(AutoNumber,PK),NumberOfBlocks(整数),BlocksReserved(整数),LastUser(短文本 10)
  2. 在 SQL Server 中创建了一个表:

    [ID] [int] IDENTITY(1,1) NOT NULL,[NumberOfBlocks] [smallint] NULL,[BlocksReserved] [smallint] NULL,[最后一个用户] nvarchar NULL,[RV] [时间戳] NOT NULL

  3. 设置ID为Primary Key,链接SQL表,在两者中录入测试数据。

  4. 在两个表上运行完全相同的代码(只是更改了表名):

    将 strSQl 变暗为字符串

    strSQl = "UPDATE Inventory SET NumberOfBlocks = BlocksReserved, LastUser = 'Me';"CurrentDb.Execute strSQl、dbFailOnError + dbSeeChanges

结果:

本地 Access 表:NumberOfBlocks = BlocksReserved, LastUser = 'Me'

链接的 SQL 表:NumberOfBlocks 不变,LastUser = 'Me'


更多注意事项:

  • 将 SQL Server 中的数据类型更改为 int(而不是 smallint)并没有什么不同。
  • 但是,显式转换字段有效:

    ...SET NumberOfBlocks = CInt(BlocksReserved)...

  • 就像

    ...SET NumberOfBlocks = (BlocksReserved * 1)...

我想,这会将我的帖子从一个问题变成一个提示...

最佳答案

进一步的测试证实,这是在以下条件下执行命令中的错误:

  • 这是一个 UPDATE 语句,其中一个整数字段分配给另一个整数字段,例如 SET FieldA = FieldB(相同的数字数据类型)
  • 它是 SQL Server 中的链接表。

同样的SQL语句可以正常工作

  • 使用 Access 中的表或
  • 在查询中使用时。

经过测试的解决方法:

  • 显式转换字段:SET FieldA = CInt(FieldB)...(或 CLng...)
  • 使用任何计算:SET FieldA = FieldB * 1
  • 使用变量:SET FieldA = "& intFieldB

关于sql-server - 带有 SQL Server 后端更新的 MS Access 失败且没有错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55272323/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com