我在Grid中有一个字段(Boolean)是用来选择记录的,但是只能选择几个就不能再选择了!这个字段的值是控件写入的!
选中为 真 否则为 假 。这个Grid是用ADOQuery加入的数据集。提示:无法为更新定位行,一些值可能在最后一次读取后已更改。在网上查了点信息,多是在说是因为数据库中有默认值的原因,我去了默认值还是有问题!不知道,如何解决???急求!!!!!!(最好不换控件,因时间有限,明天一定要交出!)先谢谢!

解决方案 »

  1.   

    检查一下数据库的主键约束关系是否和原来的一样(在索引的定义中可以看到主键的约束关系),SQL Server的企业管理器导出的数据会失去原来的约束关系,要用数据备份和数据库还原才行。
      

  2.   

    看看这4个主键有没有选聚集、唯一值和primay约束关系。
      

  3.   

    我是用sql 创建的表
    'create table BalanceModify('+
                    'RTU_ID integer not null ,'+
                    'Meter_Id varchar(12) not null , ' +
                    'M_date DateTime ,'+
                    'NearTime DateTime  ,'+
                    'Base_old float, '+
                    'Freeze_Base float, '+
                    'EQ_old float, '+
                    'electricQ float, '+
                    'F_year integer not null,'+
                    'f_month Byte not null, '+
                    'freeze_fdl float ,'+
                    'freeze_pdl float, '+
                    'Freeze_gdl float,  '+
                    'MeterError varchar(120),'+
                    'SelRe BIT,'+
                    'State integer,' +
                    'primary key (RTU_ID,Meter_Id,f_month,F_year))' ;
      

  4.   

    那你会不会用SQL语句创建约束关系,我不会用SQL语句创建约束关系,我是直接在SQL Server的企业管理器里改的,一改就好了。
      

  5.   

    我的是ACCESS数据库,我也不会!
      

  6.   

    我没用access,不好意思,我用的是SQL Server,我现在也遇到这样的问题,就是如何用程序实现各种约束关系,如果没有这些约束关系就会出现,或是往int,float或是datetime这种数据类型里插入空值时,就会出现‘无法为更新定位行,一些值可能在最后一次读取后已更改’这种现象,你再试试插入数据时全部用ASString的类型,比如说fieldbyname('日期').ASString:=combobox1.text,本来应该是fieldbyname('日期').ASDateTime:=combobox1.text。
      

  7.   

    楼主你查在ADOQuery中的数据是否也包含这四个主键,因为ADOQuery是根据当前数据集写SQL语句更新的,如果查出来的数据主键信息不足,就会报这个错误。
      

  8.   

    我去看看,如何在sql中加入约束!不是去学习学习,
      

  9.   

    我在用ADOQuery时是查出了,我这就去试试加入约束