![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Почему OnFilterRecord не все записи обрабатывает? [D7, MySQL]
jeka_t © (2006-04-27 12:43:00)Использую TADOQuery, что бы показать таблицу...
хочу её отфильтровать с помощью события OnFilterRecord.
procedure TForm1.ADOQuery1FilterRecord(DataSet: TDataSet; var Accept: Boolean);
var str, field: string;
begin
str := AnsiUpperCase(UpperCase(edt_Find.Text));
field := AnsiUpperCase(UpperCase(DataSet.Fields[CBox_Find.itemindex].Text));
Accept := (Copy(field, 1, Length(str)) = str);
end;
Первую запись показывает, а остальные даже не обрабатывает...
Помогите, пожалуйста разобраться....
Sergey13 (2006-04-27 15:09:00) [1]2[14] Виталий Панасенко (27.04.06 14:58)
Хм. Действительно.
jeka_t (2006-04-27 15:07:00) [2]Там не реализовано переменная высота строк... и даже не важно какая версия...
Виталий Панасенко (2006-04-27 14:58:00) [3]
> В смысле, халява или неплохого качества?
> У меня 4.0 халява и качество, вроде бы, ничего так...:)
По лицензии нельзя использовать в коммерческих проектах.:-)
Sergey13 (2006-04-27 14:56:00) [4]2[12] Johnmen © (27.04.06 14:47)
>В смысле, халява или неплохого качества?
И то и другое в одном флаконе?
>У меня 4.0 халява и качество, вроде бы, ничего так...:)
По блату или я что-то пропустил? Вроде с 4 стало за деньги.
Johnmen (2006-04-27 14:47:00) [5]
> Sergey13 © (27.04.06 14:45) [11]
>До версии 3.6 - халява неплохого качества.
В смысле, халява или неплохого качества?
У меня 4.0 халява и качество, вроде бы, ничего так...:)
Sergey13 (2006-04-27 14:45:00) [6]2[4] jeka_t (27.04.06 14:05)
>Я показываю таблицу с помощью TStringGrid, так как там можно показать в многострочных ячейках...
>привык использовать DBGrid
Возможно EhLib-овский грид спасет отца русской демократии. До версии 3.6 - халява неплохого качества.
Johnmen (2006-04-27 14:42:00) [7]Да не за что.
Кстати, многострочность ячеек легко реализуется и в TDBGrid'е через OnDrawColumnCell.
А вот переменная высота строк уже сложнее.
jeka_t (2006-04-27 14:29:00) [8]Да, это лучше... (почему это я сразу так не сделал, наверное, привык использовать DBGrid)
ещё раз благодарю!
jeka_t (2006-04-27 14:23:00) [9]Ещё раз спасибо, придумал так...
дал цыкл:
while not ADOQuery1.EOF do ADOQuery1.Next;
попробывал, работает...
Johnmen (2006-04-27 14:22:00) [10]А просто не надо ничего фильтровать.
Просто пройдись по НД и обработай все записи.
jeka_t (2006-04-27 14:15:00) [11]Спасибо за разъяснение, но тогда как же можно отобрать отфильтрованные данные ADOQuery?
Johnmen (2006-04-27 14:10:00) [12]Теперь понятно.
Дело в том, что обработчик события OnFilterRecord вызывается тогда, и только тогда, когда происходит явное или неявное обращение к записи набора данных. У тебя этих обращений нет.
jeka_t (2006-04-27 14:05:00) [13]Я показываю таблицу с помощью TStringGrid, так как там можно показать в многострочных ячейках...
Вывод отфильтрованных данных я произвожу с помощью процедуры TForm1.ADOQuery1FilterRecord...
Т.е. как только Accept = true я добавляю TStringGrid.Row и заношу значение в ячейки...
Работает хорошо, но обработка записей до конца не происходит...
но ведь должно же...
Johnmen (2006-04-27 13:47:00) [14]Значение акцепта на " обработку остальных записей" не влияет.
Повторю вопросы.
Кто показывает? С чего решил, что не обрабатывает?
jeka_t (2006-04-27 13:39:00) [15]нет, так не должно быть...
когда запускаю пошагово, то:
в процедуре TForm1.ADOQuery1FilterRecord происходит обработка записей (не одной) пока условие (Copy(field, 1, Length(str)) = str) не будет равно true... Т.е. пока Accept <> true
Как только это Accept = true, обработка остальных записей не происходит...
Johnmen (2006-04-27 13:17:00) [16]Кто показывает? С чего решил, что не обрабатывает?
А может вообще, так и д.б.?