用DBNavigator添加数据时,刚增加完3条,DBGrid里面就只看得见一条了,都不知道增加了几条了,怎么解决?用Table.Refresh可以吗?但是又提示it is not uniquely indexed。怎么办啊?

解决方案 »

  1.   

    Refresh需要表建立索引!
    可以把数据集关闭再打开!
      

  2.   

    dataset.close;
    dataset.open;
      

  3.   

    dataset.close;
    dataset.open;
      

  4.   

    1、响应OnBeforePost事件,让新添加的纪录符合过滤条件。2、设置PcakedRecord为-1,或者刷新ClientDataSet。3、在提交的时候模拟数据库可能的改变,从而阻止数据库的改变,比如提供默认值。或者,改变这些字段的AutoGenerateValue属性,可以用arAutoInc或者arDefault,这样数据集可以获得改变了的值,不过这依赖于具体的数据库引擎,有些并不能返回。或者,数据集定位纪录用主键,这需要修改数据库,创建一个主键。如你使用的BDE数据集,那么你可以设置upWhereKeyOnly属性,来确定是否用关键字段定位纪录。对于ADO数据集来说用关键字段来定位纪录是默认和不可改变的。