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

Материал из K3-Macro
(перенаправлено с «DbDelete»)
Макро | Работа с файлами 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 | Обзор средств работы с наборами записей | Команды работы с наборами записей | Получение информации о наборе записей | Чтение информации из набора данных | Внесение информации в набор записей | Функции начала, конца набора записей и работы с закладками | Навигация по набору записей | Поиск в наборе записей | Результаты поиска в наборе записей