Страница 1 из 1
Валится IsValid
Добавлено: 09 сен 2008, 14:20
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.
Как лечить? Баг или так и должно быть? Спасибо!
Добавлено: 09 сен 2008, 15:01
evchic
if (IsValid(tnSpSopr))
Добавлено: 09 сен 2008, 15:48
galover
НЕТ! SpSopr может быть в нескольких view, нужно именно по конкретной view -> View1
Добавлено: 09 сен 2008, 17:16
evchic
if (IsValid(View1.tnSpSopr)) кажится так
Добавлено: 09 сен 2008, 17:20
galover
пробовал, падает
Добавлено: 10 сен 2008, 05:49
Алексей
а view1.getfirst spsopr ?
Добавлено: 10 сен 2008, 10:28
galover
Алексей
ну это ясное дело работает, вопрос в другом - почему IsValid отбрасывает копыта
Добавлено: 10 сен 2008, 11:23
Max_Fin
IsValid работает только с главной логической таблицей.
Используйте конструкцию
RecordExists проверит наличие записи в SpSopr, но позиционирования на SpSopr не произойдет
Добавлено: 10 сен 2008, 14:02
galover
Max_Fin
Спасибо, кажется то что нужно!
Добавлено: 10 сен 2008, 14:26
galover
Max_Fin
В догонку. Раз позиционирование не осуществляется, означает ли это что в таком коде
Код: Выделить всё
View1._loop KatSopr
{
if (View1.RecordExists SpSopr = tsOK)
{
_var := SpSopr.NoDok; // Что здесь будет????? Валидное или невалидное значение
}
}
нужно еще позиционироваться и по SpSopr-у (делать тот же getFirst)? Или же позиционирование будет производится автоматически, так как идет проход по KatSopr и соответственно SpSopr будет меняться в зависимости от текущей записи KatSopr-а? Спасибо
Добавлено: 10 сен 2008, 19:28
edward_K
View1.isvalid(View1.tnspsopr) не пашет?
вообще в vip для 2 и далее вьюхи позиционирование кроме как getfirst не сделать ( или _loop делать по всей вьюхе), как и в формах для всех вьюх.
Добавлено: 11 сен 2008, 11:32
galover
edward_K
View1.isvalid(View1.tnspsopr) не пашет?
неа. Получаю
Test.vip(19)
Ошибка: Нет такой функции, поля или метода : View1.ISVALID (стр.6, поз.9 в
Test.vip)
if (View1.IsValid(View1.tnSpSopr))
^ [ Enter-продолжить ] :
вообще в vip для 2 и далее вьюхи
не понял о чем речь
Добавлено: 11 сен 2008, 12:00
edward_K
isvalid раньше в вашем случае никогда не пахало - только getfirst, но правда runtime я тоже не помню, так что в ТП

.