Insert Select и Isvalid() - что-то не совмещаются...
Добавлено: 15 июн 2011, 21:09
Заполняю тут таблицу в памяти с помощью Insert Select и хочу одно поле заполнить простым выражением - если документ включен в реестр - номер реестра, если нет - значение из переменной.
Наличие/отсутствие записей для заполнения поля хотела проверить IsValid.
Собственно, код:
Однако получется как-то занятно - если по всей выборке нет реестра (нет ссылок на ReePlDoc) - все нормально, если по всем записям есть реестр - тоже все нормально, а вот если по одим записям ReePlDoc есть, а по другим нет - IsVAlid срабатывает через раз - дает false по некоторым записям при наличии ссылки (Nrec из ReePlPor в таблицу падает нормально).
Не могу понять чего такое происходит, и куда вообще копать
ПС. С прикладной точки зрения проблем, в общем то нет - переделаю индех в таблице на нреки, благо они заполняются нормально, просто хочу понять, это что-то с IsValid или я где-то туплю ?
ПС2. Ах да, 5.4.35.6
Наличие/отсутствие записей для заполнения поля хотела проверить IsValid.
Собственно, код:
Код: Выделить всё
//Таблица
table struct local tPlatDocs
(
IsRee : boolean,
DatOpl : Date,
cPlpor : comp,
cRee : Comp, //== ReePlPor.Nrec
ReeNo : String[20] //Номер реестра
)
with index
(
byPartPol = DatOpl+ReeNo,
byPlpor = cPlPor
)
;
//заполняю
Insert tPlatDocs select
IsValid(#ReePlDoc),
plPor.DatOb, Plpor.Nrec,
ReePlPor.Nrec, if(IsValid(tnReePlDoc),ReePlDoc.Nodok, NextReeNo)
from PlPor, ReePlDoc
where (( DocTidk /== Plpor.tidkGal
and ReestrDate /== PlPor.DatVip
and PlPor.Nrec == ReePlDoc.cPlpor
and ReePlDoc.cReeplPor == ReePlpor.Nrec
));
Не могу понять чего такое происходит, и куда вообще копать

ПС. С прикладной точки зрения проблем, в общем то нет - переделаю индех в таблице на нреки, благо они заполняются нормально, просто хочу понять, это что-то с IsValid или я где-то туплю ?
ПС2. Ах да, 5.4.35.6