平时不常做什么数据库项目,一旦做了,发现了许多问题与麻烦,特别是多人共享记录操作: 
一条记录,字段很多,几人要维护它的数据,才发现问题的严重! 
一>别人修改后的脏数据问题: 
  实际出现脏数据,不应该影响我什么,但delphi 不允许Post,如何解决? 
为了简单,我喜欢用DBEdit之类的操作界面,用户点Post时,才发现是"脏数据",没法提交, 
录的数据白输了; 
   我希望是:脏数据也允许 Post,  希望大家出出主意!!! 脏数据:  就是别人同时修改记录后,我的缓冲区的记录与实际记录已出现不符, delphi不允行更新修改的, 
除非,刷新成一致的; 
总是出现:"无法为更新定位行,一些值已在最一次读取后已更改" 

解决方案 »

  1.   


    function G_BuildDS(const DataSet: TADODataSet; strSql: string): integer;
    begin
      try
        G_CloseDS(DataSet);
        DataSet.CommandType := cmdText;
        DataSet.CommandText := strSQL;
        DataSet.Open;
        DataSet.Recordset.Properties['Update Criteria'].Value := AdCriteriaKey;  //主要是这个属性
        Result := DataSet.RecordCount;
      except
        Result := -1;
      end;
    end;
      

  2.   

    已解决! 
    经试验: ADO的这个问题不是Borland的事,是微软的问题; 
    我用一个ADOConnection1,两个ADODataSet:  ADODataSet1,ADODataSet2都提向同 
    一个表做试验;用两个DBGrid观察; ADOConnection1.CursorLocation:=clUseServer; 
    ADODataSet1.CursorLocation:=clUseServer;          // 不要忘了! 
    ADODataSet1.CursorType:=ctKeyset;                // 不要忘了! 
    ADODataSet2.CursorLocation:=clUseServer;      
    ADODataSet2.CursorType:=ctKeyset; 
    //-------------------------------------------------------- 
    一切OK!不会冲突,N个用户谁改了某一字段,就改了字段! 
    成功! 成功!