Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛР_РиЭУБД.doc
Скачиваний:
2
Добавлен:
01.05.2025
Размер:
4.09 Mб
Скачать

Лабораторная работа №9 Метод GetTableNames

Цель работы:

- ознакомиться с методом GetTableNames;

Теоретическая часть

Изучите теоретический материал, загрузив из папки файл ADODataSet.pps

Практическая часть

Ход работы

  1. Создайте в своей папке на жестком диске Student папку с названием «ЛР_9».

  2. Из каталога «ЛР_8» скопируйте заполненную базу данных «Books.dbf» и заполненную базу данных «Izdatelstvo.dbf».

  3. Разместите на форме следующие компоненты:

    • ADOConnection1 (вкладка ADO);

    • ADODataSet1 (вкладка ADO);

    • DataSource1 (вкладка Data Access);

    • DBGrid1 (вкладка Data Control);

    • DBNavigator1 (вкладка Data Control);

    • ListBox1 (вкладка Standard);

    • Button1, Button2, Label1, Label2 (вкладка Standard);

    • Image1 (вкладка Additional).

Примерный вид проектируемой формы представлен на Рис.9.1.

  1. Установите свойства компонентов в соответствии с Таблицей 9.1.

Таблица 9.1. Свойства компонентов приложения «Метод GetTableNames»

Компонент

Свойство

Значение

Form1

Caption

Метод GetTableNames

BorderStyle

bsSingle

BorderIcons

biMinimize

False

biMaximize

False

Color

По своему усмотрению

Button1

Caption

Показать таблицы

Button2

Caption

Просмотреть выбранную таблицу

Label1

Caption

Список таблиц

Label2

Caption

Выбранная таблица

ADOConnection1

ConnectionString

Установите связь с каталогом (папкой) таблиц баз данных Books и Izdatelstvo

LoginPrompt

False

ADODataSet1

Connection

ADOConnection1

DataSource1

DataSet

ADODataSet1

DBGrid1

DataSource

DataSource1

DBNavigator1

DataSource

DataSource1

VisibleButtons

nbFirst

true

nbPrior

true

nbNext

true

nbLast

true

Остальные кнопки

false

  1. При нажатии на кнопку «Показать таблицы» имена таблиц должны отобразиться в списке ListBox1. Получить имена всех таблиц базы данных позволяет метод GetTableNames компонента ADOConnection1.

Выполните двойной щелчок на компоненте Button1 и запишите обработчик события OnClick:

procedure TForm1.Button1Click(Sender:TObject);

begin

AdoConnection1.GetTableNames(ListBox1.Items); //помещаем имена таблиц в список ListBox1

end;

  1. При нажатии на кнопку «Просмотреть выбранную таблицу» таблица, выделенная в списке ListBox1, должна отобразиться в сетке DBGrid1, и в компоненте Image1 отобразиться соответствующий рисунок. Для этого используется компонент-набор ADODataSet1. Если в списке ListBox1 не выделена ни одна таблица, то необходимо вывести об этом соответствующее сообщение.

  1. Выполните двойной щелчок на компоненте Button2 и запишите обработчик события OnClick:

procedure TForm1.Button2Click(Sender: TObject);

var i:byte;

fl:boolean;

begin

fl:=false;

if (listbox1.Items.Count=0) //если в списке таблицы отсутствуют,

then messagedlg('Нет таблиц!',mtInformation,[mbOK],0)

//то вывести об этом соответствующее сообщение

else //иначе

begin

for i:=listbox1.Items.Count-1 downto 0 do

if listbox1.Selected[i] then //если выбран элемент списка [i], то

begin

fl:=true;

adodataset1.Close; //закрываем набор данных

adodataset1.CommandText:=St+Listbox1.Items[i]; //формируем свойство

//CommandText из строки st и названия таблицы,

//которое берется из списка ListBox1

adodataset1.Open; //открываем набор данных, при этом

if listbox1.items[i]='Books' then //если название элемента списка Books, то

begin

image1.Picture.LoadFromFile('Books.wmf'); //загрузить картинку из файла ‘Books.wmf’

DBGrid1.Columns[0].Title.caption:='Издательство';

//русифицируем названия столбцов сетки

DBGrid1.Columns[1].Title.caption:='Книга';

DBGrid1.Columns[2].Title.caption:='Автор';

DBGrid1.Columns[3].Title.caption:='Тираж';

DBGrid1.Columns[4].Title.caption:='Обложка';

DBGrid1.Columns[5].Title.caption:='Магазин';

DBGrid1.Columns[6].Title.caption:='Цена';

end

else //иначе

if listbox1.items[i]='Izdatelstvo' then

//если название элемента списка Izdatelstvo, то

begin

image1.Picture.LoadFromFile('Izdatelstvo.bmp');

//загрузить картинку из файла 'Izdatelstvo.bmp'

DBGrid1.Columns[0].Title.caption:='Издательство';

//русифицируем названия столбцов сетки

DBGrid1.Columns[1].Title.caption:='Город';

DBGrid1.Columns[2].Title.caption:='Год создания';

DBGrid1.Columns[3].Title.caption:='Директор';

end

else //иначе

image1.Picture.LoadFromFile(''); //ничего на загружаем в компонент Image

end;

if (not fl) //если список таблиц отображается, но таблица не выделена,

then messagedlg('Таблица не выбрана!',mtinformation,[mbOK],0);

//то вывести соответствующее сообщение

end;

end;

  1. Строка st получает значение “select * from во время создания формы. Выполните двойной щелчок по форме и напишите обработчик события OnCreate:

procedure TForm1.FormCreate(Sender: TObject);

begin

st:='select * from ' ;

end;

  1. Для корректной работы приложения необходимо глобально объявить переменную st строкового типа:

var Form1:TForm;

st: string;

  1. При закрытии приложения (уничтожении формы) ADO-набор необходимо закрыть. Запишите обработчик события OnDestroy для формы:

procedure TForm1.FormDestroy(Sender: TObject);

begin

adodataset1.Close;

end;

  1. Сохраните проект.

  2. Запустите проект на выполнение. При появлении сообщения об ошибке нажмите ОК и выберите команду RunProgram Reset (Ctrl+F2).

  3. Выйдите из среды Delphi 7, и, запустив exe-файл, проверьте работоспособность приложения. Вид работающего приложения приведен на Рис.9.2 – 9.3.