среда, 23 октября 2013 г.

Экспорт данных в Excel из БД ADO Access 1 часть


   Ничто не сделает наше приложение универсальней, чем возможность его взаимодействия с другими программами. Например имеем некую базу данных ADO Access. Отлично! Можем вносить и редактировать данные, можем их даже распечатать, но если нам нужно отправить эти данные по электронной почте, в скажем качестве отчета, мы вынуждены сканировать распечатанное и затем только отправлять сканы адресату. Данное действо конечно же возможно, но как минимум, не совсем удобно. Слишком много лишних ходов. Другое дело, нажал на кнопку и все данные переместились в Вордовский или Экселевский файлы.
Здорово! Но как это сделать? Нет ничего проще!!!


   В этой статье мы об этом и поговорим. В качестве примера рассмотрим реализацию экспорта данных в MS Excel, из БД ADO Access. Для этого создадим БД ну например - Телефонный справочник. За одно вспомним как создается база данных и как она подключается к Delphi. Кто уже знает как это делается, может сразу перейти ко второй части. Итак, для начала перейдем в папку с нашим проектом, кликаем там правой клавишей, выбираем Создать - 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 на форме, где для выравнивания ширины столбцов запишем следующий код:

begin 

DBGridEh1.Columns.Items[0].Visible:=false; //Столбец ID отображать не будем. 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;

Button2.Visible:=False; //Кнопки 2,3,4 отображать тоже не будем. 
Button3.Visible:=False; 
Button4.Visible:=False; 

end; 

   Теперь свойство Width компонента DBGridEh1 выставляем в 638 (ширина грида). А его свойство ReadOnly, выставляем в True - чем запретим редактирование данных пользователем в таблице на прямую. Сохраняем все, запускаем проект…., и если все делалось внимательно, то наш грид должен принять вполне приличный видон.



 Дело осталось за малым, расписываем события для кнопок.
 Создаем обработчик событий на Button1, где записываем

 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, где записываем

 begin 

 ADOTable1.Insert; 

 end; 

 В свойстве Caption кнопки Button2 пишем - "Добавить" Создаем обработчик событий на Button3, где записываем:

 begin 

 ADOTable1.Delete; 

 end; 

 В свойстве Caption кнопки Button3 пишем - "Удалить" Создаем обработчик событий на Button4, где записываем:

 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 пишем - "Экспорт в Эксель". Ну вот собственно и все. В этой части мы вспомнили как создается и подключается база данных. Заготовка для работы у нас теперь есть, и в следующей части, мы научимся экспортировать данные из нашего справочника в MS Excel.

4 комментария:

Примечание. Отправлять комментарии могут только участники этого блога.