Основы современных компьютерных технологий

         

Типы данных, используемые в таблицах


Перечень типов данных и краткая их характеристика приведены в табл. 21.1.

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

Таблица 21.1

Типы данных Visual FoxPro



Обозначение Тип Диапазон Объем памяти, байт Описание
А Array     Массив данных некоторого типа
В Double от +/-4,9406564854 1247E-324 до +/-1, 797693 13486232E+308 8 Число с плавающей точкой двойной точности
С Character Любые символы 1-254 Текстовая (символьная) строка
D Date от 01/01/100 до 12/31/9999 8 Дата
F Float от -0,9999999999 ? 10+19 до 0,9999999999 ?10+20 8 Такое же, как Numeric
G General Определяется доступной памятью 4 (в dbf) Ссылка на OLE-объект
1 Integer - 2147483647 до 2147483646 4 Число целое
L Logical   1 Логическое значение
М Memo Определяется доступной памятью (в dbf) 4 Ссылка на примечание
N Numeric от -0,9999999999 ? 10-+19 до 0,9999999999 ? 10 +20 8 Число с фиксированной 1 очко и целое или дробное; допускает от 1 до 20 символов в таблице
Т DateTime от 01/01/100 до 12/31/9999 и от 00:00:00 утра до 23:59:59 вечера 8 Дата и время
Y Currency от -22337203685477,5807 до 922337203685477,5807 8 Денежное значение

253

Данные каждого типа могут храниться в полях таблиц этого же типа. Заметим, что Visual FoxPro не имеет команд определения типов переменных. Определение типов выполняется при присваивании переменным первоначальных значений. Рассмотрим подробнее перечисленные типы данных.

Character. Текстовый (символьный) тип используется для побайтного хранения символьных строк длиной от 1 до 254 символов. Элементами строк могут быть печатные знаки - буквы, цифры, пробелы и знаки препинания. Константа символьного типа должна быть заключена в разделители, например:

"строка" 'строка' [строка]

Возможно сравнение символьных строк в соответствии с алфавитным порядком, например:


" "< "а"=.Т. "арба"

Здесь .Т. - логические значение (true). Сравнение идет до первого несовпадающего символа или до окончания правой строки. Операторы сравнения те же, что и в Numeric. Дополнительно введена операция точного сравнения (длин строк и всех символов), обозначаемая как ==. Сравниваемые символы должны быть набраны в одинаковом (нижнем или верхнем) регистре. Имеются два оператора склеивания строк + и -.

Пример:

"Весна"+ [96] = [Весна 96] или

"Весна"- [96] = [ВеснаЭб]

В Visual FoxPro добавлен новый тип символьных полей Character (binary), которые позволяют хранить символы с ASCII-кодами от 0 до 255.

Следующие 4 типа данных (Numeric, Float, Integer и Double) можно условно объединить в одну общую группу числовых данных. Допустимыми символами полей перечисленных типов являются цифры. При работе с данными этих типов возможны выполнение математических операций и автоматический контроль вводимых данных при работе с Visual FoxPro, исключающий ввод любых символов, кроме цифр.

Numeric. Числа в формате с фиксированной точкой (запятой). Целое отличается отсутствием дробной части. Например, оператор присваивания

х=43,385

определяет тип переменной х как Numeric и присваивает ей указанное значение. Над данными этого типа допустимы два типа операций:

1. Арифметические:

+ ,-, ',/,

** (или ^) - возведение в степень.

2. Сравнения:

i = ,=,

# (или О, или !=) - не равно.

Float. Числовые данные типа Float включены для совместимости и функционально эквивалентны данным типа Numeric.

В Visual FoxPro появились новые типы числовых данных, Double и Integer.

Double. Числовые вещественные (с плавающей точкой) данные двойной точности.

Integer. Данные целочисленного типа, применяются для представления целых чисел и позволяют сэкономить место для хранения данных.

254

Date. Этот тип используется для хранения календарных дат. При этом применяются различные форматы представления данных, например:



AMERICAN 12/31/97

GERMAN 31/12/97 и др.

Формат AMERICAN используется по умолчанию. Иной вид формата устанавливается командой

SET DATE ,

где - вид заказываемого формата. Поддерживается контроль правильности вводимых дат. Даты изменяются в диапазоне 01.01.100 до 12.31.9999. При задании дат XX века можно указывать только две последние цифры года.

DateTime. Тип "дата и время" появился в Visual FoxPro. Кроме 8 байт, которые требовались для хранения дат в формате Date, под данные данного типа отводится дополнительно еще 6 байтов для хранения времени в виде HHMMSS, где НН - часы от 00 до 23, ММ - минуты, а SS - секунды. При преобразовании данных типа Date в данные типа DateTime автоматически устанавливается время 12:00:00. Над данными этого типа можно выполнять определенные арифметические операции, так, например, добавляя к дате 1, мы увеличиваем ее на один день, а добавляя секунды к переменной типа DateTime, мы изменяем соответственно время.

Logical. Логический тип данных допускает два возможных значения и четыре варианта их обозначения:

ИСТИНА (ДА) - Т., или .t., или .Y., или .у.

ЛОЖЬ (НЕТ) - .F., или .f., или .N., или .п.

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

  • .Т. - если сравнение положительное,


  • .F. - в противном случае.


  • Над данными логического типа могут выполняться следующие операторы:

  • .NOT. -HE (отрицание или невыполнение условия);


  • .AND. - И (одновременное выполнение двух условий); .


  • .ОR. - ИЛИ (выполнение хотя бы одного условия).


  • Memo. Поля базы данных данного типа предназначены для хранения символьных строк произвольной длины. Значения типа Memo могут иметь произвольный размер, определяемый размером только жесткого диска компьютера, и хранятся в отдельном файле с расширением f pt, имя которого совпадает с именем соответствующей таблицы. Каждая таблица имеет только один Memo-файл вне зависимости от того, сколько Memo-полей она имеет. В Memo-поля dbf-файлов заносятся лишь ссылки (указатели) на соответствующие символьные строки в Memo-файле.


    Значение Memo- поля можно присвоить переменной символьного типа и далее работать с ней как с символьной константой.

    Само Memo-поле имеет блочную структуру. Размеры блока изменяются с помощью команды SET BLOCKSIZE. При этом могут задаваться блоки в диапазоне от 33 до 511 байтов. Размер блока большего размера кратен 512 байтам и обозначается целыми числами от 1 до 32. По умолчанию устанавливается блок размером в 64 байта. Поэтому, например, запись в 65 байт, потребует 2 блока, под которые будет отведена область памяти в 128 байтов. При выборе размеров блоков Memo-полей необходимо стремиться к балансу между перерасходом памяти, если блоки чрезмерно велики, и снижением скорости работы с ними из-за увеличения числа блоков, обусловленного их небольшими размерами.

    255

    Замечание. fpt-файл, созданный для какой-то таблицы, является неотъемлемой ее частью.

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

    Currency. Это тип данных введен в Visual FoxPro для оперирования денежными суммами. Поля таблиц данного типа схожи с числовыми полями, но в отличие от числового поля, для них определена точность в четыре знака после запятой. Поэтому при отображении целых чисел после денежной точки добавляются 4 нуля, например, не 36, а 36.0000.

    Array. Массив представляет собой совокупное элементов, имеющих общее имя. Массив объявляется командой DECLARE пли DIMENSION, которая задает имя и длину массива в круглых скобках, например:

    DECLAREmas1(4,6), mas2(10)

    Здесь описаны два массива: двумерный массив с именем mas1 (размерность 4 на 6) и одномерный массив из 10 элементов.

    При объявлении массива каждому его элементу по умолчанию присваивается начальное значение .F. (False). Каждый элемент массива может использоваться как переменная любого допустимого типа и размера.Поэтому с ними можно и работать как с переменными: присваивать значения, включать в вычисляемые выражения, распечатывать значения и т.д.

    Обращаются к элементу массива по имени массива с указанием индекса -- номера этого элемента в массиве, например, mas(i).

    256

    253 :: 254 :: 255 :: 256 :: Содержание


    Содержание раздела