Экспорт данных в Excel из Access, используя ADO в Delphi
В качестве примера рассмотрим реализацию экспорта данных в MS Excel, из БД ADO Access. Для этого создадим БД , например — Телефонный справочник.
Итак, для начала перейдем в папку с нашим проектом, кликаем там правой клавишей мыши, выбираем Создать — Microsoft Access База данных и открываем ее. И заполняем поля как на рисунке.
Тип данных поля ID выбираем счетчик, и назначаем его ключевым. Все остальные поля у нас будут текстовыми. Далее сохраняемся и в появившемся поле пишем имя нашей таблицы, по которому в дальнейшем будем к ней обращаться.
Например, нашу назовём Справочник.
Затем закрываем Access и переходим в Delphi.
Помещаем на форму компоненты:
- DBGrid1 (В моем случае это DBGridEh1);
- ADOConnection1, DataSuorce1 и ADOTable1;
- И 5 Клавиш Button;
Далее выделяем компонент ADOConnection1, свойство LoginPrompt устанавливаем в false, кликаем в свойстве ConnectionString и в появившемся окне выбираем Build.
Выбираем драйвер как на скриншоте,
(если вы используете более ранние версии Delphi и Office, то в место указанного в скриншоте драйвера, выбирайте Microsoft Jet 4 OLE DB Provider).
Жмем далее и в поле – «Источник данных», прописываем полный путь к файлу нашей базы данных.
C:\Users\Администратор\Documents\RAD Studio\Projects\Телефонный справочник\Microsoft Access База данных.accdb
Жмем Ok и переходим к компоненту DataSource1 в свойстве DataSet которого выбираем ADOTable1. В свойстве DataSource компонента DBGridEh1, выбираем DataSource1.
Теперь выделяем компонент ADOTable1 и начинаем заполнять его основные свойства, так в свойстве TableName выбираем Справочник. В свойстве Connection выбираем ADOConnection1 и свойство Active устанавливаем в true, после чего наш DBGridподключит таблицу нашей базы данных.
Осталось выровнять столбцы в нашеё таблице, чтобы все корректно отображалось в DBGridEh1.
Для этого создадим обработчик событий FormCreate на форме, где для выравнивания ширины столбцов, запишем следующий код:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
begin //Столбец ID отображать не будем. DBGridEh1.Columns.Items[0].Visible:=false; DBGridEh1.Columns.Items[1].Width:=100; DBGridEh1.Columns.Items[2].Width:=100; DBGridEh1.Columns.Items[3].Width:=100; DBGridEh1.Columns.Items[4].Width:=100; DBGridEh1.Columns.Items[5].Width:=200; //Кнопки 2,3,4 отображать тоже не будем. Button2.Visible:=False; Button3.Visible:=False; Button4.Visible:=False; end; |
Теперь свойство Width компонента DBGridEh1 выставляем в 638 (ширина грида). А его свойство ReadOnly, выставляем в True — чем запретим редактирование данных пользователем в таблице напрямую.
Сохраняем все, запускаем проект…
Расписываем события для кнопок.
Создаем обработчик событий на Button1, где записываем
1 2 3 4 5 6 7 8 9 |
begin DbGridEh1.ReadOnly:=False; AdoTable1.Edit; Button1.Enabled:=false; Button2.Visible:=true; Button3.Visible:=true; Button4.Visible:=true; Button5.Visible:=false; end; |
В свойстве Caption кнопки Button1 пишем — «Редактировать»
Создаем обработчик событий на Button2, где записываем
1 2 3 |
begin ADOTable1.Insert; end; |
В свойстве Caption кнопки Button2 пишем — «Добавить«
Создаем обработчик событий на Button3, где записываем
1 2 3 |
begin ADOTable1.Delete; end; |
В свойстве Caption кнопки Button3 пишем — «Удалить«
Создаем обработчик событий на Button4, где записываем
1 2 3 4 5 6 7 8 9 10 |
begin AdoTable1.Edit; ADOTable1.Post; DBGridEh1.ReadOnly:=True; Button1.Enabled:=True; Button2.Visible:=False; Button3.Visible:=False; Button4.Visible:=False; Button5.Visible:=True; end; |
В свойстве Caption кнопки Button4 пишем — «Сохранить», в свойстве Caption кнопки Button5 пишем — «Экспорт в Эксель».