Здравствуйте,
Возможен ли в FastReport выполнение собственных SQL запросов к базе данных ?
Передо мной стоит задача:
Dataset для отчета FastReport возвращает определенное количество записей, скажем 5.
В зависимости от определенного параметра мне нужно вывести 2 (значение параметра = 2) первых записей с датасета
Для того что бы это сделать можно написать так :
DetailData1.rowcount := MyVariableValue;
в другом месте отчета FastReport мне нужно вывести остальные 3 записи с датасета в Detail Data.
Как это сделать?
Наводящие мысли:
1. Можно воспользоваться ROW_NUMBER ( ) и получить значение текущей выбранной записи, но в фильтр Where, ROW_NUMBER ( ) использовать нельзя
2. Можно поробывать вот так :
scrDB: Variant;
procedure frxReportOnStartReport(Sender: TfrxComponent);
var
Connector: Variant;
begin
Connector := ds_DatasetName.GetConnector();
scrDB := Connector.Services.GetNewItemByUSI('scr_DB');
end;
begin
end.
и попробывать вызывать ApplyDatasetFilter уже в FastReport
3. Написать свой запрос уже в FR, и получить необходимые данные напрямую (как ?)
SQL Server 2008 R2
Terrasoft 3.3.2 XRM
Нравится
Задачу можно решить так:
DetailData1 - то место где нужно вывести отсавшиеся записи
runOnce - переменная с признаком того что мы уже пролистали записи которые выбрали в предыдущем месте, объявляется выше всех
var runOnce: Boolean;
инициализируется
procedure frxReportOnStartReport(Sender: TfrxComponent); begin runOnce:= True; end;
procedure DetailData1OnBeforePrint(Sender: TfrxComponent); var i, j: Integer; begin i:= 0; j := Значение переменной ; if (runOnce) then for i:=1 to j do begin DatasetName.Next; //пролистали записи которые уже выбрали end; runOnce := False; end;
Успеха.