Работа с ADO в Delphi. Часть 2

9 минут на чтение

В первой части мы рассмотрели как правильно подключить БД MS Access в проект Delphi. Сейчас мы рассмотрим примитивную работа с данными компонентами, а также некоторые свойства их. Кроме это попробуем сделать небольшие запросы к БД и добавлять, редактировать информацию, удалять и перемещаться в таблице по записям. Мы все прекрасно помним компонент TDBGrid. Так вот в нем для удобства я нажал двойным щелчком левой кнопкой мыши и в появившемся окне я создал 2 поля, нажав на кнопку Add new. Затем выбрав первой поле в свойстве FildName я прописал вручную fio, в том же свойстве для второго поля я прописал oz. Затем я перешел в свойство Title раскрыл его и в подсвойстве Caption для 1-го поля я указал ФИО, а для 2-го поля я указал Оценка. Затем в свойстве компонента TDBGrid я раскрыл свойство Options и в подствойстве dgEditing я установил False, а в подсвойстве dgRowSelect я установил True. dgEditing - я запретил редактирование в самой таблице, а dgRowSelect этим свойством выделяется вся строка в таблице. На главную форму нашего приложения я «установил» следующие компоненты и вот что у меня получилось

Далее на кнопку «Добавить» я написал следующий код

procedure TForm1.Button1Click(Sender: TObject);
begin
try
if (Trim(Edit1.Text)='') or (Trim(Edit2.Text)='') then
begin
exit;
end;
ADOQuery1.Insert;
ADOQuery1.FieldByName('fio').AsString:=Edit1.Text;
ADOQuery1.FieldByName('oz').AsInteger:=StrToInt(Edit2.Text);
Edit1.Clear;
Edit2.Clear;
except
on e:Exception do
end;
end;

Здесь самой главное — это Insert. То есть это означает, что мы вставляем новую строку в нашу таблицу. FieldByName - указываем в какое поле мы вставляем информацию и AsType - необходимо указать тип наших данных, которые мы вставляем.

На кнопку «Удалить» я написал следующий код

procedure TForm1.Button2Click(Sender: TObject);
begin
try
if Application.MessageBox('Delete?','ADO',MB_YESNO)=IDYES then
begin
ADOQuery1.Delete;
end;
except
on e:Exception do
end;
end;

Здесь метод Delete, то есть с помощью него мы удаляем запись из таблицы на которой стоит указатель, мы конечно можем удалить с помощью запроса, но тогда нам придется получать уникальный номер записи, но это мы посмотрим в следующем уроке по базам данных.

На кнопку «Редактировать» я написал следующий код

procedure TForm1.Button3Click(Sender: TObject);
begin
try
ADOQuery1.Edit;
ADOQuery1.FieldByName('fio').AsString:=Edit1.Text;
ADOQuery1.FieldByName('oz').AsInteger:=StrToInt(Edit2.Text);
except
on e:Exception do
end;
end;

Здесь самое главное это метод Edit, который ставит текущую строку в режим редактирование, а дальше точно также как и с добавлением, редактирование и добавление также можно написать с помощью запросов, что мы и рассмотрим в следующей статье.

Перед тем как редактировать я на событие DBGrid - OnCellClick написал получение данные в наши поля, чтобы мы могли их отредактировать потом, то есть чтобы пользователь видел какие данные там раньше находились, до редактирования

procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
try
Edit1.Text:=ADOQuery1.FieldByName('fio').AsString;
Edit2.Text:=IntToStr(ADOQuery1.FieldByName('oz').AsInteger);
except
on e:Exception do
end;
end;

Здесь почти точно также как и в добавлении, только мы делаем все наооборот, присваиваем значения из таблицы в наши поля.

На кнопку «Вниз» я написал следующий код

ADOQuery1.Last;

Метод Last означает, что мы переместимся на последнюю запись нашей таблицы

На кнопку «Обновить» я написал следующий код

ADOQuery1.Refresh;

Метод Refresh означает, что мы обновляем данные в таблице и соответственно они обновляются и перед нами

На кнопку «Вверх» я написал следующий код

ADOQuery1.First;

Метод First означает, что мы перейдем на первую запись в нашей таблице

На кнопку «Далее» я написал следующий код

ADOQuery1.Next;

Метод Next означает, что мы будем проходить последовательно по записям вниз

На кнопку «Назад» я написал следующий код

ADOQuery1.Prior;

Метод Prior означает, что мы будем проходиться последовательно по записям нашей таблицы вверх

Далее после редактирования, добавления данных нам необходимо их сохранить, вот поэтому и существует у нас кнопку «Сохранить»  на событие OnClick, которой я написал следующий код

procedure TForm1.Button9Click(Sender: TObject);
begin
try
ADOQuery1.Active:=True;
ADOQuery1.Post;
except
on e:Exception do
end;
end;

Здесь все просто метод Post сохраняет все измененные данные в нашей таблице.

Далее идут у нас кнопку с небольшими запросами, на кнопке «Вывести всех с оценками 10» по событию OnClick я написал следующий код

procedure TForm1.Button10Click(Sender: TObject);
begin
try
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT * FROM Student WHERE oz=10');
ADOQuery1.Active:=True;
except
on e:Exception do
end;
end;

Здесь у нас идет обычный запрос с условием, условие у нас задается с помощью конструкции Where. Здесь мы и указываем какие записи выводить. Метод Clear - очищает все что было в SQL, а ADD - добавляет текст SQL.

Далее на кнопке «Вывести все фамилии, в которых присуствует Иван» я написал следующий код

procedure TForm1.Button11Click(Sender: TObject);
begin
try
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT * FROM Student WHERE fio LIKE ''%Иван%''');
ADOQuery1.Active:=True;
except
on e:Exception do
end;
end;

Здесь у нас уже новенькое в SQL-синтаксисе LIKE и конструкции %%, да именно эта конструкция и ищет совпадения Иван в поле fio во всех записях. И наконец выводим все записи нашей таблиц для этого достаточно написать следующий код

procedure TForm1.Button12Click(Sender: TObject);
begin
try
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT * FROM Student');
ADOQuery1.Active:=True;
except
on e:Exception do
end;
end;

Также во вкладке ADO есть хороший компонент TADOTable, который работает по такому же принципу как и TADOQuery, но в TADOTable нельзя формировать SQL-запросы, поэтому я предпочитаю TADOQuery. В следующей статьи про БД я напишу как добавлять, редактировать и удалять данные с помощью SQL-запросов. Исходник данной статьи Вы сможете скачать на странице Исходники

Facebook Vk Ok LinkedIn Telegram

Похожие записи:

Всем здравствуйте, в этой статье я хотел бы снова обратить внимание на Базы данных, а в частности работа с Базами данных по технологии ADO. Когда пользователь создает приложение на Delphi, работающего с СУБД, к которой присоединяется по технологии ADO, то к файлам проекта автомат...
Всем привет, и вот мой первый урок, думаю урок полезный, так как работа с базами данных в Delphi очень важно, а тем более Access на мой взгляд самая легкая база данных, с которой можно работать в Delphi. В этой статье я расскажу Вам как эту самую Базу данных Access подключить в Delphi, ну а в по...
Ну вот не долго думая, подошла вторая часть по работе с ADO в DELPHI на примере БД — MS Excel. В данной статье мы рассмотрим добавление и редактирование данных, так как с удалением тут возникли проблемы, в связи с тем, что данный драйвер не поддерживает удаление, ну с удалением мы что-...