Странности при построении иерархии .... при добавлении Order

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

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

Ответить
homak
Постоянный обитатель
Сообщения: 144
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Красноярский Край
Контактная информация:

Странности при построении иерархии .... при добавлении Order

Сообщение homak »

Доброе время суток ...
Есть задача ... Вывести на печать прайс лис в виде
Группа 1 МЦ (прайс листа)
Код .. Наименование ... Цена .. ... и атрибуты ...
Код .. Наименование ... Цена .. ... и атрибуты ...
Код .. Наименование ... Цена .. ... и атрибуты ...
............................................................................................
Группа NNN МЦ (прайс листа)
Код .. Наименование ... Цена .. ... и атрибуты ...
Код .. Наименование ... Цена .. ... и атрибуты ...
Код .. Наименование ... Цена .. ... и атрибуты ...

Отсортировав отчет как по группе МЦ так и по цене внутри каждой группы ... как только добавляю в код (приведен ниже) ORDER BY PRICES.PRICE при обьявлении таблицы (.Create View TablePrice ....) в отчет начинают либо дублироваться данные ... либо не выводиться все ..
------------------------------------------------------
КОД
-----------------------------------------------------
*.prj .....
-----------------------------------------------------
Table STRUCT PRiceCancLitle001
(
GruppaTovaraList : String ,
NameGruppaTovaraList : String
)

With index
(
PRiceCancLitle001_1 = GruppaTovaraList
);

#make "price.frm"

-------------------------------------------------------
FRM
-------------------------------------------------------
.form Price_kanc
.NameInList 'Прайс-Лист'
.Group 'ПРАЙС ЛИСТЫ'
.Ard
.var

str1,str2 : String;


TMPGruppaTovara : String
Price_nrec:comp;
FlagPovtor:boolean;
.endvar

.Create View GroupsTovara as
Select PRiceCancLitle001.* order by GruppaTovaraList;

.Create View TablePrice as
Select
PRICES.CKLPRICE,
PRICES.KOD,
PRICES.BARKOD,
PRICES.name,
KATOTPED.NAME,
PRICES.PRICE,

AttrVal.VString, // описание 1
AttrVal2.VString, // описание 2
AttrVal3.VString, // описание 3

AttrVal4.VString, // Артикул

EXCLASSSEG.Name, // Фирма производитель (Торговая марка)

AttrVal5.VString, // Страна происхождения

AttrVal6.VString // Кол-во в упаковке (для прайса)

from
synonym AttrVal AttrVal2 ,
synonym ATTRNAM ATTRNAM2 ,

synonym AttrVal AttrVal3 ,
synonym ATTRNAM ATTRNAM3 ,

synonym AttrVal AttrVal4 ,
synonym ATTRNAM ATTRNAM4 ,


synonym AttrVal AttrVal5 ,
synonym ATTRNAM ATTRNAM5 ,

synonym AttrVal AttrVal6 ,
synonym ATTRNAM ATTRNAM6

Where
((
comp(Price_nrec) == PRICES.CKLPRICE and
PRICES.COTPED == KATOTPED.nrec and
// Описание 1

PRICES.CTHING == katmc.nrec and
cokatmc == ATTRVAL.Wtable and
katmc.nrec == AttrVal.crec and
ATTRNAM.nrec == AttrVal.CAttrNAM and
cokatmc == ATTRNAM.wtable and
'Наименование для прайса 1' == ATTRNAM.name

and
// Описание 2
cokatmc == ATTRVAL2.Wtable and
katmc.nrec == AttrVal2.crec and
ATTRNAM2.nrec == AttrVal2.CAttrNAM and
cokatmc == ATTRNAM2.wtable and
'Наименование для прайса 2' == ATTRNAM2.name

and
// Описание 3
cokatmc == ATTRVAL3.Wtable and
katmc.nrec == AttrVal3.crec and
ATTRNAM3.nrec == AttrVal3.CAttrNAM and
cokatmc == ATTRNAM3.wtable and
'Наименование для прайса 3' == ATTRNAM3.name

and
// Артикул
cokatmc == ATTRVAL4.Wtable and
katmc.nrec == AttrVal4.crec and
ATTRNAM4.nrec == AttrVal4.CAttrNAM and
cokatmc == ATTRNAM4.wtable and
'Артикул' == ATTRNAM4.name

and
// Фирма производитель (торговая марка)
coKatMc == ExClassName.wTable and
'Торговая марка'== ExClassName.Name and
ExClassName.ClassCode==ExClassVal.ClassCode and
ExClassname.wTable== ExClassVal.wTable and
KatMc.NREC == ExClassVal.cRec and
ExClassVal.cClassSeg == ExClassSeg.NREC

and
// Страна происхождения (АТРИБУТ Страна производитель)

cokatmc == ATTRVAL5.Wtable and
katmc.nrec == AttrVal5.crec and
ATTRNAM5.nrec == AttrVal5.CAttrNAM and
cokatmc == ATTRNAM5.wtable and
'Страна производитель' == ATTRNAM5.name

and
// Кол-во в упаковке (для прайса) (АТРИБУТ Кол-во в упаковке (для прайса))

cokatmc == ATTRVAL6.Wtable and
katmc.nrec == AttrVal6.crec and
ATTRNAM6.nrec == AttrVal6.CAttrNAM and
cokatmc == ATTRNAM6.wtable and
'Кол-во в упаковке (для прайса)' == ATTRNAM6.name
))
;
.begin
RunInterface(GetKlPr, Price_nrec, word(1), word(1), word(0));
StartNewVisual (vtNumericVisual, vfTimer,
'Идет процесс формирования прайс-листа ...',
1);

end.
.{table 'TablePrice'
.begin
NextVisual;
FlagPovtor := False;
TMPGruppaTovara := TablePrice.PRICES.KOD

end.
.{table 'GroupsTovara'
.begin
if ( GroupsTovara.PRiceCancLitle001.GruppaTovaraList = TMPGruppaTovara )
then FlagPovtor := True;
end.
.} //End table GroupsTovara
.begin

// коли повторов не было будем инсертить и получем список групп товара без повторов
if (FlagPovtor=false) then begin
insert PRiceCancLitle001 set
PRiceCancLitle001.GruppaTovaraList :=TMPGruppaTovara;
end;
end.
.} //End table 'TablePrice'
.begin
stopVisual('',0);
end.
--------------------------------------------------------------------
прайс тестовая форма
======================================
.fields
!! Группа Тоара
GroupsTovara.PRiceCancLitle001.GruppaTovaraList
GroupsTovara.PRiceCancLitle001.NameGruppaTovaraList

!! Описание МЦ в группе
TablePrice.PRICES.PRICE
TablePrice.PRICES.CKLPRICE
TablePrice.PRICES.KOD
TablePrice.PRICES.BARKOD
TablePrice.PRICES.name
TablePrice.KATOTPED.NAME
TablePrice.AttrVal.VString // описание 1
TablePrice.AttrVal2.VString // описание 2
TablePrice.AttrVal3.VString // описание 3
TablePrice.AttrVal4.VString // Артикул
TablePrice.EXCLASSSEG.Name // Фирма производитель (Торговая марка)
TablePrice.AttrVal5.VString // Страна происхождения
TablePrice.AttrVal6.VString // Кол-во в упаковке (для прайса)
.endfields


.{table 'GroupsTovara'
Группа товара - :@@@@@@ @@@@@@@@@
.begin
str1:=GroupsTovara.PRiceCancLitle001.GruppaTovaraList;
end.
.{table 'TablePrice'
&&&&&&&&&&&&&&.&&& ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^
.} //End TablePrice
.} //End table GroupsTovara
.endform
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Сообщение Алексей »

Зачем описано две логические таблицы?

Я бы у таблицы в памяти сделал структуру полнее, и при проходе по прототипу, накачал бы её данными.
Дальше, сделав нужный индекс, циклом выводить данные уже из таблицы в памяти.
Ответить