Внесение информации в набор записей

Материал из K3-Macro
Макро | Работа с файлами DBF dBASE IV | Обзор средств работы с наборами записей | Команды работы с наборами записей | Получение информации о наборе записей | Чтение информации из набора данных | Внесение информации в набор записей | Функции начала, конца набора записей и работы с закладками | Навигация по набору записей | Поиск в наборе записей | Результаты поиска в наборе записей

dbSetValue <ID> <Field> <Value>

Команда dbSetValue задаёт значение <Value> поля <Field> текущей (или новой) записи набора записей с идентификатором <ID>. В качестве имени поля может использоваться либо число с порядковым номером поля (начиная с нуля), либо строка с именем поля. Значение поля <Value> должно соответствовать его типу.


dbAddNew <ID>

Команда dbAddNew переводит набор записей <ID> в режим добавления новой записи. После обращения к ней в памяти создаётся новый пустой буфер записи и команды dbGetValue, dbSetValue будут обращаться к нему, а не к текущей записи. Закончить режим добавления и сохранить новую запись в таблице можно с помощью команды dbUpdate. При этом в качестве текущей восстанавливается та запись, которая была текущей до входа в режим добавления.

Команды перехода (dbMove..., dbFind...) также сбрасывают режим добавления, но при этом информация о новой записи теряется.


dbUpdate <ID>

Команда dbUpdate сохраняет в файле "DBF" таблицы изменения, внесенные в текущую (или новую) запись набора записей с идентификатором <ID> командой dbSetValue. Если перед этим набор был в режиме добавления новой записи, восстанавливает режим текущей записи.


dbDelete <ID>

Команда dbDelete удаляет из набора записей с идентификатором <ID> и из файла таблицы текущую запись. Текущей при этом становится следующая запись.

Пример:

// Создаём новый файл таблицы geos.dbf и набор записей
// В таблице будут поля: NAME  – строковое
//            AGE  — числовое целое
//            HEIGHT – числовое, два знака после точки
//            MAN  – логическое
DbCreate id, "geos.dbf",
    "NAME",   "C", 50, 0,
    "AGE",   "N", 3, 0,
    "HEIGHT",  "N", 5, 2,
    "MAN",   "L", 1, 0;

// Получаем различную информацию о полях
=DbFldCount(id);
4
=DbFieldNum(id,"NAME");
0
=DbFieldNum(id,"MAN");
3
=DbFieldName(id,1);
"AGE"
=DbFieldType(id,"NAME");
"C"
=DbFieldSize(id,1);
3
=DbFieldPrec(id,2);
2

// Добавляем 3 записи
DbAddNew id;
DbSetValue id, "NAME",   "Иванов";
DbSetValue id, "AGE",   42;
DbSetValue id, "HEIGHT",  1.75;
DbSetValue id, "MAN",   1;
DbUpdate id;
DbAddNew id;
DbSetValue id, 0 "Шубин";
DbSetValue id, 1 41;
DbSetValue id, 2 1.86;
DbSetValue id, 3 1;
DbUpdate id;
DbAddNew id;
DbSetValue id, "NAME",   "Аристова";
DbSetValue id, "AGE",   18;
DbSetValue id, "HEIGHT",  1.65;
DbSetValue id, "MAN",   0;
DbUpdate id;
=DbRecCount(id); // Сколько записей в наборе ?
3
DbClose id;  // Закрываем набор

// Открываем набор снова, отбирая записи, где AGE>30 
DbOpen id, "geos.dbf", "AGE>30";
=DbRecCount(id); // Сколько записей в наборе ?
2

// Переустанавливаем фильтр;
DbFilter id, "!MAN";
=DbRecCount(id); // Сколько записей в наборе ?
1

// Удаляем текущую запись
DbDelete id;
=DbRecCount(id); // Сколько записей в наборе ?
0
DbClose id;  // Закрываем набор

// Открываем без фильтра 
DbOpen id, "geos.dbf";
=DbRecCount(id); // Сколько записей в наборе ?
2

Макро | Работа с файлами DBF dBASE IV | Обзор средств работы с наборами записей | Команды работы с наборами записей | Получение информации о наборе записей | Чтение информации из набора данных | Внесение информации в набор записей | Функции начала, конца набора записей и работы с закладками | Навигация по набору записей | Поиск в наборе записей | Результаты поиска в наборе записей