Показать сообщение отдельно
  #1  
Старый 05.05.2007, 17:43
Markus Markus вне форума
Прохожий
 
Регистрация: 05.05.2007
Сообщения: 1
Репутация: 10
Восклицание Ошибка при фильтрации!

вот такой вопрос:
есть реализованная фильтрация ClientDataSet:
Код:
Код:
...
if FilterForm.PDJXPCheckBox5.Checked=True then begin
   with FilterForm.PDJXPCheckListBox1 do begin
   for i:=0 to Count-1 do begin
   if Checked[i] then
   r:=r+'or [Metro]='+QuotedStr(FilterForm.PDJXPCheckListBox1.Items[i]);
   end;
   for i:=0 to Count-1 do begin
   if FilterForm.PDJXPCheckListBox1.Checked[i]=False then s:=s+''
   else s:=s+'and ('+Copy(r, 4, MaxInt)+ ')';
   end;
   end;
   end;
...
if s<>'' then begin
Komponents.ClientDataSet2.Filter:=Copy(s, 5, MaxInt);
Komponents.ClientDataSet2.IndexFieldNames:='Kolichestvo komnat';
Komponents.ClientDataSet2.Filtered:=True;
FilterForm.Close;
end else if s='' then
Komponents.ClientDataSet2.Filter:=s;
FilterForm.Close;
end; 
работает все нормально. Но если в PDJXPCheckListBox1 поставить галочки на
больше 34-х строках и нажать кнопку "фильтр", то программа уходит в
ошибку. Как я понимаю слишком длинная получается формула сравнения. Но уменьшить количество строк в итемс в PDJXPCheckListBox1 ни как нельзя, как можно заметить из кода, это станции метро.... Ни как не могу понять что сделать. Очень прошу помочь!
Ответить с цитированием