Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка Builder 2курс.doc
Скачиваний:
4
Добавлен:
16.11.2019
Размер:
1.26 Mб
Скачать

8. 4. Контрольные вопросы

1. Как можно связать данные из главной и подчиненной таблиц?

2. Каким образом выполняются запросы на вставку и удаление?

9. Лабораторная работа №8 Тема: Работа с полями

9. 1. Краткие теоретические сведения

Fields Editor позволяет связать пользовательские объекты с некоторыми или со всеми полями таблицы. Связав пользовательский объект с полем, можно получить  возможность контролировать способ отображения, форматирования, проверки и ввода данных в это поле. Кроме того, Fields Editor позволяет в процессе выполнения программы добавлять в таблицу новые поля и вычислять соответствующие им значения. Такие поля называются вычисляемыми. Еще одна возможность Fields Editor  состоит в форматировании полей поиска. Поля поиска позволяют просматривать данные одной таблицы из другой таблицы с помощью внешнего ключа [1].

Для редактирования набора данных, содержащихся в таблицах базы данных, предназначены следующие методы [2]:

void  __fastcall Post(void);     (данные записываются на диск)

void  __fastcall Insert();          (вставка новой записи в текущей позиции курсора )

void  __fastcall Edit();            (режим редактирования)

void  __fastcall Append();       (добавляется новая запись в конце набора данных)

void  __fastcall Delete();         (удаляется текущая запись)

void  __fastcall Cancel();        (отменяет внесенные изменения)

    

9. 2. Задание

1. Создать приложение для таблицы Animals, в котором в объекте TDBGrid отображается вычисляемое поле Mass,  значение этого поля представляет произведение двух полей WEIGHT и SIZE.

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

Структура таблицы Author.db.

Имя

Тип

Ключ

AuthNo

AutoInc

Ключ

First

Character(25)

не определен

Last

Character(25)

не определен

Dates

Character(25)

не определен

Структура таблицы Book.db.

Имя

Тип

Ключ

BookNo

AutoInc

ключ

AuthNo

LongInt

внешний ключ

Title

Character(35)

не определен

При включении новой книги в таблицу Book предусмотреть возможность автоматического просмотра списка автора.

 

9. 3. Ход выполнении работы

Задание №1

1. Откройте новое приложение.

2. В модуль данных (имя- DMod) поместите объекты TQuery, TDataSource.

3. Для объекта TQuery установите свойства :

· DatabaseName-имя используемого  псевдонима.

· Name AnimalsQuery

· SQL –select * from Animals

· Active-True

· набор изменяемый (свойство RequestLive -True)

4. Для объекта TDataSource установите свойства:

· Name-AnimalsSource

· DataSet-AnimalsQuery

5. Щелчком правой кнопки мыши по объекту TQuery вызовите Fields Editor. Затем из контекстного меню  выберите команду Add Field. По умолчанию выделены все поля, щелкните ОК и закройте редактор.

6. Снова откройте редактор полей. Из контекстного меню выберите команду New Field. В окне New Field  в текстовом поле Name введите– Mass,  задайте тип нового поля как Integer  и Calculated

 

7. Чтобы поместить значение в новое поле, в окне инспектора объектов выделите объект AnimalsQuery.

8. Создайте событие OnCalcField :

void __fastcall TDMod::AnimalsQueryCalcField(TDataSet  *DataSet)

{

    AnimalsQuerymass->AsInteger=

       AnimalsQuerySIZE->AsInteger*AnimalsQueryWEIGHT->AsInteger;

 }

9. Включите модуль данных в основную программу.

10. В верхней части формы  поместите  объект TPanel, на панель поместите два объекта TButton.

11. Пониже разместите объект TDBImage и TDBGrid как показано на рисунке.

12. Покажите в сетке поля: NAME, SIZE, WEIGHT, MASS. Для этого вызовите Columns Editor из контекстного меню из окна свойств инспектора объектов.

13. Выберите для сетки указанные поля.

14. Свяжите компонент TDBImage с полем BMP.(свойство DataSource, свойство DataField)

15. Создайте процедуру при нажатии кнопки “Modify Field”. (Свойство Name-ModifyBtn)

void __fastcall TForm1::ModifyBtnClick(TObject *Sender)

{

 int i;

  AnsiString S;

 

  DMod->AnimalsQuery->Edit();

  i = DMod->AnimalsQuerySIZE->Value;

  S = DMod->AnimalsQueryNAME->Value;

  i += 1;

  S = "FFF";

  DMod->AnimalsQuerySIZE->Value = i;

  DMod->AnimalsQueryNAME->Value = S;

 

}

16. Для кнопки  “Cancel Modify Field” создайте процедуру отмены изменений:

void __fastcall TForm1::Button2Click(TObject *Sender)

{

Dmod->AnimalsQuery->Cancel();

}

17. Запустите приложение. Убедитесь в его работоспособности.

Задание №2

1. Data

2. Откройте новое приложение и введите в него модуль данных.

3. Добавьте в модуль данных таблицы Books  и Authors.

4. Присвойте таблицам и соответсвующие имена, например  AuthorTable, BookLookupTable, AuthorSource, BookLookupSource

5. Откройте  Fields Editor для обеих таблиц создайте объект для каждого из полей.

6. Введите в модуль данных второй экземпляр таблицы Book. Присвойте таблице и источнику данных соответствующие имена BookDetailTable, BookDetailSource.

7. Свяжите таблицы BookDetailTable и AuthorTable.

8. Создайте в таблице AuthorTable вычисляемое поле под названием FirstLast.

9. После создания вычисляемого поля присвойте следующий метод событию OnCalcFields:

void __fastcall TMod::AuthorTableCalcFields(TDataSet *DataSet)

{

  AuthorTableFiestLast->AsString=AuthorTableFiest->AsString+”  “+AuthorTableLast->AsString;

}

10. Создайте поле просмотра. Откройте окно Fields Editor. Создайте новое поле под названием AuthorLookup. Задайте в качестве значения его свойства Type тип String, в качестве значения свойства Field Type –тип Loolup. Свойство KeyField должно иметь свойство AuthNo, свойство DataSet –значение AuthorTable, свойство Lookup Key значение-значение AuthNo, свойство Result Field –значение FirstLast.

11. Поместите  в основную форму два компонента TDBGrid. Свяжите их с таблицами модуля данных.

Сохраните приложение. Запустите его на выполнение.