Помогите плиз добавить ParamByName в StoredProc

отредактировано January 2005 Раздел: FastReport 3.0
В общем, регистрирую:

В файлике xxxxxRTTI:
constructor TFunctions.Create;
begin
with fsGlobalUnit do
begin
AddedBy := Self;
with AddClass(TStoredProc, 'TfrxCustomDataset') do
AddMethod('function ParamByName(Name: string): TParam', CallMethod);
AddedBy := nil;
end;
end;

function TFunctions.CallMethod(Instance: TObject; ClassType: TClass;
const MethodName: String; var Params: Variant): Variant;
begin
Result := 0;
if ClassType = TStoredProc then
if MethodName = 'PARAMBYNAME' then
Result := Integer(TStoredProc(Instance).ParamByName(Params[0]))
end;

В файлике xxxxxComponents:
function TStoredProc.ParamByName(const Value: String): TParam;
begin
Result := FStoredProc.ParamByName(Value);
end;

При попытке проинсталлировать package получаю по морде (AV ... in module 'fs7.bpl').

Подскажите плиз, что делаю не так.

P.S. Редактировать параметры в дизайнере не нужно - достаточно доступа из кода, поэтому не хочу заморачиваться с запихиванием параметров в tfrxparam... и обратно.

Комментарии

  • отредактировано 05:07
    И ещё - почему в директории FastScripta есть все движки, кроме DBX? ;)
  • отредактировано 05:07
    Теоретически все верно, возможно - старая версия пакетов FS или FR (надо перекомпилировать).

    with AddClass(TStoredProc, 'TfrxCustomDataset') do

    А почему такое странное наследование?
  • отредактировано January 2005
    AlexTZ написал:
    with AddClass(TStoredProc, 'TfrxCustomDataset') do

    А почему такое странное наследование?
    Прошу прощения, а вы документацию читали? ;)
    "Руководство разработчика", стр. 26.
    Цитата:
    "TfrxCustomDataSet - базовый класс для компонентов БД, производных от
    TDataSet. От этого класса наследуются компоненты - аналоги Query, Table,
    StoredProc." ;)

    P.S. ParamByName заработал, видимо, ошибка была в совпадении названия моего класса со стандартным классом BDE ;)
  • отредактировано 05:07
    Vetal написал:
    Прошу прощения, а вы документацию читали? ;)
    А зачем?

    Он её ведь писал! ;)
  • отредактировано 05:07
    Ага ;)
    Для TStoredProc надо как минимум писать обертку, аналогичную TfrxBDETable/Query.
  • Stalker4Stalker4 123
    отредактировано 05:07
    Vetal

    Я тебе очень не советую писать аналог TStoredProc. Работы много, а смысла в этом мало - практически любую SP можно вызвать из TQuery.

    Для написание своего полноценного аналога TStoredProc, тебе как минимум придется написать свой аналог TfrxParams (ради добавления свойства ParamType) и сдублировать кучу кода для его поддержки) .

    Еще во время Alfa и beta тестирования, я предлагал Александру добавить в TfrxParamItem свойство ParamType, но он к сожалению отказался.

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.