Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.06.25;
Скачать: CL | DM;

Вниз

Почему 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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.042 c
3-1146052175
Сергей А.
2006-04-26 15:49
2006.06.25
Перехват исключений в ClientDataSet


6-1140071742
Adriano
2006-02-16 09:35
2006.06.25
Получить доступ к сетевой карте


2-1149612650
qazwsx
2006-06-06 20:50
2006.06.25
Как получать параметры переданные через командную строку?


15-1149171523
antonn
2006-06-01 18:18
2006.06.25
Обстановка изменилась?..


4-1143474014
ZeBriD
2006-03-27 19:40
2006.06.25
Перехват содержимого TMemo другой программы