Страница 1 из 1

Выборки в VIPе и Атлантисе

Добавлено: 22 июл 2005, 17:19
Sheinina
Пишу запрос в Support'e:
select gr1.kod, gr1.name, gr1.cnode, gr2.nrec, gr2.cnode, allmemo.nrec
from synonym groupsch gr1, synonym groupsch gr2, allmemo
where
((comp(400123A7E02E8DF4h) == gr2.cnode and
gr2.nrec == gr1.cnode and
word(1125) == allmemo.wtable and
gr1.nrec /== allmemo.crec
)) and instr('AAA', gr1.name)<>0 order by gr1.name;
Получаю две записи - нормально, так и должно быть.

Пишу интерфейс:
Interface DO_Groups;
view
var
num : word;
shifr : string;
strComm : string;
strMemo : string;
MemoFile : MemGetObj;
as select gr1.kod, gr1.name, gr1.cnode, gr2.nrec, gr2.cnode, allmemo.nrec
from synonym groupsch gr1, synonym groupsch gr2, allmemo
where
((comp(400123A7E02E8DF4h) == gr2.cnode and
gr2.nrec == gr1.cnode and
word(1125) == allmemo.wtable and
gr1.nrec /== allmemo.crec
)) and instr(shifr, gr1.name)<>0 order by gr1.name;
parameters num_izd;
HandleEvent
cmInit: {
StartNewVisual(vtRotateVisual, vfTimer,
'Производится выгрузка данных',1);
case num_izd of
1: {set shifr:='AAA'; }
2: {set shifr:='BBB';}
3: {set shifr:='CCC';}
4: {set shifr:='DDD';}
end;
Message(shifr);
_loop gr1 {
LogStrToFile('clients.log',gr1.name);
LogStrToFile('clients.log',gr1.kod);
/*
обработка мемо-поля
*/
}
StopVisual('',0);
abort;
}
end;
end.
Вызов происходит с параметром num=1. Log-файл ПУСТОЙ!!! В _loop не заходим!!! :cry:
Кто знает, что за чертовщина?

И еще, интересный момент. Если запустить упрощенный запрос:
select gr1.kod, gr1.name, gr1.cnode, gr2.nrec, gr2.cnode
from synonym groupsch gr1, synonym groupsch gr2
where
((comp(400123A7E02E8DF4h) == gr2.cnode and
gr2.nrec == gr1.cnode
)) and instr('AAA', gr1.name)<>0 order by gr1.kod;
результат выборки почему-то отсортирован по полю gr1.name :)

Добавлено: 25 июл 2005, 08:50
oiko
Я думаю следующее
gr1 подчиненная gr2 таблица
не позиционируясь не на одной записи gr2 вы пытаетесь пробежатся по gr1 попробуйте перед циклом поставить getfirst gr2

Добавлено: 25 июл 2005, 15:00
Sheinina
Все заработало, только вместо getfirst надо ставить _loop :)

Добавлено: 25 июл 2005, 15:33
oiko
Один корнеплод другого не слаще
_loop аналогичен кострукции

if (modifier getfirst anytable)=tsok
do{

} while (modifier getnext anytable)=tsok