- •Базы данных в Delphi Оглавление
- •Глава I. Базы данных в Delphi 3
- •Глава II. Наборы данных 11
- •Глава I. Базы данных в Delphi
- •1.1. Ведение в базы данных
- •1.2. Таблицы баз данных.
- •1.3. Таблицы формата dBase и Paradox
- •Сравнительная характеристика dBase и Paradox
- •1.4. Практическая работа
- •1.5. Самостоятельная работа
- •Глава II. Наборы данных
- •2.1. Набор данных
- •2.2. Практическая работа
- •2.3. Самостоятельная работа
- •2.4. Режимы наборов данных
- •2.5. Практическая работа
- •2.6. Перемещение по записям набора данных
- •2.7. Практическая работа
- •2.8. Доступ к полям
- •2.9. Практическая работа
- •2.10. Практическая работа
- •2.11. Способы задания состава полей набора данных
- •Редактор полей
- •2.12. Вычисляемые поля
- •2.13. Практическая работа №7
- •Глава III. Индексирование баз данных
- •3.1. Установка текущего индекса
- •3.2. Сортировка набора данных
- •3.3. Практическая работа
- •Глава IV. Фильтрация записей
- •4.1. Фильтрация по выражению
- •4.2. Практическая работа
- •4.3. Практическая работа
- •4.4. Фильтрация по диапазону
- •4.5. Самостоятельная работа
- •Глава V. Поиск записей в наборе данных.
- •5.1. Поиск записей
- •5.2. Поиск записей по нескольким полям.
- •5.3. Практическая работа
- •Глава VI. Модификация набора данных
- •6.1. Редактирование записей
- •6.2. Добавление записей
- •6.3. Удаление записей
- •6.4. Практическая работа
- •Глава VII. Работа со связанными таблицами
- •7.1. Организация связей между таблицами
- •7.2. Практическая работа
- •7.3. Самостоятельная работа
- •Глава VIII. Работа с отчетами
- •8.1. Объект QuickRep
- •8.2. Компоненты, размещаемые в полосе
- •8.3. Практическая работа
2.4. Режимы наборов данных
Наборы данных могут находиться в различных режимах. Текущий режим НД определяет свойство State. Оно доступно для чтения во время выполнения приложения и может быть использовано только для текущего режима. Для перевода данных в тот или иной режим применяются специальные методы.
НД может находиться в одном из следующих режимов:
dsInactive – НД закрыт и неактивен, доступ к его данным невозможен.
dsBrowse – режим просмотра, в котором осуществляется перемещение по записям НД и просмотр данных.
dsEdit – редактирование текущей записи.
dsInsert – вставка новой записи.
dsSetKey – поиск записи, удовлетворяющей заданному критерию.
dsCalcField – выполняется расчет вычисляемых полей.
dsFilter – выполняется фильтрация записей.
Связи между режимами наборов данных можно отобразить в виде схемы:
2.5. Практическая работа
Создадим приложение, работающее с таблицами данных. Реализуем добавление, удаление, изменение и сохранение записей в таблице.
Поставьте на форму компоненты Table, DataSource, DBGrid для работы с таблицей Tovar.db. Свяжите их между собой.
Поставьте 5 кнопок Button, заголовки которых будут соответственно «Добавить», «Изменить», «Запомнить», «Удалить», «Отменить».
Опишем процедуры для каждой кнопки:
procedure TForm1.Button1Click(Sender: TObject);
begin
if Table1.State= dsBrowse then
Table1.Insert;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
if Table1.State= dsBrowse then
Table1.Edit;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
if Table1.State= dsBrowse then
if MessageDlg ('Удалить запись?', mtConfirmation, [mbYes, mbNo],0)=mrYes then
Table1.Delete;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
if Table1.State in [dsInsert, dsEdit] then
Table1.Post;
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
if Table1.State in [dsInsert, dsEdit] then
Table1.Cancel;
end;
2.6. Перемещение по записям набора данных
Перемещение по НД заключается в управлении указателем текущей записи (курсором). Этот указатель определяет запись, с которой будут выполняться какие-либо операции.
Перед перемещением указателя текущей записи НД автоматически переводится в режим просмотра.
Для перемещения указателя текущей записи используются методы:
Процедура First – установка курсора на первую запись НД;
Процедура Next – на следующую запись;
Процедура Last – на последнюю запись;
Процедура Prior – на предыдущую запись;
Функция MoveBy (n:integer): integer – перемещение на число запсией, указанных в параметре n
n>0 – перемещение вперед;
n<0 – назад;
n=0 – нет перемещения. Результат функции – число записей, на которое переместился указатель.
2.7. Практическая работа
Перемещение по записям НД с помощью кнопок.
Расположить на
форме следующие компоненты:
Компонент SpinEdit (п. к. Samples) – редактор числа, обеспечивающий отображение и редактирование целого числа с возможностью его изменения с помощью двойной кнопки.
Для компонента Label1 в свойстве Caption оставьте пустую строку.
При помощи рассмотренных методов напишите процедуру для кнопки «Первая запись»:
procedure TForm1.Button1Click (Sender: TObject);
begin
Table1.First;
end;
Процедуры для кнопок «Следующая запись», «Предыдущая запись», «Последняя запись» напишите самостоятельно.
Для перемещения указателя на произвольное число записей используется счетчик SpinEdit1, в поле которого вводится это число. Для кнопки «Перемещение на…записей» напишите процедуру:
procedure TForm1.Button5Click (Sender: TObject);
begin
Table1.MoveBy (SpinEdit1.Value);
end;
Напишите обработчик события OnAfterScroll для компонента Table1. После выполнения события OnAfterScroll информация о текущей записи обновляется сразу после перемещения текущего указателя. Это событие происходит и при открытии НД, когда указатель текущей записи устанавливается на первую запись.
procedure TForm1.Table1AfterScroll (DataSet: TDataSet);
begin
label1.Caption:='Запись номер '+IntToStr(Table1.RecNo);
SpinEdit1.MinValue:= 1-Table1.RecNo;
SpinEdit1.MaxValue:= Table1.RecordCount-Table1.RecNo;
end;
