Среда, 22.11.2017, 01:49
Приветствую Вас Гость

Не ошибается тот, кто ничего не делает.
Но и ничего не делать - ошибка.

Эмиль Кроткий

Меню сайта
Категории раздела
Delphi [12]
Материалы, связанные с программирование на Delphi
Форма входа

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0


















Тиц
Главная » 2011 » Октябрь » 2 » Добавление записей из таблицы MS Ecxel в базу данных MS Access средствами Delphi.
14:33
Добавление записей из таблицы MS Ecxel в базу данных MS Access средствами Delphi.
Добавление записей из таблицы MS Ecxel в базу данных MS Access средствами Delphi.

Добавление записей из таблицы MS Ecxel в базу данных MS Access средствами Delphi.        В предыдущем посту мы научились, подключать таблицу MS Excel с помощью компонента ADOConnection. В данной статье, используя подключение через компонент ADOConnection, мы научимся загружать (экспортировать) данные из листа MS Excel в базу данных созданную в MS Access.
Данная статья будет полезна тем, кто в своей программе хочет использовать экспорт данных из
MS Excel в MS Access. Или просто хочет быстро заполнить свою базу данных из уже готовой таблицы  MS Excel.



Для начала создадим файл таблицу MS Excel как показано на рисунке:
Первый ряд таблицы MS Excel при экспорте в MS Access служит полями базы данных.

Добавление записей из таблицы MS Ecxel в базу данных MS Access средствами Delphi.

сохраним с именем 2.xlsx.
Затем создадим базу данных  MS Access с таблицей t1 как показано на рисунке:

Добавление записей из таблицы MS Ecxel в базу данных MS Access средствами Delphi.

все поля текстового типа. Название полей  должны в точности соответствовать названием полей в MS Excel. Далее сохраняем базу данных с именем bd.mdb в формате MS Access 2002-2003. И копируем созданные файлы в папку с будущим проектом.
Запускаем Delphi и создаем новое приложение  File -> New-> VCL Forms Application – Delphi.

Добавление записей из таблицы MS Ecxel в базу данных MS Access средствами Delphi.

Размещаем на форме компонент кнопку TButton из вкладки Standard. Назовем ее Экспорт.

Добавим компонент TADOConnection  и TADOQuery из вкладки dbGo (ADO).

В инспекторе объектов для компонента ADOConnection1 выбираем свойство ConnectionString и вписываем туда следующую строку для MS Excel 2007:

Provider =Microsoft.ACE.OLEDB.12.0; Data Source =2.xlsx; Extended Properties ="Excel 12.0 Xml;HDR=YES";

Файл 2.xlsx должен находиться в папке с приложением.

При указании полного пути до файла:
Provider =Microsoft.ACE.OLEDB.12.0; Data Source =c:\myFolder\myExcel2007file.xlsx; Extended Properties ="Excel 12.0 Xml;HDR=YES";

Если у вас  MS Excel 2003 то вписываем  следующую строку:

Provider=Microsoft.Jet.OLEDB.4.0;Data Source=2.xls;Extended Properties=Excel 8.0;

Файл 2.xls должен находиться в папке с приложением.

Другие способы подключение смотрите в предыдущем посту.

После установки подключения убираем, галочку  со свойства LoginPromt, чтоб не запрашивал пароль при подключении.

Перед запуском на выполнение, необходимо убрать галочки у компонента ADOConnection1 -- >Connected  и у компонента ADOQuery --> Active иначе будут сыпаться ошибки, типа не могу подключиться, так как подключение уже используется.

Далее для события OnClick кнопки «Экспорт» пишем следующий код:

procedure TForm1.Button1Click(Sender: TObject);
begin
ADOQuery1.Active:=False;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('insert into t1 IN bd.mdb select * from [Лист1$]');
ADOQuery1.ExecSQL;
end;

А для события OnCreate формы пишем:

procedure TForm1.FormCreate(Sender: TObject);
begin
ADOConnection1.Connected:=true;
end;

Сохраняем, запускаем на выполнение и проверяем содержимое базы данных.

Теперь немножко по структуре запроса 'insert into t1 IN bd.mdb select * from [Лист1$]'

INSERT INTO – означает, что запрос будет на добавление записей;
t1  - таблица базы, в которую будем добавлять записи.
IN путь к базе с именем базы. Если база расположена в папке с приложением, достаточно указать только имя базы данных.
select * - означает, что выбираем все записи;
from [Лист1$] – выбирать будем из таблицы MS Excel Лист1.

И еще пример использования запроса  INSERT INTO  на добавление новой записи в таблицу:

INSERT INTO users (login, pass) values('TestUser', '123456')

При добавлении записи вначале идёт команда "INSERT INTO", затем название таблицы, в которую мы вставляем запись. Далее идёт в круглых скобках названия полей, которые мы хотим заполнить. А затем в круглых скобках после слова "values" начинаем перечислять значения тех полей, которые мы выбрали. После выполнения этого запроса в нашей таблице появится новая запись.

В статье использованы материалы с сайта http://devdelphi.ru/?p=90 , там же можно найти более сложный вариант конвертации данных из таблицы MS Ecxel в базу данных MS Access  а также другие статьи по работе с базой данных.

Нравится
Спасибо за внимание.

Скачать исходники к статье можно здесь.

Другие статьи по работе с MS Excel:

Работа с EXCEL из Delphi.

Учимся работать с MS Excel через подключение ADOConnection в Delphi.



Категория: Delphi | Просмотров: 9929 | Добавил: xaramamburu | Рейтинг: 5.0/1
Всего комментариев: 4
3  
И ещё вопрос. В 'insert into t1 IN bd.mdb select * from [Лист1$]'           вместо * можно указать любое название столбца?  и можно ли в этой конструкции использовать любой SQl запрос типа where ,join  и т.д?

2  
Добрый день. Спасибо за полезные статьи.  Скачал исходники, запускаю, выдаёт ошибку Не удается найти указанный поставщик.Вероятно, он установлен не правильно.  Жму ОК, открывается прога с кнопокой експорт при нажатие на кнопку такаяже ошибка

4  
Пример написан на Delphi 2010 под Windows Vista  и пакетом Microsoft Office 2007, нормально работал под Windows XP, как этот пример поведет себя в других условиях не знаю. (((

1  
Спасибо огромное!!!!!!! hands

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Календарь
«  Октябрь 2011  »
ПнВтСрЧтПтСбВс
     12
3456789
10111213141516
17181920212223
24252627282930
31
Архив записей
Поиск
Наш опрос
Оцените мой сайт
Всего ответов: 532
Уголок общения



Copyright MyCorp © 2017Конструктор сайтов - uCoz