0

表 ABC 中的 TestDate 字段是数据库中的 datetime 类型,该字段的值以毫秒为单位。

从 ABC 中选择 TestDate

2021-11-29 09:52:24.823

我正在 Rad Studio 10.1 Berlin 中创建一个项目,如果我尝试使用数据集 Post() 将其更新到不同的时间,程序会引发异常“无法定位行进行更新。自上次读取以来,某些值可能已更改。

TADOQuery *qryMain;

qryMain->ConnectionString = "Provider=SQLNCLI11.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=;Data Source=";

qryMain->SQL->Add("SELECT * FROM ABC");

qryMain->打开();

qryMain->Edit();

TDateTime dtNew(2021, 11, 29, 8, 51, 23, 0);

qryMain->FieldByName("TestDate")->AsDateTime = dtNew;

qryMain->Post();

qryMain->关闭();

如果我在 ConnectionString 中将提供程序从 SQLNCLI11.1 更改为 SQLOLEDB.1,则可以正常工作。但我应该只在项目中使用 SQL Native Client。

使用 SQL Native Client 时,它也适用于 SQL 兼容性较低的情况。如果兼容性是 SQL Server 2014 或更低版本,那么它可以工作。但如果兼容性是 SQL Server 2016,它就不起作用。

有没有办法来解决这个问题 ?

[注意:我使用的是 Microsoft SQL Server Management Studio 18 - v18.10]

4

0 回答 0