Добавление записей

Begin

Begin

Begin

Редактирование записей

I. Теоретическая часть

 

Модификация НД представляет собой редактирование, добавление и удаление его записей. Модифицируемость НД зависит от различных условий. Можно разрешить или запретить изменение НД с помощью соответствующих свойств. Управлять возможностью изменения НД Table можно с помощью свойства ReadOnly типа Boolean. Если значение этого свойства = True, то изменения записей запрещаются. По умолчанию свойство ReadOnly имеет значение False, и НД можно модифицировать.

 

Для проверки, можно ли изменять НД, предназначено свойство CanModify типа Boolean. Если это свойство имеет значение True, то НД изменять можно, а если False, то изменения в НД запрещены.

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

v перевести НД в режим редактирования;

v изменить значения полей записи;

v подтвердить сделанные изменения или отказаться от них, в результате чего НД снова перейдет в режим просмотра.

 

НД переводится в режим редактирования вызовом метода Edit, например Table1.Edit – редактирование текущей записи НД Table1.

Редактирование записей осуществляется для модифицируемого НД, поэтому перед вызовом метода Edit следует выполнять проверку на возможность редактирования записи (например, путем анализа свойства CanModify).

 

Пример:

If Table1.CanModifythenTable1.Edit;

Если редактирование осуществляется с помощью управляющих компонентов, не связанных с НД, например кнопок Button или переключателей CheckBox, программист должен самостоятельно кодировать действия по предотвращению попыток редактирования немодифицируемого НД. Вот пример осуществления такой блокировки:

 

procedure TForm1.Button1Click(Sender: TObject);

 

if not Table1.CanModifythen

Beep;

 

MessageDlg ('Редактирование запрещено!', mtInformation, [mbOk], 0);

Exit;

end;

Table1.Edit;

end;

 

Здесь переход в режим редактирования осуществляется при нажатии кнопки Button, которая может иметь название «Редактировать» или «Edit». Перед переводом в этот режим выполняется проверка, можно ли изменять записи НД Table1, и если нет, то процедура выдает соответствующее сообщение и завершается.

 

Блокировка попыток пользователя изменить немодифицируемый НД должна выполняться также при добавлении и удалении записей.

При выполнении метода Edit непосредственно перед переводом НД в режим редактирования возникает событие BeforeEdit, которое можно использовать для проверки возможности перехода в этот режим. Например, при попытке пользователя редактировать запись ему может быть предложено подтвердить свои действия:

 

procedure TForm1.Table1BeforeEdit (DataSet: TDataSet);

if MessageDlg ('Выполнить редактирование?',

mtConfirmation, [mbYes, mbNo], 0) <> mrYes then Abort;

end;

 

После выполнения метода Edit вызывается обработчик события AfterEdit.

 

Для проверки, вносились ли изменения в запись, можно проанализировать свойство ModifiedтипаBoolean.Если свойство имеет значениеTrue,то было изменено значение какминимум одного поля текущей записи.

 

После ввода информации сделанные изменения должны быть или подтверждены, или отменены.

Метод Post сохраняет изменения записи в таблице БД (например, Table1.Post), снимает блокировку записи и переводит НД в режим просмотра (Table1.Browse).

Перед его выполнением автоматически вызывается обработчик события BeforePost, а сразу после выполнения – обработчик события AfterPost. Используя событие BeforePost, можно проверить сделанные изменения и при необходимости отменить их.

 

При работе с компонентом DBGrid изменения закрепляются при переходе к другой записи или нажатии клавиши [Enter], а в компоненте DBNavigator можно нажать кнопку Post Edit (Утвердить изменения).

 

Метод Cancel отменяет изменения, выполненные в текущей записи (например, Table1.Cancel), и возвращает НД в режим просмотра. При выполнении метода Cancel вызываются обработчики событий BeforeCancel и AfterCancel.

 

При работе с сеткой DBGrid изменения отменяются нажатием клавиши [Esc], а в компоненте DBNavigator – нажатием кнопки Cancel Edit (Отменить изменения).

 

 

Добавлять записи можно только к модифицируемому НД.

Для добавления записи нужно выполнить следующие действия:

v перевести НД в режим вставки;

v задать значения полей текущей записи;

v подтвердить сделанные изменения или отказаться от них, после чего НД снова переходит в режим просмотра.

 

Метод Insert переводит НД в режим вставки и добавляет к нему новую пустую запись. Новая запись вставляется перед текущей записью. При необходимости перед вызовом метода Insertнеобходимо выполнить перемещение текущего указателя на ту запись НД,перед которойвставляется новая запись.

Метод Append вставляет новую запись в конец НД.

Для компонента DBGrid новая запись добавляется к НД при нажатии клавиши [Insert] или при переходе на последнюю запись. Если на форме находится компонент DBNavigator, то новая запись добавляется при нажатии кнопки Insert Record (Вставить запись).