Ещё вопрос.
Нормально ли вызывать UniQuery.Conditions.Enable несколько раз подряд перед тем, как вызвать Open?
Почему такой вопрос.
Предыстория.
Есть код добавления условий с параметрами.
Код: Выделить всё
if DateTimePicker1.DateTime <> 0 then
qData.Conditions.Add('lcd_min','A.LCD >= :LCDMIN', True);
if DateTimePicker2.DateTime <> 0 then
qData.Conditions.Add('lcd_max','A.LCD <= :LCDMAX', True);
Как я понял, то в SQL-запрос датасета параметры попадают только после вызова UniQuery.Conditions.Enable.
Таким образом получается, что условие приходится добавлять как бы дважды. Первый раз добавляешь условие с параметром, а потом нужно ещё и параметр заполнить.
т.е. выполнить ещё одну проверку
Код: Выделить всё
if Assigned(qData.Params.FindParam('LCDMIN')) then
qData.ParamByName('LCDMIN').AsDateTime := DateTimePicker1.DateTime;
if Assigned(qData.Params.FindParam('LCDMAX')) then
qData.ParamByName('LCDMAX').AsDateTime := DateTimePicker2.DateTime;
я к тому, что было бы удобней так:
Код: Выделить всё
if DateTimePicker1.DateTime <> 0 then
begin
qData.Conditions.Add('lcd_min','A.LCD >= :LCDMIN', True);
qData.ParamByName('LCDMIN').AsDateTime := DateTimePicker.DateTime;
end;
Теперь возвращаемся к вопросу про множественный вызов метода Enable. А можно ли делать так:
Код: Выделить всё
qData.Close;
if DateTimePicker1.DateTime <> 0 then
begin
qData.Conditions.Add('lcd_min','A.LCD >= :LCDMIN', True);
UniQuery.Conditions.Enable;
qData.ParamByName('LCDMIN').AsDateTime := DateTimePicker.DateTime;
end;
if DateTimePicker2.DateTime <> 0 then
begin
qData.Conditions.Add('lcd_max','A.LCD <= :LCDMAX', True);
UniQuery.Conditions.Enable;
qData.ParamByName('LCDMAX').AsDateTime := DateTimePicker2.DateTime;
end;
UniQuery.Open;