Валится IsValid

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

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

Ответить
galover
Местный житель
Сообщения: 794
Зарегистрирован: 16 ноя 2007, 13:52

Валится IsValid

Сообщение galover »

Help! Вылетает галактика по рантайму

Код следующий:

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

interface Sample;
create view View1 as select * from KatSopr, SpSopr where ((someCondition...));

publiс procedure Foo;
{
   View1._loop KatSopr
   {
       if (IsValid(#View1.SpSopr)) // Здесь нужно проверить есть ли записи в таблице SpSopr -> получаю runtime error
       {
               
       }
   }
}
end.
Как лечить? Баг или так и должно быть? Спасибо!
evchic
Местный житель
Сообщения: 216
Зарегистрирован: 25 апр 2006, 12:05
Откуда: г.Ростов-на-Дону
Контактная информация:

Сообщение evchic »

if (IsValid(tnSpSopr))
galover
Местный житель
Сообщения: 794
Зарегистрирован: 16 ноя 2007, 13:52

Сообщение galover »

НЕТ! SpSopr может быть в нескольких view, нужно именно по конкретной view -> View1
evchic
Местный житель
Сообщения: 216
Зарегистрирован: 25 апр 2006, 12:05
Откуда: г.Ростов-на-Дону
Контактная информация:

Сообщение evchic »

if (IsValid(View1.tnSpSopr)) кажится так
galover
Местный житель
Сообщения: 794
Зарегистрирован: 16 ноя 2007, 13:52

Сообщение galover »

пробовал, падает
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

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

а view1.getfirst spsopr ?
galover
Местный житель
Сообщения: 794
Зарегистрирован: 16 ноя 2007, 13:52

Сообщение galover »

Алексей
ну это ясное дело работает, вопрос в другом - почему IsValid отбрасывает копыта
Max_Fin
На пенсии
Сообщения: 797
Зарегистрирован: 29 мар 2005, 17:49
Откуда: г. Тюмень
Контактная информация:

Сообщение Max_Fin »

IsValid работает только с главной логической таблицей.
Используйте конструкцию

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

if View1.RecordExists SpSopr = tsOK
{
}
RecordExists проверит наличие записи в SpSopr, но позиционирования на SpSopr не произойдет
Жду выхода Вселенная 2.12!
galover
Местный житель
Сообщения: 794
Зарегистрирован: 16 ноя 2007, 13:52

Сообщение galover »

Max_Fin
Спасибо, кажется то что нужно!
galover
Местный житель
Сообщения: 794
Зарегистрирован: 16 ноя 2007, 13:52

Сообщение galover »

Max_Fin
В догонку. Раз позиционирование не осуществляется, означает ли это что в таком коде

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

 View1._loop KatSopr
   {
       if (View1.RecordExists SpSopr = tsOK)
       {
           _var := SpSopr.NoDok; // Что здесь будет????? Валидное или невалидное значение      
       }
   } 
нужно еще позиционироваться и по SpSopr-у (делать тот же getFirst)? Или же позиционирование будет производится автоматически, так как идет проход по KatSopr и соответственно SpSopr будет меняться в зависимости от текущей записи KatSopr-а? Спасибо
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

View1.isvalid(View1.tnspsopr) не пашет?
вообще в vip для 2 и далее вьюхи позиционирование кроме как getfirst не сделать ( или _loop делать по всей вьюхе), как и в формах для всех вьюх.
galover
Местный житель
Сообщения: 794
Зарегистрирован: 16 ноя 2007, 13:52

Сообщение galover »

edward_K
View1.isvalid(View1.tnspsopr) не пашет?
неа. Получаю
Test.vip(19)
Ошибка: Нет такой функции, поля или метода : View1.ISVALID (стр.6, поз.9 в
Test.vip)
if (View1.IsValid(View1.tnSpSopr))
^ [ Enter-продолжить ] :
вообще в vip для 2 и далее вьюхи
не понял о чем речь
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Сообщение edward_K »

isvalid раньше в вашем случае никогда не пахало - только getfirst, но правда runtime я тоже не помню, так что в ТП :).
Ответить