Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.04.2010, 09:27   #1
Tanuska___:)
Пользователь
 
Аватар для Tanuska___:)
 
Регистрация: 22.04.2008
Сообщений: 84
По умолчанию как увеличить скорость заполнения данных в mdb из excel

Уважаемые программисты, у меня такой вопрос:
заношу из excel записи (где то 14000) в таблицу бд аксес.
вот кусок кода этого процесса:
Код:
I:=2;
V:= Sheet.Cells[I, 1].Value;
While Not VarIsEmpty(V) do
begin
    Edit17.Text:=Sheet.Cells[I, 2].Value;
    Edit9.Text:=Sheet.Cells[I, 11].Value;
  
  t:='insert into rabota (GARN1,dat) values ('+ QuotedStr(Edit17.Text)+','+ QuotedStr(Edit9.Text)+')';
      with ADOQuery do
      begin
      Close;
      SQL.Clear;
      SQL.Text:=t;
      ExecSQL;
      end;
    Inc(I);
 V:= Sheet.Cells[I, 1].Value;
 end;
при этом добавление такого кол-ва записей происходит в течении часа
может кто знает из за чего тормозится процесс? буду рада любому ответу.
Tanuska___:) вне форума Ответить с цитированием
Старый 22.04.2010, 09:40   #2
dron-s
Форумчанин
 
Регистрация: 04.03.2007
Сообщений: 615
По умолчанию

Код:
I:=2;
V:= Sheet.Cells[I, 1].Value;
While Not VarIsEmpty(V) do
begin
  t:='insert into rabota (GARN1,dat) values ('+ QuotedStr(Sheet.Cells[I, 2].Value)+','+ QuotedStr(Sheet.Cells[I, 11].Value)+')';
      with ADOQuery do
      begin
      Close;
      SQL.Clear;
      SQL.Text:=t;
      ExecSQL;
      end;
    Inc(I);
 V:= Sheet.Cells[I, 1].Value;
 end;
комп лишком тормозной
dron-s вне форума Ответить с цитированием
Старый 22.04.2010, 10:24   #3
Tanuska___:)
Пользователь
 
Аватар для Tanuska___:)
 
Регистрация: 22.04.2008
Сообщений: 84
По умолчанию

просто если это делать с помощью экспорта в самой аксесс все выполняется в течении 3 секунд...
может компоненты целяют бызу при каждой записи. хотя использую стандартное адоконнект и адоквери
Tanuska___:) вне форума Ответить с цитированием
Старый 22.04.2010, 10:30   #4
Grag
А может и не...
Участник клуба
 
Аватар для Grag
 
Регистрация: 27.03.2010
Сообщений: 1,269
По умолчанию

Я такие операции делаю через вариантные матрицы, выделяю область данных таблицы Excel, затем копирую эту область в матрицу (выполняется очень быстро), а потом уже из матрицы выгружаю данные в таблицу БД...
Перемешивай дело с бездельем и не сойдешь с ума...
Grag вне форума Ответить с цитированием
Старый 22.04.2010, 10:50   #5
plato
Форумчанин
 
Регистрация: 23.01.2009
Сообщений: 107
По умолчанию

использую вариантные массивы
есть обратный пример: http://www.delphisources.ru/pages/fa...excel_rep.html
переделай под себя
будет быстро
и не забудьте подарить детям шоколадку
plato вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скорость заполнения памяти разными способами. Alexcomeback Общие вопросы C/C++ 2 20.05.2009 23:14
Копирование данных типа Дата из Excel в mdb таблицу Dimok82 БД в Delphi 0 14.03.2009 11:34
запись в БД(*.MDB) из Excel VB MUZDIE Microsoft Office Excel 1 18.01.2008 17:13
Запись в БД(*.MDB) из Excel VB MUZDIE Помощь студентам 2 18.01.2008 12:58