FastReport выполнение напрямую SQL заросов
Отчёты
Разработка

Выполнение запросов SQL напрямую с FastReport

Здравствуйте,
Возможен ли в FastReport выполнение собственных SQL запросов к базе данных ?
Передо мной стоит задача:
Dataset для отчета FastReport возвращает определенное количество записей, скажем 5.
В зависимости от определенного параметра мне нужно вывести 2 (значение параметра = 2) первых записей с датасета
Для того что бы это сделать можно написать так :
DetailData1.rowcount := MyVariableValue;
в другом месте отчета FastReport мне нужно вывести остальные 3 записи с датасета в Detail Data.
Как это сделать?

Наводящие мысли:
1. Можно воспользоваться ROW_NUMBER ( ) и получить значение текущей выбранной записи, но в фильтр Where, ROW_NUMBER ( ) использовать нельзя
2. Можно поробывать вот так :

var
  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

Нравится

1 комментарий

Задачу можно решить так:
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]
Успеха.

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