Мозг уже набекрень с этими запросами..
Пошел другим путем , через временную таблицу
Код:
DataModule2.ADOQueryApteka.SQL.Clear;
DataModule2.ADOQueryApteka.Active:=False;
DataModule2.ADOQueryApteka.SQL.Add('SELECT * FROM [AptekaProdaga] WHERE [DataProdagi] BETWEEN DateEdit1.Date and DateEdit2.Date ORDER BY NamPreparat ASC');
DataModule2.ADOQueryApteka.Parameters.ParamByName('DateEdit1.Date').Value :=DateEdit1.Date; /// Параметр D1 по умолчанию
DataModule2.ADOQueryApteka.Parameters.ParamByName('DateEdit2.Date').Value := DateEdit2.Date; /// Параметр D2 по умолчанию
DataModule2.ADOQueryApteka.Active:=true;
DataModule2.ADOQueryApteka.First;
DataModule2.DAtaSourceAptVrem.DataSet.Open;
For i:=1 To kol Do Begin
DataModule2.ADOQueryAptVrem.Insert;
DataModule2.ADOQueryAptVrem.FieldByName('NamePrep').AsString:=DataModule2.ADOQueryApteka.FieldByName('NamPreparat').AsString;
DataModule2.ADOQueryAptVrem.FieldByName('IdName').Value:=DataModule2.ADOQueryApteka.FieldByName('IdPrepar').Value;
DataModule2.ADOQueryAptVrem.FieldByName('EdIzm').Value:=DataModule2.ADOQueryApteka.FieldByName('edIzm').Value;
DataModule2.ADOQueryAptVrem.FieldByName('CenaEd').Value:=DataModule2.ADOQueryApteka.FieldByName('CenEd').Value;
DataModule2.ADOQueryAptVrem.FieldByName('Obem').Value:=DataModule2.ADOQueryApteka.FieldByName('ObemEd').Value;
DataModule2.ADOQueryAptVrem.FieldByName('KolProd').Value:=DataModule2.ADOQueryApteka.FieldByName('KolProdano').Value;
DataModule2.ADOQueryAptVrem.FieldByName('ItogSumm').Value:=DataModule2.ADOQueryApteka.FieldByName('ItogoSum').Value;
DataModule2.ADOQueryApteka.Next;
end;
DataModule2.ADOQueryAptVrem.Post;
DataModule2.ADOQueryAptVrem.SQL.Clear;
DataModule2.ADOQueryApteka.Active:=False;
DataModule2.ADOQueryAptVrem.SQL.Add('SELECT * FROM AptekaVremenn WHERE [NamePrep] LIKE' + QuotedStr('%'+nP + '%'));
DataModule2.ADOQueryAptVrem.Active := True;
DataModule2.ADOQueryApteka.EXECSQL;
ShowMessage('TÔ '+IntTOStr(DataModule2.ADOQueryAptVrem.RecordCount)); //Результат
//Очищаем временную таблицу
With DataModule2.ADOQueryAptVrem do begin
DataModule2.ADOQueryAptVrem.SQL.Clear;
DataModule2.ADOQueryAptVrem.SQL.Text :='DELETE * FROM AptekaVremenn'; //удаляем SQL запросом. Намного быстрее.
Prepared :=True;
DataModule2.ADOQueryAptVrem.EXECSQL;
end;
//// Воссстанавливаем ADOQueryApteka ///////////////////
DataModule2.ADOQueryApteka.Close;
DataModule2.ADOQueryApteka.Open;
DataModule2.ADOQueryApteka.SQL.Clear;
DataModule2.ADOQueryApteka.Active:=False;
DataModule2.ADOQueryApteka.SQL.Add('Select*From AptekaProdaga Where idDat=:Id_Daty');
DataModule2.ADOQueryApteka.Active:=true;
/////////////////////////////////////////////////////////
Работает 1 проход, но если повторить ошибка ..
err.JPG
понимаю что где то туплю 'неподецки', совсем запутался где OPEN где EXECSQL, (смешались в кучу люди кони), не сочтите за труд
