www.map-info.ru :: Просмотр темы - Присвоение значений в таблице
                               РќР° главную страницу сайта

 
                                
ВходВход    РегистрацияРегистрация    ПрофильПрофиль    ПользователиПользователи    ГруппыГруппы    FAQFAQ    ПоискПоиск  

 
   Список форумов www.map-info.ru | Форум - программирование в среде MapInfo Добавить ответ
Предыдущая тема :: Следующая тема  
Автор Сообщение
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
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail Посетить сайт автора
VAD



Зарегистрирован: 01.03.2009
Сообщения: 6
Откуда: Питер

СообщениеДобавлено: Ср Мар 04, 2009 10:41 pm    Заголовок сообщения: Добавить ответ со ссылкой на данный текст

Большое спасибо, нашел более простой путь через select=))
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
   Список форумов www.map-info.ru | Форум - программирование в среде MapInfo Добавить ответ
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Top.Mail.Ru