Вывод в FastReport только текущих значений Датасета

Есть грид с некоторыми данными
Эти данные есть выборка из таблицы по определенному GUID
т.е. в ней все элементы, у которых в определенной колонке стоит конкретный GUID
-------------
Есть кнопка: Отчет
Необходима функция, которая сгенерирует отчет FASTREPORT и выведет его на экран.
В отчете должны быть ВСЕ записи текущей выборки.
К сожалению вникать в принцип времени нету. Сроки....

Есть варианты?

Нравится

8 комментариев

"В отчете должны быть ВСЕ записи текущей выборки."
На сколько я понял вы просто хотите вывести в отчет 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 и все работает.

Показать все комментарии