Сохранение результатов отчета
Доброго вечера,
Возможно ли сохранить результаты, текстового отчета в файл, из скрипта!!! , не используя меню.
Возможно ли сохранить результаты, текстового отчета в файл, из скрипта!!! , не используя меню.
Комментарии
2. Не используя меню экспорта?
а хотелось бы автоматически сформировать ему имя и слить на диск по результатам, которые выводятся на экран Preview.
Или еще вариант, как получить ссылку на экземпляр текущего класса TfrxReport из скрипта?
Или как вариант (теоритически) можно сделать следующее: завести переменную объекта, у которого можно вызвать соответсвующий метод. Поиск в руководстве пользователя, разработчика по слову Export результатов не дал. А вот в руководстве программиста есть соответсвующий метод у объекта типа TfrxReport. Так и называется Export В общем надежда есть, но только как получить объект отчета в FastScript (и соответсвенно фильтры?)
Как вариант решения этого вижу, создание внешней функции, которая будет возвращать соответсвующую переменную (то есть программно из приложения добавляешь функцию GetReport: TfrxReport). Затем ее вызываешь. Но такую функцию мне создать не удалось, поскольку CallMethod всегда возвращает Variant.
Хотя по крайней мере на этапе проверки такой скрипт проходит: В общем учитывая ошибку в последжней строки, синтаксический аналзи проходит на Export11(). Похоже, не решить задачу таким образом. Попробовал, использовать Report.Export, Report - Видно, а метод нет!
Может разработчики подскажут!
P.S. Как писать такие методы почитай в доке.
В делфи:
AddMethod('procedure ExportToTxt(AReport:TFrxReport; AFileName : String; isOEMCodepage : Boolean)', SetScriptValue);
procedure ExportToTxt(ReportObj : TfrxReport; AFileName : String; isOEMCodepage : Boolean);
var
ExportFilter : TfrxDotMatrixExport;
begin
ExportFilter := TfrxDotMatrixExport.Create(nil);
with ExportFilter do
try
OEMConvert := isOEMCodepage;
FileName := AFileName;
ExportFilter.SaveToFile := True;
ShowDialog := False;
ReportObj.Preview.Lock;
ReportObj.Export(ExportFilter);
ReportObj.Preview.Unlock;
finally
FreeAndNil(ExportFilter);
end;
end;
function TFunctions.SetScriptValue(Instance: TObject; ClassType: TClass;
const MethodName: string; var Params : Variant) : Variant;
begin
if MethodName = 'EXPORTTOTXT' then
begin
assert(VarIsArray(Params));
assert((VarArrayDimCount(Params) = 1));
assert((VarArrayLowBound(Params, 1) = 0));
assert((VarArrayHighBound(Params, 1) = 2));
ExportToTxt(TfrxReport(integer(Params[0])), Params[1], Params[2]);
end;
end;
В отчете:
procedure OnStopReport(Sender: TfrxComponent);
begin
if ACreateFiles then
begin
s := 'C:\tmp\aaa.txt';
ExportToTxt(TfrxReport(Report), s, true);
end;
end;