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

Не делает выборку второй раз

Добавлено: 08 сен 2005, 12:48
lehancho
Hi всем собратьям
Всеми программерами бьемся над проблемой такого плана:
существует вьюшка
.Create view schet2
SELECT SCHFACT.NUM, SCHFACT.DFACT
FROM BASEDOC, SCHFACT, stepdoc, katsopr
WHERE ((BASEDOC.NREC==stepdoc.cbasedoc and stepdoc.nrec==katsopr.cstepdoc
and katsopr.cschfact==schfact.nrec )) and katsopr.dsopr<>date(0,0,0) and katsopr.nsopr<>'' and katsopr.vidsopr <> word(0) and num2=basedoc.nodoc and d2=basedoc.ddoc
order by NUM;

после чего делаем цикл по этой вьюшке внутри цикла BASEDOCLOOP

.{CheckEnter BASEDOCLOOP

.{table 'SCHET2'
@@@@@@@@@@@@ @@@@@@@@@@
.}

по первому проходу идеально выводит данные :-)

по второму повторяет данные из первой выборке :-?
и тогдалее, когда нужно открывать цикл с новой выборкой,
а получается, что цикл проходит по старой выборке.
Правда в запросе не все гладко, выдает - "С ограничением RELATION ... реализуется на внешней выгрузке", все индексы проверили

Заранее сПАСИБО ВСЕМ!
[/b]

Добавлено: 08 сен 2005, 13:33
san
бывают глюки если есть условия после скобок ))

Добавлено: 08 сен 2005, 14:44
Max_Fin
Не описаны поля какие выводяться, к сожалению
Но предложить могу следующее
1) выбросить из логической таблицы все фильтры
2) цикл делать не по всей логической таблице, а разбить по каждой в отдельности
3) внутри циклов наложить фильтры на выборку с помощью internal, часть тех которые у тебя используются не потребуются (katsopr.vidsopr <> word(0))

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

.{table 'SCHET2.BASEDOC'
.{table 'SCHET2.STEPDOC'
.{table 'SCHET2.KATSOPR'
.{table 'SCHET2.SCHFACT'
.begin
  bUsl :=  (num2=Schet2.basedoc.nodoc) and (d2=Schet2.basedoc.ddoc) and ...;
end.
.{?INTERNAL;bUsl;
@@@@@@@@@@@@ @@@@@@@@@@ 
.}
.}
.}
.}
.}

Добавлено: 08 сен 2005, 14:56
lehancho
Решили проблему
использовать нужно condition, вынести условия were которые за скобками
condition byBaseDoc as (basedoc.nodoc = num2 and basedoc.ddoc=d2)

и соответственно
.{CheckEnter BASEDOCLOOP
.begin
PushCondition(tcByBaseDoc);
end.
.{table 'SCHET2'
@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@
.}
.begin
popCondition(tcByBaseDoc);
end.
это говорит о том, что при вторичном формирование не видет все, что за скобками(не знаю почему?)

Добавлено: 08 сен 2005, 15:04
lehancho
Может, кто-нибудь все-таки сможет мне помочь с RELATION, а то говорят что возможны неправильные данные :eek:

Добавлено: 08 сен 2005, 15:40
Max_Fin
См. выше