На главную... Продукты | Технологии | Классификаторы | Проекты | Скачать | Цены| Форум | Статьи | Обучение | Контакты

Ошибка обновления удаленного объекта

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: 1 2 След.
RSS
Ошибка обновления удаленного объекта, Ошибка обновления удаленного объекта
 
form_main.MapFind1.Active := false;
form_main.MapFind1.FindPoint := false;
form_main.MapFind1.MapSelect.Clear;
form_main.MapFind1.MapObj.Style := OS_SELECT;
form_main.MapFind1.MapSelect.Excode[-1,OL_SQUARE] := false;
form_main.MapFind1.MapSelect.Excode[10000177,OL_SQUARE] := true;
form_main.MapFind1.Active := true;
form_main.MapFind1.First;
form_main.MapFind1.Center;
ShowMessage ('найден объект для удаления');

// form_main.MapFind1.MapObj.Delete;
mapDeleteObject(form_main.MapObj1.ObjHandle);  // Во всех случаях выдает ошибку Ошибка обновления удаленного объекта - Update Object
// Может ли это быть связано с тем, что карта расположена на GIS Server, ранее на пользовательском компьютере вроде такого не было.

// form_main.MapObj1.Repaint;
// form_main.mvMap.Repaint;
mapCommit(form_main.MapObj1.ObjHandle);
// form_main.MapFind1.MapObj.Commit;
form_main.mvMap.Repaint;

Что здесь не правильно?
Изменено: Сергей Викторович - 14.10.2019 15:37:22
 
Возможно карта на ГИС сервере запрещена на редактирование.
 
Это связано с Демо версией?
Т.к. галка разрешить редактирование конечно установлена.
3.PNG (41.98 КБ)
Изменено: Сергей Викторович - 14.10.2019 17:26:57
 
После form_main.MapFind1.First; неплохо бы проверить код возврата (может объект и не найден).

Надеюсь, после вызова form_main.MapFind1.Center; вы визуально видите, что объект карты выделился и переместился в центр.

Удалять лучше этим методом form_main.MapFind1.MapObj.Delete;

После form_main.MapFind1.MapObj.Delete сообщение такое же?
 
Цитата
Andrey Gheleznyakov написал:
Удалять лучше этим методом form_main.MapFind1.MapObj.Delete;
Да, конечно, таким способом пробовал в первую очередь.
Результат тот же.
Отправил Елене Кузнецовой на почту логи,
может там что удастся прочесть.

Нас это сейчас очень напрягает.
Просьба помочь разобраться почему программа не может удалить фал с карты на GIS Server-е.
 
Подключитесь к этой же карте с помощью ГИС Панорама версии 12. Редактором карты удалите объект. Объект с карты удаляется?
 
Цитата
Andrey Gheleznyakov написал:
Подключитесь к этой же карте с помощью ГИС Панорама версии 12. Редактором карты удалите объект. Объект с карты удаляется?
Подобрали набор команд,
который позволяет все-таки удалять объект из карты
с помощью Gistoolkit12

 form_main.MapObj1.Delete;
 mapLogCommitAction(form_main.mvMap.MapHandle, form_main.mvMap.MapSites[0].SiteHandle);
 form_main.mvMap.AdjustData;
 form_main.mvMap.Repaint;

Как видно из выше приведенного кода,
по настоянию Олега Валентиновича, отсутствует Commit сразу после удаления объекта.

Хотя Денис Вицко говорил о том, что Commit удаленного объекта обязателен.

Но программа работает нормально, если только Commit нет.

Но вместе с тем возникла проблема:
в этой ситуации

mapLogAbolitionLastAction(mvMap.MapHandle, mvMap.MapSites[0].SiteHandle);
form_main.mvMap.AdjustData;
mvMap.Repaint;
mvMap.MapSort(true,true);
mvMap.Repaint;

не срабатывает отмена удаления этого объекта.
А срабатывает отмена нанесения объекта на карту, которое было выполнено еще до удаления объекта.
Это очень не хорошо, пользователь жалуется, что отменяется не последнее удаление объекта,
а удаляется нанесение еще ранее нанесенного объекта.

Что можно сделать?
 
Цитата
Сергей Викторович написал:
Хотя Денис Вицко говорил о том, что Commit удаленного объекта обязателен.

С точностью до наоборот! Commit после Delete не нужен. И я именно Вам об этом говорил не однократно:

см. тут 1 - http://www.gisweb.ru/forum/messages/forum2/topic8522/message67223/8522-sozdanie-obekta_podpisi#message67223
Цитата
Денис Вицко написал:
Да, и MapObj.Commit после MapObj.Delete не нужен.

см. тут 2 - http://www.gisweb.ru/forum/messages/forum2/topic8522/message65598/8522-sozdanie-obekta_podpisi#message65598
Цитата
Денис Вицко написал:
PS
После удаления объекта дополнительно вызывать Commit не требуется.


Теперь что касается якобы некорректной отмены транзакции.

В многопользовательском режиме транзакции открываются для всех пользователей и закрываются при завершении операций. Транзакции при этом существуют параллельно в асинхронном режиме.
Какая из них окажется последней - это будет зависеть от того, кто из пользователей раньше или позже начал или закончил свою операцию.
Порядок транзакций как они фактически сохранились можно посмотреть выгрузив журнал транзакций карты с помощью прикладной задачи в ГИС Панорама 12:



Чтобы отменить не любую последнюю транзакцию, а конкретно свою, надо воспользоваться функцией mapLogUndoAction с соответствующим флагом:
Код
 // Отменить последнюю транзакцию в документе                 
 // Если после транзакции выполнялась сортировка карты
 // или журнал пуст - возвращает ноль
 // hMap  - идентификатор открытой карты
 // hSite - поле для записи идентификатора карты, на которой выполнена
 //         отмена транзакции
 // flag - условия выбора последней транзакции:
 // LOG_ANYACTION(0) - нет условий, LOG_MYACTION(1) - обрабатывать последнюю
 // свою транзакцию (пропускать транзакции других пользователей)
 // При ошибке возвращает ноль,
 // иначе - количество восстановленных операций

_MAPIMP long int _MAPAPI mapLogUndoAction(HMAP hMap, HSITE * hSite, long int flag);
 
Спасибо.
Очень хороший журнал транзакций.
Если возможность очистить журнал транзакций,
чтобы начать писать в него снова?  
 
Выполните сортировку карты. Журнал будет очищен.
Страницы: 1 2 След.
Читают тему (гостей: 1)



© КБ Панорама, 1991-2024

Регистрируясь или авторизуясь на форуме, Вы соглашаетесь с Политикой конфиденциальности