Доброго времени суток, Хабрчане.
Прошу помочь в решении следующей проблемы.
Среда программирования Delphi 7. БД — MS SQL Server 2008 R2.
Имеется компонент ADOTable. Через него организована фильтрация таблицы свойством ADOTable.Filter.
Данные типа varchar фильтруются без проблем, но вот с целыми числами возникла загвоздка. При вводе цифры выводит сообщение «Не удается открыть фильтр».
Код фильтрации:
procedure TForm1.Filter;
var filtr,add:string;
begin
Table.Filtered:=false;
filtr:='';
if length(IDed.Text)>0 then
filtr:='id LIKE '+#39+IDed.Text+'%'+#39;
if length(DeEd.Text)>0 then
begin
if length(filtr)>0 then
add:=' AND '
else add:='';
filtr:=filtr+add+'descr LIKE '+#39+DeEd.Text+'%'+#39;
end;
if length(DLEd.Text)>0 then
begin
if length(filtr)>0 then
add:=' AND '
else add:='';
filtr:=filtr+add+'deadline LIKE '+#39+DLEd.Text+'%'+#39;
end;
if length(DLEd.Text)>0 then
begin
if length(filtr)>0 then
add:=' AND '
else add:='';
filtr:=filtr+add+'deadline LIKE '+#39+DLEd.Text+'%'+#39;
end;
if length(PEd.Text)>0 then
begin
if length(filtr)>0 then
add:=' AND '
else add:='';
filtr:=filtr+add+'priorit LIKE '+#39+PEd.Text+'%'+#39;
end;
if length(GrEd.Text)>0 then
begin
if length(filtr)>0 then
add:=' AND '
else add:='';
filtr:=filtr+add+'groupT LIKE '+#39+GrEd.Text+'%'+#39;
end;
if length(DendEd.Text)>0 then
begin
if length(filtr)>0 then
add:=' AND '
else add:='';
filtr:=filtr+add+'dateEnd LIKE '+#39+DendEd.Text+'%'+#39;
end;
if length(filtr)>0 then
begin
Table.Filter:=filtr;
Table.Filtered:=true;
end;
end;
Процедура фильтрации запускается при вводе символов в Edit-ы.
Ну и кусочек формы с edit-ами.
То есть не фильтрует по полям id и p. Все остальные поля varchar(50).
Заранее спасибо за помощь!