Урок 32 - Объединение всего изученного про базы данных
В этом уроке мы объединим все, что прошли ранее.
Для начала нам нужно создать пустую таблицу "кадры" с набором полей: "Имя, Фамилия, Отчество, Телефон, Статус". Всё точно также как это делали в прошлом уроке.
Также возьмём за основу пример программы из прошлого урока, добавим 3 кнопки и проверим нашу таблицу:
Мы напишем программу для полноценного управления базой данных (добавление, редактирование, удаление). Добавим новую форму и положим на неё следующие компоненты:
Форма готова и чтоб начать задавать свойства нам нужно подключить 2 юнит к 1 юниту, потому что без этого мы не можем обратится к первой форме из второй. Делается это очень просто, создаем обработчик события OnClick на 1 кнопке:
procedure TForm2.Button1Click(Sender: TObject); begin Form1.Show; // Вызываем что-нибудь из 1 формы end;И у нас вылезет вот такое окно:
Нажимаем ОК и первая форма подключается ко второй, можно использовать её свойства. Всем DBEdit'ам и BDComboBox1 свойство DataSource зададим как Form1.DataSource1, а DataField как "Имя", "Фамилия", "Отчество", "Телефон", "Статус" соответственно. Далее настроим еще одно свойство у DBComboBox1, кликаем на Items и заполняем его как на рисунке:
Теперь нам надо изменить наш ранее созданный обработчик события на кнопке "ОК", стираем там все что есть и пишем новый код:
procedure TForm2.Button1Click(Sender: TObject); begin Form1.ADOQuery1.Post; // Фиксируем изменения Close; // Закрываем форму end;И сразу же создадим обработчик события на кнопке "Добавить" на первой форме:
procedure TForm1.Button1Click(Sender: TObject); begin Form2.Show; // Показываем вторую форму ADOQuery1.Insert; // Добавляем строку end;У нас опять вылезет сообщение о том что надо добавить первый юнит ко второму, соглашаемся, компилируем и добавляем:
Теперь можно заполнять базу данных. Удаляются значения так, создаем обработчик события кнопки "Удалить" на первой форме:
procedure TForm1.Button3Click(Sender: TObject); begin ADOQuery1.Delete; // Удаляем элемент end;Все, выделенная строка исчезает. Также легко можно изменить строку, создаем обработчик события кнопки "Изменить":
procedure TForm1.Button2Click(Sender: TObject); begin Form2.Show; // Показываем вторую форму end;У нас просто показывается вторая форма и выделенную строку можно изменять.
Теперь представим что наша база данных состоит из тысячи строки и нам надо найти одну единственную, эта задача решается поиском строки, это мы сейчас и сделаем. Кидаем на форму компонент StatusBar и 2 раза кликаем на неё, в открывшемся окне создаем новую панель и закрываем. Создаем глобальную переменную fs: String и в обработчике события OnKeyPress DBGrid1 пишем код:
procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char); begin fs:= fs + Key; // Прибавляем символ нажатой клавиши к искомому слову DBGrid1.DataSource.DataSet.Locate('Имя', fs, [loPartialKey]); // Выполняем поиск в столбце "Имя" StatusBar1.Panels.Items[0].Text:= 'Ищем: ' + fs; // выводим что мы ввели end;И что бы во время печатания слова мы случайно не изменили значение в таблице надо установит свойство dgRowSelect у DBGrid1, которое находится в списке Options на True. Все поиск у нас есть, давайте его опробуем, запускаем программу и вводим "ми":
И выделяется "Мигель", Вводим "мих", выделяется "Михаил":
Удачи!
Встретимся в следующем уроке!
Добавил(а): FallenRu | Дата: 2013-06-01 | |
А как создать поиск (если нету adoquary, а есть ado table) ?поподробней если не сложно с *.locate
![]() ![]() ![]() ![]() |
Добавил(а): FallenRu | Дата: 2013-06-01 | |
Уже не надо))
![]() ![]() |
Добавил(а): mikkylovejoe | Дата: 2013-06-20 | |
А как сделать так что б таблица таблица сама подвигалась влево, а то все время самому приходится её двигать.
|
Добавил(а): s-kozelsk | Дата: 2018-03-20 | |
Подскажите кто-нибудь, что делать если при запуске не могу ничего ввести в dbEdit (Readonly = false, Enebled = true, Datasource настроил)?
![]() |
-
можете подробно объяснить ( Теперь представим что наша база данных состоит из тысячи строки и нам надо найти одну единственную, эта задача решается поиском строки, это мы сейчас и сделаем. Кидаем на форму компонент StatusBar и 2 раза кликаем на неё, в открывшемся окне создаем новую панель и закрываем. Создаем глобальную переменную fs: String и в обработчике события OnKeyPress DBGrid1 пишем код:) этот часть