Что в этом запросе не так, почему если ввести существующий диапазон, то выводит пусто?
Код:
procedure Tf_BSO_Otchet.bt_SQLClick(Sender: TObject);
var
Num_S, Num_E: string;
begin
if Length(tb_S_Ser.Text) = 1 then
begin
Num_S := tb_S_Ser.Text + '/' + tb_S_Num.Text;
Num_E := tb_E_Ser.Text + '/' + tb_E_Num.Text;
end
else
begin
Num_S := tb_S_Ser.Text + tb_S_Num.Text;
Num_E := tb_E_Ser.Text + tb_E_Num.Text;
end;
With Q_Otchet do
begin
Close;
SQL.Clear;
Parameters.Clear;
SQL.Add('SELECT BSO.ID, Vid_Blanka.Name_Vid_Blanka, BSO.Num, Status_BSO.Name_Status, Kontragent.Sokr_Name, BSO.D_Per');
SQL.Add('FROM Status_BSO RIGHT JOIN (Kontragent RIGHT JOIN (Vid_Blanka RIGHT JOIN BSO ON Vid_Blanka.ID = BSO.f_Vid_Blanka) ON Kontragent.ID = BSO.f_Der) ON Status_BSO.ID = BSO.f_Status_BSO');
SQL.Add('WHERE BSO.Num BETWEEN iif(:Num_Start is null, Num, :Num_Start) and iif(:Num_End is null, Num, :Num_End)');
if (Trim(Num_S) = '') or (Trim(Num_E) = '') then
begin
Parameters.ParamByName('Num_Start').Value := Null;
Parameters.ParamByName('Num_End').Value := Null;
end
else
begin
Parameters.ParamByName('Num_Start').Value := Trim(Num_S);
Parameters.ParamByName('Num_End').Value := Trim(Num_E);
end;
Open;
end;
end;