RUS  ENG 

Ошибка запроса при переходе с 7.0 на 8.0

Страницы: 1
RSS
Ошибка запроса при переходе с 7.0 на 8.0
 
Здравствуйте, мы планируем выполнить перевод карты с zulu 7.0. на zulu 8.0. Для отладки скачал zulu версии 8.0.0.6489u от 06.10.2017 и возникла проблема с подключением к базе данных. При выполнении запросов к любому из слоев выдается ошибка
Цитата
Ошибка доступа к данным. column 'base_type_str' not found (Код ошибки: 0х80040Е14)
В нашей базе этого поля нет, зачем это поле и подскажите как настроить структуру. В zulu 7.0 (в любой версии) этой проблемы не возникало при работе ни с локальной базой ни с серверной. База данных SQL Anywhere 10.
 
Kostya_LeoG, добрый день! У нас в коде была ошибка, в ближайшем обновлении будет исправлена.
 
Здравствуйте, в версии zulu 8.0.0.6492 от 09.10.2017 ошибка при работе с БД сохранилась
Цитата
Ошибка доступа к данным. column 'base_type_str' not found (Код ошибки: 0х80040Е14)
Но теперь она появляется только когда первый раз щелкаешь по типовому объекту, например, по участку, то в следующий раз при щелчке по этому же типу ошибки не возникает. При выборе другого типового объекта, например, задвижка, то появляется снова та же ошибка. Такая же ошибка возникает и в других слоях.
 
Мы по этой ошибке еще ничего не выкладывали.
 
Здравствуйте, в версии zulu 8.0.0.6493 от 10.10.2017 ошибка при выполнении запросов исправлена, но случайно обнаружена ошибка в интерфейсе: при нажатии на кнопку, которая должна по логике раскрывать список открытых карт на панели закладок, чтобы переключиться на нужную, возникает исключение:
Цитата
"Инструкция по адресу 0x7c9012b0 обратилась к памяти по адресу 0x000c0250. Память не может быть Read"
Изменено: Kostya_LeoG - 11.10.2017 14:04:26
 
Kostya_LeoG, добрый день! Нужно уточнение. У нас есть докируемая панель "Закладки", есть диалог "Закладки", есть раздел "Закладки" у карты в докируемом окне "Рабочее место". Но ни в одном из этих окон не предусмотрена кнопка, раскрывающая какой-либо список карт.
Можно связаться с нами по телефону или скайп, чтобы поточнее описать последовательность действий.
 
Доброго времени суток, Дмитрий. Имеется в виду кнопка, расположенная чуть выше верхнего правого угла окна карты, перед заголовком окна "Рабочее место" . Это маленькая кнопочка с изображением треугольника и черты над ним.[img]file:///d:/zulu.png[/img][img]file:///d:/zulu.png%2520[/img] К сожалению, прикрепить к сообщению картинку с изображением не получилось
Изменено: gsm - 12.10.2017 07:10:21
 
Здравствуйте, уточнение по ошибке выслал к вам на почту [email protected] (скриншот в приложении)
PS ошибка в версии зулу 8.0.0.6494 от 11.10.2017 сохранилась
Изменено: Kostya_LeoG - 12.10.2017 10:10:03
 
Здравствуйте, после выполнения серии теплогидравлических расчетов появилась ошибка доступа к данным. Между расчетами исходные данные не менялись. Первый расчет в только что загруженной программе всегда выполняется корректно. Подробный лог по теплогидравлическим расчетам и скриншот сообщений выслал к вам на почту [email protected]. Версия зулу 8.0.0.6495 от 12.10.2017
 
Здравствуйте. После того как мы изменили проекцию карты (для совмещения с 2ГИС и ОСМ) перестал работать участок кода (отработка щелчка мышки по карте).
Код
procedure zmpMainMouseLeftUp(ASender: TObject; State: TOleEnum; X, Y: Integer; RealX, RealY: Double);
begin
   .....
   //определение элемента
   for i := 1 to 12 do 
   begin
     layer := zmpMain.Map.Layers.Item[i]
     key := layer.ElemIDByXY(RealX, RealY);
     if key > 0 then break;
   end;
   ....
end;

В карте с локальным датумом (до изменения проекции) эта инструкция работает. Подскажите, как отрабатывать реальные координаты похожим образом для получения ключа элемента.

Версия Zulu 8.0.0.6513u Дата сборки 30.10.2017

Изменено: Kostya_LeoG - 31.10.2017 13:29:44
 
Layer.ElemIDByXY принимает координаты проекции слоя.

Если проекция карты и проекция слоя отличаются, то координаты с карты напрямую в функции слоя подставлять нельзя. (Они в план-схеме (локальный датум) совпадают).
Преобразования координат в объекте CRS (https://politerm.com/zuludoc/zuluax/CRS_cls.html)
У карты есть GetCRS и у слоя есть GetCRS (https://politerm.com/zuludoc/zuluax/CRS_ConvertPoint.html)
 
Проекция карты (Сферический меркатор WGS84 [EPSG:3857]) действительно отличается от проекций подключенных слоев (Поперечная меркатора (Гаусса-Крюгера) Pulkovo 1942). Конечно, после Вашей подсказки и небольшой доработки этот участок кода заработал.
Можно ли выполнить преобразование проекции карты таким образом, чтобы все слои были в одной проекции (чтобы не выполнять "лишних" преобразований координат)?
Можно, как KML Google, все хранить в широте долготе.
 
Чтобы все слои были в одной проекции, нужен физический пересчет координат (перепроецирование) с записью в слой новых значений. Потом, не все проекции могут содержать все слои. Например, Гаусса-Крюгера (все МСК) работают +- 3 или 6 градусов от центрального меридиана. Весь мир туда не влезет. Зато в этих пределах работают (почти без искажений) расстояния во всех направлениях, и в редакторе можно применять инструменты перпендикулярно, параллельно, на расстоянии от, как в обычной план-схеме.
 
Здравствуйте. Возникли проблемы при работе с темами как в оболочке zulu v8.0, так и при управлении из программы.
  • Описание ошибки при работе из оболочки zulu v8.0.06512u дата сборки 01.11.2017г: При сохранении темы после редактирования условия тематического фильтра (удаление, добавление нового условия), созданного в zulu v7.0, в происходит необработанное исключение (zulu вылетает без кода ошибки). После повторной загрузки программы и попытки отредактировать тот же тематический фильтр уже ошибок нет.
  • Описание ошибки при программной работе с темами: есть участок кода, который выполнялся в zulu v7.0
Код
Theme_id := -1;
filter_id := 3;
th_id :=  Layer.Themes.ThemeId[2];                    //возвращает th_id = 5,  как и в zulu v7/0
if Layer.Themes.ThemeFilterId[th_id] = Filter_id then //в этом случае Layer.Themes.ThemeFilteredId[th_id] = 255, а в zulu v7.0 это выражение равно 3
begin
//т.е. в эту секцию с библиотеками zulu 8.0 не попадаем
    Theme_id := th_id;
    Theme_uname := Layer.Themes.ThemeUserName[2];
    Layer.Themes.UpdateTheme(Theme_id);
end;
if Theme_id = -1 then
        Theme_id := Layer.CreateTheme(Filter_id, -1, Filter_uname); //вот здесь и возникает исключение из отладчика
 raised exception class $C0000005 with message 'access violation at 0x65c7e33d: write of addres 0x0a130000

В описании библиотеки функция Layer.CreateTheme в случае неудачи должна возвращать -1

Изменено: Kostya_LeoG - 02.11.2017 10:36:06
 
У меня в примере вылетел, если Filter_uname - пустая строка. Это подправим.
А Layer.Themes.ThemeFilterId возвращает -1, если тема создана не по фильтру или фильтра нет. 255 - это видимо -1 у Вас так вывелся. Хотя мы возвращаем знаковый long
Не у всех тем могут быть фильтры и не все фильтры могут существовать после создания по ним темы. Проверьте.
 
Запросы из программы выполнялись только к существующим темам, новых не создавалось. Код программы в этом месте давно не менялся, проблема возникла только в связи с переходом на zulu v8.0 и обнаружена случайно. С библиотекой zulu v7.0 с этой же картой все работает.
Новые темы и фильтры, конечно, нужно будет еще создать...
P.S. В последней версии из справки "исчезли" раздел "Руководство программиста"
Изменено: Kostya_LeoG - 02.11.2017 14:45:59
 
Пришлите слой со всеми темами и фильтрами. Посмотрю в отладчике. Так трудно сказать. И вопрос, доступ локально или через сервер?

Руководство из chm убрали. Есть online. Можно и обратно вставить.
https://politerm.com/zuludoc/index.html#zuluactivex.html
 
Карта локальная, руководство хотелось бы иметь под рукой, т.е. в chm. Карта достаточно большая, база данных Sybase тоже не маленькая, как подготовить или выслать целиком?
PS Если перенастроить основной запрос к слою через источник ODBC, то ошибка вроде бы уходит. Запросы всех слоев карты были настроены под zulu 7.0 через соединение.
Изменено: Kostya_LeoG - 02.11.2017 15:16:34
 
Можно сперва отметить несколько объектов и Слой\Скопировать с опцией "только выделенные" источник выбрать sqlite. В отдельную папку. А уж затем эту папку упаковать и прислать на [email protected] Там темы и фильтры должны скопироваться.
 
Попробовал скопировать, по всем подключенным таблицам получено подобное сообщение
Цитата
Ошибка: Не удалость скопировать таблицу 'UchThermo.db' (или ее структуру) из 'D:\Work\_Якутск\YAK_DATA\YAK_MAP\Map\Heat\' в таблицу 'UchThermo1' в 'База данных SQLite'. База данных: '_Участки ТС'. Network initialization failed. Permission denied. File: C:\PDOXUSRS.NET Directory: C:\ (Код ошибки: 0x8BDE2C01).
 
А причем тут Sybase? https://politerm.com/articles/tips/bdevista/
 
Слой выслал к вам на почту
 
Цитата
Kostya_LeoG написал:
Карта локальная, руководство хотелось бы иметь под рукой, т.е. в chm.

Здравствуйте, Kostya_LeoG.
Руководство программиста будет добавлено в .chm справку в следующем обновлении.

Либо вы можете скачать новую версию справки в разделе Документация (Zulu.chm). Для того, чтобы система могла использовать новую справку, перепишите файл СНМ вместо имеющегося в папке, где установлена ГИС Zulu.

ВНИМАНИЕ! После скачивания СНМ файл по умолчанию будет заблокирован. Для разблокировки сделайте на нем щелчок правой кнопкой мыши, в контекстном меню выберите пункт Свойства, затем во вкладке Общие нажмите кнопку Разблокировать и ОК.
 
Спасибо, все работает
Страницы: 1