select * from rzkutprih, rzkutrash
WHERE ((date(01,01,205)>>=rzkutprih.ddoc
rzkutprih.nrec==rzkutrash.crzprih
date(01,01,205)<<=rzkutprih.ddoc
))
and not isvalidall(tnrzkutrash)
нет, абсолютно не оно... выбирает пустую запись. хотя по идее должно выбрать тыщ 700.
хотя даже если убираю последнюю строчку совершенно не понятную для меня то как бы должно что-то выбираться. а-н нет.
оба хорошо работают. вроде как надо. я сам так с самого начала делал. потом написал в нормальном sql и обратился сюда с вопросом
по первому вопросов нет. второй тоже подцепляет все расходы по выбраным приходам.
далее мне надо чтобы добавочно накладывалось ограничение на приход а не на расход. вот тут собака порылась. Задача стоит выбрать все записи ПРИХОДА весь расход по которым был до date(1,1,2005)
У меня розница не ведется, поэтому по обычным накладнухам и соответсвующим им складским ордерам :
select k.nsopr,k.dsopr,k.summa,s.dord from katsopr k,sklorder s
where ((201==k.vidsopr
and date(01,09,2005)<<=k.dsopr
and date(30,09,2005)>>=k.dsopr
and k.nrec==s.csopr
and date(30,09,2005)<<=s.dord
)) and s.dord<>date(0,0,0);
у тебя вроде по аналогии. По крайней мере у меня этот селект все правильно выбирает
это аналогия с твоим первым вариантом без последней строки... чуть не то. второе ограничение даты ограничивает таблицу расходов, а надо чтобы приходов...
create view v_rzkutprih
as select rzkutprih.nrec
from rzkutprih, rzkutrash
where
((date(01,01,2005) >> rzkutprih.ddoc and
double(0) == rzkutprih.ostatok (noindex) and
rzkutprih.nrec == rzkutrash.crzprih and
date(01,01,2005) <<= rzkutrash.ddoc))
and (not IsValidAll(tnrzkutrash));
Последний раз редактировалось WiRuc 26 окт 2005, 12:50, всего редактировалось 1 раз.
Понятненько. Все странно что не выбирает то,что надо
Это галактический вариант конструкции TSQL "not in select..."
Метод IsValidAll (Integer) : Boolean
Назначение
Возвращает логическую истину, если есть текущая позиция в узле iLeaf логической таблицы. В случае отсутствия позиции нельзя вызывать позиционно зависимые модификаторы (Update, Delete, GetNext, GetPrev) - будет возвращен код ошибки.
Описание
function IsValidAll (iLeaf : Integer) : Boolean;
Параметры
iLeaf : Integer - номер узла, в котором нужно проверить наличие позиции (константа tn<имя узла>).
Возвращаемое значение
Возвращает True, если есть текущая позиция в узле iLeaf логической таблицы, иначе - False.
Замечания
Позиция может отсутствовать в следующих случаях:
· после входа в интерфейс, если нет записей в таблице;
· после удаления записи;
· после операций навигации со старшими узлами логической таблицы.