77987

Навигационный доступ к данным в БД

Лекция

Информатика, кибернетика и программирование

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

Русский

2015-02-05

65.5 KB

5 чел.

Навигационный доступ к данным в БД

Существует два способа работы с записями в НД.

Способ, основанный на использовании операторов SQL, предполагает оперирование группами записей. Именно так работают SQL-операторы группового обновления НД UPDATE, INSERT, DELETE и выборки групп записей SELECT. Записи, удовлетворяющие некоторому условию, выдаются группами; даже если условию удовлетворяет только одна запись, считается, что в данном случае группа состоит из одной записи.

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

Понятие курсора набора данных. Под курсором набора данных понимается указатель текущей записи в конкретном наборе данных. Текущая запись - та запись, над которой в данный момент времени можно выполнять какие-либо операции (удаление, изменение, чтение значений, содержащихся в записи полей).

Существует 5 методов для изменения курсора НД, котрые представлены в таблице 27:

Определение начала и конца набора данных:

Свойство property BOF: Boolean;

Возвращает True, если курсор установлен на первую запись в наборе данных.

Свойство property EOF: Boolean;

Возвращает True, если курсор установлен на последнюю запись в наборе данных.

Таблица 27 – Методы изменения курсора

Название метода

Назначение

procedure First;

Устанавливает курсор на первую запись в наборе данных.

procedure Last;

Устанавливает курсор на последнюю запись в наборе данных.

procedure Next;

Перемещает курсор на следующую запись в наборе данных.

procedure Prior;

Перемещает курсор на предыдущую запись в наборе данных.

function MoveBy(n:Integer): Integer;

Перемещает курсор на n записей к'концу набора данных (n > 0) или к началу набора (n < 0.)

Изменение текущей записи

Чтобы изменить запись в НД, этот НД нужно перевести методом Edit из состояния dsBrowse в состояние dsEdit, затем произвести изменение значения одного или нескольких полей записи и использовать метод Post для запоминания измененной записи в НД. Post в данном случае при благополучном исходе переводит НД из состояния dsEdit в состояние dsBrowse.

Для отказа от запоминания измененной записи в НД используется метод Cancel. Он также переводит НД из состояния dsEdit в состояние dsBrowse.

Метод Edit. Редактирование записи должно быть разрешено (свойство property ReadOnly: Boolean; должно быть установлено в False). Помимо этого, могут быть запрещены для корректировки отдельные поля записи (когда свойство Readonly соответствующих компонентов TField установлено в True). Метод Edit может вызываться: программно, автоматически, когда пользователь в визуальном компоненте, связанном с НД, выполняет определенные действия. Вид этих действий зависит от визуального компонента.

Автоматический перевод набора данных в режим редактирования должен быть разрешен свойством AutoEdit соответствующего компонента DataSource (значение True).

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

Чтобы добавить новую запись в НД, нужно вызвать метод Insert для перевода НД из состояния dsBrowse в состояние dsEdit Затем производится присваивание значения одному или нескольким полям записи, после чего выполняется метод Post для запоминания новой записи в НД Post при благополучном исходе переводит НД из состояния dsEdit в состояние dsBrowse

Для отказа от запоминания новой записи в НД используется метод Cancel Он также переводит НД из состояния dsEdit в состояние dsBrowse.

Метод Insert. При добавлении записи изменение НД должно быть разрешено (свойство Readonly должно быть установлено в False). Помимо этого, могут быть запрещены для изменения отдельные поля записи (когда свойство Readonly соответствующих компонентов TField установлено в True). В этом случае в них нельзя ввести новые значения.

Метод Insert может вызываться: программно, автоматически, когда пользователь в визуальном компоненте, связанном с НД, предпринимает соответствующие действия. Для перехода в режим dslnsert в компоненте TDBGrid достаточно нажать на клавиатуре клавишу Insert или, находясь на последней записи НД, попытаться перейти на нижнюю, несуществующую запись. То же происходит при нажатии соответствующей кнопки связанного с данным НД компонента TDBNavigator,.

Метод procedure Append, аналогичен методу Insert, но он добавляет запись в конец набора данных, в то время как Insert добавляет ее после текущей записи.

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

Запоминание изменений - метод Post.

Выполнение метода Post приводит к запоминанию изменений, сделанных в режиме добавления или изменения записи.

Если НД не находится в режиме dslnsert или dsEdit, применение Post приводит к возбуждению исключительной ситуации. Вызов Post зависит от способа, которым ранее был вызван метод Insert или Edit: программно; автоматически.

Post обычно вызывается автоматически, если пользователь предпринимает соответствующие действия, направленные на запоминание измененной записи в НД. Вид этих действий зависит от визуального компонента, связанного с НД. Например, для компонента TDBGrid, связанного с набором данных, это -переход к другой записи. Для НД, управляемого компонентом TDBNavigator, это - нажатие соответствующей экранной клавиши компонента TDBNavigator. Реже изменения в наборе данных, автоматически переведенном в режим редактирования, запоминаются путем программного вызова метода Post.

Метод Post, независимо от того, вызывается он программно или автоматически, может завершиться неудачно. Причиной этого могут послужить неверные значения в соответствующих полях записи.

В лучшем случае при возникновении препятствий для выполнения Post запись переводится в состояние, в котором НД находился до выполнения метода (dslnsert или dsEdit).

Отмена сделанных изменений - метод Cancel

Метод Cancel отменяет все изменения, сделанные в записи. Если НД находился в режиме добавления новой записи, запись в НД не добавляется. Если НД находился в режиме изменения записи, изменявшаяся запись в НД не записывается и данные в ней остаются в том состоянии, в котором они находились до перехода в режим dsEdit. Сам НД переводится в режим dsBrowse. Вызов Cancel зависит от способа, которым ранее был вызван метод Insert или Edit: программно; автоматически.

Cancel вызывается автоматически, если пользователь предпримет соответствующие действия, направленные на запоминание измененной записи в НД. Вид этих действий зависит от визуального компонента, связанного с НД. Например, для компонента TDBGrid, связанного с набором данных, это нажатие клавиши Esc. Для НД, управляемого компонентом TDBNavigator, это нажатие соответствующей экранной клавиши компонента TDBNavigator.

Удаление записи

Удаление текущей записи в наборе данных реализуется методом Delete,

производиться: программно или автоматически, если это предусмотрено в том или ином компоненте. Так, в компоненте TDBGrid нажатие комбинации клавиш Ctrl + Del влечет за собой удаление записи, которое, в соответствии с опциями настройки TDBGrid, может выполняться как с запросом подтверждения, так и без него.

Пример: Осуществить работу в базе данных с помощью методов навигации и изменения (рисунок  58).

Разместить на форме компоненты:  Table1, DBGrid1,  DataSourse и подключить базу данных, а так же 9 компонент TButton (для навигации и изменения записей БД).

Для кнопок определить события OnClick:

// кнопка «На первую запись»

procedure TForm1.Button1Click(Sender: TObject);

begin

Table1.First;

end;

// кнопка «На последнюю запись»

procedure TForm1.Button5Click(Sender: TObject);

begin

Table1.Last;

end;

// кнопка «Редактирование»

procedure TForm1.Button3Click(Sender: TObject);

var a: byte;

begin

a:=MessageDlg('Редактировать данную запись',mtWarning,[mbYes,mbNo],0);

if a=1 then

Table1.Edit;

end;

// кнопка «Добавление записи»

procedure TForm1.Button8Click(Sender: TObject);

begin

Table1.Insert;

end;

// кнопка «Удаление записи»

procedure TForm1.Button9Click(Sender: TObject);

begin

Table1.Delete;

ShowMessage('Запись удалена !!');

end;

// кнопка «Отмена»

procedure TForm1.Button4Click(Sender: TObject);

var a: byte;

begin

a:=MessageDlg('Отменить действия',mtWarning,[mbYes,mbNo],0);

if a=1 then

Table1.Cancel

end;

// кнопка «Сохранить»

procedure TForm1.Button7Click(Sender: TObject);

var a: byte;

begin

a:=MessageDlg('Сохранить данные записи',mtWarning,[mbYes,mbNo],0);

if a=1 then

Table1.Post;

end;

// кнопка «На следующую запись»

procedure TForm1.Button2Click(Sender: TObject);

begin

if Table1.Eof then

ShowMessage('Конец базы данных')

else

Table1.Next;

end;

// кнопка «На предыдущую запись»

procedure TForm1.Button6Click(Sender: TObject);

begin

if Table1.bof then

ShowMessage('Начало базы данных')

else

Table1.Prior;

end;

Рис. 58 – Пример использования  методов компоненты TTable


 

А также другие работы, которые могут Вас заинтересовать

26508. Интеграционные процессы в западной Европе 1950-2000гг 48 KB
  подписан договор о создании Европейского объединения угля и стали ЕОУС Франция ФРГ Италия Бельгия Нидерланды Люксембург. в Риме подписаны договоры о создании Европейского сообщества по атомной энергии Евратом и Европейского экономического сообщества. политические цели объединение сил западноевропейского капитализма против мирового коммунистического движения соц государств национальноосвободит борьбы колониальных и зависимых стран. Правящие круги США поддерживали создание ЕЭС рассчитывая усилить экономическую базу НАТО и...
26509. Проблемы ограничения вооружения и разоружения в П. стран Европы и Америки 1970 -2000 гг 47 KB
  смягчению 2полюсности мира можно назвать взаимное истощение СССР и США. называемое окно уязвимости которое образовалось якобы в резте ракетноядерного отставания США от СССР. Рейган провозгласил своей целью измотать СССР и ослабить его эк. Бытует мнение что это был глобальный исторический блеф администрации Рейгана попытка спровоцировать СССР на разработку подобной программы.
26510. Основные этапы соц-экон. и полит. разв. стран Центр и Вост.Европы 1945-2000гг 62 KB
  было желание видеть в госве гаранта социальн.социализма оставило лицом к лицу коммунизм и либер. революции нардем социал.
26513. Основные этапы социально-экономического развития Японии 32 KB
  в руках США. цель подписание мирного договора сделанного в США и АНГ. договоры как сепаратные м у США и Я. тут же подписан договор безопасности м у Я и США.
26514. Основные этапы социально-экономического и политического развития Индии в 1950 – 2000 гг. 55 KB
  Существенным элементом внешней политики ИНК стали неприсоединение к военным блокам и стремление к консолидации молодых независимых государств. Критике подверглась позиция ИНК в социальных вопросах. В ИНК существовали различные группировки отражавшие несовпадающие интересы социальных слоев связанных с этой партией от крупных капиталистов и землевладельцев до интеллигенции мелкой буржуазии города и деревни трудящихся масс. В этом многообразии коренились и сила общенациональный авторитет ИНК и его внутренняя слабость.
26515. Валютный рынок Украины 34.05 KB
  В сфере валютной политики Национальный банк ставит задачу иметь реальный курс украинской гривны относительно свободно конвертируемых валют на уровне сбалансированности спроса и предложения. Для решения этой задачи и упорядочения ситуации на валютном рынке
26516. Основные направления отечественной и зарубежной историографии 43.5 KB
  Барг, Лавровский: уникальная особенность Англии в том, что она является ед. в Европе страной где развитие буржуазных отношений происходило одновременно в городе и деревне. Именно в деревне кап. Отношения развились более глубоко, именно из деревни шел импульс. Центр тяжести АБР лежал в деревне.