怎么判断我修改了哪个记录?

sinopf 2009-04-27 11:57:18
这是我的信息编辑界面,所有的信息都是从数据库调出来的(类似这样:Edit22.Text:=DataModule1.ADOQuery4.FieldValues['opinion'];),我现在怎么做才能判断我修改了哪行记录?我想实现这样的功能:如果没有修改信息,退出时就不提示,如果修改了某一个信息,退出时就会提示保存,并只更新数据库里这一列数据,而不是所有的内容都再次UPDATE一次。

我在网上查的ADOQuery有BeforeChange可以判断是否修改过记录,但是怎么用啊?
...全文
63 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
天鸽 2009-04-27
  • 打赏
  • 举报
回复

//你可以在Edit22onchange事件写
var ChangTing: boolean;
begin
ChangTing:= true;
DataModule1.ADOQuery4.Edit;
DataModule1.ADOQuery4.FieldValues['opinion']:= Edit22.text;
end;

//关闭的时候
if ChangTing = true then
begin
if messagebox(handle,'是否保存更新信息?', '询问', Mb_YESNO) = idyes then
DataModule1.ADOQuery4.post;
end;

jinhx 2009-04-27
  • 打赏
  • 举报
回复
我没有发现beforchange这个过程,并且你是用字段赋给文本框的,就算有也不能用,可以定义个变量changed,在每个文本的onchange里写:changed := true,退出窗口时判断,至于更新,不管你是只更新一列还是全部,在 sql里应该都是一样的
rzKevin 2009-04-27
  • 打赏
  • 举报
回复
1楼说得有道理。
cuixd2020 2009-04-27
  • 打赏
  • 举报
回复
对不起,没清楚要求,按照3楼的作罢
cuixd2020 2009-04-27
  • 打赏
  • 举报
回复
可以再ADOQuery的beforepost事件中循环判断记录的Modified属性,判断记录是否修改
bdmh 2009-04-27
  • 打赏
  • 举报
回复
如果你是用的DB控件,比如DBEdit,那么你可以判读数据集的状态
if ADOQuery1.State = dsEdit then //处于修改状态,提示保存


如果你不是DB控件,那就设置一个变量,用来标识状态 ,点击编辑时,置为True,编辑完置为False

2,497

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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