表 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]