Есть грид с некоторыми данными
Эти данные есть выборка из таблицы по определенному GUID
т.е. в ней все элементы, у которых в определенной колонке стоит конкретный GUID
-------------
Есть кнопка: Отчет
Необходима функция, которая сгенерирует отчет FASTREPORT и выведет его на экран.
В отчете должны быть ВСЕ записи текущей выборки.
К сожалению вникать в принцип времени нету. Сроки....
Есть варианты?
Нравится
"В отчете должны быть ВСЕ записи текущей выборки."
На сколько я понял вы просто хотите вывести в отчет FastReport все записи (+ все колонки) с DataSet'a, которые отображаются в гриде текущего окна ?
Предлагаю следующий вариант. В место формирования FastReport на ходу, использовать предварительно созданные отчет FastReport , и передавать в него dataset и фильтровать его по нужному критерию. Вызов просмотра отчета можно через специальное окно предпросмотра wnd_BaseFastReportPreview, как передавать параметры в отчет описано в http://community.terrasoft.ua/forum/topic/4405
Как вызвать окно препросмотра отчета:
[javascript]
var Dataset = Window.ComponentsByName('dlData').Dataset;
var Report = Services.GetNewItemByUSI('fr_tstDataSet'); //Services.CreateItem('FastReport');
Dataset.Open();
var ReportPreviewer = Services.GetNewItemByUSI('wnd_BaseFastReportPreview');
var ReportDataset = Dataset;
var ReportPreviewerComponent = ReportPreviewer.Attributes('ReportPreviewer');
SetAttribute(ReportPreviewer, 'Report', Report);
ReportPreviewer.Build();
ReportPreviewer.Prepare();
ReportPreviewerComponent.DatasetByUSI('имя DataSet в отчете FastReport') = Dataset
[/javascript]
СУПЕР! Скрипт работает. НО он все же выводит ВСЕ значения датасета..... не делает отбор ... (
пробую так
[javascript]
SpecaaID = SpecContainerWindow.ComponentsByName("dlData").DataSet.Values("ID");
Window = Services.GetNewItemByUSI('wnd_Speca');
var Dataset = Window.ComponentsByName('dlData').Dataset;
var Report = Services.GetNewItemByUSI('fr_Compred'); //Services.CreateItem('FastReport');
ApplyDatasetFilter(Dataset, 'SpecaID', SpecaaID, true);
Dataset.Open();
var ReportPreviewer = Services.GetNewItemByUSI('wnd_BaseFastReportPreview');
var ReportDataset = Dataset;
var ReportPreviewerComponent = ReportPreviewer.Attributes('ReportPreviewer');
SetAttribute(ReportPreviewer, 'Report', Report);
ReportPreviewer.Build();
ReportPreviewer.Prepare();
[/javascript]
Но он не отфильтровывает нужные мне значения .. а тупо весь лист ..... Много их там ...
Предлагаю в самом запросе на выборку (Select Quary) создать параметр, и фильтровать на прямую по нем, пример
[javascript]
sq_tstDataSet.Parameters.ItemsByName('FieldName').Value = 'FilterValue';
[/javascript]
Классная идея, а можно поподробнее ? Незнаком с механизмом SQ
Все проще, добавьте в конце кода после ReportPreviewer.Prepare();
[javascript]
ReportPreviewerComponent.DatasetByUSI('имя DataSet в отчете FastReport') = Dataset
[/javascript]
Просьба отписать о результатах
Алексей! Большое СПАСИБО! Работает отлично. Единственное, что доделал - убрал из отчета Detail Data и все работает.