Есть два датасета (точнее их море), один родительский второй дочерний связь как обычно по полю (master-detail), последнее время получается при выполнении DetailDataset.Append происходит непонятный Post, начал рыть в чём проблема упёрся вот в это место
- Код: Выделить всё
procedure TZAbstractDataset.InternalAddRecord(Buffer: Pointer; Append: Boolean);
var
RowNo: Integer;
RowBuffer: PZRowBuffer;
begin
if not GetActiveBuffer(RowBuffer) or (RowBuffer <> Buffer) then
raise EZDatabaseError.Create(SInternalError);
if Append then
FetchRows(0);
if CachedResultSet <> nil then
begin
CachedResultSet.MoveToInsertRow;
RowAccessor.RowBuffer := RowBuffer;
PostToResultSet(CachedResultSet, FieldsLookupTable, Fields, RowAccessor);
try
CachedResultSet.InsertRow;//место генерирования исключения
except on E: EZSQLThrowable do
raise EZDatabaseError.CreateFromException(E);
end;
RowNo := CachedResultSet.GetRow;
FetchCount := FetchCount + 1;
{ Filters the row }
if FilterRow(RowNo) then
begin
if Append then
begin
CurrentRows.Add(Pointer(RowNo));
CurrentRow := CurrentRows.Count;
end
else
begin
CurrentRow := Max(CurrentRow, 1);
CurrentRows.Insert(CurrentRow - 1, Pointer(RowNo));
end;
end;
end;
end;
место генерирования исключения отмечено комментарием, генерируется исключение на required поля, потому что при вставке строки в датасет он пытается выполнить Post, не пойму почему так, причём данная особенность проявляется именно у этого датасета и ни у какого более, помогите понять в чём может быть проблема...
p.s. CachedUpdates не используется, все остальные свойства датасета по дефолту