обработка запроса в цикле

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

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

Ответить
Nathaly
Сообщения: 10
Зарегистрирован: 04 апр 2006, 13:51
Контактная информация:

обработка запроса в цикле

Сообщение Nathaly »

Подскажите пожалуйста где ошибка в отчёте

Есть следующий отчет:

.create view Tar
var group: integer
as SELECT
tarstav.datizm,
klsisopl.nasisopl,
tarstav.codtar,
tarstav.naitar,
tarstav.razr,
tarstav.tarif
FROM tarstav, klsisopl
WHERE
((klsisopl.sisopl == tarstav.sisopl)) AND
Tar.group= tarstav.codtar;
...

.begin j:=0 end.
.{while j<3
.begin
j:=j+1
Tar.group:=j
i:=Tar.GetFirst
end.
.{?INTERNAL; i=0
.{table 'Tar'
вывод данных из представления Tar, например
Tar.group и Tar.tarstav.codtar
.}
.}
.}

То есть в цикле меняется условие фильтрации для представления Tar

Результат работы этого отчёта
Tar.group Tar.tarstav.codtar
1 1
2 1
3 1

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

Re: обработка запроса в цикле

Сообщение Max_Fin »

Логическая таблица не верна

либо она должна выглядеть так, судя по вашему коду

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

.create view Tar
var group: integer
as SELECT
 tarstav.datizm,
 klsisopl.nasisopl,
 tarstav.codtar,
 tarstav.naitar,
 tarstav.razr,
 tarstav.tarif
FROM tarstav, klsisopl
WHERE
((
  group == tarstav.codtar (noindex) and
  tarstav.sisopl == klsisopl.sisopl
));
либо

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

.create view Tar
var group: integer
as SELECT
 tarstav.datizm,
 klsisopl.nasisopl,
 tarstav.codtar,
 tarstav.naitar,
 tarstav.razr,
 tarstav.tarif
FROM tarstav, klsisopl
WHERE
((
  klsisopl.sisopl ==tarstav.sisopl and
  group == tarstav.codtar
));
но в этом случае где цикл по класификатору?
Жду выхода Вселенная 2.12!
Nathaly
Сообщения: 10
Зарегистрирован: 04 апр 2006, 13:51
Контактная информация:

Сообщение Nathaly »

Большое спасибо, всё заработало
Nathaly
Сообщения: 10
Зарегистрирован: 04 апр 2006, 13:51
Контактная информация:

Сообщение Nathaly »

для приведённого примера рабочий запрос выглядит следующим образом

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

.create view Tar
var group: integer
as SELECT
 tarstav.datizm,
 klsisopl.nasisopl,
 tarstav.codtar,
 integer(substr(string(tarstav.codtar),1,length(string(tarstav.codtar))-2)) (FIELDNAME=GroupTar),
 tarstav.naitar,
 tarstav.razr,
 tarstav.tarif
FROM tarstav, klsisopl
WHERE        ((klsisopl.sisopl == tarstav.sisopl AND  ...));
вместо ... надо написать что-то типа Tar.group==GroupTar, но так писать нельзя
вопрос: как это правитьно записать?

раньше было group=tarstav.codtar, а теперь надо чтобы group было равно tarstav.codtar, но без последних двух цифр (это записано как integer(substr(string(tarstav.codtar),1,length(string(tarstav.codtar))-2)) (FIELDNAME=GroupTar) )
но если написать

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

((klsisopl.sisopl == tarstav.sisopl and
  (integer(substr(string(tarstav.codtar),1,length(string(tarstav.codtar))-2))==group)
));
то компилятор обругает нехорошими словами
Max_Fin
На пенсии
Сообщения: 797
Зарегистрирован: 29 мар 2005, 17:49
Откуда: г. Тюмень
Контактная информация:

Сообщение Max_Fin »

убрать подцепку на группу
и выполнять проверку непосредственно в цикле через интернал
что-то вроде этого

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

.{table 'Tar' 
.{?INTERNAL; (integer(substr(string(tarstav.codtar),1,length(string(tarstav.codtar))-2))=group)
вывод данных из представления Tar, например 
Tar.group и Tar.tarstav.codtar 
.}
.}
Жду выхода Вселенная 2.12!
Max_Fin
На пенсии
Сообщения: 797
Зарегистрирован: 29 мар 2005, 17:49
Откуда: г. Тюмень
Контактная информация:

Сообщение Max_Fin »

убрать подцепку на группу
и выполнять проверку непосредственно в цикле через интернал
что-то вроде этого

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

.{table 'Tar' 
.{?INTERNAL; (integer(substr(string(tarstav.codtar),1,length(string(tarstav.codtar))-2))=group)
вывод данных из представления Tar, например 
Tar.group и Tar.tarstav.codtar 
.}
.}
Жду выхода Вселенная 2.12!
Ответить