|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Ошибка при фильтрации!
вот такой вопрос:
есть реализованная фильтрация 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; больше 34-х строках и нажать кнопку "фильтр", то программа уходит в ошибку. Как я понимаю слишком длинная получается формула сравнения. Но уменьшить количество строк в итемс в PDJXPCheckListBox1 ни как нельзя, как можно заметить из кода, это станции метро.... Ни как не могу понять что сделать. Очень прошу помочь! |