Создание простейшего клиента БД в Delphi. Краткое описание интерфейса Turbo Delphi 2006. Примитивная программа работы с БД, страница 7

If DataModule1.Stud_Table.Locate('Familia',Edit1.Text,[loCaseInsensitive])

  ThenShowMessage('Поиск успешно завершен.')

elseShowMessage('Искомый студент не найден!');

End;

В case проверяется по какому параметру будет проводиться поиск и задается соответствующее поле таблицы БД. Затем запускается собственно функция поиска по значению, введенному пользователем в поле SearchEdit, флаг указывает нам, что поиск будет вестись без учета регистра.

Эстеты (при желании) могут заменить «обычный» showmessage() более красивым MessageBox’ом (с подстройкой под информационное сообщение или сообщение об ошибке)

Замечание. Использование Locate может потребовать включения библиотеки DB в раздел uses того модуля, из которого она вызывается.

Последнее, что мы выполним в рамках данной лабораторной работы  это сделаем функциональным главное меню,  русифицируем его.

По умодчанию Delphi сделал нам следующие пункты и подпункты главного меню

File

Edit

Help

New

Open

Save

Save As

Exit

Cut

Copy

Paste

About

Большинство из пунктов меню продублированы кнопками панели инструментов.

Учитывая специфику нашей программы (клиентская часть БД) пункты меню Edit и Help просто переведем на русский язык, а пункты меню File доработаем более серьезно.

Пункт New можно удалить, т.к. подразумевается, что пользователь не будет создавать никаких новых БД.

Пункт Open в нашем контексте удобно перевести как «Подключиться к БД», а в обработчике выбора этого пункта написать код, подключающий нашу программу к серверу БД. Он может выглядеть примерно так:

begin

  if  OpenDialog.Execute then

  begin

  with DataModule1 do

  begin

    MyBase.Params.Values['database']:='localhost:'+OpenDialog.Filename;

    MyBase.Open;

    Stud_Table.open;

    Usp_Table.Open;

    Disc_Table.open;

//    Sdiappform.DBEdit1.DataSource:=Stud_src;

end;

  end;

end;

ВАЖНЕЙШЕЕ ЗАМЕЧАНИЕ 1  Для адекватной работы данного кода (чтобы выбор файла действительно работал) необходимо установить свойство LoadParamsOnConnect  в значение true.

ВАЖНЕЙШЕЕ ЗАМЕЧАНИЕ 2 В меню Delphi Project-> Options убедитесь в том, что форма DataModule1 создается раньше, чем главная форма. В противном случае  Вам придется долго ломать голову, почему же при успешном подключении к БД ни одна запись не отображается. Это обьясняется предельно просто:  в том случае когда главная форма создается раньше чем DataModule, объектов TDataSource на которые ссылаются  визуальные компонеты главной формы еще и нет. Следовательно, их свойства DataSource остается пустым! Закоментированная строчка представляет собой альтернативное (не лучшее) решение проблемы неотображения данных.

Group_Set

Пункт меню Save связываем с кодом выполняющим подтверждение (Commit) запущенной транзакции, что и указываем в его свойстве Caption.  Возможный код подтверждения всех внесенных в БД изменений приведен ниже.

with dm1 do

begin

  mybase.StartTransaction(MyTrans);

  Stud_table.ApplyUpdates(-1);

  Usp_table.ApplyUpdates(-1);

  Disc_Table.ApplyUpdates(-1);

  mybase.Commit(MyTrans);

end;

Параметром метода ApplyUpdates(N:integer) является число записей для которых необходимо принять изменения, -1 означает «все записи».

Пункт SaveAs можно было бы удалить как и пункт New, но целесообразнее связать его с кодом, проводящим откат транзакции.

with dm1 do

begin

  mybase.StartTransaction(MyTrans);

  mybase.Commit(RollBack);

end;

Пункт Exit просто переводим как «Выход» и не меняем его обработчики событий.

Разработчики Delphi обеспечили за нас функциональность всех пунктов меню «Edit» («Редактирование»), поэтому его просто переводим на русский язык. Единственный пункт меню «Help» («Помощь») «О программе» также без нашего участия, стараниями разработчиков Delphi вызывает новую форму с данными о спроектированной программе. Можете, если осталось время, добавить в это окно информацию о себе и своем первом опыте написания клиентского приложения к БД.

Возможный вид окна работающей программы представлен на рис. 3.4

Рисунок 3.5 – Окно альфа-версии программы.