Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Время выполнения запроса [D6, Access]


Litr ©   (2004-05-11 07:57:00) 

Мастера, подскажите новичку. Делаю запрос с тремя параметрами:
время старта, стопа и №. Запрос выполняется достаточно быстро, далее добавляю два поля и заполняю их начиная с первой строки и до .Eof, ну уж слишком долго происходит заполнение этих полей.
Посмотрите код и подскажите, как можно сделать, чтоб получалось быстрее ? Заранее спасибо.

begin
      with ADOQuery1 do
begin
      Close;
      SQL.Text:='create table TMP (MDateTime DateTime, NTank Integer, Tape Integer, Sensor Integer)';
      ExecSql;
      Close;
      SQL.Text:='Delete * from TMP';
      ExecSQL;
      Close;
      SQL.Text:='insert into TMP Select  MDateTime, NTank,   (VolumeBytape/1000) as Type, (VolumeBySensor/1000)as Sensor  from TankData WHERE (MDateTime Between :Dt1 And :Dt2) AND NTank=:N order by MDateTime';
      ADOQuery1.Parameters.ParamByName('N').Value := DBComboBox1.text;
      ADOQuery1.Parameters.ParamByName('Dt1').Value :=Trunc(DateTimePicker7.Date) + DateTimePicker5.Time - Trunc(DateTimePicker5.Time);
      ADOQuery1.Parameters.ParamByName('Dt2').Value :=Trunc(DateTimePicker8.Date) + DateTimePicker6.Time - Trunc(DateTimePicker6.Time);
      ExecSql;
      Close;
      SQL.Text:='ALTER TABLE TMP ADD COLUMN Popravka Integer';
      ExecSQL;
      Close;
      SQL.Text:='ALTER TABLE TMP ADD COLUMN Result Integer';
      ExecSQL;
      Close;

      with ADOQuery6 do
begin
      Close;
      SQL.Text:='select * from TMP';
      Open;

      ADOQuery6.First;
      while not ADOQuery6.Eof do
begin
      p:=ADOQuery6.Fields[3].AsInteger;
      ADOQuery6.Edit;
      ADOQuery6.Fields[4].AsInteger:=0;
      ADOQuery6.Fields[5].AsInteger:=(p+0);
      ADOQuery6.Post;
      ADOQuery6.Next;


Litr   (2004-05-11 08:56:00) [1]

да, но поля то Popravka, Result не заполненные, разве можно Update их ?


sniknik   (2004-05-11 08:42:00) [2]

сделай еше одну SQL команду вместо цикла
UPDATE TMP SET Popravka = 0, [Result] = Sensor + 0


Наверх

Титульная страница Поиск, карта сайта Написать письмо