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

Выгрузка и выборка

Добавлено: 08 июн 2011, 15:02
n0where
Задача такая:
Сделать таблицу типа tree c 2 параметрами - родитель и подчинённый.
Таблицы связи нет. Далаю её с помощью tmp таблицы.

Т.о. во вьюхе получается чтото типа:

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

create view
var
  node      : comp;
as select
  *
from
  tmp_table,
  KATMC, ATTRNAM, ATTRVAL
where
((
    node == tmp_table.cOwner and
    tmp_table.KATMC ==  KATMC.NREC and
    tmp_table.ATTRVAL == ATTRVAL.NREC
))
Но проблема в том, что мне надо сначало таблицу tmp_table создать записав в неё данные с KATMC. делаю _loop - он не хочет отрабатываться, ибо в вьюхе прописано, что связь с tmp_table.
Как можнно реализовать задачу?

Re: Выгрузка и выборка

Добавлено: 08 июн 2011, 15:18
Den
Для этой цели предназначен ResetBounds и SetBounds
Ну и Loop-ите по katmc и attrval для вставки в tmp_table, ес-но со where тока нужным, т.к. в LOT он у Вас не описан в примере

Re: Выгрузка и выборка

Добавлено: 08 июн 2011, 15:44
oiko
Использовать синоним katmc.

Re: Выгрузка и выборка

Добавлено: 08 июн 2011, 16:13
n0where
Использовать синоним katmc
Не прокатило.
Для этой цели предназначен ResetBounds и SetBounds
Работает.

Спасибо.

Re: Выгрузка и выборка

Добавлено: 08 июн 2011, 16:27
Semi-bit
Я правильно понимаю, что ResetBounds и SetBounds вызываются автоматически, если мы пишем _loop table where ((подцепки))? Или же используется что-то вроде PushBounds и PopBounds?

Re: Выгрузка и выборка

Добавлено: 13 июн 2011, 12:34
BlazeBio
Semi-bit писал(а):Я правильно понимаю, что ResetBounds и SetBounds вызываются автоматически, если мы пишем _loop table where ((подцепки))? Или же используется что-то вроде PushBounds и PopBounds?
Нужно вызывать PushBounds или PopBounds. Но они снимут у вас предыдущие ограничения.

Re: Выгрузка и выборка

Добавлено: 14 июн 2011, 06:57
Алексей
ResetBounds
Процедура снимает ограничения, накладываемые условиями подцепки на узел логической таблицы tableN. Стек не ведется. После этого проверяет, попадает ли текущая запись в ограничения, и если нет, то делает текущей первую в ограничениях.

SetBounds
Процедура восстанавливает запомненные процедурой ResetBounds ограничения, после этого проверяет, попадает ли текущая запись в ограничения. Если нет, то выставляет флаг поиска первой записи в восстановленных ограничениях. Поиск происходит при первом обращении к полю.

PushBounds
Процедура снимает все ограничения и устанавливает диапазон, переданный как параметр, после этого проверяет, попадает ли текущая запись в ограничения, и если нет, то делает текущей первую в ограничениях.

PopBounds
Процедура восстанавливает ограничения из where (см. конструкцию lot языка SQL) либо пустые ограничения, если в where не было ограничений на эту таблицу, после этого проверяет, попадает ли текущая запись в ограничения, и если нет, то делает текущей первую в ограничениях.

AddBounds
Процедура добавляет дополнительное ограничение (диапазон) на логическую таблицу, не снимая текущие ограничения (в отличие от процедуры PushBounds). Проверка попадания текущей записи в новые ограничения не производится (в отличие от процедуры PushBounds).