Всем привет дорогие друзья! Продолжаем нашу тему, в которой мы рассматриваем работу с файловыми базами данных в Delphi. Мы продвигаемся постепенно, в первой статье рассмотрели общую структуру, во второй статье мы рассмотрели, как можно сохранять и открывать наш набор данных (только он у нас был пустой).
Сегодняшняя статья посвящена наполнению данного набора. То есть, мы начнем рассматривать, как можно добавлять записи в нашу файловую базу данных, удалять их, редактировать, а также осуществлять простейший поиск. Тут в принципе ничего сложного нет, а самое главное, что Вы в этом сейчас сами убедитесь.
Для начала не забудьте прочитать предыдущие статьи (это для тех, кто пропустил данную тему раньше, а только присоединился сейчас):
- Работа с файловыми базами данных. Часть 1 (описание общей структуры и схемы)
- Работа с файловыми базами данных. Часть 2 (сохранение и загрузка набора данных)
Ну что, часть пользователей мы уже подготовили, давайте приступать к рассмотрению данной темы. Скажу честно, что производить какие-то операции с файловым набором данных (редактирование, удаление, поиск, добавление), имеет такой же смысл, как и работа с другим набором данных (с другой базой), например ADO.
Ну что, давайте создадим проект в Delphi, разместим на форме следующие компоненты:
- TClientDataSet
- TDBGrid
- TButton
- TDataSource
- TOpenDialog
- TSaveDialog
В общем, проект у меня выглядит следующим образом:
Количество кнопок у Вас может быть разное. Установите так, чтобы мы могли сделать поиск, редактировать, удаление и добавление. А там по вашему усмотрению. Тут я не буду рассказывать, как компонент связывать между собой, а также как сохранять набор данных в файл и открывать его.
Начнем мы с добавления записи. Когда мы работали с ADO, то мы использовали процедуру Insert. Тут тоже самое, для добавления нам необходимо использовать данную процедуру, затем задать значения нашим полям и сохранить набор данных. В общем, добавление записи будет выглядеть следующим образом:
procedure TForm1.Button3Click(Sender: TObject);
begin
ClientDataSet1.Insert;
ClientDataSet1.Fields.Fields[1].AsVariant:='test';
ClientDataSet1.Fields.Fields[2].AsVariant:='test';
ClientDataSet1.Post;
ClientDataSet1.SaveToFile('test.xml',dfXML);
end;
Так как, я в первой статье создавал набор данных про телефоны, то я задал поле ID (тип — autoinc), которое автоматически увеличивается. Поэтому, я начинаю только со второго поля. Если Вы знаете конкретный тип поля, то можете его задавать напрямую. В конце нам необходимо сохранить набор данных, можно это сделать не только в файл, а в память, например.
Для редактирования данных, мы будем использовать процедуру Edit, а код будет следующим:
procedure TForm1.Button4Click(Sender: TObject);
begin
ClientDataSet1.Edit;
ClientDataSet1.Fields.Fields[1].AsVariant:='test2';
ClientDataSet1.Fields.Fields[2].AsVariant:='test2';
ClientDataSet1.Post;
ClientDataSet1.SaveToFile('test.xml',dfXML);
end;
То есть, смысл тот же самый. Нам для начала необходимо выделить запись в компоненте TDBGrid, которую хотим редактировать, затем переводим набор данных в редактирование, задаем новые значения и сохраняем его. Кстати, Вы можете задавать не номера полей, а их название, это будет выглядеть следующим образом:
ClientDataSet1.Fields.FieldByName('Phone').AsVariant:='test2';
С удалением все тоже самое, используем процедуру Delete. Это будет выглядеть следующим образом:
procedure TForm1.Button5Click(Sender: TObject);
begin
ClientDataSet1.Delete;
ClientDataSet1.SaveToFile('test.xml',dfXML);
end;
Для поиска можно использовать фильтры, либо же использовать функцию Locate:
procedure TForm1.Button6Click(Sender: TObject);
begin
ClientDataSet1.Locate('Phone','test2',[loCaseInsensitive]);
end;
Вы также можете перемещаться по набору данных, используя процедуры:
- Last
- Prior
- Next
- First
Вот и все! Теперь Вы знаете как быстро и просто использовать файловые базы данных в Delphi. Но цикл статей еще не заканчивается, так как дальше мы будем рассматривать структуру файлов для БД, а также работу с индексами. Проект прикладываю и Вы его можете скачать тут.