Здравствуйте,
Возможен ли в 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 - переменная с признаком того что мы уже пролистали записи которые выбрали в предыдущем месте, объявляется выше всех
[code]
var
runOnce: Boolean;
[/code]
инициализируется
[code]
procedure frxReportOnStartReport(Sender: TfrxComponent);
begin
runOnce:= True;
end;
[/code]
[code]
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;
[/code]
Успеха.