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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.07.2015, 08:13   #1
Ernest027
Форумчанин
 
Регистрация: 27.04.2015
Сообщений: 437
По умолчанию таблицу из буфера ado

Привет всем)
как это можно осуществить?
сейчас делаю так:
копирую в буфер, засовываю в stringgrid и оттуда в ado. работает хорошо, но долго. как сделать побыстрее?
Спасибо)
Ernest027 вне форума Ответить с цитированием
Старый 27.07.2015, 08:53   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

А сколько ко же записей ты вставляешь?
И откуда копируешь?
И сколько времени это занимает?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.07.2015, 09:17   #3
Ernest027
Форумчанин
 
Регистрация: 27.04.2015
Сообщений: 437
По умолчанию

1) 6420 записей.
2) из программы к прибору,где выводится таблица
3) секунд 15-20
Ernest027 вне форума Ответить с цитированием
Старый 27.07.2015, 10:51   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

StringGrid визуальный компонент, он нужен для ВИЗУАЛИЗАЦИИ (отображения) данных, рекомендую ИСКЛЮЧИТЬ его из данной цепочки, должно ускорить.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 27.07.2015, 10:59   #5
Ernest027
Форумчанин
 
Регистрация: 27.04.2015
Сообщений: 437
По умолчанию

а как таблицу из буфера в ado сразу засунуть?
Ernest027 вне форума Ответить с цитированием
Старый 27.07.2015, 11:42   #6
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

Цитата:
а как таблицу из буфера в ado сразу засунуть?
А как ты эту таблицу(буфер) запихиваешь в StringGrid ?
И что это за буфер ?!
И как из StringGrid, который про ADO ничего не знает, КОПИРУЕШЬ в ADO, если не знаешь как запихнуть в ADO.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 27.07.2015 в 11:49.
evg_m на форуме Ответить с цитированием
Старый 27.07.2015, 11:52   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
из программы к прибору,где выводится таблица
А причем тут ADO?
Цитата:
как таблицу из буфера в ado сразу засунуть?
Сразу не получится. Все равно придется в цикле формировать запросы или вставку делать методами компонента.

Ernest027, ты подробнее всю ситуацию опиши, а то вопросы лишние назревают.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.07.2015, 12:31   #8
Ernest027
Форумчанин
 
Регистрация: 27.04.2015
Сообщений: 437
По умолчанию

в программе к прибору выделяю таблицу, копирую и загоняю в stringgrid так:

Код:
var
p:Integer;
i,l ,j, u : integer;
str, cell : TStringList;
begin

while not Datamodule2.ADOQuery1.Eof do
Datamodule2.ADOQuery1.Delete;

stringgrid1:=Tstringgrid.Create(form1);
stringgrid1.Parent:=form1;
stringgrid1.Visible:=false;

str := TStringList.create;
str.text :=ClipBoard.AsText;
cell := TStringList.create;
stringgrid1.RowCount:=1;
stringgrid1.ColCount:=1;
 for i:=0 to str.Count-1 do
  begin
   stringgrid1.RowCount:=stringgrid1.RowCount+1;
   cell.text := stringReplace(str[i], #9, #13#10, [rfReplaceAll]);
    for u:=0 to cell.Count-1 do
     begin
     if stringgrid1.ColCount - 1 < u then stringgrid1.ColCount:=stringgrid1.ColCount+1;
     stringgrid1.Cells[u, i] :=cell[u];
     end;
  end;
str.Free;
cell.Free;
stringgrid1.RowCount:=stringgrid1.RowCount-1;
for l := 0 to StringGrid1.ColCount do
for j:=0 to StringGrid1.RowCount-1 do
      
StringGrid1.Cells[l,j]:=StringReplace(StringGrid1.Cells[l,j], '.', ',', [rfReplaceAll]);

из stringgrid в ado загоняю так:

if stringgrid1.RowCount=4 then
begin
for l := 4 to stringgrid1.ColCount-2 do
begin
Datamodule2.ADOQuery1.Append;
Datamodule2.ADOQuery1.Edit;
Datamodule2.ADOQuery1.FieldByName('f').AsString:=StringGrid1.Cells[l,0];
Datamodule2.ADOQuery1.FieldByName('a').AsString:=StringGrid1.Cells[l,1];
Datamodule2.ADOQuery1.FieldByName('v').AsString:=StringGrid1.Cells[l,2];
Datamodule2.ADOQuery1.FieldByName('d').AsString:=StringGrid1.Cells[l,3];
Datamodule2.ADOQuery1.Post;
end;
end;

Последний раз редактировалось Stilet; 27.07.2015 в 13:34.
Ernest027 вне форума Ответить с цитированием
Старый 27.07.2015, 13:35   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

А эта программа к прибору никак данные по другому не дает?
Может стоит ее переписать?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.07.2015, 13:54   #10
Ernest027
Форумчанин
 
Регистрация: 27.04.2015
Сообщений: 437
По умолчанию

нет, прибор сделан так что файлы из него никак не вытащить, можно просмотреть только через эту программу. поэтому и приходится копировать таблицу и вставлять в мою прогу
Ernest027 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ADO, записи в таблицу User_IR_An БД в Delphi 4 09.04.2014 14:03
Нужно создать таблицу в access with ado hemn6vyr БД в Delphi 2 27.03.2013 22:56
как очистить всю таблицу в ado aleksandr1990 C++ Builder 1 10.11.2011 12:57
Не сохраняет данные в таблицу (ADO) alatir БД в Delphi 6 09.06.2010 02:39
Добавление записи в таблицу (ADO) Yura_S БД в Delphi 12 25.11.2009 19:11