Здравствуйте,
Возможен ли в 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 - переменная с признаком того что мы уже пролистали записи которые выбрали в предыдущем месте, объявляется выше всех

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;

Успеха.

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