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

Оператор Metadata

Оператор Metadata

Назначение:

Управление метаданными таблицы.

Синтаксис (вариант 1):

Metadata Table table_name

{SetKey key_name To key_value |

DropKey key_name [ Hierarchical ] |

SetTraverse starting_key_name [ Hierarchical ] Into ID traverse_ID_var }

где

table_name – имя открытой таблицы;

key_name – строка, представляющая имя ключа метаданных (должна начинаться с обратного слэша (“\”) и не должна заканчиваться обратным слэшом);

key_value – строка до 239 символов длиной, значение, присваиваемое ключу;

starting_key_name – строка, представляющая первое имя ключа для извлечения соответствующего значения из таблицы. Чтобы начать структурное извлечение с самого начала списка ключей, добавьте “\” (обратный слэш);

traverse_ID_var – имя переменной типа Integer. С помощью этой переменной MapInfo управляет последовательными операторами Metadata Traverse.

Синтаксис (вариант 2):

Metadata Traverse traverse_ID

{ Next Into Key key_name_var Into Value key_value_var |

Destroy }

где

traverse_ID – целое число типа Integer (такое как значение переменной traverse_ID_var из предыдущего варианта синтаксиса оператора);

key_name_var – имя строковой переменной (MapInfo помещает в эту переменную название ключа для извлечения);

key_value_var – имя строковой переменной (MapInfo помещает в эту переменную извлекаемое значение).

Описание:

Оператор Metadata управляет метаданными, размещаемыми в таблице MapInfo 4.0. Metadata – это информация, размещаемая в файле таблицы (.TAB), а не в строках и столбцах файла данных.

Каждая таблица может иметь ключи метаданных. Каждый ключ определяет категорию хранимой информации, такой как имя автора, его права и т.д. Каждому ключу соответствует некое значение. Например, ключу “\Copyright” может соответствовать значение “Copyright 1995 MapInfo Corporation.” Более подробно метаданные описываются в главе 7 Руководства пользователя MapBasic.

Изменение метаданных в таблице

Чтобы создать, поменять или удалить метаданные, используйте Синтаксис 1. Если Вы создаете метаданные, то они записываются немедленно; не нужно проводить операцию сохранения. При этом используются следующие предложения:

SetKey

Присваивает значение ключу. Если ключ уже существует, то MapInfo присваивает ему новое значение. Если ключ не существует, MapInfo создает его.

Справочник MapBasic

345

Оператор Metadata

MetaData Table Parcels SetKey ”\Info\Date” To Str$(CurDate())

Внимание: MapInfo автоматически создает ключ метаданных “\IsReadOnly” (со стандартным значением “FALSE”) в первый раз, когда Вы добавляете метаданные в таблицу. Ключ "\IsReadOnly" – это специальный ключ, который MapInfo использует для своих нужд.

DropKey

Удаляет ключ из таблицы. Если добавить слово Hierarchical, MapInfo удаляет вместе с ключом всю структуру метаданных, подчиненных этому ключу. Например, если в таблице есть ключи “\Info\Author” и “\Info\Date”, то оба они удаляются следующим оператором:

MetaData Table Parcels DropKey ”\Info” Hierarchical

Чтение метаданных из таблицы

Чтобы прочитать метаданные из таблицы, используется предложение SetTraverse, которое инициализирует операцию структурного извлечения, продолжаемую затем одноразовыми извлечениями значений предложением Next. Для завершения операции извлечения применяется предложение Destroy, которое освобождает память, используемую при этой операции. Более подробно о предложениях этого оператора:

SetTraverse

Подготавливает операцию структурного извлечения метаданных, начиная с определенного ключа. Чтобы начать извлечение с самого первого в иерархии ключа, задайте в качестве имени начального ключа “\”. Если будет добавлено слово Hierarchical, то операция извлечения пройдет по всей структуре. Если слово Hierarchical опущено, то операция извлечения не будет опускаться на уровни ниже начального (т.е. извлечение, стартовавшее с ключа “\Info”, не затронет ключ “\Info\Date”).

Next Into Key ... Into Value ...

Попытка чтения следующего ключа. Если еще остаются ключи для чтения, то MapInfo помещает ключ в переменную key_name_var и значение, соответствующее ключу, в переменную key_value_var. Если ключи исчерпаны, MapInfo помещает в обе переменные пустые значения.

Destroy

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

Внимание: Операция структурного извлечения может проникать до десятого уровня иерархии (т.е. “\Один\Два\Три\Четыре\Пять\Шесть\Семь\Восемь\Девять\Десять”), начиная с нулевого или корневого (“\”). Если Вы хотите проникнуть глубже, чем на 10 уровней, то начинайте операцию структурного извлечения с ненулевого уровня (например, с уровня “\Один\Два\Три\Четыре\Пять”).

Пример:

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

Sub Print_Metadata(ByVal table_name As String)

Dim i_traversal As Integer

Dim s_keyname, s_keyvalue As String

’ Инициализация операции извлечения:

 

Metadata Table table_name

 

 

SetTraverse ”\” Hierarchical

Into

ID i_traversal

346

 

Справочник MapBasic

Оператор Metadata

Попытка извлечь значение по первому ключу: Metadata Traverse i_traversal

Next Into Key s_keyname Into Value s_keyvalue

Теперь в цикле извлекаются все значения по одному

до тех пор, пока есть непустые ключи,

и они распечатываются в окне Сообщений.

Do While s_keyname <> ””

Print ” ”

Print ”Key name: ” & s_keyname

Print ”Key value: ” & s_keyvalue

Metadata Traverse i_traversal

Next Into Key s_keyname Into Value s_keyvalue

Loop

’ Освобождение памяти, занятой под операцию извлечения: MetaData Traverse i_traversal Destroy

End Sub

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

GetMetadata$( ), TableInfo( )

Справочник MapBasic

347

Функция Mid$( )

Функция Mid$( )

Назначение:

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

Синтаксис:

Mid$(string_expr, position, length)

где

string_expr – выражение, результат которого есть строка;

position – целочисленное выражение, результат которого есть номер первого символа, извлекаемого из строки;

length – целочисленное выражение, результат которого есть количество извлекаемых символов.

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

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

Описание:

Функция Mid$( ) возвращает подстроку из строки, заданной выражением string_expr.

Функция копирует length символов из string_expr, начиная с символа, номер которого определен параметром position. Если значение этого параметра меньше или равно единице, то копирование будет производиться с самого начала строки string_expr.

Если длина строки string_expr меньше, чем заданный параметр length, то функция вернет укороченную строку. Если параметр position задает позицию за пределами строки string_expr, то функция возвратит пустую строку. Такой же результат Вы получите, если зададите параметр длины length меньше единицы.

Пример:

Dim str_var, substr_var As String

str_var = "New York City"

substr_var = Mid$(str_var, 10, 4)

'

' substr_var теперь равна "City"

'

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

InStr( ), Left$( ), Right$( )

348

Справочник MapBasic

Функция MidByte$( )

Функция MidByte$( )

Назначение:

Позволяет извлекать байты из строки, состоящей из двухбайтовых символов (например, Windows Japanese).

Синтаксис:

MidByte$(string_expr, position, length )

где

string_expr – строковое выражение;

position – целочисленное выражение, результат которого есть номер первого символа, извлекаемого из строки;

length – целочисленное выражение, задающее количество извлекаемых байт.

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

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

Описание:

Функция MidByte$( ) возвращает некоторое количество байт из строки, заданной выражением string_expr.

Функция MidByte$( ) используется для извлечения нескольких байтов из строки, образованной символами двухбайтовой кодировки. Двухбайтовая кодировка символов (DBCS) используется, например, в японской версии Windows.

В системах с однобайтовыми наборами символов функция MidByte$( ) возвращает те же результаты, что и функция Mid$( ).

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

InStr( ), Left$( ), Right$( )

Справочник MapBasic

349

Функция Minimum( )

Функция Minimum( )

Назначение:

Возвращает наименьшее из двух заданных чисел.

Синтаксис:

Minimum(num_expr, num_expr )

где

num_expr – численное выражение.

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

Вещественное число. Величина типа Float.

Описание:

Функция Minimum( ) возвращает наименьшее из двух чисел, заданных численными выражениями num_expr.

Пример:

Dim x, y, z As Float x = 42

y = 100

z = Minimum(x, y)

' z равно 100

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

Maximum( )

350

Справочник MapBasic

Функция Month( )

Функция Month( )

Назначение:

Возвращает из даты компоненту, соответствующую номеру месяца в году (1 – 12).

Синтаксис:

Month(date_expr)

где

date_expr – выражение, результатом которого является величина типа Date.

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

Короткое целое число от 1 до 12, включительно. Величина типа SmallInt.

Описание:

Функция Month( ) возвращает целое число, являющееся номером месяца в дате date_expr.

Примеры:

Определим, какой сейчас месяц:

If Month(CurDate( )) = 12 Then

Note "Это Декабрь"

End If

Функцию Month( ) можно использовать в SQL-запросе. Следующий оператор Select выбирает из таблицы ORDERS только строки со значениями в колонке "Order_Date" (тип Date), относящиеся к декабрю 1993.

Open Table "orders"

Select *

From orders

Where Month(order_date) = 12 And Year(order_date) = 1993

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

CurDate( ), Day( ), Weekday( ), Year( )

Справочник MapBasic

351

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