继承的问题:祖先窗口中的DBGrid,在后代窗口中“Add all fields”后,无法删除添加的字段,提示“Selection contains a component introduced in an ancestor form which can not be deleted”;
Master/Detail的问题:2.主从表怎样进行增加、修改和删除(就是说修改的时候我应该分别对Master和Detail进行什么操作?或者我只要进行Master.Edit即可了?删除的时候删掉Master的数据,Detail中的数据是否会自动删除?)?在什么时候进行UpdateBatch和CancelBatch?是否进行了BeginTrans后主表提交时从表会自动提交?
3.指定了Detail的Datasource属性为Master的Datasource即可在Master和Detail之间建立联系,系统是如何自动识别联系字段的?这个联系字段我可以自己修改吗?如何修改?
4.如果我对Master表中联系字段的值进行了修改,Detail中联系字段的值会自动修改吗?还是需要我手工去修改?

解决方案 »

  1.   

    窗口继承,在祖先窗口中有一个DBGrid,没有添加任何字段,在继承后的后代窗口中给这个DBGrid设好DataSource,然后做“Add all field”,添加进去的字段就无法删除了,错误如题。谢谢。
      

  2.   

    Selection contains a component introduced in an ancestor form which can not be deleted,意思就是祖先中已经包含了这些字段。
    所以,祖先中的数据集不能加你要删除的Field.没必要在祖先中加入啊,可以通过内部程序控制三。
      

  3.   

    主从表机构,数据库对数据的录入,删除等操作要进行规范!
    可以进行设置,比如说删除主表一条记录的话,从表记录也被删除
    也可以不删除等等,你在建立数据库的时候该考虑到这点
    系统如何联系那你不是你考虑的东东 了
    对一个子表只能针对主表建立一个联系字段!
    设置可以在表所应的dataset属性里可以设置
      

  4.   

    To chulianggao(再比天高)
    >>没必要在祖先中加入啊
    我的祖先窗口中的DBGrid没有加入任何字段,所以我很奇怪到底是哪里出错了。To delphi0build(超级模块):
    还有一些不太明白的,请你指教:1.>>数据库对数据的录入,删除等操作要进行规范!可以进行设置,比如说删除主表一条记录的话,从表记录也被删除……
    是指在数据库设计中应该考虑表之间的关系吗?我在主从表之间建立了外键,这样够不够?还需要用触发器来实现子表数据的删除吗?2.>>对一个子表只能针对主表建立一个联系字段!
    比较糟糕,我的主表和从表用两个字段联系的,只能手工指定了吗?3.>>设置可以在表所应的dataset属性里可以设置
    不明白,应该在什么“表”所对应的Dataset属性中设置?谢谢!
      

  5.   

    继承的问题你再彻底找一次基类和子类相同的问题,delphi在这里可能有bug,因为我遇到过一次和你相同的问题,但后来可以删除;删除master里的数据detail中的不会自动删除,必须自己做触发器修改TTable的MasterFields字段可以建立主从表联系,也可以使用多个字段联系;对master的联系字段的修改将丢失其从属关系,这里也必须用触发器来修改;