Текущий архив: 2004.05.30;
Скачать: CL | DM;
ВнизВремя выполнения запроса Найти похожие ветки
← →
Litr (2004-05-11 07:57) [0]Мастера, подскажите новичку. Делаю запрос с тремя параметрами:
время старта, стопа и №. Запрос выполняется достаточно быстро, далее добавляю два поля и заполняю их начиная с первой строки и до .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;
← →
sniknik © (2004-05-11 08:42) [1]сделай еше одну SQL команду вместо цикла
UPDATE TMP SET Popravka = 0, [Result] = Sensor + 0
← →
Litr (2004-05-11 08:56) [2]да, но поля то Popravka, Result не заполненные, разве можно Update их ?
Страницы: 1 вся ветка
Текущий архив: 2004.05.30;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.036 c