Есть две dxMemData MD_T и MD_F. Имеют динаковый набор полей. Хочу загрузить в MD_F данные из MD_T с помощью LoadFromDataSet:
Код:
MD_F.Close;
MD_F.LoadFromDataSet(MD_T);
В процессе выполнения функции LoadFromDataSet программа начинает возмущаться, что MD_F не находится в режиме редактирования или вставки. При дебуге выясняется, что это происходит на последней записи мемдейты, в процедуре (Unit dxmdaset):
Код:
procedure TdxCustomMemData.SetFieldData(Field: TField; Buffer: TValueBuffer);
var
RecBuf : TRecordBuffer;
begin
if not (State in dsWriteModes) then
DatabaseError(SNotEditing, Self); {вот в это месте у последнего элемента мемдейты State = dsBrowser, тогда как у всех предыдущих он был dsInsert }
if not GetActiveRecBuf(RecBuf) then Exit;
Field.Validate(Buffer);
FData.SetActiveBuffer(RecBuf, Buffer, Field);
if not (State in [dsCalcFields, dsFilter, dsNewValue]) then
DataEvent(deFieldChange, Longint(Field));
end;
(при этом, если заключить функцию LoadFromDataSet в блок Try .. except, можно увидеть, что она, таки, всё прекрасно загрузила, в том числе ту запись, про которую ругалась).
Кто-нибудь сталкивался с таким явлением? Как тут можно поправить ситуацию?
ПЫСЫ: Кстати, в обратную сторону функция работает без проблем(т.е. никаких возражений против
MD_T. LoadFromDataSet(MD_F) она не имеет

)