我想在窗口的closequery中判断adodataset中的数据是否改变,请问怎样判断?

解决方案 »

  1.   

    用datasourse和adodataset关联,在datasource 的ondatachange事件中写入一个bDataChange变量,窗口关闭时检查bDataChange的状态
      

  2.   

    我觉得你可以定义一个bool型全局变量,初始时为false,在数据发生改变时,将该变量置为true,close窗口时,判断一下这个变量的值...这样好象还有问题,如果将1改为2,再由2改为1,实际上数据是没改变的...那就只有和原来一点儿点儿比了...(恐怖)
      

  3.   

    楼上两位,这样作是不是很麻烦呀,要写一些控制语句耶
    ,难道adodataset就没有象pb中的datawindow的功能?
      

  4.   

    开始时把数据存入一个类中, 
    存盘时与现在的DataSet比较.
      

  5.   

    bDataChanged 初始为false
    不是很麻烦吧,只要有改动
    procedure TForm1.DataSource1DataChange(Sender: TObject; Field: TField);
    begin
      bDataChanged := True;
    end;
    检查一下bDataChanged就行了
      

  6.   

    to charge(充电电池): 
    不一定pb有delphi就得有啊,pb能存在这么久,到今天还有人用,当然是有道理的啊,至少datawindow就很好用...
    to imageonline(不交房租):
    这样应该是可以的,不过象我上面说的那种,改过去,再改回来,就不对了...
    严格的实现的话,就得象Wnyu(西门吹水) 说的那样,刚开始把所有的东东都保存起来(TStringList?),后来再比较...
      

  7.   

    killlaoli(菜鸟) :你说的有一定道理,3ks!
    欢迎大家来献计献策!!!!!!
      

  8.   

    Modified := False;
    while not eof do begin
      if recordstatus not in [rsUnmodified] then begin
        Modified := True;
        Break;
      end;
      next;
    end;
      

  9.   

    可以判断TDataSouse的方法DataChange就可以了。
    加一个标志位(变量ind),不就可以了
    if not ind then
    begin
      SHowMessage(‘没有保存’);
      exit;
    end
      

  10.   

    to: zxkid()你的方法效率要访问n条记录,如果n很大会不会效率很低呀?
      

  11.   

    或用过滤的方法的把所有记录都过滤出来看看
    adodataset.filtered := true;
    adodataset.filtergroup := fgpendingrecords;
    看看数据数
    filtergroup 类型
    fgUnassigned
    fgNone
    fgPendingRecords
    fgFetchedRecords
    fgPredicate
    fgConflictingRecords