ARD отчет сортировка

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
Larisa
Посетитель
Сообщения: 38
Зарегистрирован: 12 мар 2009, 15:17

ARD отчет сортировка

Сообщение Larisa »

Здраствуйте!
Подскажите пожалуйста.
Есть ARD отчет


.Create View obor //
var obor:comp//
As Select//
stzatr.name,//
stzatr.kod,//
spkau.code (FieldName=code),//
oborot.scheto (FieldName=scheto),//
oborot.subossch (FieldName=subossch),//
oborot.datob(FieldName=datob),//
oborot.kauos[2](FieldName=k2),//
oborot.kauos[5](FieldName=k5),//
oborot.kauks[5](FieldName=kk5),//
oborot.sumob(FieldName=sumob),//
hozoper.name1(FieldName=TXOname)//
from oborot ,stzatr,hozoper,spkau//
where (( oborot.kauos[3]==spkau.nrec and//
oborot.chozoper==hozoper.nrec//
and if ( (oborot.scheto='420' OR oborot.scheto='423' OR oborot.scheto='425' OR oborot.scheto='426'), kauos[2], //
if ( ((oborot.scheto='409' and oborot.subossch='01') or (oborot.scheto='499' and oborot.subossch='02') or (oborot.scheto='477' and oborot.subossch='01')), kauos[5], kauks[5] ) )/==stzatr.nrec))//
AND datob>=dfor1 and datob<=dfor2 //
and (oborot.scheto='420' OR oborot.scheto='423' OR oborot.scheto='425' OR oborot.scheto='426' or (oborot.scheto='499' and oborot.subossch='02') or (oborot.schetk='499' and oborot.subschk='02') //
or (oborot.scheto='409' and oborot.subossch='01') or (oborot.schetk='409' and oborot.subschk='01') or (oborot.scheto='477' and oborot.subossch='01') or (oborot.schetk='477' and oborot.subschk='01'))//
and stzatr.cstzatr=281474976711459;//

необходимо отсортировать записи по stzatr. kod, но сортировка order работает только для корневой таблицы oborot.
Подскажите как осуществить сортировку по таблице stzatr.
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Сообщение Den »

через временную таблицу ?
Larisa
Посетитель
Сообщения: 38
Зарегистрирован: 12 мар 2009, 15:17

Сообщение Larisa »

Как подскажите, если можно пример.
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Сообщение Den »

Предварительно в файле проекта просто должна быть описана такая временная таблица (table struct в поиске поищите). Далее ее можно использовать в теле формы как обычную таблицу.
Larisa
Посетитель
Сообщения: 38
Зарегистрирован: 12 мар 2009, 15:17

Сообщение Larisa »

Добавила
table stzatr
  (
    Kod : string
  )
  with index
  (
   STZATR03 = Kod
  )


.Create View obor
As Select
* from obor
.................
order byKod by stzatr.kod;
.begin
SetOrder(tibyKod);
end.

Сортировка не работает.
Незнаю что делать.
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Сообщение Den »

Название временной таблицы у Вас совпадает с физической ?
Нужно просто все то, что выгружается Вашей основной вью перегрузить в эту временную структуру и по нужному индексу сделать цикл по ней...
Т.е. эта временная талица по структуре будет такой же как ваш select-лист :

stzatr.name,//
stzatr.kod,//
spkau.code (FieldName=code),//
oborot.scheto (FieldName=scheto),//
oborot.subossch (FieldName=subossch),//
oborot.datob(FieldName=datob),//
oborot.kauos[2](FieldName=k2),//
oborot.kauos[5](FieldName=k5),//
oborot.kauks[5](FieldName=kk5),//
oborot.sumob(FieldName=sumob),//
hozoper.name1(FieldName=TXOname)//
Larisa
Посетитель
Сообщения: 38
Зарегистрирован: 12 мар 2009, 15:17

Сообщение Larisa »

Временная таблица должна создаваться как view?

.Create View my_stzatr //
As Select//
stzatr.name,//
stzatr.kod,//
spkau.code (FieldName=code),//
oborot.scheto (FieldName=scheto),//
oborot.subossch (FieldName=subossch),//
oborot.datob(FieldName=datob),//
oborot.kauos[2](FieldName=k2),//
oborot.kauos[5](FieldName=k5),//
oborot.kauks[5](FieldName=kk5),//
oborot.sumob(FieldName=sumob),//
hozoper.name1(FieldName=TXOname)//
from oborot ,stzatr,hozoper,spkau//
Larisa
Посетитель
Сообщения: 38
Зарегистрирован: 12 мар 2009, 15:17

Сообщение Larisa »

Извините, но я не понимаю что значит по нужному индексу сделать цикл по ней?
Larisa
Посетитель
Сообщения: 38
Зарегистрирован: 12 мар 2009, 15:17

Сообщение Larisa »

Т.е. первой должна быть временная таблица
.Create View my_stzatr //
As Select//
stzatr.name,//
stzatr.kod,//
spkau.code (FieldName=code),//
oborot.scheto (FieldName=scheto),//
oborot.subossch (FieldName=subossch),//
oborot.datob(FieldName=datob),//
oborot.kauos[2](FieldName=k2),//
oborot.kauos[5](FieldName=k5),//
oborot.kauks[5](FieldName=kk5),//
oborot.sumob(FieldName=sumob),//
hozoper.name1(FieldName=TXOname)//
from oborot ,stzatr,hozoper,spkau//

Затем должна идти моя основная View obor
Где делать цикл по индексу? Я непоняла?
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Сообщение Den »

table struct t2
(
schet : string
,subschet : string
,summa : double
,stnrec : comp
,stname : string
)
with index
(
ind1 =stnrec
);



.form test
.var
i : integer ;
cur_schet : array [1..3] of string ;
.endvar
.create view t1 from oborot,stzatr where
(( cur_schet== oborot.scheto
and oborot.kauos[1]==stzatr.nrec
));
.create view t3 as select from t2;
.begin
cur_schet[1]:='20'
cur_schet[2]:='25'
cur_schet[3]:='26'
i:=1;
end.
.{while i<4
.{table t1
.begin
clearbuffer(t3.tnt2);
t3.t2.schet :=t1.oborot.scheto ;
t3.t2.subschet :=t1.oborot.subossch ;
t3.t2.summa :=t1.oborot.sumob;
t3.t2.stnrec :=t1.stzatr.nrec;
t3.t2.stname :=t1.stzatr.name;
t3.insert current t2;
end.
.}
.}
//ну и теперь выводим сохраненные данные
.{table 't3.t2'
....
.}
.endform

Ну что то типа этого (простенький пример). Извините возможно неточности, поскоку некогда проверять..
Последний раз редактировалось Den 13 мар 2009, 14:03, всего редактировалось 1 раз.
Larisa
Посетитель
Сообщения: 38
Зарегистрирован: 12 мар 2009, 15:17

Сообщение Larisa »

У меня нет большого опыта в написание ARD отчетов и литературы тоже нет. Если знаете подскажите как это сделать.
Ответить