Форум: "Базы";
Текущий архив: 2006.06.25;
Скачать: [xml.tar.bz2];
ВнизПочему OnFilterRecord не все записи обрабатывает? Найти похожие ветки
← →
jeka_t (2006-04-27 12:43) [0]Использую 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;
Первую запись показывает, а остальные даже не обрабатывает...
Помогите, пожалуйста разобраться....
← →
Johnmen © (2006-04-27 13:17) [1]Кто показывает? С чего решил, что не обрабатывает?
А может вообще, так и д.б.?
← →
jeka_t (2006-04-27 13:39) [2]нет, так не должно быть...
когда запускаю пошагово, то:
в процедуре TForm1.ADOQuery1FilterRecord происходит обработка записей (не одной) пока условие (Copy(field, 1, Length(str)) = str) не будет равно true... Т.е. пока Accept <> true
Как только это Accept = true, обработка остальных записей не происходит...
← →
Johnmen © (2006-04-27 13:47) [3]Значение акцепта на " обработку остальных записей" не влияет.
Повторю вопросы.
Кто показывает? С чего решил, что не обрабатывает?
← →
jeka_t (2006-04-27 14:05) [4]Я показываю таблицу с помощью TStringGrid, так как там можно показать в многострочных ячейках...
Вывод отфильтрованных данных я произвожу с помощью процедуры TForm1.ADOQuery1FilterRecord...
Т.е. как только Accept = true я добавляю TStringGrid.Row и заношу значение в ячейки...
Работает хорошо, но обработка записей до конца не происходит...
но ведь должно же...
← →
Johnmen © (2006-04-27 14:10) [5]Теперь понятно.
Дело в том, что обработчик события OnFilterRecord вызывается тогда, и только тогда, когда происходит явное или неявное обращение к записи набора данных. У тебя этих обращений нет.
← →
jeka_t (2006-04-27 14:15) [6]Спасибо за разъяснение, но тогда как же можно отобрать отфильтрованные данные ADOQuery?
← →
Johnmen © (2006-04-27 14:22) [7]А просто не надо ничего фильтровать.
Просто пройдись по НД и обработай все записи.
← →
jeka_t (2006-04-27 14:23) [8]Ещё раз спасибо, придумал так...
дал цыкл:
while not ADOQuery1.EOF do ADOQuery1.Next;
попробывал, работает...
← →
jeka_t (2006-04-27 14:29) [9]Да, это лучше... (почему это я сразу так не сделал, наверное, привык использовать DBGrid)
ещё раз благодарю!
← →
Johnmen © (2006-04-27 14:42) [10]Да не за что.
Кстати, многострочность ячеек легко реализуется и в TDBGrid"е через OnDrawColumnCell.
А вот переменная высота строк уже сложнее.
← →
Sergey13 © (2006-04-27 14:45) [11]2[4] jeka_t (27.04.06 14:05)
>Я показываю таблицу с помощью TStringGrid, так как там можно показать в многострочных ячейках...
>привык использовать DBGrid
Возможно EhLib-овский грид спасет отца русской демократии. До версии 3.6 - халява неплохого качества.
← →
Johnmen © (2006-04-27 14:47) [12]
> Sergey13 © (27.04.06 14:45) [11]
>До версии 3.6 - халява неплохого качества.
В смысле, халява или неплохого качества?
У меня 4.0 халява и качество, вроде бы, ничего так...:)
← →
Sergey13 © (2006-04-27 14:56) [13]2[12] Johnmen © (27.04.06 14:47)
>В смысле, халява или неплохого качества?
И то и другое в одном флаконе?
>У меня 4.0 халява и качество, вроде бы, ничего так...:)
По блату или я что-то пропустил? Вроде с 4 стало за деньги.
← →
Виталий Панасенко (2006-04-27 14:58) [14]
> В смысле, халява или неплохого качества?
> У меня 4.0 халява и качество, вроде бы, ничего так...:)
По лицензии нельзя использовать в коммерческих проектах.:-)
← →
jeka_t (2006-04-27 15:07) [15]Там не реализовано переменная высота строк... и даже не важно какая версия...
← →
Sergey13 © (2006-04-27 15:09) [16]2[14] Виталий Панасенко (27.04.06 14:58)
Хм. Действительно.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2006.06.25;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.009 c