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

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

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

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

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

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

Цитата:
вот я тоже не понимаю) Ваш код использовал)
ППЦ-ТРППЦ... У меня в коде нет никаких выводов сообщений.
Не знаю что ты там не то делаешь, но ты точно делаешь что-то не то.
Теперь мне вообще непонятно что у тебя происходит.
Не мучался бы ты с этим делом, ИМХО все равно ничего не получится.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.07.2015, 17:26   #32
Ernest027
Форумчанин
 
Регистрация: 27.04.2015
Сообщений: 437
По умолчанию

как же не получится?) Вы же помогаете)))

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

хорошо,а как тогда быть? начальную таблицу можно вытащить только в буфер,а потом надо ее засунуть в мою БД. как это иначе сделать?

Последний раз редактировалось Stilet; 28.07.2015 в 20:00.
Ernest027 вне форума Ответить с цитированием
Старый 28.07.2015, 20:01   #33
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Давай как-то отделим котлеты от насекомых.
1) Сделай текстовик, в который вставь из клипбоарда ту инфу, что хочешь парсить
2) Расскажи какие колонки тебе из нее нужны
3) Покажи программу целиком, с теми замечаниями, что уже были.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.07.2015, 08:15   #34
Ernest027
Форумчанин
 
Регистрация: 27.04.2015
Сообщений: 437
По умолчанию

Рис.1 это та таблица,которую я загоняю в буфер,а оттуда в stringgrid. В ней 1606 столбцов, нужны все кроме 1,2,3,4 и 1606. То есть нужны только те, где есть числа. Когда из stringgrid'а в БД качаю, тормозит, 1 минуту ждал! а это я еще не все условия поставил. Поставил условие
if strtofloat(stringgrid1.cells[j,l])>999 then
Datamodule2.ADOQuery1.FieldByName(' a').AsString:=floattostr(strtofloat (stringgrid1.cells[j,l])/1000);
и весь процесс уже занимал минуты 2.
Рис.2 это моя БД.
к сожалению вся программа сюда не лезет, вставляю только Unit1 и приведу код)

FORM1

Это Ваш код
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
row:TStringList;
begin
row:=TStringList.Create;
with TStringList.Create do begin
 Text:=ClipBoard.AsText;
 for i:=0 to Count-1 do begin
  row.Text:=stringReplace(Strings[i], '.',',', [rfReplaceAll]);

  Datamodule2.ADOQuery1.Append;
  Datamodule2.ADOQuery1.Edit;
  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];
  Datamodule2.ADOQuery1.Post;
 end;
 free;
end;
  row.free;
  Datamodule2.ADOQuery1.Post;
end;

procedure TForm1.DBGridEh2CellClick(Column: TColumnEh);//при выборе строки рисовался график в dbchart
begin
DataModule2.ADOQuery1.Close;
DataModule2.ADOQuery1.Open;
end;


procedure TForm1.N2Click(Sender: TObject);//удаление всех записей
begin
while not DataModule2.ADOQuery1.Eof do
DataModule2.ADOQuery1.Delete;
DataModule2.ADOQuery7.Delete;
end;

procedure TForm1.sBitBtn1Click(Sender: TObject);//добавление записи
begin
DataModule2.ADOQuery7.Append;
form3.Show;
end;
Изображения
Тип файла: jpg 1.jpg (19.1 Кб, 140 просмотров)
Тип файла: jpg 2.jpg (23.6 Кб, 146 просмотров)
Вложения
Тип файла: rar Вибрация.rar (88.0 Кб, 7 просмотров)

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

А-а-а... У тебя строки являются полями...
Тогда так:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
i,j:integer;
row:array[0..4] of TStringList;
begin
//Задаем 5 списков для строк
for i:=0 to 4 do row[i]:=TStringList.Create;
//В первый список выгружаем клипбоард
row[0].Text:=ClipBoard.AsText;

//Выгруженное в первый разворачиваем в массивы ячеек
//Разделитель - #9 (TAB)
for i:=1 to 4 do row[i].Text:=stringReplace(row[0][i-1], #9,#13#10, [rfReplaceAll]);

//Потом, имея ввиду, что кол-во колонок одинаково, закатываем из соответствующих
//массивов-строк коэффициенты, проверяя их на "числовой вид"
 for i:=0 to row[0].Count-1 do  with  Datamodule2.ADOQuery1 do begin
   Append;
   FieldByName('f').AsString:=StrToFloatDef(row[1][i],0);
   FieldByName('a').AsString:=StrToFloatDef(row[2][i],0);
   FieldByName('v').AsString:=StrToFloatDef(row[3][i],0);
   FieldByName('d').AsString:=StrToFloatDef(row[4][i],0);
  end;

//Освобождаем списки и постим в БД
for i:=0 to 4 do row[i].Free;
Datamodule2.ADOQuery1.Post;
end;
Такое подходит?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.07.2015, 16:25   #36
Ernest027
Форумчанин
 
Регистрация: 27.04.2015
Сообщений: 437
По умолчанию

ругается на
FieldByName('f').AsString:=StrToFlo atDef(row[1][i],0);
пишет
E2010 incompatible types: 'string' and 'Extended'
Ernest027 вне форума Ответить с цитированием
Старый 29.07.2015, 16:41   #37
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

AsString замени на AsFloat.
Я так понимаю у тебя поля вещественные?
Если нет, то выкинь просто StrToFloatDef
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.07.2015, 16:57   #38
Ernest027
Форумчанин
 
Регистрация: 27.04.2015
Сообщений: 437
По умолчанию

всего 4 строки и все столбцы (f,a,v,d) заполняются нулями(((
Ernest027 вне форума Ответить с цитированием
Старый 29.07.2015, 17:14   #39
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Все. Я пас...
Отлаживай код, делай пошаговку, и выясняй чему те или иные значения равны.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 29.07.2015, 17:14   #40
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

а мозгами подумать?
FieldByName('d').AsString:=StrToFlo atDef(row[4][i],0);
у тебя String:=Float... а надо как минимум Variant:=Float
т.е.
FieldByName('d').Value:=StrToFloatD ef(row[4][i],0);


Забыл убить или пропустить 1,2,3,4 и 1606 колонки
И постить лучше в цикле, Append сам постит если до этого другой Append был...
в конце цикла лучше Commit делать

И для отладки кинь memo
и в него лог пуляй

Код:
for i:=0 to row[0].Count-1 do  with  Datamodule2.ADOQuery1 do
begin
  memo1.lines.add(row[1][i]+'|'+row[2][i]+'|'+row[3][i]+'|'+row[4][i]);
   Append;
   FieldByName('f').AsString:=StrToFloatDef(row[1][i],0);
   FieldByName('a').AsString:=StrToFloatDef(row[2][i],0);
   FieldByName('v').AsString:=StrToFloatDef(row[3][i],0);
   FieldByName('d').AsString:=StrToFloatDef(row[4][i],0);
  end;
Не стесняемся, плюсуем!

Последний раз редактировалось Slym; 29.07.2015 в 17:23.
Slym вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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