FAQ VCL
Компоненты\DatasetProvider

:: Меню ::
:: На главную ::
:: FAQ ::
:: Заметки ::
:: Практика ::
:: Win API ::
:: Проекты ::
:: Скачать ::
:: Секреты ::
:: Ссылки ::

:: Сервис ::
:: Написать ::

:: MVP ::

:: RSS ::

Яндекс.Метрика

Как предотвратить удаление параметров после выполнения запроса?

type
  TDatasetProviderEx = class(TDatasetProvider)
  protected
    // По умолчанию, если среди параметров есть Output или InputOutput,
    // то все параметры кроме этих будут стерты. Так что переопределяем
    // процедуру и немного модифицируем ее.
    function InternalGetParams(Types: TParamTypes = AllParamTypes): OleVariant; override;
  end;

implementation

uses
  {...,} Datasnap.DBClient;

function TDatasetProviderEx.InternalGetParams(Types: TParamTypes): OleVariant;
var
  lParams: TParams;
begin
  CheckDataSet;
  lParams := IProviderSupport(DataSet).PSGetParams;
  if (lParams = nil) or (lParams.Count = 0) then
    Result := NULL
  else
    Result := PackageParams(lParams, [ptInput, ptOutput, ptInputOutput, ptResult]{AllParamTypes});

  // Или просто:
  // Result := inherited InternalGetParams([ptInput, ptOutput, ptInputOutput, ptResult]);
end;

При использовании материала - ссылка на сайт обязательна