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

Вывод значений запроса

Добавлено: 25 янв 2011, 11:50
Marisha_P
Здравствуйте!
Подскажите, пожалуйста, как правильно оформить вывод данных в таблицу:
есть запрос
.create view TERM as
select mnfoper.name from katmarsh,marsh_sp,mnfoper,spkau
where ((kod ==katmarsh.nrec
and katmarsh.nrec == marsh_sp.cmarsh
and (spkau.name='Термическая обработка')
and marsh_sp.nope == mnfoper.nrec
and mnfoper.canval1 ==spkau.nrec
));
Данный запрос определяет для техмаршрута операции, у которых доп.аналитика имеет значение "термическая обработка". Т.е. заранее не известно количество выводимых значений - может быть и одно значение у запроса, может несколько. Как организовать последовательный вывод полученных значений в ячейки таблицы?

Re: Вывод значений запроса

Добавлено: 25 янв 2011, 13:23
Masygreen
попробую угадать .. таблица excel тогда счетчик, таблица в памяти просто insert

Re: Вывод значений запроса

Добавлено: 26 янв 2011, 13:57
Marisha_P
а использовать цикл _loop можно? у меня он почему-то неправильно отрабатывает...как должен выглядеть код в таком случае?
_ loop mnfoper ?

Re: Вывод значений запроса

Добавлено: 26 янв 2011, 14:52
Vik
В документации: описание языка Vip -> Отчеты -> Цикл по SQL-таблице. Там все написано и приведены примеры.

Re: Вывод значений запроса

Добавлено: 02 фев 2011, 11:47
Marisha_P
Пишу вот такой вариант вывода
if (TERM.getfirst katmarsh=0)
{if (TERM.getfirst marsh_sp=0)
{ term_name:=TERM.mnfoper.name;
Message (term_name);
}
}

получаю на выходе - только первое значение из запроса, т.е нет цикла.

меняю данный текст на
.{table 'TERM' by mnfoper.nrec
.begin
term_name:=Term.mnfoper.name;
Message (term_name);
end.
,}

выходит ошибка- ожидалось арифметическое выражение и указывает на первую строку. что я делаю не так? подскажите, пожалуйста

Re: Вывод значений запроса

Добавлено: 02 фев 2011, 12:24
Vik
Сложно сказать, что именно тут не так по такому кусочку кода. Но тут как минимум одна ошибка: ,} (надо .}). Попробуйте еще точку с запятой поставить: .{table 'TERM' by mnfoper.nrec;. Она, вроде как, и описана не обязательной, в примерах везде стоит.

Re: Вывод значений запроса

Добавлено: 02 фев 2011, 13:01
KATZ
Marisha_P писал(а):выходит ошибка- ожидалось арифметическое выражение и указывает на первую строку
Такая ошибка может появиться внутри программного блока, т. е. сейчас у вас, скорее всего, как-то так:

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

.begin
. . .
.{table 'TERM' by mnfoper.nrec
. . .
.}
. . .
end.
Конструкцию

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

.{table 'TERM' by mnfoper.nrec
. . .
.}
надо вынести из программного блока.

Re: Вывод значений запроса

Добавлено: 02 фев 2011, 13:14
Marisha_P
Это опечатки(( Набирая сюда, перепутала точку и запятую и пропустила точку с запятой в конце строки. В коде набирала именно так. Первый вариант отрабатывает, пусть и не до конца, а тут не компилируется даже из-за этого арифметического выражения. И понять не могу в чем проблема, какое арифметическое выражение от меня ждут:(

Re: Вывод значений запроса

Добавлено: 02 фев 2011, 13:26
Marisha_P
KATZ спасибо Вам огромное-преогромное!!!!!!!!!!!!!!

Re: Вывод значений запроса

Добавлено: 03 мар 2011, 12:00
Marisha_P
Подскажите еще, пожалуйста, по такой проблеме:
надо выводить цикл, только есть значения, удовлетворяющие запросу.
попробовала подсчитывать кол-во значений в переменную, и теперь хотелось бы просто, чтобы выполнялось условие:
if (i <> 0) then
.{horizontal table 'term_v.tC'
^
.}

пишу в .begin end. - пишет ожидалось арифметическое выражение... как выделить этот блок, чтоб компилятор его воспринимал как проверку условия?

Re: Вывод значений запроса

Добавлено: 03 мар 2011, 12:23
RAJAH
.{while i<>0
...
.}
если я правильно вопрос понял.

Re: Вывод значений запроса

Добавлено: 03 мар 2011, 12:30
edward_K
здесь скорей всего так надо

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

.{?internal;(i <> 0);
.{horizontal table 'term_v.tC'
^
.} 
.}

Re: Вывод значений запроса

Добавлено: 03 мар 2011, 12:54
Marisha_P
спасибо большое!!!!!!!