Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

MI6UGRU

.pdf
Скачиваний:
16
Добавлен:
13.02.2015
Размер:
14.71 Mб
Скачать

Глава 23: Доступ к удаленным базам данных

Шаг 4, Локальное сохранение таблицы

После того, как были определены загружаемые данные, пользователь должен указать

DOS-маршрут для создаваемой локальной таблицы.

Диалог “Открыть таблицу ODBC - Шаг 4 из 4”:

1.Определите папку, в которой будет сохранена таблица. Папки и файлы появляются в окне ниже.

2.Определите имя файла для таблицы. Имя не должно совпадать с именами уже открытых в MapInfo таблиц.

3.Чтобы файл нельзя было редактировать, установите флажок Только чтение. При последующем открытии связанной таблицы она будет защищена от изменений.

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

Для таблиц, которые потенциально могут редактироваться, этот флажок будет доступен и пуст. Вы можете установить его, чтобы открывать таблицу только для чтения, или оставить пустым для создания редактируемой таблицы. Если Вы оставили флажок пустым, MapInfo по возможности загрузит все строки как редактируемые. Однако и в этом случае могут быть загружены строки,

517

Глава 23: Доступ к удаленным базам данных

разрешенные только для чтения. Смотрите ниже раздел “Запрещение

редактирования связанной таблицы”.

4.Выберите способ отображения данных таблицы в MapInfo:

Как получится - MapInfo выбирает подходящий способ отображения таблицы: Новая Карта, Текущая Карта или Список.

Список - Открывает таблицу в окне Списка MapInfo.

Текущая Карта - Добавляет отображение таблицы к текущему окну Карты MapInfo.

Новая Карта - Отображает таблицу в окне Карты MapInfo.

Скрыть - Открывает таблицу без отображения ее данных в окне MapInfo.

5.Отметьте флажок для того, чтобы загрузить данные локально и создать связанную таблицу. Отсутствие флажка приводит к работе с данными напрямую. (См. “Прямой доступ к удаленным данным через ODBC” ниже).

6.При прямом доступе флажок В памяти активен. Если его отметить, то данные и их атрибуты будут помещены в память компьютера. При этом не потребуется обращаться к базе данных при масштабировании. (Поскольку MapInfo просматривает значения в памяти, то последние изменения в базе данных не отображаются). Если используется этот режим , то изменения, сделанные другим пользователем, могут не появляться на экране до тех пор, пока содержимое в памяти не обновлено масштабированием или смещением. Отсутствие флажка приводит к тому, что происходит обращение к базе данных при любой операции. В этом случае данные наиболее актуальны, но возможны задержки. (См. ниже “Прямой доступ к удаленным данным через ODBC”).

7.Нажмите кнопку ГОТОВО и сохраните данные в таблицу.

Запрещение редактирования связанной таблицы

Установленный флажок Только чтение означает, что созданную связанную таблицу нельзя редактировать. При загрузке таблицы, помеченной 'только чтение', Вы получите следующее сообщение:

Связанная таблица может быть запрещена для редактирования вследствие любого из ниже перечисленных обстоятельств:

Данные, загруженные из сервера данных, запрещены для редактирования.

518

Глава 23: Доступ к удаленным базам данных

В данных, загруженных из сервера данных, отсутствуют редактируемые колонки.

При создании таблицы установлен флажок Только чтение.

Данные, загруженные из сервера данных, не содержат первичного ключа.

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

Запрет на редактирование пространственного объекта

Пространственные объекты тоже могут быть запрещены для редактирования.

Пространственные объекты в таблице СУБД(DBMS) не редактируемы в следующих случаях:

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

Пространственные данные хранятся в трехмерном представлении.

Создание прямого доступа к удаленным данным с помощью

ODBC

Так же, как в версии 5.0, можно организовать прямой доступ к удаленным базам данных. Повторите процедуру подключения к источнику данных. Затем откройте таблицу DBMS как для загрузки в связанную таблицу MapInfo, используя ассистирующую процедуру DBMS.

Для организации прямого доступа к СУБД (DBMS):

Ассистирующая процедура доступа к DBMS состоит из 4 диалогов. Когда Вы дойдете до

диалога “Открыть таблицу DBMS - Шаг 4 из 4”, сделайте следующее:

1.Уберите флажок Загрузить данные (связанная таблица). Если этот флажок отмечен, данные загружаются в связанную таблицу. Отсутствие флажка указывает на прямой доступ к данным.

2.При прямом доступе становится активным флажок Хранить в памяти. Если его отметить, то атрибуты и объекты будут загружены в память компьютера. Это позволит масштабировать карту и перемещаться по ней без обращений к удаленной базе данных. При этом следует учитывать, что поскольку MapInfo просматривает записи в локальной памяти, программа не имеет доступа к

519

Глава 23: Доступ к удаленным базам данных

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

3. Нажмите кнопку ГОТОВО. После этого будет создан .tab файл.

После завершения диалога будет записан и открыт tab файл. В следующий раз для

доступа к данным Вам потребуется только открыть этот tab файл.

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

рекомендуется сначала открыть таблицу с картой (например, RUS_OBL.TAB),

соответствующую данным в удаленной базе данных. Если этого не сделать, то вся

таблица будет обработана и загружена, что может занять много времени.

Откройте таблицу карты и измените масштаб таким образом, что будет показан район,

относящийся к набору строк таблицы удаленной базы, которые Вы хотели бы увидеть.

Например, если Вы хотите загрузить строки, относящиеся к Краснодарскому краю, то

измените масштаб карты таким образом, чтобы в окне карты помещался весь

Краснодарский край. В этом случае при открытии таблицы удаленной базы данных

будут прочитаны строки, попадающие в МОП (минимальный описывающий

прямоугольник) окна карты вокруг Краснодарского края.

Ограничения

Список известных проблем/замечаний, связанных с прямым доступом:

Каждая таблица должна иметь единственный уникальный ключ.

Режим быстрого редактирования не поддерживается.

В таблицах MS Access, если ключ символьный, строки, значение ключа которых меньше размера поля, показаны не будут. Например, в случае если тип ключа char(5), то строка, в которой значение ключа ‘яяяя’ , будет выглядеть как удаленная.

При прямом доступе флажок Только чтение в диалоге сохранения таблицы не активен.

Изменения, сделанные другим пользователем не отображаются, до тех пор, пока список не пролистан или таблица не обновлена каким-либо другим способом. Записи, добавленные другим пользователем, не отображаются в списке до тех пор, пока: 1) поиск по МОП (минимальному описывающему прямоугольнику) не возвратит запись или 2) применена команда УПАКОВАТЬ. Кроме того при включенном режиме Хранить в памяти изменения, сделанные другим

520

Глава 23: Доступ к удаленным базам данных

пользователем, могут не показываться в списке до тех пор пока не применено

масштабирование карты или перемещение по карте.

Возникнут проблемы, если приложение-клиент в одном запросе (командой SQLзапрос или с помощью MapBasic) обратится к 2 или более таблицам SpatialWare, хранящимся в разных системах координат. (Эффективнее осуществлять такие выборки с помощью SQL-запросов на сервере). Эта проблема относится к текущем выпуску.

Таблицы Oracle 7, проиндексированные по полю десятичного типа, размером больше 8 байт вызывает ошибку исполнения при попытке редактирования.

Для Oracle Spatial глубина вложенности построения пространственного индекса влияет на производительность.

Границы объектов в пространственных запросах к

SpatialWare

Для обоих типов таблиц удаленной базы данных – связанных и в прямом доступе - пространственные объекты из баз данных SpatialWare и Oracle Spatial по пространственному запросу передаются в двоичном виде, как границы. Это изменение касается всех реализаций SpatialWare – для Oracle, Informix, DB2 и для Oracle Spatial. Раньше передавалось строковое представление. Из-за ограничений на длину строки сложность графического объекта могла иметь ограничения. Передача пространственных объектов из баз данных в виде границ снимает эти ограничения.

Строка, описывающая пространственный объект, будет храниться в файле .tab и восстановление в представление в виде границ произойдет при последующем открытии этой таблицы. Здесь используется библиотека SpatialWare SPW.lib.

Создание первичного индекса для удаленной таблицы

Существует три способа создания уникального (первичного) индекса для удаленной

таблицы, используя MapInfo.

Примените программу BUILDSQL.MBX с помощью команд ФÀÉË > ÇАПУСТИТЬ ПРОГРАММУ MAPBASIC, которую можно найти в подкаталоге TOOLS из каталога MAPINFO.

521

Глава 23: Доступ к удаленным базам данных

Используя режим Вручную в диалоге “Открыть таблицу ODBC”, введите запрос: CREATE UNIQUE INDEX новое_имя_индекса ON имя_таблицы (колонка_индекса).

Откройте окно MapBasic и введите следующие команды MapBasic:

DIM hdbc as integer (enter)

DIM stmt as integer (enter)

hdbc=Server_Connect(”QELIB”,”DBMS=remote database name”,”DLG=1”)

stmt=Server_Execute(hdbc,”CREATE UNIQUE INDEX new–index–name ON table–name(index–column)”)

522

Глава 23: Доступ к удаленным базам данных

Ввод SQL-запросов вручную

При открытии таблицы ODBC можно использовать режим ввода SQL-запроса Вручную

с помощью следующего диалога:

Этот диалог позволяет пользователю составлять намного более сложные, чем стандартные запросы. Вызов этого диалога завершает составление и обработку стандартной процедуры генерации запроса (нет возможности сохранить для дальнейшего использования полученный стандартный запрос). Нажатие кнопки OK приводит пользователя к последнему шагу диалога “Открыть таблицу DBMS”.

Для того, чтобы набрать многострочный отформатированный запрос, примените следующее:

Для перехода к новой строке нажмите ENTER.

Нажмите CTRL+ TAB для того, чтобы вставить символ табуляции.

Используйте буфер обмена: CTRL+ X для команды ВЫРЕЗАТЬ, CTRL+ C для команды КОПИРОВАТЬ и CTRL+ V для команды ВСТАВИТЬ.

523

Глава 23: Доступ к удаленным базам данных

OK

Переход к последнему шагу диалога.

 

 

Отмена

Отмена запроса. Возвращает к тому шагу диалога, из

 

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

 

 

Открыть

Нажмите эту кнопку для того, чтобы загрузить запрос,

 

который был сохранен в файле. Запускает отдельный

 

диалог, обеспечивающий доступ к существующим

 

файлам, содержащим предложения SQL (*.sql файлы).

 

Форматирование файлов сохраняется.

 

 

Сохранить

Нажмите эту кнопку для того, чтобы сохранить

 

предложение SQL в файле для использования позже.

 

Запускает диалог “Сохранить файл SQL-запроса”.

 

Таким образом можно сохранять составленные запросы

 

или изменения в существующих предложениях. После

 

сохранения форматирование остается неизменным.

 

После сохранения SQL-предложение появляется в

 

списке доступных для диалога “Загрузить файл SQL-

 

запроса” *.sql файлов.

 

 

Предыдущий

Нажмите эту кнопку для того, чтобы загрузить

 

последний выполненный в текущем сеансе MapInfo

 

запрос.

 

 

Справка

Выводит справку.

 

 

Запросы к таблицам удаленных баз данных с помощью

BUILDSQL.mbx и их создание

Программа MapBasic BUILDSQL.mbx может быть использована для генерации запроса

êтаблицам удаленных баз данных.

1.Для запуска программы используйте команды ФÀÉË> ÇАПУСТИТЬ ПРОГРАММУ

MAPBASIC . В каталоге MAPINFO/TOOLS выберите buildsql.mbx.

2.В меню программы выберите команду ODBC ГЕНЕРАТОР SQL > ODBC ГЕНЕРАТОР

SQL, появится следующий диалог:

524

Глава 23: Доступ к удаленным базам данных

3. Нажмите кнопку СОЗДАТЬ ЗАПРОС. Появится еще один диалог:

4.Установите курсор в поле справа от заголовка Из таблиц и с помощью кнопки ТАБЛИЦЫ выберите таблицу, к которой будет сделан запрос.

5.Установите курсор в поле справа от заголовка Выбрать колонки и с помощью кнопки КОЛОНКИ выберите колонки для просмотра. Звездочка (*) означает - все колонки.

6.Установите курсор в поле справа от заголовка с условием: создайте условия для запроса.

7.После того как предложение запроса создано, нажмите кнопку ВЫПОЛНИТЬ. Восстановится диалог “MapInfo ODBC SQL Обработчик”. Созданный запрос будет помещен в окошко SQL предложение.

525

Глава 23: Доступ к удаленным базам данных

8.Нажмите кнопку ВЫПОЛНИТЬ для исполнения запроса: выберите способ выборки в следующем диалоге:

Режим Просмотр… позволяет проверить таблицу без загрузки в MapInfo. Режим Загрузить… возвращает результат запроса в MapInfo.

Сохранение связанной таблицы

Вы сохраняете изменения в связанной таблице MapInfo так же, как Вы сохраняете обычные таблицы MapInfo, т.е. командой ФÀÉË > ÑОХРАНИТЬ.

Сохранение связанной таблицы приводит к обновлению записей в удаленной базе данных. Но перед тем, как MapInfo разрешит обновление этих записей, производится оценка записей в процедуре, называемой разрешение конфликтов.

Разрешение конфликтов

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

526

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]