怪问题,我用DBgrid作为输入界面,输入几条记录后,突然其中的几条记录自动被重复一次,后台数据库表中看输入的记录又是正常的?为什么?delphi6+sql server7

解决方案 »

  1.   

    你用的是不是主从表(detail/master)关系,如果直接使用主从表关系就可能出现这个问题,当然如果是的话就可以解决!
      

  2.   

    是的,我用delphi5+sql server7也出现这个问题只是当时没注意.
    但换delphi5+oracle8就没有看到这个问题出现.
      

  3.   

    哦,这个问题我解决了,刷新一下表就可以了,refresh不要忘了加分哟。可可,,,,,
      

  4.   

    没有你们说得那么简单,如果记录里面有sql自定义的自动流水号,恐怕刷新是不行的
      

  5.   

    是BDE的问题,你用的恐怕是TQuery吧!解决方法(可选其中之一):
      (1)可改用TTable
      (2)或添加TUpdateSQL与TQuery关联
      

  6.   

    我曾经碰过,因为DATASET找不到对应的ROW.
    你应在SQLSERVER中的表中加入Primary Key,使DATASET能识别每一行.
    修改表结构前先清空该表。
      

  7.   

    我也有这样的问题:
      主从表添加记录保存没问题。
      但是我保存马上删除就有问题提示:无法为更新定位行,一些值可能在最后一次读取后已更改。refres后也没有用。但我保存后退出程序后,再进来,删除却没有问题。怎么办呢????????????????
      

  8.   

    to b51(-):
     上次回答了一大串文字,因為upload失敗,全沒了.等寫好再Paste In.
      

  9.   

    我也曾碰到过,在数据库中设一个主键就行了!
    还有一个办法是让dbgrid翻屏,然后再回到原来的位置。
      

  10.   

    ADO的缺陷,檔使用batchupdate 時.給一段我的項目中的代碼:
    procedure TFrmMain.Button1Click(Sender: TObject);
    var aStrX:String;
    begin
      with ADODataset1 do
      begin
        if not Active then exit;
        try
        if RecordCount >0 then
        begin
          if Application.MessageBox(PCHAR('Are You Sure to Delete?'),
            PCHAR('Attention '),$0101{257}) = 1 then
          begin
            if Eof or Bof then  
            Begin
              aStrX:=BookMark;
              Last;
              BookMark:=aStrX; 
              Delete;
            end else
            begin
              Delete;
            end;
          end;
        end;
        except
          on E:exception do
          begin
            Cancel;
          end;
        end;
      end;
    end;
      保證删除不會有问题。
      

  11.   

    if DateSource(DBgrid).DataSet is table then
    add table's InsexFieldNmae