77987

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

Лекция

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

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

Русский

2015-02-05

65.5 KB

4 чел.

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

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

Способ, основанный на использовании операторов 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


 

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

83656. Преобразование энергии в электрической цепи. Мгновенная, активная, реактивная и полная мощности синусоидального тока 145 KB
  Мгновенная активная реактивная и полная мощности синусоидального тока Передача энергии w по электрической цепи например по линии электропередачи рассеяние энергии то есть переход электромагнитной энергии в тепловую а также и другие виды преобразования энергии характеризуются интенсивностью с которой протекает процесс то есть тем сколько энергии передается по линии в единицу времени сколько энергии рассеивается в единицу времени. 1 Выражение для мгновенного значения мощности в электрических цепях имеет вид: . Среднее за период...
83657. Резонансы в цепях синусоидального тока 136 KB
  Следствием этого является совпадение по фазе тока на входе цепи с входным напряжением. Резонанс в цепи с последовательно соединенными элементамирезонанс напряжений Для цепи на рис. В цепи преобладает индуктивность т.
83658. Векторные и топографические диаграммы 135.5 KB
  Для наглядного определения величины и фазы напряжения между различными точками электрической цепи удобно использовать топографические диаграммы. Они представляют собой соединенные соответственно схеме электрической цепи точки на комплексной плоскости отображающие их потенциалы. Для построения топографической диаграммы предварительно осуществим расчет комплексных потенциалов другой вариант построения топографической диаграммы предполагает расчет комплексов напряжений на элементах цепи с последующим суммированием векторов напряжений вдоль...
83659. Анализ цепей с индуктивно связанными элементами 150 KB
  Такие элементы могут связывать цепи электрически гальванически разделенные друг от друга. В том случае когда изменение тока в одном из элементов цепи приводит к появлению ЭДС в другом элементе цепи говорят что эти два элемента индуктивно связаны а возникающую ЭДС называют ЭДС взаимной индукции. Степень индуктивной связи элементов характеризуется коэффициентом связи 1 где М – взаимная индуктивность элементов цепи размерность – Гн; и собственные индуктивности этих элементов.
83660. Особенности составления матричных уравнений при наличии индуктивных связей и ветвей с идеальными источниками 118 KB
  В общем случае разветвленной цепи со взаимной индукцией матрица сопротивлений ветвей имеет вид Z . Здесь элементы главной диагонали комплексные сопротивления ветвей схемы; элементы вне главной диагонали комплексные сопротивления индуктивной связи i й и k – й ветвей знак ставится при одинаковой ориентации ветвей относительно одноименных зажимов в противном случае ставится...
83661. Методы расчета, основанные на свойствах линейных цепей 165.5 KB
  Метод наложения Данный метод справедлив только для линейных электрических цепей и является особенно эффективным когда требуется вычислить токи для различных значений ЭДС и токов источников в то время как сопротивления схемы остаются неизменными. Аналитически принцип наложения для цепи содержащей n источников ЭДС и m источников тока выражается соотношением . 1 Здесь комплекс входной проводимости k – й ветви численно равный отношению тока к ЭДС в этой ветви при равных нулю ЭДС в остальных ветвях; комплекс взаимной ...
83662. Метод эквивалентного генератора 123.5 KB
  как сумму двух составляющих одна из которых вызывается источниками входящими в структуру активного двухполюсника и источником ЭДС расположенным между зажимами 1 и 2 слева а другая – источником ЭДС расположенным между зажимами 1 и 2 справа. Параметры эквивалентного генератора активного двухполюсника могут быть определены экспериментальным или теоретическим путями. В первом случае в частности на постоянном токе в режиме холостого хода активного двухполюсника замеряют напряжение на его зажимах с помощью вольтметра которое и равно ....
83663. Пассивные четырехполюсники 223.5 KB
  При анализе электрических цепей в задачах исследования взаимосвязи между переменными (токами, напряжениями, мощностями и т.п.) двух каких-то ветвей схемы широко используется теория четырехполюсников. Четырехполюсник – это часть схемы произвольной конфигурации, имеющая две пары зажимов (отсюда и произошло его название), обычно называемые входными и выходными.
83664. Электрические фильтры 146.5 KB
  Качество фильтра считается тем выше чем ярче выражены его фильтрующие свойства т. Классификация фильтров Название фильтра Диапазон пропускаемых частот Низкочастотный фильтр фильтр нижних частот Высокочастотный фильтр фильтр верхних частот Полосовой фильтр полоснопропускающий фильтр Режекторный фильтр полоснозадерживающий фильтр и где В соответствии с материалом изложенным в предыдущей лекции если фильтр имеет нагрузку сопротивление которой при всех частотах равно характеристическому то напряжения и соответственно токи на...