Выборки в VIPе и Атлантисе
Добавлено: 22 июл 2005, 17:19
Пишу запрос в 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 не заходим!!!
Кто знает, что за чертовщина?
И еще, интересный момент. Если запустить упрощенный запрос:
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
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 не заходим!!!
Кто знает, что за чертовщина?
И еще, интересный момент. Если запустить упрощенный запрос:
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