Delphi中DBGridEh编辑完,然后上下移动数据会post,数据集Modified判断会为假

NONO_General 2019-04-24 03:17:30
各位大神:
Delphi中DBGridEh编辑完,然后上下移动后,数据会自动post,这样要判数据集Modified判断会为假,如何解决此问题,
因为ADOquery的Locktype设置为ltBatchOptimistic,所以数据在缓存中,这时想点保存按钮判断数据集是否Modified,但是此时已经为假了
判断不出修改过数据,求解。
...全文
431 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
victor_yang 2020-08-13
  • 打赏
  • 举报
回复
补充:
在数据集的AfterPost里就可以将保存按钮打开了
victor_yang 2020-08-13
  • 打赏
  • 举报
回复
在窗体里定义一个变量
IsChanged:Boolean;

数据集的AfterPost里
IsChanged:=True;

AfterOpen里
IsChanged:=False;

保存事件后
IsChanged:=False;
Andy-88 2020-08-13
  • 打赏
  • 举报
回复
用clientData ,用changeCount,这个还要结合控制界面的enable ,好久没搞数据库方面有点生了
英年渐肥 2020-07-28
  • 打赏
  • 举报
回复
数据集的changecount>0
无聊的猪 2019-04-26
  • 打赏
  • 举报
回复
这个可以这样做,一开始将保存按钮禁用,然后在DataSource的OnStateChange中进行判断 if DataSource.State in [dsInsert, dsEdit] then begin btnSave.Enabled := True; end;
sczyq 2019-04-26
  • 打赏
  • 举报
回复
只能在数据集内部判断, 外部判断基本上没办法, TDataSet 有记录集与缓冲区, 你想判断是否修改只能从记录集与缓冲区进行比较
  • 打赏
  • 举报
回复
TDataSource.OnUpdateData 数据更新之前触发
TDataSource.OnDataChange 数据修改之后触发
无聊的猪 2019-04-25
  • 打赏
  • 举报
回复
modified只能判断当前记录,移动后就判断不了啦。 如果开了ltBatchOptimistic,可以用UpdateStatus来判断,或者在query的BeforePost事件中做一下处理。
NONO_General 2019-04-25
  • 打赏
  • 举报
回复
我是想在保存按钮中判断是否有改变,如果改变则弹出提示,是否保存,这样不能用Modified判断的话,则没法进行判断了啊!

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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