Официальный сайт геоинформационной системы (ГИС) ObjectLandОфициальный сайт геоинформационной системы (ГИС) ObjectLand
  
 
ПОИСК ПО САЙТУ:
yandex.ru
КАРТА САЙТА
 
главная / поддержка / форум
E-MAIL:ПАРОЛЬ: 
регистрация

Обсуждение

 Единственный справочник в выборке?Единственный справочник в выборке? [ ShaggyDoc ]
Вторник, 25 декабря 2007, 07:31

Создаю выборку, и хочу использовать справочники для нескольких полей.
Справочник для одного поля подключился и работает.

При попытке подключения справочника для другого поля в диалоге "Свойства поля" после выбора справочной таблицы в комбобоксе "Таблица-справочник" списки "Ключ" и "Значение" пустые.

Что это - мой глюк (недостаточное изучение документации) или фича? Нет ли ограничений на подключение справочника?

Как поступать, если, например, для выборки "Район" нужно на основе таблицы, содержащей код ОКАТО центра, код типа АТЕ и т.п. необходимо подключить справочники соответствующих названий. Поля кодов индексированные и в основной таблице и в справочных.

Версия 2.6.7 Специальная редакция для Правительства Курганской области, Site License.

 Единственный справочник в выборке? [ ViFIZEG ]
Вторник, 25 декабря 2007, 09:25

Уточните пжлуста вы используете разные справочники в одной таблице или один справочник для нескольких страниц... и в том и другом случае у нас проблем не возникало по крайней мере настройки идут еще с версии 2.6.2 вазможно вы не до конца поняли документацию.. по началу когда только работали с ол такие проблемы возникали тоже ... и просмотрите демонстрационную бд вазможно вам удасться решить эту проблему

 Единственный справочник в выборке? [ ShaggyDoc ]
Вторник, 25 декабря 2007, 09:51

Я пытаюсь сделать в одной таблице выборки разные справочные таблицы.

Использовать один справочник для разных таблиц выборок также получается.

Не дает сделать справочник для другого поля выборки.

В демонстрационной БД я вижу примеры использования двух справочников в таблице. Понятно, что, по идее, справочников можно подключать много. Вроде бы действую по документации, да и сложного там ничего нет. Но не дает выбрать из второго справочника поля.

 Единственный справочник в выборке? [ ObjectLand Support ]
Вторник, 25 декабря 2007, 11:35

2ShaggyDoc:
Промоделировали Вашу ситуацию, т.е. в выборке несколько полей, для которых требуется установить справочник. Используем для нескольких полей одну и ту же таблицу в качестве справочника. Проблем не возникает.

Вот искусственный пример на основе таблиц уже существующих в демо-ГБД:

В существующей выборке "Паспорта зданий" для поля "Улица" установите в качестве справочника таблицу "Картотека паспортов участков (пример из Руководства)" - поле ключа "Инвентарный номер", поле значения "Владелец", а для поля "Материал" ту же таблицу, то же поле ключа, но поле значения "Почва". Все работает.

Хотелось бы узнать класс поля в выборке и класс желаемого поля ключа в справочнике, чтобы дать ответ.

 Единственный справочник в выборке? [ ObjectLand Support ]
Вторник, 25 декабря 2007, 14:00

К сожалению, при тестировании выявился недостаток в диалоге установки справочника. Если в окне просмотра выборки открыть диалог для поля, для которого справочник уже установлен, то в ряде случаев после смены таблицы и поля ключа остается недоступным список поля значения. Этот недостаток обходится предварительным удалением справочника(кнопка "Удалить"). Это уже исправлено и будет в последующих версиях.

 Единственный справочник в выборке? [ ShaggyDoc ]
Среда, 26 декабря 2007, 08:42

Цитата:
"В существующей выборке "Паспорта зданий" для поля "Улица" установите в качестве справочника таблицу "Картотека паспортов участков (пример из Руководства)" - поле ключа "Инвентарный номер", поле значения "Владелец", "

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

Цитата:
"...а для поля "Материал" ту же таблицу, то же поле ключа, но поле значения "Почва". Все работает."

У меня не работает. Происходит то же, что и в предыдущем примере - список "значение" блокируется сразу после выбора таблицы.

То есть происходит это самое: "смены таблицы и поля ключа остается недоступным список поля значения", причем на примере из демо-базы, который у вас вроде работает.

Кстати, после эксперимента (без щелчка по ОК), при попытке сменить ГБД, вылетела ошибка:
"Ошибка завершения транзакции для БД карт (код ошибки ГИС:135)
Ошибка завершения транзакции (код ошибки СУБД : 2520)
Неверный дескриптор (ошибка ОС: 6)"

При этом я не могу штатно закрыть ГБД и ObjectLand. Проверка ГБД дает одну ошибку, а восстановление невозможно, т.к. ГБД уже открыта. Придется убивать ObjectLand "больно".

Мелкое замечание попутно: Штатный диалог выбора ГДБ для восстановления не видит папку Application Data, хотя у меня все права и эта папка видна и в Проводнике и в файл-менеджерах, и в диалогах других программ.

ГБД открыта на локальной машине, монопольный режим.

Цитата:
"Хотелось бы узнать класс поля в выборке и класс желаемого поля ключа в справочнике, чтобы дать ответ"

Что есть "класс"? Тип поля? Проверял и на поле ключа целого типа, с отображением в выборке строкового поля справочника, и когда ключевое поле строковое. Здесь были сомнения, это 11-символьный код ОКАТО, его бы в целое преобразовать. Но проблема не в типе ключевого поля, второй справочник не дает подключить и для классической пары типов - целое и строка.

 Единственный справочник в выборке? [ Сергей Зуев ]
Среда, 26 декабря 2007, 09:19

Еще добавлю информацию к размышлению:

После успешного восстановления демонстрационной ГБД выполнить пример с изменением выборки "Улицы" (как рекомендовали) не удалось. Результаты те же - список Значение недоступен.

В моей ГБД удалось присоединить второй справочник к вновь созданному полю. В таблице-справочнике ключевое поле целое. В выборке это поле отображается строкой.

Не получется установить в качестве справочника другую таблицу, в которой ключевое поле также целое (собственно, список полей вообще не отображается, хотя и доступен). Особенность этой таблицы, которую хочу использовать как справочник, в том, что она "геокодирована" - записи связаны с объектами карты. Получена путем импорта из Mapinfo.

Структура этой таблицы:

Номер - целое, ключевое
ОКАТО - строка, ключевое
Название - строка

Все значения уникальные, хотя флаг уникальности не установлен и чекбоксы Неустое и Уникальное почему-то недоступны.

Для использования в качестве справочника хочется в выборке из этой таблицы в качестве ключа иметь поля ОКАТО (предпочтительнее) или Номер, а в качестве значения - поле Название. Но выбор ключа недоступен.

 Единственный справочник в выборке? [ ObjectLand Support ]
Среда, 26 декабря 2007, 15:15

2ShaggyDoc:
Попробовал в точности на том билде, который мы передали Вам по сайт-лицензии, ту последовательность, которую я предложил. Работает.
***
При выборе таблицы-справочника список для значений становится недоступным, но должен разблокироваться после выбора ключа. Может быть Вы встретились с тем дефектом, о котором я писал Выше? Т.е. если у поля уже был установлен справочник, то нужно нажать кнопку "Удалить" в диалоге и далее все работает.
***
По поводу появления ошибки завершения транзакции. Если Вас не затруднит, сообщите в каком окне Вы вызывали установку справочника (в основном окне или в окне просмотра выборки?). И еще, что Вы в этом диалоге установили перед нажатием "Отмена" - таблицу и ключ или только таблицу? Что-то с ходу повторить не удалось.
***
Папка "Application Data" по умолчанию имеет атрибут "Скрытая". Если в настройках Проводника установлено "Показывать скрытые папки и файлы", то папка видна, как например на моем компьютере. Для тех, кто не хочет или не может менять настройку свойств папок, мы предлагаем использовать ярлык "Демонстрационная ГБД" в папке "Мои Документы/Мои ГБД", который создается при установке программы
***
По поводу уникальности. Чтобы поле можно было использовать в качестве ключа справочника, оно должно быть ключевым и уникальным. Уникальность требуется на уровне атрибутов поля, а не уникальность по фактическим значениям. Изменить атрибут уникальности для поля в непустой таблице нельзя (по очевидным соображениям). Если это требуется, нужно скопировать структуру таблицы. Затем в получившейся пустой таблице изменить атрибут поля на "Уникальное" и выполнить объединение таблиц.

 Единственный справочник в выборке? [ ShaggyDoc ]
Четверг, 27 декабря 2007, 07:37

1. Попробовал предложенный пример на другой машине, на другом экземпляре демонстрационной базы. Работает. Следовательно возможны сбои в базе. Или еще что, но вопрос в принципе ясен.

2. Борьба с дефектом путем удаления справочника понятна.

3. Ошибка транзакции появилась после попытки установки справочника в основном окне. В диалоге была установлена только таблица, комбобокс ключа открывался, он он был пустой. Список значения был недоступен. Вот после таких действий (кнопка ОК не нажималась, только Отмена) и появилась ошибка транзакции. Больше повторить не удалось.

4. Удалось подключить несколько справочников. Таблицы импортировались из Mapinfo, поэтому пришлось там изменить строковые типы кодов ОКАТО на целочисленные. Для этог пришлось и урезать постоянную часть кода. Кроме того, во время импорта, установил для будуших ключей флаги уникальности.

После этого, при использовании в качестве ключа целого поля, подключение прошло нормально.

Однако "осадок остался". В документации нет ограничений на тип ключевых полей. Понятно, что целое лучше, но приходится использовать в качестве ключа и строки (ОКАТО, КЛАДР). Разрядность не позволяет их просто перевести в целый тип. В частном случае, для ОКАТО я просто обрезал два лидирующих разряда. Для работы в пределах области это можно допустить. Но уже для кода КЛАДР это невозможно - там и разрядность больше, и лидирующие нули потеряются.

Придется еще поэкспериментировать, возможно мои выводы необоснованны.

И совсем детский вопрос - тип поля в структуре таблицы ObjectLand можно каким-то образом изменить? Разумеется, с учетом риска потери данных?

 Единственный справочник в выборке? [ ObjectLand Support ]
Четверг, 27 декабря 2007, 13:46

В документации все правильно, цитата: "Ограничений на тип полей справочника нет".
Эта фраза подразумевает и поле-ключ.
Т.е. в Вашем случае можно использовать строковые поля в качестве ключа справочника (установив конечно его атрибуты как ключевое и уникальное). Разумеется справочник можно применять тогда только к строковым полям выборки.
***
Возможности смены типа поля - нет.
***
Для удобства пользователей важно также учесть моменты, описанные в разделе "Особенности редактирования полей со справочником". А именно - индексация полей со значениями даст упорядоченное отображение значений в списке при редактировании поля. А если значениями будут строковые поля, позволит быструю навигацию(по введенным первым символам) при выборе из справочника.
***
Жаль, что не удается повторить появление ошибки. Придется искать по коду слабое место.

Ответить

Знаком «*» отмечены обязательные для заполнения поля.
Ваше имя:  *
Адрес электронной почты:  
Тема:  *
Сообщение:
 *
Подтверждение:
(не требуется для зарегистрированных пользователей)
 *
 



Copyright © 1999–2020 ГИС ObjectLand
ГИС ObjectLand ® ООО «Радом-АйТи»
Информация о лицензировании
главная | о продукте | скачать | купить | поддержка | новости