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

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

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

Ответить
n0where
Местный житель
Сообщения: 499
Зарегистрирован: 30 дек 2010, 08:16

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

Сообщение 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.
Как можнно реализовать задачу?
хороший программист — это человек, который переходя улицу с односторонним движением смотрит в обе стороны
Den
Местный житель
Сообщения: 1842
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

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

Сообщение Den »

Для этой цели предназначен ResetBounds и SetBounds
Ну и Loop-ите по katmc и attrval для вставки в tmp_table, ес-но со where тока нужным, т.к. в LOT он у Вас не описан в примере
oiko
Местный житель
Сообщения: 418
Зарегистрирован: 29 мар 2005, 17:49

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

Сообщение oiko »

Использовать синоним katmc.
n0where
Местный житель
Сообщения: 499
Зарегистрирован: 30 дек 2010, 08:16

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

Сообщение n0where »

Использовать синоним katmc
Не прокатило.
Для этой цели предназначен ResetBounds и SetBounds
Работает.

Спасибо.
хороший программист — это человек, который переходя улицу с односторонним движением смотрит в обе стороны
Semi-bit
Постоянный обитатель
Сообщения: 123
Зарегистрирован: 01 фев 2007, 12:45
Откуда: Магнитогорск
Контактная информация:

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

Сообщение Semi-bit »

Я правильно понимаю, что ResetBounds и SetBounds вызываются автоматически, если мы пишем _loop table where ((подцепки))? Или же используется что-то вроде PushBounds и PopBounds?
Испытываю траблы с даблами
ВИП — Велосипедо-Изобретательская Парадигма
САППОРТ — Сборище Абсолютно Пустых Посредственно Образованных Ржущих Троллей
BlazeBio
Местный житель
Сообщения: 386
Зарегистрирован: 27 апр 2010, 14:31
Контактная информация:

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

Сообщение BlazeBio »

Semi-bit писал(а):Я правильно понимаю, что ResetBounds и SetBounds вызываются автоматически, если мы пишем _loop table where ((подцепки))? Или же используется что-то вроде PushBounds и PopBounds?
Нужно вызывать PushBounds или PopBounds. Но они снимут у вас предыдущие ограничения.
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

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

Сообщение Алексей »

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

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

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

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

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