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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.08.2015, 09:57   #61
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

В моем примере съезжают? нет... показывай проблемный (твой) код
Тему скорости не раскрыл...
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 05.08.2015, 10:13   #62
Ernest027
Форумчанин
 
Регистрация: 27.04.2015
Сообщений: 437
По умолчанию

в excel пример таблицы
Вложения
Тип файла: rar 2.rar (105.7 Кб, 6 просмотров)
Ernest027 вне форума Ответить с цитированием
Старый 05.08.2015, 11:26   #63
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

что тут поехало?
Изображения
Тип файла: jpg ex.jpg (21.7 Кб, 129 просмотров)
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 05.08.2015, 11:42   #64
Ernest027
Форумчанин
 
Регистрация: 27.04.2015
Сообщений: 437
По умолчанию

Пардон, не тот файл скинул
Вложения
Тип файла: xlsx Книга1.xlsx (55.7 Кб, 13 просмотров)
Ernest027 вне форума Ответить с цитированием
Старый 05.08.2015, 12:37   #65
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

row[i].DelimitedText плохо работает... ша починю
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 05.08.2015, 12:46   #66
Ernest027
Форумчанин
 
Регистрация: 27.04.2015
Сообщений: 437
По умолчанию

Спасибо большое)
Ernest027 вне форума Ответить с цитированием
Старый 05.08.2015, 12:46   #67
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

В лоб без StringReplace не получилось...
Код:
function DetectDecimalSeparator(const Text:string):char;
var i,comma,dot:Integer;
begin
  comma:=0;
  dot:=0;
  for i := 1 to Length(Text) do
  begin
    if Text[i]=',' then Inc(comma) else
    if Text[i]='.' then Inc(dot);
  end;
  if comma>dot then
    Result:=',' else
  if comma<dot then
    Result:='.' else
    Result:=decimalseparator;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  i,j:integer;
  lines:TStringList;
  row:array[0..3] of TStringList;
  Command:TADOCommand;
  OldDecimalSeparator:Char;
begin
  if not Clipboard.HasFormat(CF_TEXT) then exit;
  lines:=TStringList.Create();
  try
    lines.Text:=ClipBoard.AsText;
    if lines.Count<4 then exit;
    for i:=low(row) to high(row) do
      row[i]:=TStringList.Create;
    try
      for i:=low(row) to high(row) do
        row[i].Text:=StringReplace(lines[i], #9,#13#10, [rfReplaceAll]);
      OldDecimalSeparator:=DecimalSeparator;
      DecimalSeparator:=DetectDecimalSeparator(lines.Text);
      try
        lines.Clear;
        Command:=TADOCommand.Create(nil);
        try
          Command.Connection:=ADOConnection1;
          Command.CommandText:='DELETE * FROM Vibration';
          Command.Execute;
        
          Command.CommandText:='INSERT INTO Vibration (f, a, v, d) VALUES (:f, :a, :v, :d)';
          Command.Prepared:=true;
          Command.Connection.BeginTrans;
          try
            for i:=0 to row[0].Count-1 do
            begin
              if (i<=3) or (i>=1605) then continue;
              for j:=0 to Command.Parameters.Count-1 do
                Command.Parameters[j].Value:=StrToFloatDef(row[j][i],0);
              Command.Execute;
            end;
            Command.Connection.CommitTrans;
          except
            Command.Connection.RollbackTrans;
            raise;
          end;
        finally
          Command.Free;
        end;
      finally
        DecimalSeparator:=OldDecimalSeparator;
      end;
    finally
      for i:=low(row) to high(row) do
        row[i].Free;
    end;
  finally
    lines.free;
  end;
  ADOTable1.Requery();
end;
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 05.08.2015, 12:56   #68
Ernest027
Форумчанин
 
Регистрация: 27.04.2015
Сообщений: 437
По умолчанию

Огромнейшее Вам спасибо) работает чудесно)))
Ernest027 вне форума Ответить с цитированием
Старый 05.08.2015, 13:33   #69
Ernest027
Форумчанин
 
Регистрация: 27.04.2015
Сообщений: 437
По умолчанию

заменил adotable на adoquery и не работает(
пишет "неправильный синтаксис около конструкции "*""
Ernest027 вне форума Ответить с цитированием
Старый 05.08.2015, 14:11   #70
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

какой запрос?
Не стесняемся, плюсуем!
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