zoukankan      html  css  js  c++  java
  • 如何判断数据集中记录是否发生改变(50分)

    使用Delphi7+ADO,如何得知数据集是否发生了改变,即是否有记录值改变,或删除记录,或新增记录,目的是在关闭相关窗口时,提示用户保存数据
    if adotable1.Modified then
    {//提示保存}
    我用的是事务提交,所以不能只判断当前记录的状态
    if state in [dsinsert,dsedit] then
    begin
    end;
    如果事先读出的数据集为Dataset1,对其进行操作,在进行事务提交时,用同样的SQL语句读出数据给数据集DataSet2,然后
    DataSet2.Data := DataSet1.Data;
    然后判断
    if ChangeCount > 0 then .....

    数据集必须为TClientDataSet;
    to LEEMA
    你不觉得你的方法不是很好吗
    其实楼主是把简单问题复杂化了,他点保存就开始提交数据库了,成功了肯定是对数据库进行了修改啊,其他的界面操作(不和数据库相关的)你提示他保存的话,可以用一个标志位,但要每个控件的onchange事件里写。
    给我函数你.在你要判断的窗口的CloseQuery事件里这样调用:
    CanClose := DM2.DataSetApplyUpdates(DM2.cdsStockOrder, ModalResult = mrOK);


    function TDM2.DataSetApplyUpdates(DataSet: TDataSet; Apply: Boolean): Boolean;
    begin
    Result := True;
    with TDataSet(DataSet) do
    begin
    if (State in dsEditModes) or UpdatesPending then
    begin
    if Apply then
    begin
    Database.ApplyUpdates([DataSet as TDBDataSet]);
    CancelUpdates;
    end
    else
    begin
    if confirm('数据没有保存, 退出吗?') then
    Cancel
    // CancelUpdates
    else
    Result := False;
    end;
    end;
    end;
    end;
     
  • 相关阅读:
    project3 blockchain
    RESTful Web服务与“大”Web服务: 做出正确的建筑决策
    project2
    LAB4
    云计算的描述性文献综述与分类研究
    SQL常见面试题(学生表_课程表_成绩表_教师表)
    等价类划分经典实例-三角形测试用例设计
    搜索框功能测试分析
    B/S结构-登录页面-测试用例设计
    软件测试面试--常用基本控件测试用例
  • 原文地址:https://www.cnblogs.com/jijm123/p/10621141.html
Copyright © 2011-2022 走看看