Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
MB_REF_7.pdf
Скачиваний:
25
Добавлен:
13.02.2015
Размер:
2.96 Mб
Скачать

Оператор Open Table

Оператор Open Table

Назначение:

Открывает таблицу MapInfo.

Использует новые ключевые слова Password и NoIndex для таблиц Access.

Синтаксис:

Open Table filespec [ As

tablename ]

[ Hide ] [ ReadOnly ]

[ Interactive ] [ Password pwd ] [ NoIndex ] [ View Automatic ] [Deny

Write ]

 

filespec – строковая величина, задает таблицу MapInfo;

tablename – имя, под которым открывается таблица;

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

Описание:

Оператор Open Table открывает уже существующую таблицу. Эффект от этого оператора такой же, как и от команды MapInfo ФАЙЛ > ОТКРЫТЬ ТАБЛИЦУ. Таблица должна быть открыта командой или оператором прежде чем MapInfo сможет производить какие-либо действия с таблицей.

Имя файла, который будет открыт (определяемый параметром filespec) должен соответствовать таблице, которая уже существует; для создания новой таблицы см. оператор Create Table. Заметим так же, что оператор Open Table применяется только для таблиц MapInfo; для использования файлов других форматов, используйте операторы Register Table и Open File.

Если оператор включает предложение As, MapInfo открывает таблицу под именем, задаваемым параметром tablename, которое мы будем называть “синонимом” таблицы. Следующие операторы при обращении к таблице будут использовать этот синоним. В MapInfo синонимы открываемым таблицам задаются автоматически. Имя-синоним далее представляет эту таблицу во всех списках MapInfo. Более того, если определен синоним для таблицы, то MapBasic должен обращаться к синониму, а не к фактическому имени таблицы вплоть до закрытия этой таблицы командой ФАЙЛ > ЗАКРЫТЬ ТАБЛИЦУ или оператором Close Table. Назначение имени-синонима не имеет ничего общего с операцией переименования таблицы.

Если оператор включает предложение Hide, то имя таблицы не появится ни в каком диалоге, показывающем список открытых таблиц (например, в диалоге ФАЙЛ > ЗАКРЫТЬ ТАБЛИЦУ). Используйте предложение Hide если Вам надо открыть таблицу, которая останется скрытой от пользователя.

Если оператор включает предложение ReadOnly, пользователь не сможет редактировать таблицу. Дополнительное ключевое слово Interactive дает команду MapBasic подсказать пользователю место нахождения таблицы, если она не найдена по указанному пути. Ключевое слово Interactive полезно в ситуации, когда Вы не знаете местонахождения нужных файлов.

Если оператор включает ключевое слово NoIndex, индекс MapInfo не будет встраиваться в таблицу MS Access при ее открытии.

View Automatic это дополнительное предложение оператора Open Table, позволяющее таблице MapInfo, рабочему набору или файлу приложения, ассоциированному с объектом, запускаться автоматически. Если View Automatic присутствует, то после открытия таблицы, MapInfo или добавит

Справочник MapBasic

393

Оператор Open Table

ее к существующей карте или откроет новое окно кары или откроет окно списка. Особенно полезно использовать совместно с HotLinks.

DenyWrite это дополнительное предложение для таблиц MS Access, если оно используется, то другие пользователи не смогут редактировать таблицу. Если другой пользователь уже имеет доступ в режиме чтение-запись к таблице, команда Open Table выдаст ошибку.

Открытие двух таблиц с одинаковым именем

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

Например, пользователь может хранить две копии таблицы “Sites”, одну копию в директории 1993 (“C:\1993\SITES.TAB”) и другую, возможно более новую, в другой директории (“C:\1994\SITES.TAB”). Когда пользователь (или приложение) открывает первую таблицу Sites, MapInfo открывает таблицу под ее именем (“Sites”). Если приложение использует оператор Open Table для открытия второй таблицы Sites, MapInfo автоматически открывает вторую таблицу под измененным именем (например, “Sites_2”) что бы отличать ее от первой таблицы. С другой стороны, если оператор Open Table включает предложение Interactive, MapInfo откроет диалог, позволяющий пользователю выбрать для таблицы альтернативное имя.

Не смотря на то, использует ли оператор Open Table ключевое слово Interactive, в результате таблица может быть открыта с нестандартным именем. Вслед за оператором Open Table, вызывается функция:

TableInfo(0, TAB_INFO_NAME)

для определения имени, под которым MapInfo открыло таблицу.

Открытие таблицы, которая уже открыта

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

Таким образом, если таблица уже открыта, и затем оператор Open Table пытается заново открыть таблицу без указания нового имени, MapBasic не будет генерировать код ошибки. Таблица просто остается открытой под ее текущим именем.

Пример:

Следующий пример открывает таблицу STATES.TAB, затем отображает таблицу в окне Карты. Поскольку оператор Open Table использует предложение As для открытия таблицы под псевдонимом (USA), в окне Карты появится заголовок “USA Map” а не “States Map.”

Open Table ”States” As USA

Map From USA

Следующий пример показывает вызов функции TableInfo( ) после оператора Open Table . Поскольку таблица с таким же именем (States) уже открыта, в момент запуска программы, MapBasic откроет “C:STATES.TAB” под псевдонимом (например, “STATES_2”). Функция TableInfo( ) вызовет псевдоним, под которым открыта таблица “C:STATES.TAB”.

Include ”MAPBASIC.DEF”

Dim s_tab As String

394

Справочник MapBasic

Оператор Open Table

Open Table ”C:states”

s_tab = TableInfo(0, TAB_INFO_NAME)

Browse * From s_tab

Map From tab

Смотрите также:

Close Table, Create Table, Delete, Fetch, Insert, TableInfo( ), Update

Справочник MapBasic

395

Оператор Open Window

Оператор Open Window

Назначение:

Открывает вспомогательные окна.

Синтаксис:

Open Window window_name

где

window_name – имя окна (например, Ruler) или код окна (например, WIN_RULER)

Описание:

Оператор Open Window используется для открытия вспомогательных окон в MapInfo. Например, следующий оператор открывает окно "Статистика", как если бы пользователь открыл его командой НАСТРОЙКИ > ПОКАЗАТЬ ОКНО СТАТИСТИКИ.

Open Window Statistics

Параметр window_name должен быть именем окна или целочисленным кодом. В следующей таблице в первой колонке приводятся имена окон, а во второй – описание и имена кодов, которые установлены в файле стандартных определений MapBasic MAPBASIC.DEF.

Значения window_name

 

Описание окна и его код из файла MAPBASIC.DEF

MapBasic

 

Окно MapBasic (WIN_MAPBASIC)

 

Statistics

 

Окно "Статистика" (WIN_STATISTICS)

Legend

 

Окно "Легенда" (WIN_LEGEND)

Info

 

Окно "Информация" (WIN_INFO)

Ruler

 

Окно "Линейка" (WIN_RULER)

Help

 

Окно Справочной системы (WIN_HELP)

Message

 

Окно "Сообщение", используемое оператором Print

 

 

(WIN_MESSAGE)

Вы не можете открыть документальное окно (Карты, Графика, Списка, Геогрупп или Отчета) при помощи оператора Open Window. Эти окна открываются другими способами (смотрите операторы

Map, Graph, Browse, Layout и Create Redistricter).

Смотрите также:

Close Window, Print, Set Window

396

Справочник MapBasic

Функция Overlap( )

Функция Overlap( )

Назначение:

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

Синтаксис:

Overlap(object1, object2)

где

object1 и object2 – параметры, задающие пересекающиеся объекты, но не точечные.

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

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

Описание:

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

MapBasic передает все стили оформления объекта object1 результирующему объекту. Если необходимо, стиль оформления объекта можно изменить на текущий в прикладной программе.

Если один из объектов является линейным (например, полилинией), а второй замкнутым (например, область), функция Overlap( ) вернет часть линейного объекта, которая находит на площадь замкнутого.

Смотрите также:

AreaOverlap( ), Erase( ), Objects Intersect

Справочник MapBasic

397

Функция OverlayNodes( )

Функция OverlayNodes( )

Назначение:

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

Синтаксис:

OverlayNodes(input_object, overlay_object)

где

input_object – объект, на основе которого будет создан результирующий, и который не может быть точечным;

overlay_object – объект, пересекающий объект input_object (также не может быть точечным).

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

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

Описание:

Функция OverlayNodes( ) возвращает объект, созданный из узлов первого плюс узлы, полученные пересечением линий или контуров объектов input_object и overlay_object.

Если объект input_object замкнут (область, прямоугольник, скругленный прямоугольник или эллипс), то функция OverlayNodes( ) вернет область. Если объект input_object линейный (прямая линия, полилиния или дуга), то функция OverlayNodes( ) вернет полилинию.

MapBasic передает все стили оформления объекта input_object результирующему.

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

Смотрите также:

Objects Overlay

398

Справочник MapBasic

Оператор Pack Table

Оператор Pack Table

Назначение:

Соответствует команде MapInfo ТАБЛИЦА > ИЗМЕНИТЬ > УПАКОВАТЬ.

Синтаксис:

Pack Table table { Graphic | Data | Graphic Data } [ Interactive ]

где

table – имя открытой таблицы, которая не имеет несохраненные изменения.

Описание:

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

Для упаковки графических объектов таблицы в операторе используется ключевое слово Graphic. Упаковывая графику, удаляются пустые места из .MAP-файла таблицы. Однако упаковка графических объектов несколько замедляет графические операции.

Оператор Pack Table может использовать одновременно и слово Data, и слово Graphic, или должен включать хотя бы одно.

Выполнение оператора Pack Table влечет за собой удаление таблицы из слоя Карты и, возможно, тематических и косметических объектов. Если Вы используете ключевое слово Interactive, то MapInfo перед упаковкой выведет диалог, предлагающий пользователю сохранить тематические или косметические объекты.

MapInfo не может сжимать таблицу, если она была изменена и эти изменения не были сохранены на диске. Для сохранения на диск таблицы используйте оператор Commit.

Внимание: Упаковка таблицы может повлиять на подписи, созданные или измененные пользователем и сохраненные в Рабочем Наборе. Это происходит потому, что в Рабочем Наборе подписи пользователя соотносятся с номером строки таблицы; операция упаковки меняет порядок записей, потому что из таблицы исключаются удаленные записи; потому после упаковки подписи могут появляться не там, где ожидалось и иметь неправильный вид. Если же Вы удаляли записи из нижней части таблицы, а подписи соотнесены с верхними записями, то упаковка не испортит подписей.

Пример:

Pack Table parcels Data

Справочник MapBasic

399

Функция PathToDirectory$( )

Функция PathToDirectory$( )

Назначение:

Извлекает из полной спецификации файла имя каталога.

Синтаксис:

PathToDirectory$(filespec)

где

filespec – строка, содержащая полное имя файла (маршрут + имя).

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

Строка. Величина типа String.

Описание:

Функция PathToDirectory$( ) возвращает часть полного имени, которая содержит имена диска и каталогов.

Полное имя файла может содержать имя диска, имена каталогов или папок и само имя файла. В DOS имя каталога начинается с литеры с двоеточием, обозначающими диск (например, "C:"). В Macintosh имя папки всегда предваряет имя диска (например, "Applications").

Например, в DOS для имени

"C:\MAPINFO\DATA\WORLD.TAB"

функция вернет строку с DOS-маршрутом "C:\MAPINFO\DATA\". В Macintosh для имени

"HD:MAPINFO:DATA:WORLD"

функция вернет строку "HD:MAPINFO:DATA:".

Пример:

Dim s_filespec, s_filedir As String s_filespec = "C:\MAPINFO\DATA\STATES.TAB" s_filedir = PathToDirectory$(s_filespec)

' переменная s_filedir теперь равна строке "C:\MAPINFO\DATA\"

Смотрите также:

PathToFileName$( ), PathToTableName$( )

400

Справочник MapBasic

Функция PathToFileName$( )

Функция PathToFileName$( )

Назначение:

Извлекает из полного имени файла имя файла.

Синтаксис:

PathToFileName$(filespec)

где

filespec – строка, содержащая полное имя файла (маршрут + имя).

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

Строка. Величина типа String.

Описание:

Функция PathToFileName$( ) возвращает часть полного имени, которая содержит имя файла.

Полное имя файла может содержать имя диска, имена каталогов или папок и само имя файла. В DOS имя файла может состоять из первого имени длиной не более восьми символов и трех букв расширения. Первое имя файла и расширение разделено точкой.

Например, в DOS для спецификации

”C:\MAPINFO\DATA\WORLD.TAB”

функция вернет строку "WORLD.TAB". В среде Macintosh в спецификации

”HD:MapInfo:Data:World”

имя папки – это “HD:MapInfo:Data:", а имя файла – “World".

Пример:

Dim s_filespec, s_filename As String

s_filespec = "C:\MAPINFO\DATA\STATES.TAB"

s_filename = PathToFileName$(s_filespec)

'

' переменная s_filename теперь равна строке "STATES.TAB"

'

Смотрите также:

PathToDirectory$( ), PathToTableName$( )

Справочник MapBasic

401

Функция PathToTableName$( )

Функция PathToTableName$( )

Назначение:

Возвращает имя таблицы, синоним, используя полное имя файла таблицы.

Синтаксис:

PathToTableName$(filespec)

где

filespec – строка, содержащая полное имя файла (маршрут + имя).

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

Строка длиной до 31 символа. Величина типа String.

Описание:

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

Этот абзац отличается от текста в вета-книге, но он мне больше нравится.Для получения синонима таблицы при ее открытии MapInfo удаляет из полного имени файла имя носителя, каталога и расширение “.TAB” (для системы DOS). Любые специальные символы, такие как тире, пробелы и др. (имена файлов в Macintosh могут включать пробелы и знаки пунктуации) заменяются знаками подчеркивания (_). Если имя файла начинается с цифры, то MapInfo вставляет знак подчеркивания в начало имени таблицы. Если результирующая строка получается длинее 31 символа, то MapInfo отсекает лишние с конца.

Заметим, что таблица может быть открыта с именем-синонимом, отличающимся от имени файла. Программа MapBasic может открыть таблицу с именем-синонимом оператором Open Table с предложением As. Например, откроем таблицу WORLD под синонимом “Earth”:

Open Table ”C:\MapInfo\Data\World.tab” As Earth

Могут быть также открыты две одноименные таблицы, расположенные в разных каталогах, и MapInfo автоматически изменит имя одной из таблиц. В таких случаях имя таблицы, возвращаемое функцией PathToTableName$( ), может не совпадать с именем, под которым она открыта в MapInfo. Для того, чтобы определить синонимическое имя открытой таблицы, используйте функцию TableInfo(TAB_INFO_NAME).

Пример:

Dim filespec, tablename As String

filespec = "C:\MAPINFO\DATA\RUSSIA.TAB"

tablename = PathToTableName$(filespec)

' Переменная tablename теперь равна строке "RUSSIA"

Смотрите также:

PathToDirectory$( ), PathToFileName$( ), TableInfo( )

402

Справочник MapBasic

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