一个主/从表出错的问题,

时间:2022-09-30 08:26:44
在一个窗体中,用以下事件构成了一主/从表TableMaster/TableDetail:
    procedure TDataMod.TableMasterAfterScroll(DataSet: TDataSet);
begin
  TableDetail.DisableControls;
  TableDetail.filtered:=false;
  TableDetail.filter:='KHMC='+QuotedStr(TableMasterkhmc.Value) ;
  TableDetail.filtered:=true;
  TableDetail.EnableControls ;
end; 

在另一窗体中能给从表TableDetail添加、修改数据。问题是当浏览完主/从表后,在从表窗体的DBGrid中只显示一部分记录,少了一些,想添加数据,总出错,错误提示:“Key violation”。注:主、从表都有各自的流水编号做主键!
    不知我的问题说清楚了没,我很菜的菜鸟!

5 个解决方案

#1


不太清楚具体什么原因;
不过一般提示key violation是因为主建被赋值为空;
你是不是先添加了一条空记录然后再给各个字段赋值的?

#2


从表添家数据是基于主表已经有的主键的!

#3


我在另一个窗体打开从表时,从表的记录只显示上一次打开主/从表时,从表中与主表关联的部分,可我想在新窗体中显示从表的全部内容!断开数据库,再联上也只显示那一少部分?

怎么办.高手说一句就行!!!

#4


自己解决了!

关闭主/从表窗体时,少写了一行:TableDetail.filtered:=false;

#5


呵呵!

TableDetail.filtered:=false;

#1


不太清楚具体什么原因;
不过一般提示key violation是因为主建被赋值为空;
你是不是先添加了一条空记录然后再给各个字段赋值的?

#2


从表添家数据是基于主表已经有的主键的!

#3


我在另一个窗体打开从表时,从表的记录只显示上一次打开主/从表时,从表中与主表关联的部分,可我想在新窗体中显示从表的全部内容!断开数据库,再联上也只显示那一少部分?

怎么办.高手说一句就行!!!

#4


自己解决了!

关闭主/从表窗体时,少写了一行:TableDetail.filtered:=false;

#5


呵呵!

TableDetail.filtered:=false;