edward_K писал(а):... выгрузить нужные поля во временную таблицу
delete all tmp_table
insert tmp_table select ..... from .. where .. ;
Создал таким образом временную таблицу t1. Фишка интерфейса в том, что создать по коллекции+цветности МЦ в таблице ppkatstan, которая связана с таблицей katmc через таблицу связей ppkatstanmc, в ppkatstanmc должны быть записаны все ссылки на katmc в состав которых входят коллекции+цветность из ppkatstan. Но данный фейс создаёт много дубликатов в таблице ppkatstan, а нужно чтобы не было повторяющихся значений. Может можно как-то избавиться от дублирующихся значений в t1 или ppkatstan?. (Примечание:таблицы ppkastan и ppkatstanmc созданы мной.) И вообщее как организовать сортировку в t1 по нескольким позициям?
Код: Выделить всё
Interface FillTable 'Заполение таблицы ppkatstan';
var knrec:comp;
i,l,m,j,d:integer;
s1,s2,s:string[200];
table struct t1
(
nrec : comp,
// cmc : comp,
name: string, // наименование
name2:string,
name3:string
// isarch:string,
// cppgrformat: string
)
with index
(
t101 = nRec,//(Unique,Surrogate),
//t102 = name,
t103 = name+name3+name2
);
create view
as Select katmc.name,Exclassname.name,Exclassseg.name
From Exclassname(EXCLASSNAME2),Exclassseg(EXCLASSSEG06),katmc(KATMC02), EXCLASSVAL, ppkatstanmc,ppkatstan//(katmc01)
Where ((
1411==Exclassname.wtable
and ('Коллекция'=Exclassname.name or 'Цветность'=Exclassname.name)
and Exclassname.classcode==EXCLASSVAL.classcode
and 1411==EXCLASSVAL.wtable
and EXCLASSVAL.CREC==katmc.nrec
and EXCLASSVAL.CCLASSSEG==Exclassseg.nrec));
create view t
as select name,name2,name3
from t1(t103);
/*create view els
as select * from
ppkatstan,ppkatstanmc,ppgrformat,ppline; //where ((comp(281474976729069)==katmc.nrec));*/
handleEvent
cmInit:
{
StartNewVisual(vtRotateVisual ,
vfTimer+vfBreak+vfConfirm, 'Идёт заполнение таблицы ppkatstan,ppkatstanmc...', 0);
j:=0;
m:=1;
if getfirst ppkatstan=tsOk
{
delete all ppkatstan;
}
if getfirst ppkatstanmc=tsOk
{
delete all ppkatstanmc;
}
if t.getfirst t1=tsOk
{
t.delete all t1;
}
//message(katmc.name);
_loop Exclassname
{//message(ecn1.name);
_loop Exclassseg
{//message(ecs1.name);
_loop EXCLASSVAL
{
if getfirst katmc=tsOk
{
//message(katmc.name);
t.t1.nrec:=katmc.nrec;
t.t1.name:=katmc.name;
t.t1.name2:=Exclassseg.name;
t.t1.name3:=Exclassname.name;
t.insert current t1;
}
}
}
}
s1:=' ';
t._loop t1
{
//message(t.t1.name+' '+t.t1.name2+' '+t.t1.name3);
clearbuffer(#ppkatstanmc);
clearbuffer(#ppkatstan);
ppkatstanmc.cmc:=t.t1.nrec;
if (s1=' ')
{
s:=t.t1.name2;
ppkatstan.name:=s;
insert current ppkatstan;
knrec:=ppkatstan.atl_nrec;
}
else
{
If (s1<>t.t1.name2 and 'Цветность'=t.t1.name3 and t.t1.name<>'')
{
s:=s1+' '+t.t1.name2;
ppkatstan.name:=s;
insert current ppkatstan;
knrec:=ppkatstan.atl_nrec;
}
If (s1<>t.t1.name2 and 'Коллекция'=t.t1.name3 and t.t1.name<>'')
{
s:=t.t1.name2;
ppkatstan.name:=s;
insert current ppkatstan;
knrec:=ppkatstan.atl_nrec;
}
}
s1:=t.t1.name2;
ppkatstanmc.cppkatstan:=knrec;
insert current ppkatstanmc;
}
StopVisual('', 0);
}
end;
end.