请大侠指点:怎样解决:“Couldn't perform the edit because another user changed the record."??

HeavenBird 2001-03-18 05:18:00
各位大侠:
当我用DBGRID来编辑TABLE表数据时,为什么有的记录可以编辑,而有些则有以上的提示?TABLE数据是来源于SQL SEVER的某些表。请大侠指点。。
朋友 HENAVENBIRD
...全文
525 12 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
HeavenBird 2001-03-22
  • 打赏
  • 举报
回复
HEROIN、Qing_li及各位大侠,
你们说的很对,我反复实验了,发现在临时表中插入某几个SQL SERVER表记录时,假如要编辑这些记录,当原有的数据的小数点超过两位时,它就报错。避开这些数据,就没有问题。
但还不知在不避开这些数据,通过更改触发器来避免。我更改过了触发器的几乎所有可能的设置,还是不能正常,还请各位大侠多多赐教。
HEAVENBIRD
HeavenBird 2001-03-20
  • 打赏
  • 举报
回复
qkl及各位大侠,
你们说的很有道理,经过更改UPDATEMODE属性、刷新记录、增加临时表的INDEX,(我需要把几个SQL SERVER 表的某些记录放到一个TABLE临时表,一起编辑处理后再放到相关的SQL SERVER 表里)等等,还是有提示出现。能告诉具体怎么个刷新吗?
HEAVENBIRD
HEROIN 2001-03-20
  • 打赏
  • 举报
回复
我前不久遇到同样的问题,其原因有2
1.日期精度,若用了DateTime,且保存的数据精度较高。主要症状表现在:如果数据是用你现在的程序录入,修改时不会出现此问题。如修改非本程序录入的数据,就会抱错。主要出现在三层结构中。
2.如bpc所言,你的服务器中有错误的触发器。
bpc 2001-03-20
  • 打赏
  • 举报
回复
这种情况是因为你所操作的表中的触发器引起的。
你可以删除触发器,或修改你的触发器。
反正你的触发器有问题。我也遇到过这样的情况哦:)
Qing_li 2001-03-20
  • 打赏
  • 举报
回复
听!
qkl 2001-03-19
  • 打赏
  • 举报
回复
这是因为Delphi在每次edit之前要发送一条SQL语句来检查当前编辑的记录是否存在(根据TQuery、TTable的UPDATEMODE属性决定范围)如果该记录不存在了(count(*)返回0)表明:“Couldn't perform the edit because another user changed the record."。所以这是个多用户数据库的问题,你不能完全避免她,但你可用适当的刷新最新记录集来尽量避免她。
HeavenBird 2001-03-18
  • 打赏
  • 举报
回复
Raptor及各位大侠,
我在TQUERY上按照你的指点,试了还是不行。还有其他的方法吗?还请大侠们多多指点哦!!
HEAVENBIRD
猛禽 2001-03-18
  • 打赏
  • 举报
回复
试试把TQUERY的UPDATEMODE改为upWhereKeyOnly看看。
HeavenBird 2001-03-18
  • 打赏
  • 举报
回复
各位大侠,
数据库用的是C/S模式,在本机调试或在网络上多人使用出现情况一样。应该跟其他应用程序无关。还请各位大侠多多指教。
HEAVENBIRD
马丁当 2001-03-18
  • 打赏
  • 举报
回复
你写的什么结构,C/s,midas???
阆遤 2001-03-18
  • 打赏
  • 举报
回复
SQLSERVER本身是一个运行于服务器上的大型数据库系统,在多人上线的情况下,数据同步问题是一个常见问题,一般出现这种情况是因为有另一位数据操作人员,对服务器上的数据已做了修改,而该数据并不与你本地数据同步。对于此你只需重新下载该条记录即可。
yukuang 2001-03-18
  • 打赏
  • 举报
回复
是不是有其他的程序在使用这些记录?
资源下载链接为: https://pan.quark.cn/s/d9ef5828b597 在C++编程中,消息框是与用户交互的常用界面元素,它允许程序向用户展示信息,并根据用户的响应进行处理。MessageBox() 函数是Windows应用程序中实现消息框功能的标准接口,属于Windows API的一部分。本文将详细介绍MessageBox()函数的使用方法,包括常用属性、按钮形式和返回值等知识点。 MessageBox() 函数的基本语法结构如下: 其中,参数uType是一个整型值,通过组合不同的标志来定义消息框的按钮、图标等特性。常用属性包括消息框中显示的按钮以及附加的图标,例如: MB_OK:仅显示一个确定按钮。 MB_OKCANCEL:显示确定和取消按钮。 MB_YESNO:显示是和否按钮。 MB_YESNOCANCEL:显示是、否和取消按钮。 图标属性可以与按钮属性组合使用,为用户提供额外的视觉信息: MB_ICONEXCLAMATION 或 MB_ICONWARNING:显示感叹号警告图标。 MB_ICONASTERISK 或 MB_ICONINFORMATION:显示信息图标。 MB_ICONQUESTION:显示询问图标的问号。 MB_ICONERROR 或 MB_ICONHAND 或 MB_ICONSTOP:显示错误图标。 返回值方面,MessageBox() 函数执行后会返回一个整数值,代表用户点击了哪一个按钮。这个返回值可以与预定义的标识符进行比较,以判断用户的操作: IDCANCEL:用户点击了取消按钮。 IDNO:用户点击了否按钮。 IDOK:用户点击了确定按钮。 IDYES:用户点击了是按钮。 在使用MessageBox()函数时,需要特别注意字符编码问题。由于Visual C++ 2005默认使用Unicode字符集,当源代码使用的是ANSI

5,928

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧