如何判断adodataset的数据是否发生改变?

charge 2003-03-12 12:56:05
我想在窗口的closequery中判断adodataset中的数据是否改变,请问怎样判断?
...全文
193 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
imageonline 2003-03-14
  • 打赏
  • 举报
回复
或用过滤的方法的把所有记录都过滤出来看看
adodataset.filtered := true;
adodataset.filtergroup := fgpendingrecords;
看看数据数
filtergroup 类型
fgUnassigned
fgNone
fgPendingRecords
fgFetchedRecords
fgPredicate
fgConflictingRecords
charge 2003-03-13
  • 打赏
  • 举报
回复
to: zxkid()

你的方法效率要访问n条记录,如果n很大会不会效率很低呀?
mengxianbao1521 2003-03-13
  • 打赏
  • 举报
回复
可以判断TDataSouse的方法DataChange就可以了。
加一个标志位(变量ind),不就可以了


if not ind then
begin
SHowMessage(‘没有保存’);
exit;
end
zxkid 2003-03-13
  • 打赏
  • 举报
回复
Modified := False;
while not eof do begin
if recordstatus not in [rsUnmodified] then begin
Modified := True;
Break;
end;
next;
end;
charge 2003-03-12
  • 打赏
  • 举报
回复
killlaoli(菜鸟) :你说的有一定道理,3ks!
欢迎大家来献计献策!!!!!!
killlaoli 2003-03-12
  • 打赏
  • 举报
回复
to charge(充电电池):
不一定pb有delphi就得有啊,pb能存在这么久,到今天还有人用,当然是有道理的啊,至少datawindow就很好用...
to imageonline(不交房租):
这样应该是可以的,不过象我上面说的那种,改过去,再改回来,就不对了...
严格的实现的话,就得象Wnyu(西门吹水) 说的那样,刚开始把所有的东东都保存起来(TStringList?),后来再比较...
imageonline 2003-03-12
  • 打赏
  • 举报
回复
bDataChanged 初始为false
不是很麻烦吧,只要有改动
procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
begin
bDataChanged := True;
end;
检查一下bDataChanged就行了
Wnyu 2003-03-12
  • 打赏
  • 举报
回复
开始时把数据存入一个类中,
存盘时与现在的DataSet比较.
charge 2003-03-12
  • 打赏
  • 举报
回复
楼上两位,这样作是不是很麻烦呀,要写一些控制语句耶
,难道adodataset就没有象pb中的datawindow的功能?
killlaoli 2003-03-12
  • 打赏
  • 举报
回复
我觉得你可以定义一个bool型全局变量,初始时为false,在数据发生改变时,将该变量置为true,close窗口时,判断一下这个变量的值...

这样好象还有问题,如果将1改为2,再由2改为1,实际上数据是没改变的...

那就只有和原来一点儿点儿比了...(恐怖)
imageonline 2003-03-12
  • 打赏
  • 举报
回复
用datasourse和adodataset关联,在datasource 的ondatachange事件中写入一个bDataChange变量,窗口关闭时检查bDataChange的状态
Comer 2003-03-12
  • 打赏
  • 举报
回复
gz

2,497

社区成员

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

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