Topic: SQLEXecute in FastReport

Поправьте, пожалуйста, синтаксис команды в Memo

Ошибка - ')' expected

[SQLExecute(SELECT MAX(<Report."nSubs">,MasterData1) FROM <Report> WHERE <Report."npp">=MAX(<Report."npp">,MasterData1))]
Post's attachments

Attachment icon Image002.jpg 142.98 kb, 261 downloads since 2018-12-13 

Yana

Re: SQLEXecute in FastReport

[SQLExecute(SELECT MAX(<Report."nSubs">,MasterData1) FROM <Report> WHERE <Report."npp">=MAX(<Report."npp">,MasterData1))]

Нашла, что нужны ещё кавычки
SQLExecute('SELECT MAX(<Report."nSubs">,MasterData1) FROM <Report> WHERE <Report."npp">=MAX(<Report."npp">,MasterData1)')


Результат так же ошибка, но уже другая (см,скрин)

Post's attachments

Attachment icon Image003.jpg 81.86 kb, 248 downloads since 2018-12-13 

Yana

Re: SQLEXecute in FastReport

Скорей всего нельзя использовать в SQL запросе такие вещи как <Report."nSubs">,MasterData1, используйте просто названия полей, как в скриптах

Dmitry.

Re: SQLEXecute in FastReport

Не получается. Возможно есть другой способ извлечь данные.  В отчет передаются следующие поля  nSubs, npp.
Из плана счетов nSubs - "номер счета" в БД символьный. Для корректного отображения порядка счетов и сумм групп счетов введено вспомогательное поле   npp- "номер по порядку" числовой. Не могу правильно извлечь название итогов, чтобы отображалось:
Итого по 811.3.6 - 811.18

Пользовалась для извлечения MIN и MAX :

[IIF(MAX(<Report."npp">,MasterData1)=1,<Report."nSubs">,MIN(<Report."nSubs">,MasterData1))]

получается Итого по    811.10.1-811.18   

nSubs         npp
----------        ---------
811.3.6           1
811.6.1           2
811.6.4           3
811.6.5           4
811.6.7           5
811.8.3           6
811.8.4           7
811.8.5           8
811.8.6           9
811.8.8          10
811.8.9          11
811.9.1          12
811.9.2          13
811.9.4          14
811.9.5          15
811.10.1      16
811.10.2      17
811.10.3      18
811.10.4      19
811.10.6      20
811.10.7      21
811.10.11   22
811.10.12   23
811.10.13   24
811.15          25
811.16         26
811.17         27
811.18         28

Yana

Re: SQLEXecute in FastReport

Вышла из положения скриптом:

procedure Memo27OnAfterData(Sender: TfrxComponent);
var
schet, minS, maxS, gr, minNpp, maxNpp: string;
begin
   schet:=<Report."nSubs">;
   gr:=SQLEXecute('SELECT grup1 FROM balans WHERE nSubs="'+schet+'"');                      //группа 1-го уровня 
   minNpp:=SQLEXecute('SELECT MIN(npp) FROM balans WHERE grup1='+gr);                                                                //минимальный № п/п в группе 1-го уровня
   maxNpp:=SQLEXecute('SELECT MAX(npp) FROM balans WHERE grup1='+gr);                                                                //максимальный № п/п в группе 1-го уровня
   minS:=SQLEXecute('SELECT MIN(nSubs) FROM balans WHERE grup1='+gr+' AND npp='+minNpp); //по минимальному №п/п вытаскиваем наименование счета  
   maxS:=SQLEXecute('SELECT MAX(nSubs) FROM balans WHERE grup1='+gr+' AND npp='+maxNpp); //по максимальному №п/п вытаскиваем наименование счета
   Memo27.Text:=minS;
   Memo28.Text:=maxS;       
end;
Yana