Образовательный портал Claw.ru
Всё для учебы, работы и отдыха
» Шпаргалки, рефераты, курсовые
» Сочинения и изложения
» Конспекты и лекции
» Энциклопедии

Как уже говорилось, если DocID становится равным 0, сервер закрывает документ.

Сумма документа запрашивается с сервера:

procedure TDMDoc.RecalcDocSum;

begin

 with cdsBody do // Свежие изменения посылаются на сервер

  if ChangeCount > 0 then

   ApplyUpdates(-1);

 with cdsTitle do

 begin

  if not (State in [dsEdit, dsInsert]) then

   Edit;

  FieldByName('Summa').asCurrency := GetDocSum;

 end;

end;

function TDMDoc.GetDocSum: Currency;

var

 AServer: IrdmDocDisp;

begin

 AServer := IrdmDocDisp(scDoc.GetServer);

 Result := AServer.DocSum;

end;

Поле Summa в клиентском наборе данных – вычисляемое, при этом его тип (свойство FieldKind) установлен в fkInternalCalc, что позволяет работать с этим полем, как с обычным полем данных, используя методы Edit и Post. Значение для него создается не в обработчике OnCalcFields, как требуется для типа fkCalculated, а непосредственно при редактировании записи. Хотя такой способ хорошим не назовешь, руководство VCL рекомендует использовать OnCalcFields, принципиальных различий нет, internalCalc-поля вычисляются только при вызове Post, однократно. Второй способ создания поля - сделать calculated Fields на сервере, и установить у них ProviderFlags = []; в этом случае поля на клиенте будут иметь тип fkData (данные записи), и с ними также можно работать, как с обычными полями данных.

Для показа значения поля "Поставщик" удобно воспользоваться процедурой из модуля DMCommon:


Рекомендуем скачать другие рефераты по теме: зимнее сочинение, шпаргалки по уголовному.


Категории:




Предыдущая страница реферата | 19  20  21  22  23  24  25  26  27  28  29 |


Поделитесь этой записью или добавьте в закладки

   



Рефераты от А до Я


Полезные заметки

  •