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

MI6UGRU

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

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

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

В процессе сохранения связанной таблицы, если MapInfo обнаруживает конфликты между данными в удаленной базе данных и любыми записями связанной таблицы, возникшие с момента ее загрузки из базы данных, то автоматически появляется диалог “Разрешение конфликтов”, в котором эти конфликты устраняются по правилам, описанным ниже.

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

Начальное состояние записи на сервере (запись в момент извлечения из базы данных и загрузки в таблицу MapInfo).

Текущее локальное состояние записи (запись, предлагаемая для сохранения в сессии MapInfo, возможно, после редактирования пользователем).

Текущее состояние записи на сервере (запись в базе данных к моменту предлагаемого обновления).

Конфликт возникает, когда начальное состояние записи не соответствует текущему ее состоянию на сервере данных, что предполагает обновление базы данных другим пользователем в период с момента загрузки записи в связанную таблицу MapInfo.

Диалог “Разрешение конфликтов” появляется для каждой конфликтующей записи. В любой момент пользователь может выйти из интерактивного режима обработки, задав форсированное разрешение оставшихся конфликтов. При этом в диалоге “Форсировать разрешение конфликтов” пользователь может выбрать использование либо текущих значений MapInfo (локальных), либо текущих значений СУБД (DBMS) (на сервере).

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

Тип конфликта

Стандартное разрешение

 

 

527

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

Изменилось значение на сервере,

Значение на сервере

локальное значение не изменилось

 

 

 

Изменилось значение на сервере,

Локальное значение

локальное значение изменилось

 

 

 

Колонка

Показывает имя колонки в записи, которая содержит

 

данные, породившие требующий разрешения

 

конфликт.

 

Если имя колонки не помещается в окошке списка,

 

показывается усеченное представление. Полное имя

 

колонки отображается ниже, в строке Колонка.

 

 

Начальное в DBMS

Показывает начальное значение в базе данных на

 

момент загрузки в связанную таблицу MapInfo.

 

Если начальное значение не помещается в окошке

 

списка, показывается усеченное представление. Полное

 

значение отображается ниже в окошке Начальное в

 

ODBC.

 

 

Текущее в MapInfo

Показывает текущее значение в связанной таблице

 

MapInfo, которую Вы пытаетесь сохранить.

 

Это окошко будет пустым, если запись была удалена из

 

базы данных MapInfo.

528

 

 

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

 

 

Если текущее значение из удаленной базы данных не

 

 

 

помещается в окошко списка, показывается усеченное

 

 

 

представление. Полное значение отображается ниже, в

 

 

 

окошке Текущее в ODBC.

 

 

 

 

 

 

Текущее в DBMS

Показывает текущее значение в удаленной базе данных

 

 

 

на момент обновления. (Эти данные могли быть

 

 

 

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

 

 

 

были загружены в связанную таблицу).

 

 

 

Это поле будет пустым, если запись была удалена из

 

 

 

удаленной базы данных после загрузки в связанную

 

 

 

таблицу MapInfo.

 

 

 

Если текущее значение из удаленной базы данных не

 

 

 

помещается в окошко списка, показывается усеченное

 

 

 

представление. Полное значение отображается ниже, в

 

 

 

окошке “Текущее в ODBC”.

 

 

 

 

 

 

Текущее в MapInfo

Установите этот флажок для обновления удаленной

 

 

 

базы данных значением из связанной таблицы MapInfo.

 

 

 

Если текущая запись в базе данных или запись в

 

 

 

MapInfo были удалены, флажок становится

 

 

 

недоступным. В этом случае нужно использовать

 

 

 

кнопки “MapInfo” или ”ODBC”.

 

 

 

 

 

 

Текущее в DBMS

Установите этот флажок для сохранения текущего

 

 

 

значения базы данных.

 

 

 

Если текущая запись в базе данных или запись в

 

 

 

MapInfo были удалены, флажок становится

 

 

 

недоступным. В этом случае нужно использовать

 

 

 

кнопки ”MapInfo” или ” Текущее”

 

 

 

 

 

 

Кнопка MapInfo

Эта кнопка выбирает для обновления все значения

 

 

 

MapInfo. Если обрабатываемая запись была удалена из

 

 

 

таблицы MapInfo, нажатие на кнопку “MapInfo”

 

 

 

удалит запись в базе данных на сервере.

 

 

 

Если обрабатываемая запись была удалена из базы

 

 

 

данных, нажатие на кнопку “MapInfo” вставит новую

 

 

 

запись в удаленную базу данных.

 

 

 

 

 

 

Кнопка Текущее

Эта кнопка выбирает для обновления все текущие

 

 

 

значения в удаленной базе данных. Если

 

529

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

 

обрабатываемая запись была удалена из таблицы

 

MapInfo, нажатие на кнопку ODBC игнорирует

 

удаление и сохраняет текущую запись в удаленной базе

 

данных.

 

Если обрабатываемая запись была удалена из базы

 

данных, нажатие на кнопку MAPINFO вставит новую

 

запись в удаленную базу данных.

 

 

Колонка

Показывает полное имя колонки, выбранной в списке

 

Колонка.

 

 

Начальное в DBMS

Показывает полное значение начальных данных ODBC

 

для колонки, выбранной в списке Колонка.

 

 

Текущее в MapInfo

Показывает полное значение текущих данных MapInfo

 

для колонки, выбранной в списке Колонка.

 

 

Текущее в ODBC

Показывает полное значение текущих данных ODBC

 

для колонки, выбранной в списке Колонка.

 

 

OK

Принимает выбранные значения для обновления

 

конфликтной записи в удаленной базе данных.

 

 

Прервать фиксацию

Прерывает процедуру разрешения конфликтов и, как

 

следствие, отменяет обновление удаленной базы

 

данных. При этом открывается диалог “Прервать

 

разрешение конфликтов”, запрашивающий у Вас

 

подтверждение на прекращение фиксации транзакции.

 

 

Справка

Вызывает Справочную систему.

 

 

Форсировать

Завершает интерактивную обработку конфликтов,

 

открывая диалог “Форсировать разрешение

 

конфликтов”, позволяющий Вам выбрать один из двух

 

режимов форсированной обработки, который будет

 

использоваться для разрешения конфликтов при

 

обновлении оставшихся записей в удаленной базе

 

данных. Вы можете выбрать использование для

 

обновления либо значений MapInfo, либо текущих

 

значений удаленной базы данных.

 

 

Обновление связанной таблицы

Вы можете обновить связанную таблицу MapInfo наиболее поздними данными из

соответствующей таблицы удаленной базы данных.

530

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

Обновить удаленную таблицу можно двумя способами, а именно – либо нажмите

кнопку ОБНОВИТЬ СОДЕРЖИМОЕ ТАБЛИЦЫ DBMS в панели инструментов DBMS, либо

проделайте следующее:

1.Выберите ТАБЛИЦА > ÈЗМЕНИТЬ > ÎБНОВИТЬ ТАБЛИЦУ DBMS. Появляется диалог “Обновление таблицы”.

2.Выберите имя обновляемой таблицы из предлагаемого списка таблиц.

3.При нажатии кнопки OK выбранная связанная таблица синхронизируется с соответствующей таблицей ODBC удаленной базы данных.

Как разорвать связь с удаленной базой данных

Вы можете разорвать связь таблицы MapInfo с таблицей ODBC удаленной базы данных, выполнив команду РАЗОРВАТЬ СВЯЗЬ. Эта команда недоступна, если в связанной таблице MapInfo произведены изменения, ожидающие сохранения; в этом случае необходимо сначала выполнить команду СОХРАНИТЬ ТАБЛИЦУ. В результате разъединения таблиц поля, для которых была запрещена запись, становятся доступными, и конечным продуктом разъединения является нормальная базовая таблица MapInfo.

Для разъединения таблиц:

1.Выполните команду ТАБЛИЦА > ÈЗМЕНИТЬ > ÐАЗОРВАТЬ СВЯЗЬ. Появляется диалог “Разорвать связь с таблицей ODBC”.

2.Выберите имя разъединяемой таблицы из предлагаемого списка таблиц.

3.При нажатии на кнопку OK связь выбранной таблицы MapInfo с таблицей ODBC удаленной базы данных разрывается, и эта таблица становится нормальной базовой таблицей MapInfo.

531

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

Как закрыть подключение к удаленной базе данных

Закрыть подключение к удаленной базе данных теперь очень просто. Можно

использовать два варианта действий:

Нажать кнопку ОТСОЕДИНИТЬ DBMS ТАБЛИЦУ.

Выбрать пункты меню ФÀÉËАКРЫТЬ DBMS СОЕДИНЕНИЕ.

Âобоих случаях появляется диалог “Закрыть DBMS соединение”. В этом диалоге нужно выбрать из списка подключение к СУБД и нажать кнопку РАЗОРВАТЬ СВЯЗЬ. Выбранное подключение будет закрыто.

532

Использование окна MapBasic

Глава

Обзор

Эта глава поможет опытным пользователям MapInfo научиться применять функции языка MapBasic в специальном окне, чтобы усовершенствовать работу с MapInfo. MapBasic - это язык программирования для MapInfo, позволяющий настраивать и автоматизировать функции MapInfo. Когда создавался MapBasic, то было добавлено окно MapBasic к сеансу работы MapInfo, в котором можно тестировать и налаживать программный код. Информация из окна MapBasic также полезна там, что помогает разобраться в сложных запросах MapInfo.

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

Доступ к окну MapBasic

Функция Buffer( )

Функция FrontWindow( )

Функция CreateCircle( )

Функция CreateLine( )

Функция CreatePoint( )

Функция CreateText( )

Оператор Insert

Оператор Note

Функция ObjectGeography( )

Функция ObjectInfo( )

Оператор Print

Оператор Select

Оператор Set Area Units

Оператор Set CoordSys

Оператор Set Distance Units

Оператор Set Map

Оператор Set Resolution

Оператор Set Window

Функция StyleAttr( )

Оператор Update

Примеры

Глава 24: Использование окна MapBasic

Доступ к окну MapBasic

Для получения доступа к окну MapBasic выполните команду НАСТРОЙКИ > ÏОКАЗАТЬ ОКНО MAPBASIC. Окно MapBasic отобразится у Вас на экране. В этом окне Вы можете вводить команды MapBasic или видеть коды MapBasic, генерируемые MapInfo. Например, посмотрим, какие коды MapBasic создает MapInfo вовремя открытия таблицы и выполнения запроса . В меню Настройки выберите команду ПОКАЗАТЬ ОКНО

MAPBASIC и откройте таблицу World. Выполните следующий запрос: “выбрать все, где Pop_1994 > 1000000, и показать результат запроса”. Когда запрос будет выполнен, в окне MapBasic Вы увидите следующее :

Open Table ”C:\MAPINFO\DATA\WORLD\World.tab” Interactive

Map From World

select * from World where Pop_1994 > 1000000 into Selection

browse * from Selection

Первая строка - открытие таблицы с именем World. Вторая строка создается автоматически и обозначает отображение таблицы World в виде карты. Третья строка отображает выполняемый Вами запрос. В четвертой строке - требование показать результат запроса в виде списка.

Вы можете вводить команды MapBasic в окне MapBasic. Наберите в окне MapBasic следующую команду:

Map from Selection

Нажмите Enter в конце строки, и команда выполнится. Все выбранные объекты отобразятся в окне Карты.

Основная цель создания окна MapBasic – помощь разработчикам приложений на языке MapBаsic. Команда ПОКАЗАТЬ ОКНО MAPBASIC в основном ориентирована на инструкции и примеры использования команд MapBasic, которые могут быть полезны простому пользователю MapInfo.

534

Глава 24: Использование окна MapBasic

Функция Buffer( )

Назначение:

Возвращает объект типа "область", представляющий собой буферную зону вокруг выбранного объекта (область, граница которой отстоит от границы объекта на заданное расстояние).

Синтаксис:

Buffer(inputobject, resolution, width, unit_name)

ãäå

inputobject – объектное выражение (выражение, результат которого есть величина типа Object);

resolution – число узлов многоугольника, принимаемого как окружность (число типа SmallInt);

width – радиус буфера, число типа Float;

unit_name – имя единицы измерения расстояний (например, "mi" – миля, "km" – километр).

Величина, полученная в результате:

Область. Величина типа Object.

Описание:

Функция Buffer( ) возвращает буферную зону (объект типа "полигон") вокруг объекта, заданного параметром inputobject.

Функция Buffer( ) может создавать буферные зоны только вокруг одного объекта. Если Вам необходимо создать буфер вокруг группы объектов, используйте оператор Create Object As Buffer.

Если значение параметра width отрицательно, и объект inputobject является замкнутым, то буфер будет меньшим по площади по сравнению с inputobject.

Функция FrontWindow( )

Назначение:

Возвращает идентификатор активного окна.

Синтаксис:

FrontWindow( )

Величина, полученная в результате:

Целое число. Величина типа Integer.

Описание:

Функция FrontWindow( ) возвращает целочисленный идентификатор самого верхнего открытого окна в MapInfo. Этот оператор полезно применять сразу после создания нового окна (Карты, Графика, Списка или Отчета), чтобы запомнить значение идентификатора самого верхнего окна.

535

Глава 24: Использование окна MapBasic

Пример:

Print ”The window id is ” + str$(FrontWindow())

Функция CreateCircle( )

Назначение:

Возвращает объект "окружность".

Синтаксис:

CreateCircle(x, y, radius)

ãäå

x – X-координата центра окружности (или широта), действительное число; y – Y-координата центра окружности (или долгота), действительное число; radius – действительное число, назначающее радиус окружности.

Величина, полученная в результате:

Величина типа Object.

Описание:

Функция CreateCircle( ) возвращает графический объект типа "окружность".

Параметры x и y задают координаты центра окружности в той координатной системе, которая была объявлена MapBasic ранее. (Смотрите описание оператора Set CoordSys). Если система не объявлялась, то координаты будут принимать значения широты и долготы. При этом надо учесть, что MapBasic игнорирует координатную систему самого окна Карты.

Параметр radius назначается в тех единицах измерения, которые были назначены MapBasic до выполнения этой функции. (Смотрите описание оператора Set Distance Units). Если единицы не были объявлены, то радиус будет измеряться в милях.

Линия и заливка создаваемой окружности будут создаваться в соответствии с выбором стилей линии и штриховки в операторе Set Style, который выполняется до функции CreateCircle( ). Вы можете также воспользоваться для создания объекта типа "окружность" оператором Create Ellipse, в котором могут быть предложения Pen и Brush для определения стилей линии и штриховки.

Графический объект, созданный функцией CreateCircle( ), может быть присвоен объектной переменной, которая задает значение для уже существующей строки таблицы (оператор Update) или вновь созданной (оператор Insert).

Замечание: Перед созданием объекта в окне Отчета не забудьте выполнить оператор Set CoordSys Layout.

Функция CreateLine( )

Назначение:

Возвращает объект типа "прямая линия".

536

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