Баг или не баг?

visor123visor123 Днепропетровск
отредактировано 05:48 Раздел: FastReport 3.0
Лицензия есть.
Установил версию FastReport 3.20

В отчете из скрипта открывался датасет типа TfrxZQuery, который компонент доступа к БД, написанный отдельно...
В предыдущих версия ошибкок не было, а в этой выдает, именно в скрипте на OnEnter контрола
SET('LParmID_Firms',MyGet_FirmsDir);
SET('LParmDate',DE.Date);
if <LParmID_Firms> > 0 then begin
Q_Firms.Open; //В этой строке ошибка
CB_Firms.Text:=<Q_Firms."Name">;
Q_Rez.Open;
end;

где квери типа TfrxZQuery

В модуле fs_iilparser
выдает ошибку функция
function TfsILParser.FindClass(const TypeName: String): TfsClassVariable;
begin
Result := FProgram.FindClass(TypeName);
if Result = nil then
raise Exception.Create(SUnknownType + '''' + TypeName + '''');
end;

а она соответственно черпает результат из модуля fs_iinterpreter
function TfsScript.GetVariables(Index: String): Variant;
var
v: TfsCustomVariable;
begin
v := Find(Index);
if v <> nil then
Result := v.Value else
Result := Null;
end;

Это ошибка отчета или фастрепорта?
Но в этой версии для лукапкомбобокса открываются датасеты с отчета, но возможно понадобится доступ к датасетам напрямую.
Датасеты находятся в самом отчете.

Для разработчиков фаст-репорт могу отправить, для включения в стандартную поставку, они обертка к ZeosDBO 6

Комментарии

  • visor123visor123 Днепропетровск
    отредактировано 05:48
    Сам спросил - сам ответил.

    Изменилась регистрация компонентов датасете в RTTI фастрепорта...
    Убрался метод Destroy, изменилась регистрация...

    type
    TFunctions = class(TfsRTTIModule)
    private
    function CallMethod(Instance: TObject; ClassType: TClass;
    const MethodName: String; Caller: TfsMethodHelper): Variant;
    public
    constructor Create(AScript: TfsScript);override;
    end;

    {var
    Functions: TFunctions;}


    { TFunctions }

    constructor TFunctions.Create;
    begin
    inherited Create(AScript);
    with AScript do
    begin
    AddClass(TfrxZConnection, 'TfrxCustomConnection');
    AddClass(TfrxZTable, 'TfrxCustomDataset');
    with AddClass(TfrxZQuery, 'TfrxCustomQuery') do
    AddMethod('procedure ExecSQL', CallMethod);
    end;
    { with fsGlobalUnit do
    begin
    AddedBy := Self;
    AddClass(TfrxZConnection, 'TfrxComponent');
    AddClass(TfrxZTable, 'TfrxCustomDataset');
    with AddClass(TfrxZQuery, 'TfrxCustomQuery') do
    AddMethod('procedure ExecSQL', CallMethod);
    AddedBy := nil;
    end;}
    end;

    {destructor TFunctions.Destroy;
    begin
    if fsGlobalUnit <> nil then
    fsGlobalUnit.RemoveItems(Self);
    inherited;
    end;}

    function TFunctions.CallMethod(Instance: TObject; ClassType: TClass;
    const MethodName: String; Caller: TfsMethodHelper): Variant;
    begin
    Result := 0;

    if ClassType = TfrxZQuery then
    begin
    if MethodName = 'EXECSQL' then begin
    // TfrxZQuery(Instance).Query.SQL.Text:=(VarToStr(Caller.Params[0]));
    TfrxZQuery(Instance).Query.ExecSQL;
    end;
    end
    end;


    initialization
    // Functions := TFunctions.Create;
    fsRTTIModules.Add(TFunctions);

    Вообще-то резкие повороты делают разработчики ;) ((

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

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