Сортировка в отчете

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

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

Ответить
k_vit
Постоянный обитатель
Сообщения: 143
Зарегистрирован: 09 авг 2006, 16:40
Откуда: Россия, Тюмень, ОАО "Сибирский Научно-Аналитический Центр"

Сортировка в отчете

Сообщение k_vit »

Добрый день!
Подскажите пожалуйста как реализовать сортировку в отчете.
Использую следующую логическую таблицу:


.create view vDoc2

var
TDocNRec : comp;
select
Persons.FIO,
Persons.TabNmb,
Catalogs.Name,
CatPost.Name,
Appointments.TaxRate,
NewAppoint.AppointDate,
NewAppoint.Dateend,
NewAppoint.Contractnmb,
NewAppoint.ContractDate,
NewDepCat.Name,
NewCatPost.Name,
NewAppoint.TaxRate

from
TitleDoc,
PartDoc,
ContDoc,
Persons,
Appointments,
Catalogs,
Synonym ContDoc ContDoc2,
Synonym Appointments NewAppoint,
Synonym Catalogs CatPost,
Synonym Catalogs NewDepCat,
Synonym Catalogs NewCatPost
where
((
TDocNRec == TitleDoc.nRec and
TitleDoc.nRec == PartDoc.cDoc and

PartDoc.nRec == ContDoc.cPart and
PartDoc.TypeOper == ContDoc.TypeOper and
Word(1) == ContDoc.SeqNmb and

ContDoc.Person == Persons.nRec and
ContDoc.cStr == Appointments.Nrec and
ContDoc.cDopRef == Catalogs.nRec and

Appointments.Post == CatPost.nRec and

ContDoc.cPart == ContDoc2.cPart and
ContDoc.TypeOper == ContDoc2.TypeOper and
ContDoc.Personљљ == ContDoc2.Person and

Integer(1) << ContDoc2.SeqNmb and
ContDoc2.cStr == NewAppoint.nRec and

NewAppoint.Department == NewDepCat.nRec and
NewAppoint.Post == NewCatPost.nRec

));

необходимо отсортировать таблицу Persons по ФИО Сотрудника..
коментирую строку ContDoc.Person == Persons.nRec и добавляю
where
((
..
))
and (Persons.nRec = ContDoc.Person)

order by Persons.FIO
;
отчет выходит пустой...
пробовал использовать временную таблицу... куда писал только nRec ContDoc'a и FIO таблицы Persons. Создавал индекс по которому нужно было сортировать...отчет выходит пустой, вероятно из-за количества записей их более 100.

Пдскажите пожалуйста, может я что-то делаю не так?
Иесть ли ещё какие-нибудь варианты сортировок? И если можно, то на примере.


Заранее спасибо!
Hmyrii
Постоянный гость
Сообщения: 62
Зарегистрирован: 07 июн 2006, 08:23

Сообщение Hmyrii »

вот простой пример
нужен отчет, где будет фио, подразделение, начисления
сортируем по подразделению, внутри по фио, внутри по виду удержания, внутри по дате

Код: Выделить всё

interface test;
  struct table my_table
  (
    Podr  : string
   ,Fio   : string
   ,VidUd : word
   ,DatUd : date
   ,SumUd : double
  )
  with index
  (
    my_table01 = Podr + Fio + VidUd + DatUd
  )

  create view 
    as select * 
    from
      Lschet
     ,Persons
     ,KatPodr
     ,Uder
    where
    ((
         Uder.cLsch      == Lschet.Nrec
     and Lschet.tPersons == Persons.Nrec
     and Lschet.Cex      == KatPodr.Nrec
    ));

  form myfrm('test.out', 'test');
  
  procedure InsertMyTable;
  {
    _loop Uder
    {
      insert my_table set
        Podr  := KatPodr.Name
       ,Fio   := Persons.Fio
       ,VidUd := Uder.VidUd
       ,DatUd := Uder.DataN
       ,SumUd := Uder.SumUd
       ;
    }
  }

  procedure PrintOtchet;
  {
    _loop my_table ordered by index my_table01
    {
      myfrm.Write(my_table.Podr);
      myfrm.Write(my_table.Fio);
      myfrm.Write(my_table.VidUd);
      myfrm.Write(my_table.DatUd);
      myfrm.Write(my_table.SumUd, 2);
    }
  }

  //
  // думаю ясно что тут ваш HandleEvent где и буду вызываться процедуры
  //

end;
или можно так
Hmyrii
Постоянный гость
Сообщения: 62
Зарегистрирован: 07 июн 2006, 08:23

Сообщение Hmyrii »

вот простой пример
нужен отчет, где будет фио, подразделение, начисления
сортируем по подразделению, внутри по фио, внутри по виду удержания, внутри по дате

Код: Выделить всё

interface test;
  struct table my_table
  (
    Podr  : string
   ,Fio   : string
   ,VidUd : word
   ,DatUd : date
   ,SumUd : double
  )
  with index
  (
    my_table01 = Podr + Fio + VidUd + DatUd
  )

  create view 
    as select * 
    from
      Lschet
     ,Persons
     ,KatPodr
     ,Uder
    where
    ((
         Uder.cLsch      == Lschet.Nrec
     and Lschet.tPersons == Persons.Nrec
     and Lschet.Cex      == KatPodr.Nrec
    ));

  form myfrm('test.out', 'test');
  
  procedure InsertMyTable;
  {
    _loop Uder
    {
      insert my_table set
        Podr  := KatPodr.Name
       ,Fio   := Persons.Fio
       ,VidUd := Uder.VidUd
       ,DatUd := Uder.DataN
       ,SumUd := Uder.SumUd
       ;
    }
  }

  procedure PrintOtchet;
  {
    _loop my_table ordered by index my_table01
    {
      myfrm.Write(my_table.Podr);
      myfrm.Write(my_table.Fio);
      myfrm.Write(my_table.VidUd);
      myfrm.Write(my_table.DatUd);
      myfrm.Write(my_table.SumUd, 2);
    }
  }

  //
  // думаю ясно что тут ваш HandleEvent где и буду вызываться процедуры
  //

end;
Hmyrii
Постоянный гость
Сообщения: 62
Зарегистрирован: 07 июн 2006, 08:23

Сообщение Hmyrii »

вот простой пример
нужен отчет, где будет фио, подразделение, начисления
сортируем по подразделению, внутри по фио, внутри по виду удержания, внутри по дате

Код: Выделить всё

interface test;
  struct table my_table
  (
    Podr  : string
   ,Fio   : string
   ,VidUd : word
   ,DatUd : date
   ,SumUd : double
  )
  with index
  (
    my_table01 = Podr + Fio + VidUd + DatUd
  )

  create view 
    as select * 
    from
      Lschet
     ,Persons
     ,KatPodr
     ,Uder
    where
    ((
         Uder.cLsch      == Lschet.Nrec
     and Lschet.tPersons == Persons.Nrec
     and Lschet.Cex      == KatPodr.Nrec
    ));

  form myfrm('test.out', 'test');
  
  procedure InsertMyTable;
  {
    _loop Uder
    {
      insert my_table set
        Podr  := KatPodr.Name
       ,Fio   := Persons.Fio
       ,VidUd := Uder.VidUd
       ,DatUd := Uder.DataN
       ,SumUd := Uder.SumUd
       ;
    }
  }

  procedure PrintOtchet;
  {
    _loop my_table ordered by index my_table01
    {
      myfrm.Write(my_table.Podr);
      myfrm.Write(my_table.Fio);
      myfrm.Write(my_table.VidUd);
      myfrm.Write(my_table.DatUd);
      myfrm.Write(my_table.SumUd, 2);
    }
  }

  //
  // думаю ясно что тут ваш HandleEvent где и буду вызываться процедуры
  //

end;
k_vit
Постоянный обитатель
Сообщения: 143
Зарегистрирован: 09 авг 2006, 16:40
Откуда: Россия, Тюмень, ОАО "Сибирский Научно-Аналитический Центр"

Сообщение k_vit »

> Hmyrii

Спасибо... уже сделал через временную таблицу DocSortT.
Ответить