Edit; - переводит набор данных в режим редактирования, то есть в состояние dsEdit.
Post; override;- записывает измененную запись в базу данных и переводит набор данных в режим просмотра. Может вызываться только тогда, когда набор данных находится в состоянии dsEditили dsInsert.Метод вызывается автоматически при перемещении курсора на новую текущую запись, если набор данных находится в состоянии dsEditили dsInsert.Если при вызове этого метода набор данных не находился в режиме редактирования, то будет сгенерирована исключительная ситуация.
Cancel; - отменяет изменения, сделанные при редактировании до применения Post. Генерируются события BeforeCancel и AfterCancel. Отменить внесенные изменения можно также при работе с компонентом DBGrid, нажав клавишу Esc.
Refresh; - извлекает данные из базы данных для обновления набора данных,
SetFields (const Values: array of const); - устанавливает значения всем полям записи, используя порядок полей в таблице. Значения полей могут быть литералы, переменные, NULL или nil. Здесь Values – массив значений, которые присваиваются полям текущей записи, nil – без изменения значения. После выполнения метода набор данных переводится в режим просмотра.
!!! Ключевое слово nil означает отсутствие значения, а слово null подразумевает нулевое значение.
Insert; –переводит Stateв состояниеdsInsert, вставляет новую пустую запись в позицию, на которой находится указатель текущей записи. Заполнить запись можно методом SetFields,
InsertRecord (const Values: array of const); - вставляет новую запись в текущую позицию курсора и одновременно задает значения всех или некоторых ее полей.
AppendиAppendRecord аналогичны методамInsertи InsertRecord,только добавляют новую запись в конец набора данных.
При использовании компонента DBGrid добавление новой записи можно выполнить двойным щелчком на записи, перед которой будет вставлена новая. После установки курсора нужно нажать клавишу Ins, и появиться пустая строка.
Удаление записи можно производить только из модифицируемого набора данных. Удаляется текущая запись с помощью метода:
Delete; -удаляет активную запись из базы данных, и перемещает курсор на следующую запись. Если в момент удаления набор данных не активен, то инициируется исключительная ситуация. При удалении записи выполняются обработчики событий BeforeDeleteиAfterDelete.
Пример Модификация записей в БД “Pokupka”.
1) Добавление записи в таблицу Tovar
// проверка на наличие такой записи в наборе данных
If DM2.TbTovar.Locate('T_Nazv;T_Cena', VarArrayOf([LENazv.Text,LECena.Text]),[]) then ShowMessage('Такая запись уже есть!')
else Begin
// добавление записи
DM2.TbTovar.Append;
DM2.TbTovarT_Nazv.AsString:=LENazv.Text;
DM2.TbTovarT_Cena.AsVariant:=LECena.Text;
DM2.TbTovar.Post;
end;
2) Редактирование текущей записи в таблице Tovar
// проверка на наличие такой записи в наборе данных
If DM2.TbTovar.Locate('T_Nazv;T_Cena', VarArrayOf([LENazv.Text,LECena.Text]), [loCaseInsensitive]) then ShowMessage ('Такая запись уже есть!')
else Begin
// сохранение отредактированной записи
DM2.TbTovar.Edit;
DM2.TbTovarT_Nazv.AsString:=LENazv.Text;
DM2.TbTovarT_Cena.AsVariant:=LECena.Text;
DM2.TbTovar.Post;
end;
3) Удаление текущей записи в таблице Tovar, каскадное удаление
var n:Variant;
begin
// определение кода названия товара
n:=DM2.TbTovarT_Code.AsVariant;
// проверка на наличие такой записи в наборе данных Pokupka
if DM2.TbPokupka.Locate('P_Tovar',VarArrayOf([n]),
[loCaseInsensitive]) then begin
if MessageDlg('Соответствующая запись в таблице Pokupka есть!'+#13+'Выполнить каскадное удаление?',
mtConfirmation,[mbYes,mbNo],0)=mrYes then begin
// удаление соответствующих записей в таблице Pokupka