Есть грид с некоторыми данными
Эти данные есть выборка из таблицы по определенному GUID
т.е. в ней все элементы, у которых в определенной колонке стоит конкретный GUID
-------------
Есть кнопка: Отчет
Необходима функция, которая сгенерирует отчет FASTREPORT и выведет его на экран.
В отчете должны быть ВСЕ записи текущей выборки.
К сожалению вникать в принцип времени нету. Сроки....
Есть варианты?
Нравится
"В отчете должны быть ВСЕ записи текущей выборки."
На сколько я понял вы просто хотите вывести в отчет FastReport все записи (+ все колонки) с DataSet'a, которые отображаются в гриде текущего окна ?
Предлагаю следующий вариант. В место формирования FastReport на ходу, использовать предварительно созданные отчет FastReport , и передавать в него dataset и фильтровать его по нужному критерию. Вызов просмотра отчета можно через специальное окно предпросмотра wnd_BaseFastReportPreview, как передавать параметры в отчет описано в http://community.terrasoft.ua/forum/topic/4405
Как вызвать окно препросмотра отчета:
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
СУПЕР! Скрипт работает. НО он все же выводит ВСЕ значения датасета..... не делает отбор ... (
пробую так
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();
Но он не отфильтровывает нужные мне значения .. а тупо весь лист ..... Много их там ...
Предлагаю в самом запросе на выборку (Select Quary) создать параметр, и фильтровать на прямую по нем, пример
sq_tstDataSet.Parameters.ItemsByName('FieldName').Value = 'FilterValue';
Классная идея, а можно поподробнее ? Незнаком с механизмом SQ
Все проще, добавьте в конце кода после ReportPreviewer.Prepare();
ReportPreviewerComponent.DatasetByUSI('имя DataSet в отчете FastReport') = Dataset
Просьба отписать о результатах
Алексей! Большое СПАСИБО! Работает отлично. Единственное, что доделал - убрал из отчета Detail Data и все работает.