Команды работы с наборами записей

Материал из GEOS_WIKI
Перейти к: навигация, поиск

Для работы с наборами записей существуют команды dbCreate, dbOpen, dbClose, dbFilter.


dbCreate <ID> <FileName> <Field1>, <Field2>, ..., <FieldN> done

Команда создает новую пустую таблицу базы данных в формате "DBF" с именем <FileName> и описаниями полей <Field1>, <Field2>, ..., <FieldN>. После создания таблица открывается и ей присваивается идентификатор <ID>. В качестве идентификатора указывается переменная, которой присваивается значение созданного или открытого набора записей.

Описание полей <Field> имеет следующий формат:

<Name> <Type> [<Size> [<Prec>]]

<Name> - строка с именем поля (до 10 символов)
<Type> - тип поля. Тип поля задается либо ключом, либо строкой из одного символа. Возможные значения типа поля:
  • real или "r" - числовое поле
  • string или "s" - строковое поля
  • logical или "l" - логическое поля
<Size> - размер поля (в символах) . Размер поля имеет смысл только для строковых и числовых полей и не может превышать 255 символов.
<Prec> - точность представления (в символах). Точность представления имеет смысл только для числовых полей и указывает количество знаков после десятичной точки.


dbOpen <ID> <FileName> [readonly] [<Filter>]

Команда открывает набор записей для существующей "DBF" таблицы с именем <FileName> и фильтром (если указан) <Filter>. Необязательный ключ readonly открывает набор записей только для чтения. То есть внести изменения в такой набор записей не получится. После открытия набору записей присваивается идентификатор <ID>.

Фильтр <Filter> - это строка, которая содержит текст логического выражения, где в качестве переменных используются имена полей таблицы. Если для конкретной записи таблицы значение выражения не равно нулю, эта запись помещается в открываемый набор. Иначе - не помещается. Предположим, например, что таблица имеет строковое поле Name и числовое поле Age. Выражение "(Age>30)&&(Left(Name,1)==\"И\")"</same>, используемое в качестве фильтра, помещает в набор только те записи таблицы, у которых значение поля Age больше 30 и первая буква в поле Name - "И".


dbFilter <ID>, <Filter>

Команда переформирует ранее открытый набор записей с идентификатором <ID>., помещая в него только те записи набора, которые удовлетворяют условию, заданному в строке <Filter>. (см. выше)


dbClose <ID>

Команда закрывает открытый набор записей с идентификатором <ID>.