本文介绍了主/细节行为的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我使用Delphi 7 + Zeos + MySQL,当我尝试发布主表时,我遇到了一个问题,详细信息数据集首先发布,在数据库中引发了一个参考完整性异常,couse details tables需要ID主表。
我可以恢复这种行为吗?我可以在细节之前坚持主表吗?
解决方案我认为这只是 TDataSet 工作。如果您没有发布详细记录,请高手。发布强制他们到发布如果我记得正确。
所以我猜你有这样的东西:
tblMaster.Insert; tblMaster.FieldByName('foo')。Value:='foo'; tblDetail.Insert; tblDetail.FieldByName('bar')。值:='bar'; tblMaster.Post; //错误! tblDetail.Post;你应该能够通过发布主人来解决这个问题:
tblMaster.Insert; tblMaster.FieldByName('foo')。Value:='foo'; tblMaster.Post; tblDetail.Insert; tblDetail.FieldByName('bar')。值:='bar'; tblDetail.Post;
I use Delphi 7 + Zeos + MySQL, and I got a problem when I try to post Master table, the Details datasets are posted first, raising a referencial integrity exception in data base, 'couse details tables needs the ID of the Master table.
Can I revert this behavior? Can I persist the master table before the details?
解决方案I think it's just the way TDataSet work. If you have unposted detail records, master.Post forces them to Post if I remember correctly.
So I am guessing you have something like:
tblMaster.Insert; tblMaster.FieldByName('foo').Value := 'foo'; tblDetail.Insert; tblDetail.FieldByName('bar').Value := 'bar'; tblMaster.Post; // error! tblDetail.Post;You should be able to work around this by posting master first:
tblMaster.Insert; tblMaster.FieldByName('foo').Value := 'foo'; tblMaster.Post; tblDetail.Insert; tblDetail.FieldByName('bar').Value := 'bar'; tblDetail.Post;
更多推荐
主/细节行为
发布评论