Баг или не баг?
visor123
Днепропетровск
Лицензия есть.
Установил версию 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
Установил версию 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
Комментарии
Изменилась регистрация компонентов датасете в 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);
Вообще-то резкие повороты делают разработчики ((