Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Проектирование БД в Delphi ВТиП.doc
Скачиваний:
53
Добавлен:
17.03.2016
Размер:
3.62 Mб
Скачать
      1. Компонент tdbNavigator

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

На рисунке 12.12 показаны кнопки навигатора.

Рисунок 8.76 –Кнопки навигатора БД

Назначение кнопок в порядке следования слева направо:

  • First - устанавливает курсор на первую запись;

  • Prior - устанавливает курсор на предыдущую запись;

  • Next - устанавливает курсор на следующую запись;

  • Last - устанавливает курсор на последнюю запись;

  • Insert - переводит НД в режим вставки новой записи;

  • Delete - удаляет текущую запись;

  • Edit - переводит НД в режим редактирования;

  • Post - запоминает изменения, сделанные в текущей записи;

  • Cancel - отменяет изменения, сделанные в текущей записи;

  • Refresh - обновляет НД (для TQuery - только если запрос обновляемый).

С помощью свойства DataSource компонент связывается с нужным источником данных TDataSource - это все, что необходимо для его нормальной работы. Представленное ниже свойство управляет отображением диалогового окна с просьбой подтвердить удаление записи (значение True этого свойства выводит окно):

property ConfirmDelete: boolean;

Если следующее свойство имеет значение True, кнопки будут плоскими, в противном случае - объемными:

property Flat: boolean;

С помощью другого свойства можно отображать только те кнопки навигатора, которые действительно необходимы:

type TNavigateBtn = (nbFirst, nbPrior, nbNext, nbLast, nbInsert, nbDelete, nbEdit, nbPost, nbCancel, nbRefresh);

type TButtonSet = set of TNavigateBtn;

property VisibleButtons: TButtonSet;

Например, если НД является результатом выполнения необновляемого запроса, в навигаторе имеет смысл оставить только первые 4 кнопки.

С помощью следующего метода можно имитировать щелчок на нужной кнопке навигатора:

procedure BtnClick (Index: TNavigateBtn);

Для компонента определены два специфических события:

type ENavClick = procedure (Sender: TObject; Button: TNavigateBtn) of object;

property BeforeAction: ENavClick;

property OnClick: ENavClick;

Обработчик первого события получает управление перед выполнением действия, связанного со щелчком на кнопке Button, в то время как обработчик OnClick - после выполнения действия.

Приложение 2. Бд "поставщик книг"

Ниже приводится описание 5-ти основных таблиц.

Таблица 1.1 - NAKLS

Имя поля

Назначение

Naklld

Уникальный идентификатор накладной. По этому полю нужно создать первичный ключ

nDate

Дата составления накладной. По этому полю можно создать индекс для сортировки накладных по мере их поступления

nType

Тип накладной: 0 - покупка у поставщика; 1 - продажа покупателю; 2 - возврат поставщику; 3 - возврат от покупателя; 4 - книги получаются по обмену; 5 - книги передаются по обмену; 6 - покупка с предоплатой; 7 - продажа с предоплатой

nFirm

Уникальный идентификатор партнера (поле FirmId таблицы FIRMS)

nBook

Уникальный идентификатор книги (поле Bookld таблицы BOOKS)

Таблица 1.2 - BOOKS

Имя поля

Назначение

Bookld

Уникальный код книги (первичный ключ)

bName

Название книги (индексное поле)

bAuthor

Автор(ы)

bPublish

Издательство

bYear

Год выпуска

bPrice

Цена покупки книги

Таблица 1.2 - FIRMS

Имя поля

Назначение

Firmld

Уникальный идентификатор партнера (первичный ключ)

fName

Наименование партнера (индексное поле)

fAddress

Адрес партнера

fCity

Город

fPhone

Телефон(ы)

fEMaiL

Адрес электронной почты

Таблица 1.4 - MOVEBOOK

Имя поля

Назначение

Moveld

Уникальный идентификатор (первичный ключ)

mNakl

Код накладной из поля Naklld таблицы NAKLS (индексное поле)

mBook

Код книги из поля Bookld таблицы BOOKS (индексное поле)

Таблица 1.5 - PAYMENTS

Имя поля

Назначение

PayID

Уникальный идентификатор платежного документа (первичный ключ)

pFirm

Код партнера из поля Firmld таблицы FIRMS

pOut

Направление платежа: True - партнеру; False - от партнера

pDate

Дата платежа

pSum

Сумма платежа

Таблица 1.6 - TYPENAKL

Имя поля

Назначение

TypeID

Уникальный идентификатор типа накладной (первичный ключ)

tName

Содержание типа наладной