说明:
    因为有部分数据是要求在服务器端生成返回的,而如果直接采用ADO,不能进行接收服务器端生成的数据,所以采用存储过程。
    问题一、采用存储过程后,就希望当进行数据更新时,程序的实现在本地的数据更新
    问题二、采用数据集控件怎么实现本地缓存,而不是每次都要OPEN    谢谢!

解决方案 »

  1.   

    如果是在三层模式下,不存在你说的问题,所有操作都是在本地,只有执行ApplyUpdates时,才向服务器提交数据
    在两层模式下,ADO组件需要把 
     ADOQuery1.LockType:=ltBatchOptimistic;
     ADOQuery1.CacheSize:=1000;
     ADOQuery1.CursorLocation:=ctStatic;开启缓存,这时内容存在内存中
    如果想保存在硬盘文件需要用 
    ADOQuery1.LoadFromFile();
    ADOQuery1.SaveToFile();
    来处理文件
      

  2.   

    TO madyak(无天):
        
        我的操作实际上是这样,对于数据的更新(包含新增、修改、删除)操作,是通过存储过程中实现的。
        这样,对数据进行更新操作后,在本地的数据集中进行相应的操作,而这些操作是与数据库断开的,实际上相当于本地缓存
        即:数据更新都是在服务器端完成了
        现在不知道怎么处理或者说处理不当的是:后台数据已经更新了,前端的网格中的数据显示处理,比方说调用存储过程已经新增了一条数据并成功,可在前端怎么加上新增的数据显示(数据都有)?
      

  3.   

    怎么没人帮忙呢?
    其实这个问题跟采用execsql来更新数据的问题是一样的,两者都是通过sql语句来进行数据更新,但本地数据缓存改如何更新呢?insert/append,post的方式是不能达到服务器端的数据生成的
      

  4.   

    ADOQuery1.LockType:=ltBatchOptimistic;
     ADOQuery1.CacheSize:=1000;
     ADOQuery1.CursorLocation:=ctStatic;
    不执行UpdateBatch,所有修改都是在本地的,不会提交到服务器
      

  5.   

    如上确实是不会提交到服务器不过至今还比较差异的是:ADO提供的SQL语句执行数据更新的操作或存储过程,其客户端的数据是如何更新的呢?都把它置为“BatchOptimisti”来更新?
      

  6.   

    ADOQuery1.UpdateBatch就可以把缓存中修改提交到服务器;
      

  7.   

    不需要提交到服务器,因为SQL或者存储过程已经执行了
    ADO数据集只是用来存储更新的数据