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

Оператор Alter Table

Оператор Alter Table

Назначение:

Изменяет структуру открытой таблицы. Не может быть применен к связанным таблицам.

Синтаксис:

Alter Table table (

[Add columnname columntype [, ... ] ] [Modify columnname columntype [, ... ] ] [Drop columnname [, ... ] ]

[Rename oldcolumnname newcolumnname [, ... ] ] [Order columnname, columnname [, ... ] ]

)

[ Interactive ]

где

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

columnname – имя колонки (поля) в открытой таблице, длина которой не должна превышать 31 символ и состоит из букв, цифр и символа подчеркивания и не может начинаться с цифры; columntype – тип данных колонки (поля) в таблице (включая ширину поля, если необходимо); oldcolumnname – старое имя колонки (поля) для переименования;

newcolumnname – новое имя колонки (поля) для переименования.

Описание:

Оператор Alter Table используется для изменения структуры открытой таблицы. Можно добавлять и удалять колонки, изменять у существующих колонок ширину или тип данных, переименовывать колонки и менять порядок их расположения. Надо заметить, что, если в таблице были изменения, то перед тем как выполнить оператор Alter Table, Вы должны сохранить их на диске или восстановить таблицу с диска, удалив изменения.

Параметр columntype может иметь следующие значения:

Integer – целое число (4 байта);

SmallInt – короткое целое число (2 байта);

Float – десятичное число с плавающей точкой;

Decimal(size, decplaces) – десятичное число фиксированной длины (size) и числом знаков после запятой (decplaces);

Char(size) – строка символов, где size – максимальное количество символов в поле;

Date – дата;

Logical – логическая величина.

Предложение Add используется для добавления новой колонки в Вашу таблицу. Предложение Mod4 ify используется для изменения типа данных колонки. Предложение Drop используется для удаления колонки. Предложение Rename изменяет имя колонки. Предложение Order позволяет Вам задать свой порядок расположения колонок. Один оператор Alter Table одновременно может включать в себя все пять предложений, и каждое предложение может обращаться к списку колонок. Поэтому одним оператором Alter Table Вы можете сделать все структурные изменения в таблице (смотрите пример).

Справочник MapBasic

37

Оператор Alter Table

Предложение Order работает только с колонками и не влияет на порядок записей в таблице. Перечислите через запятую имена полей в нужном Вам порядке. Первое имя в списке соответствует самой левой колонке в окне Списка. В таком же порядке будут расположены поля в окне "Информация" – в верхней строке будет значение из первой колонки таблицы и так далее по порядку.

Если программа применяет оператор Alter Table к таблице, которая имеет мемоLполя, то последние будут утеряны. Сообщений об этом не выводится.

Когда Вы производите аналогичные действия, используя интерфейс MapInfo (команда ТАБЛИЦА > ИЗМЕНИТЬ > ПЕРЕСТРОИТЬ), то программа предупредит о потере мемоLполей. Когда программа MapBasic меняет структуру таблицы, то предупреждений не будет.

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

Пример:

Таблица GCPOP.TAB состоит из следующих колонок: "pop_88", "metsize", "fipscode" и "utmcode". Оператор Alter Table делает следующее:

·в предложении Rename меняет имя колонки "pop_88" на "Население";

·в предложении Drop удаляет колонки "metsize", "fipscode", "utmcode";

·в предложении Add создает колонку "Школа" для 2Lбайтовых значений целого типа (SmallInt) и колонку "Субсидии" вещественного типа;

·в предложении Order заново определяет порядок колонок в таблице.

Open Table "gcpop" Alter Table pop

(Rename pop_88 Население

Drop metsize, fipscode, utmcode Add Школа SmallInt, Субсидии Float Order Школа, Население, Субсидии)

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

Add Column, Create Index, Create Map, Create Table, Drop

38

Справочник MapBasic

Функция ApplicationDirectory$( )

Функция ApplicationDirectory$( )

Назначение:

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

Синтаксис:

ApplicationDirectory$(_)

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

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

Описание:

Вызов функции ApplicationDirectory$(_) из приложения поможет Вам определить каталог (или папку), из которого была запущена прикладная программа. Если в данный момент никаких приложений не загружено (Вы вызвали функцию в окне MapBasic), то функцией возвращается пустая строка.

Для определения каталога, в котором установлена программа MapInfo, используйте функцию Pro4 gramDirectory$(_).

Пример:

Dim sAppPath As String

sAppPath = ApplicationDirectory$( )

'С этого момента переменная sAppPath равна строке:

'"C:\MAPBASIC\CODE\"

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

ProgramDirectory$(_)

Справочник MapBasic

39

Функция Area( )

Функция Area( )

Назначение:

Возвращает географическую площадь объекта.

Синтаксис:

Area(obj_expr, unit_name)

где

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

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

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

Десятичное число с плавающей запятой. Величина типа Float.

Описание:

Функция Area(_) возвращает площадь географического объекта, определенного параметром obj_expr, в единицах измерения, указанных во втором параметре. Смотрите описание оператора Set Area Units, в котором приведен список возможных имен единиц измерений.

Площадь имеют только области, эллипсы, прямоугольники и скругленные прямоугольники. Результат применения функции к точечным, текстовым объектам, а также к прямой линии, дуге и полилинии будет равен нулю. Для скругленного прямоугольника функция Area(_) возвращает приблизительное значение. MapBasic вычисляет площадь этого объекта так, как если бы он был обычным прямоугольником.

Пример 1:

В этом примере демонстрируется, как используется функция для вычисления площади географического объекта. Объект "states.obj" представляет географический объект, соответствующий текущей строке в определенной таблице.

Dim sq_miles As Float

Open Table "states.tab"

Fetch First From states

sq_miles = Area(states.obj, "sq mi")

Пример 2:

Вы можете также использовать функцию Area(_) в операторе Select для формирования SQLL запроса. В следующем примере из таблицы STATES выбирается некоторая информация и помещается в таблицу запроса. Эта таблица также имеет колонку для результатов вычисления площади выбранных штатов.

Select state, abbr, Area(obj, "sq km")

From states

Into results

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

ObjectLen(_), Perimeter(_), Set Area Units

40

Справочник MapBasic

Функция AreaOverlap( )

Функция AreaOverlap( )

Назначение:

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

Синтаксис:

AreaOverlap (object1, object2)

где

object1 и object2 – два замкнутых (имеющих площадь) объекта.

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

Десятичное число с плавающей запятой. Величина типа Float.

Описание:

Функция возвращает величину площади пересечения двух объектов object1 и object2 в единицах измерения площадей, текущих для выполняемой программы MapBasic.

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

Overlap(_), ProportionOverlap(_), Set Area Units

Справочник MapBasic

41

Функция Asc( )

Функция Asc( )

Назначение:

Возвращает код первого символа строки.

Синтаксис:

Asc(string_expr)

где

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

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

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

Описание:

Функция Asc(_) возвращает код первого символа строки string_expr. В Windows это ANSILкод.

Если строка пустая, то функция Asc(_) возвращает ноль.

Операционные оболочки Windows и Macintosh работают с разными системами кодов символов. Поэтому результат одного и того же вызова функции Asc(_) в разных системах может различаться. Однако обе системы имеют общие коды от 32 (пробел) до 126 (тильда). В этот диапазон входят все цифры и буквы латинского алфавита. Буквы русского алфавита в разных системах имеют разные коды.

Всистемах, поддерживающих двубайтовые коды символов (например, Windows Japanese): если первый символ в строке string_expr однобайтовый, то функция Asc(_) вернет код от 0 до 255; если первый символ в строке string_expr двубайтовый, то функция Asc(_) вернет код от 256 до 65535.

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

Пример:

Dim code As SmallInt code = Asc("Afghanistan")

'code равно 65,

'так как 65 код символа A

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

Chr$(_)

42

Справочник MapBasic

Функция Asin( )

Функция Asin( )

Назначение:

Возвращает арксинус.

Синтаксис:

Asin(num_expr)

где

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

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

Десятичное число с плавающей запятой. Величина типа Float.

Описание:

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

Результатом вычисления является угол, значение которого возвращается в радианах. Диапазон значения угла находится между Lp/2 и p/2 радиан (число p равно приблизительно 3.141593, и p/2 радиан равно 90 градусам).

Для перевода градусов в радианы число необходимо умножить на число DEG_2_RAD. Для обратного конвертирования используется коэффициент RAD_2_DEG. Чтобы Ваша программа могла использовать эти коэффициенты конвертирования, она должна содержать оператор Include "MAPBASIC.DEF".

Пример:

Include "MAPBASIC.DEF"

Dim x, y As Float

x = 0.5

y = Asin(x) * RAD_2_DEG

'y равно 30,

'так как синус от 30 градусов равен 0.5

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

Acos(_), Atn(_), Cos(_), Sin(_), Tan(_)

Справочник MapBasic

43

Функция Ask( )

Функция Ask( )

Назначение:

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

Синтаксис:

Ask(prompt, ok_text, cancel_text)

где

prompt – текст сообщения, заданный в кавычках;

ok_text – текст на кнопке подтверждения (например, "Да" или "Продолжить"); cancel_text – текст на кнопке отмены (например, "Отменить" или "Нет").

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

Логическая. Величина типа Logical.

Описание:

Функция Ask(_) формирует и выводит на экран диалоговое окно, в котором пользователю предлагается ответить "да" или "нет". В соответствии с этим функция возвращает TRUE или FALSE.

Параметр prompt содержит текст сообщения или вопроса, на который надо ответить пользователю, например – "Файл уже существует. Заменить на новый?". Текст сообщения должен содержать не более 300 символов.

Диалоговое окно имеет две кнопки: одна для положительного ответа, другая для отрицательного. Параметры ok_text и cancel_text задают текст для этих кнопок (например, “OK” или “Да” – для положительного ответа, “Нет” или “Стоп” – для отрицательного). Если пользователь нажмет на кнопку с надписью ok_text, то функция вернет значение TRUE. Кнопка с надписью cancel_text выдает значение FALSE. Нажатие на клавишу ESC равносильно выбору кнопки отмены в диалоге; функция Ask(_) примет значение FALSE. Текст для кнопок должен быть лаконичен и сжат. Если Ваша фраза настолько велика, что не помещается в пределах стандартной кнопки, то лучше воспользуйтесь оператором Dialog вместо функции Ask(_).

Кнопка ok_text выбирается по умолчанию, то есть вместо нажатия мышкой эту кнопку можно выбрать клавишей ENTER.

Пример:

Dim more As Logical

more = Ask("Вы согласны удалить объекты?","Да","Нет")

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

Dialog, Note(_), Print

44

Справочник MapBasic

Функция Atn( )

Функция Atn( )

Назначение:

Возвращает арктангенс.

Синтаксис:

Atn(num_expr)

где

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

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

Десятичное число с плавающей запятой. Величина типа Float.

Описание:

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

Результатом вычисления является угол, значение которого возвращается в радианах. Диапазон значения угла находится между Lp/2 и p/2 радиан (число p равно приблизительно 3.141593, и p/2 радиан равно 90 градусам).

Для перевода градусов в радианы число необходимо умножить на число DEG_2_RAD. Для обратного конвертирования используется коэффициент RAD_2_DEG. Чтобы Ваша программа могла использовать эти коэффициенты конвертирования, она должна содержать оператор Include "MAPBASIC.DEF".

Пример:

Include "MAPBASIC.DEF"

Dim val As Float

val = Atn(1) * RAD_2_DEG

'val равен 45, потому что

'арктангенс от 1 равен 45 градусам

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

Acos(_), Asin(_), Cos(_), Sin(_), Tan(_)

Справочник MapBasic

45

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