主从表结构,子表采用缓存更新模式,在保存前我想手工检查Detail中每一行的数据合法性(不能完全由数据库来进行检查,某些数据库中可以为空的字段在业务上不允许为空,但是数据库结构已经不可更改),但是现在有一个问题,我在保存中是这样写的:
if not DetailDataIsValid() then
Abort;
if AQryDetail.State in dsEditModes then //如果用户在没有修改子表则子表
//不需要Update
begin
AQryDetail.Post;
AQryDetail.UpdateBatch();
end;在作Detail的数据合法性检验中我对AQryDetail进行了遍历,但是单步跟踪的结果发现,在作遍历的时候,只要改变了Dataset的当前行(First、Next等等),就会是AQryDetail的State变成dsBrowse,因此子表数据就不会保存了。请问各位大虾有什么更好的办法没有?先谢过了!!!
if not DetailDataIsValid() then
Abort;
if AQryDetail.State in dsEditModes then //如果用户在没有修改子表则子表
//不需要Update
begin
AQryDetail.Post;
AQryDetail.UpdateBatch();
end;在作Detail的数据合法性检验中我对AQryDetail进行了遍历,但是单步跟踪的结果发现,在作遍历的时候,只要改变了Dataset的当前行(First、Next等等),就会是AQryDetail的State变成dsBrowse,因此子表数据就不会保存了。请问各位大虾有什么更好的办法没有?先谢过了!!!
if not DetailDataIsValid() then
Abort;
if AQryDetail.State in dsEditModes then //如果用户在没有修改子表则子表
//不需要Update
begin
AQryDetail.Post; end;
AQryDetail.UpdateBatch();