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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.07.2015, 14:24   #11
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

Насколько понял исходную задачу
ЕСТЬ 4 строки и N столбцов исходной таблицы в Clipboard
НАДО записать в БД N записей по 4 поля в каждой
ПОКОЛОНОЧНАЯ запись!!!

Код:
str.text:=clipboard.text; //получаем ВСЮ таблицу и записывем ее в 4 строки списка (УЖЕ ЕСТЬ)
А теперь заводим 4 отдельных списка и вносим (разбираем) туда каждую строку ОТДЕЛЬНО
Код:
str0.text:=str[0]; // здесь конечно нужен и StringReplace!!!!
....
str3.text:=str[3];
Ну вот списки готовы!
Теперь если нужно и есть желание можем проверить правильность
Код:
str0.count =str1.count  and str1.count =str2.count and ...
А еще в нужные колонки добавляем перекодировку (. ->,)
Код:
str2.text:=StringReplace(str.text, '.', ',', []);
Фиксируем поля!
Код:
f1:=ado.FildField();
...
f4:=ado.findfield();
//да их можно (и даже нужно) запомнить
И начинаем загонять!!
Код:
for j:=0 to str1.count-1 do begin
  ado.append; ( и дополнительный Edit здесь не нужен)
  f1.value:=str0[j];
  ...
  f4.value:=str3[j];
  ado.Post;
end;
P.S. если есть желание и дальше работать со StringGrid, то
первое что надо будет сделать для снижения времени работы
ВЫКИНУТЬ из циклов ИЗМЕНЕНИЯ размеров таблицы.
Код:
StringGrid.rowcount :=....
StringGrid.colcount :=
отнимающее кучу времени.
Задавать размер нужно ОДИН РАЗ сразу как только мы узнали сколько строк (колонок) у нас будет.
Код:
StringGrid.colcount:=cell.count;
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 27.07.2015, 14:28   #12
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

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

а как это сделать?
как здесь эту строчку заменить?
Код:
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 в 16:48.
Ernest027 вне форума Ответить с цитированием
Старый 27.07.2015, 16:53   #14
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

Код:
var
  f1, f2, f3, f4: TField;

f1:=DataModule2.AdoQuery1.findField('f');
....

for j:=0 to str0.count -1 do begin
  DataModule2.AdoQuery1.Append;
  f1.AsString:=str0.Strings[j];
  ....
  DataModule2.AdoQuery1.Post;
end;
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 27.07.2015, 16:53   #15
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Код:
var row:TStringList;
...
row:=TStringList.Create;
with TStringList.Create do begin
 Text:=ClipBoard.AsText;
 for i:=0 to Count-1 do begin
  row:=stringReplace(Strings[i], #9, #13#10, [rfReplaceAll]);
  Datamodule2.ADOQuery1.Append;
  Datamodule2.ADOQuery1.FieldByName('f').AsString:=row[0];
  Datamodule2.ADOQuery1.FieldByName('a').AsString:=row[1];
  Datamodule2.ADOQuery1.FieldByName('v').AsString:=row[2];
  Datamodule2.ADOQuery1.FieldByName('d').AsString:=row[3];
 end;
 free;
end;
  row.free;
  Datamodule2.ADOQuery1.Post;
...
end;
Идея ясна?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.07.2015, 08:40   #16
Ernest027
Форумчанин
 
Регистрация: 27.04.2015
Сообщений: 437
По умолчанию

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

Не мала баба клопоту )))
Так у тебя там, как сказал бы Купетман, целый букет с подарочным?
Ты бы может всетки для начала определился со структурой БД? Если ты в нее хочешь пхать и числа и строки, то как-то же нужно подогнать таблицы под это дело?
И как у тебя тогда твой код работал, если я с него и сдер механизм?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.07.2015, 09:43   #18
Ernest027
Форумчанин
 
Регистрация: 27.04.2015
Сообщений: 437
По умолчанию

Я вставлял только числа) мне слова не важны,мне нужны числа. Поэтому и приходится не всю строку stringgrid'а вставлять в БД,а выборочно
Ernest027 вне форума Ответить с цитированием
Старый 28.07.2015, 10:40   #19
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Ну вставляй выборочно... Не понимаю в чем затык?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.07.2015, 11:54   #20
Ernest027
Форумчанин
 
Регистрация: 27.04.2015
Сообщений: 437
По умолчанию

В скорости. 2 минуты занимает процесс
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