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

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

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

Ответить
lehancho
Новичок
Сообщения: 23
Зарегистрирован: 08 сен 2005, 12:25
Контактная информация:

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

Сообщение 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]
san
Местный житель
Сообщения: 412
Зарегистрирован: 28 апр 2005, 11:34
Откуда: Галактика Млечный Путь

Сообщение san »

бывают глюки если есть условия после скобок ))
Max_Fin
На пенсии
Сообщения: 797
Зарегистрирован: 29 мар 2005, 17:49
Откуда: г. Тюмень
Контактная информация:

Сообщение 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;
@@@@@@@@@@@@ @@@@@@@@@@ 
.}
.}
.}
.}
.}
lehancho
Новичок
Сообщения: 23
Зарегистрирован: 08 сен 2005, 12:25
Контактная информация:

Сообщение 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.
это говорит о том, что при вторичном формирование не видет все, что за скобками(не знаю почему?)
lehancho
Новичок
Сообщения: 23
Зарегистрирован: 08 сен 2005, 12:25
Контактная информация:

Сообщение lehancho »

Может, кто-нибудь все-таки сможет мне помочь с RELATION, а то говорят что возможны неправильные данные :eek:
Max_Fin
На пенсии
Сообщения: 797
Зарегистрирован: 29 мар 2005, 17:49
Откуда: г. Тюмень
Контактная информация:

Сообщение Max_Fin »

См. выше
Жду выхода Вселенная 2.12!
Ответить