当前位置: 首页 > news >正文

ADO错误: 无法为更新定位行。一些值可能已在最后一次读取后已更改解决办法

对日期格式的赋值出现问题。取消日期格式赋值后问题消失。
出现问题时的赋值方式: ado->Fields->operator[i]->AsDateTime = *(TDateTime*) temp;

ADO在保存时提示错误:“无法为更新定位行。一些值可能已在最后一次读取后已更改”
这个问题困扰了大半天,在网上查询了很多这类问题解决方法,大都说得很模糊,未能根本解决问题
有说跟字段的设置了默认值有关,也有说是其他用户更新了记录,我就写了一个很简单的程序来跟踪,
就数据库也保证只有一个用户连接,结果发现问题出在一个DateTime型字段上,修改其它任何字段都
没有问题,一旦修改该字段然后UpdateBatch()就会报错,经过反复测试,终一找到问题的根源:
  数据库(Sybase)中该字段存的值精确到了毫秒,如'2009-06-09 14:08:33.756',ADO读取该字段时
值并未发生变化,将其值修改为如'2009-06-09 14:08:34.756',错误就出来了:提交数据时,ADO在
数据库进行匹配时取的条件却不再是'2009-06-09 14:08:33.756',似乎对其进行了四舍五入(因为我
将数据库的值改为'2009-06-09 14:08:33.750'后,就能正常修改保存,只要毫秒精确到了个位就不能
正常更新),所以断定是ADO的时间类型精度不够造成。
 
本人使用的是SQLITE本地数据库,出现同样问题,原因相同。
解决方法:
将类型转换为varchar. 例如,在SQL中,SELECT ID as ID, cast(ActTime as varchar) as ActTime, ...from TableA; 这样,在ADO提交修改时,对ActTime是以VARCHAR提交的,不再存在上述问题。

同样也试用了TDataSetProvider + TClientDataSet + ADOQuery 的方式,通过设置 UpdateMode = upWhereKeyOnly 以及 KeyField->ProviderFlags = TProviderFlags() << pfInKey , 修改可以写入数据库,但新问题出现:SQLITE对传入的时间格式解读有误,只保存了时间格式的日期部分,时分秒均为0。

最终,解决方法只能是将时间类型转换为字符串类型

 

 

 

相关文章:

  • MySQL DATEDIFF TIMEDIFF
  • C# 发送电子邮件(含附件)用到的类 system.web.mail
  • 为应用程序池defaultAppPool提供服务的进程在于world wide web publishing服务通信时遇到致命错误 进程id为1356. 数据字段包含错误号
  • realtek PCI-E Gigabit Ethernet Boot Agent
  • 修改ubuntu开机背景颜色
  • 事件ID(54)的描述(在资源(HTTP)中)无法找到 解决办法
  • WIndows 7 安装.net framework 4.0 失败,错误HRESULT 0xc8000222解决办法
  • APK文件反编译、签名整合工具包
  • .apk文件,IIS不支持下载解决
  • CSS禁止选择文本功能(兼容IE,火狐等浏览器)
  • ASP版MD5加密函数及用法
  • MySQL中进行树状所有子节点的查询
  • mysql中的 IN和FIND_IN_SET的查询问题
  • linux取消屏保
  • Linux下tar.xz结尾的文件的解压方法
  • Codepen 每日精选(2018-3-25)
  • download使用浅析
  • MySQL几个简单SQL的优化
  • node-glob通配符
  • passportjs 源码分析
  • Python_网络编程
  • Python连接Oracle
  • VirtualBox 安装过程中出现 Running VMs found 错误的解决过程
  • webpack项目中使用grunt监听文件变动自动打包编译
  • win10下安装mysql5.7
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 人脸识别最新开发经验demo
  • 使用阿里云发布分布式网站,开发时候应该注意什么?
  • 一个JAVA程序员成长之路分享
  • Spring Batch JSON 支持
  • 阿里云ACE认证之理解CDN技术
  • 扩展资源服务器解决oauth2 性能瓶颈
  • ​​​​​​​Installing ROS on the Raspberry Pi
  • ###STL(标准模板库)
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • (145)光线追踪距离场柔和阴影
  • (二)Linux——Linux常用指令
  • (非本人原创)史记·柴静列传(r4笔记第65天)
  • (附源码)springboot猪场管理系统 毕业设计 160901
  • (七)微服务分布式云架构spring cloud - common-service 项目构建过程
  • (原创) cocos2dx使用Curl连接网络(客户端)
  • (原創) 如何解决make kernel时『clock skew detected』的warning? (OS) (Linux)
  • (源码版)2024美国大学生数学建模E题财产保险的可持续模型详解思路+具体代码季节性时序预测SARIMA天气预测建模
  • (转)使用VMware vSphere标准交换机设置网络连接
  • **Java有哪些悲观锁的实现_乐观锁、悲观锁、Redis分布式锁和Zookeeper分布式锁的实现以及流程原理...
  • .aanva
  • .bat批处理(三):变量声明、设置、拼接、截取
  • .Net Core webapi RestFul 统一接口数据返回格式
  • .net 程序 换成 java,NET程序员如何转行为J2EE之java基础上(9)
  • .NET 读取 JSON格式的数据
  • .net 验证控件和javaScript的冲突问题
  • .NET设计模式(2):单件模式(Singleton Pattern)
  • .NET性能优化(文摘)
  • .ui文件相关
  • :“Failed to access IIS metabase”解决方法