Предыдущая тема :: Следующая тема |
Автор |
Сообщение |
VAD
Зарегистрирован: 01.03.2009 Сообщения: 6 Откуда: Питер
|
Добавлено: Вс Мар 01, 2009 6:03 pm Заголовок сообщения: Присвоение значений в таблице |
|
|
При написании программки возникла проблема
Есть код
obj_type = ObjectInfo(tab_name.obj, OBJ_INFO_TYPE)
i = 0
Fetch first From tab_name
Do While Not EOT(tab_name)
i = i+1
Fetch Next From tab_name
Loop
Do case obj_type
Case OBJ_PLINE
Update tab_name
Set colon = xx
Where RowID = i
end case
Если объект полилиния, то присваивается значение XX
Но если в таблице есть удаленные строки(закрашены серым), то счет сбивается поскольку i считается от первой строки(в т.ч. удаленной). Помогите решить данную проблему. |
|
Вернуться к началу |
|
|
Андрей Могильный
Зарегистрирован: 21.03.2006 Сообщения: 864
|
Добавлено: Пн Мар 02, 2009 8:30 pm Заголовок сообщения: |
|
|
Я не понял смысла программы - зачем пустой цикл и после цикла присваивание???
Постараюсь показать в чем тут ошибка. Команда Fetch Next согласно документации "переводит курсор на следующую неудаленную запись таблицы". Таким образом цикл абсолютно правильно считает количество неудаленных записей в таблице. Однако дальнейший поиск по условию Where RowID = i неверен, т.к. значение RowID имеют и удаленные записи.
Вполне нормально будет работать прототип такого алгоритма:
Добавлено: Вс Мар 01, 2009 6:03 pm Заголовок сообщения: Присвоение значений в таблице
--------------------------------------------------------------------------------
При написании программки возникла проблема
Есть код
obj_type = ObjectInfo(tab_name.obj, OBJ_INFO_TYPE)
i = 0
Fetch first From tab_name
Do While Not EOT(tab_name)
i = i+1
Fetch Next From tab_name
Loop
SaveRowID = tab_name.RowID 'здесь сохранится RowID последней неудаленной записи в таблице
Do case obj_type
Case OBJ_PLINE
Update tab_name
Set colon = xx
Where RowID = SaveRowID
end case |
|
Вернуться к началу |
|
|
VAD
Зарегистрирован: 01.03.2009 Сообщения: 6 Откуда: Питер
|
Добавлено: Ср Мар 04, 2009 10:41 pm Заголовок сообщения: |
|
|
Большое спасибо, нашел более простой путь через select=)) |
|
Вернуться к началу |
|
|
|