![]() |
|
|
![]()
|
|
| docjohn |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 6.10.2005 Репутация: нет Всего: нет |
Привет всем. Помогите новичку.
Есть компонент DBGrid. В нем два поля - одно формируется из SQL-запроса, а второе калькулируемое. Нужно после завершения работы SQL запроса фильтровать строки (накладывать фильтр) по калькулируемому полю. Пробовал рыть через свойство filter и событие onfilterrecord у компонента dataset, но безуспешно: filter работает только на data-полях sql запроса. А событие onfilterrecord так и не вызвал. Пробовал также через DBGrid->Fields[1]->Visible=false; - тоже ничего. HELP |
|||
|
||||
| Vyacheslav |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
Для вызова события OnFilteredRecord нужно уставновить Filtered в truе и все будет работать
-------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
| docjohn |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 6.10.2005 Репутация: нет Всего: нет |
Ставил устанавливал фильтр на поле данных - он работает.
Filtered=true и запрос фильтуется нормально. Значение в поле данных - это имя файла, которое берется из таблицы. Калькулируемое поле у меня вне SQL запроса. Значение в калькулируемом поле - это размер файла, который берется из директории по имени файла из поля данных и формируется по событию OnCalсFields. Пробовал устанавливать фильтр на это вычисляемое поле и вызывать событие OnFilterRecord. Значение фильтра накладывал самое простое: DataSet->Filter="ИМЯ_КАЛЬК_ПОЛЯ='111'"; DataSet->Filtered=true; Но либо все отфильтровывается (нет ни одной строки) либо фильтр не срабатывает. Уже не знаю куда рыть дальше. Или где-то ошибка? |
|||
|
||||
| Vyacheslav |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
Вы хелпом пользоваться умеете? Там даже примеры есть.
1. Устанавливаешь Filtered в true сразу и можно в дизайне. Больше не трогаешь 2. Задаешь обработчик OnFilterRecord.
-------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
| docjohn |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 6.10.2005 Репутация: нет Всего: нет |
И все равно не получается.
Для примера делаю так: 1. Формирую таблицу из двух полей, первое с именем dt и значениями из базы, второе калькулируемое с именем klk и типом Integer и со значениями =100 2. Свойство Filtered у Dataset устанавливается по нажатию кнопки в true. 3. В обработчике события Onfilterrecord пишу: Accept = DataSet->FieldByName("klk")->AsInteger == 100 Запускаю. В таблице как и положено все значения в кальк поле =100 Нажимаю кнопку - и все отфильтровывается (не остается ни одной строки). В то же время Accept = DataSet->FieldByName("dt")->AsInteger == 100 - отфильтровывает правильно строки со значениями =100. Вопрос не в том умею ли я читать Help или нет. Перед созданием этой темы пример по использованию Onfilterrecord я видел и проверял и он не сработал на кальк поле. |
|||
|
||||
| Vyacheslav |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
Во-первых, насчет пользованием хелпа - Вы нигде ранее не показали правильный код для OnFilterRecord, в связи с чем я предположил, что Вы не сотрели сам хелп
Во-вторых, Вы скорее всего работаете через BDE. А у него кажется имеются траблы с калькулируемыми полями Используете по крайней мере ADO и все будет работать -------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |