Логин: Пароль:    Регистрация Всеми возможностями сайта можно пользоваться
только после авторизации.
   Забыли пароль?

Поиск
L



Статистика
u
Пользователи онлайн: нет
Гостей онлайн: 1
Всего онлайн: 1
Зарегистрировано юзеров: 6358
Комментариев на сайте: 645
Новый юзер: Realtyvaday



Последние комментарии
c
Aqel прокомментировал "Урок 71 - Работа с сжатыми файлами":
GZip псевдоархив, на мой вопрос тоже не отвечают, как распаковать отдельные файлы/папки...
Pingitrus прокомментировал "Урок 71 - Работа с сжатыми файлами":
Есть еще кто нибудь живой на этом сайте, кто сможет помочь? Так то все работает, zip и rar распаковывает, но у меня есть файл dat который сжат GZip, почему то его не удается распаковать или так не получится так как этот файл не является архивом или является?)) пишет ошибку что неверная функция



Мы в соцсетях
c
Delphi
Урок 32 - Объединение всего изученного про базы данных

   В этом уроке мы объединим все, что прошли ранее.

Для начала нам нужно создать пустую таблицу "кадры" с набором полей: "Имя, Фамилия, Отчество, Телефон, Статус". Всё точно также как это делали в прошлом уроке.

Таблица


   Также возьмём за основу пример программы из прошлого урока, добавим 3 кнопки и проверим нашу таблицу:

Таблица


   Мы напишем программу для полноценного управления базой данных (добавление, редактирование, удаление). Добавим новую форму и положим на неё следующие компоненты:

Вторая форма


   Форма готова и чтоб начать задавать свойства нам нужно подключить 2 юнит к 1 юниту, потому что без этого мы не можем обратится к первой форме из второй. Делается это очень просто, создаем обработчик события OnClick на 1 кнопке:
procedure TForm2.Button1Click(Sender: TObject);
begin
Form1.Show; // Вызываем что-нибудь из 1 формы
end;
   И у нас вылезет вот такое окно:

Добавить во второй юнит первый?


   Нажимаем ОК и первая форма подключается ко второй, можно использовать её свойства. Всем DBEdit'ам и BDComboBox1 свойство DataSource зададим как Form1.DataSource1, а DataField как "Имя", "Фамилия", "Отчество", "Телефон", "Статус" соответственно. Далее настроим еще одно свойство у DBComboBox1, кликаем на Items и заполняем его как на рисунке:

Items у DBComboBox1


   Теперь нам надо изменить наш ранее созданный обработчик события на кнопке "ОК", стираем там все что есть и пишем новый код:
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. Все поиск у нас есть, давайте его опробуем, запускаем программу и вводим "ми":

Поиск слова `ми`


   И выделяется "Мигель", Вводим "мих", выделяется "Михаил":

Поиск слова `мих`


Удачи!
Встретимся в следующем уроке!


Источник: www.thedelphi.ru
Автор: Савельев Александр
Опубликовано: 2 Мая 2013
Просмотров:

Урок 31 - Продолжение работы с базами данных Урок 33 - Автовыключатель компьютера

Зарегистрируйтесь или авторизуйтесь, чтобы добавлять комментарии.



аватар Добавил(а): 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 настроил)?