Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Фильтрация в DBGrid


Сергей А. ©   (2005-12-02 22:36:00) 

У меня есть Аксесовский файл, а в этом файле есть обычная таблица. С помощью ADOTable1 в DBGrid1 я загружаю таблицу из Аксесовского файла. Теперь важно провести фильтрацию или иными словами отобразить в DBGrid1 только те строки, если скажем в поле "Клиент" есть строка "ЧП Иванов". Я решал эту задачу путем создания в Аксесовском файлах запросов, а потом вызовом этого запроса, но уже из Делфи. Получалось неплохо. Но проблема в том, что я не могу забивать новые данные в DBGrid1, если информация сгенирорована запросом. Т.е если я загрузил данные через ADOTable1, то все нормально и я могу изменить значения ячейки. Если же я загрузил данные в DBGrid1 через запрос ADOStoredProc1, то тогда появляется ошибка при попытке забить новые данные. Делфи пишет, что не могу найти строку для обновления. Как решить данную задачу? Мне нужно проводить фильтрацию и затем иметь возможность отредактировать отфильтрованные данные. Можно ли не пользоваться запросами, а непосредственно в DBGrid смотреть на значения скажем поля "Клиент" и если в этом поле, например, текст указанный в edit1, то эту строку не скрывать, а все остальные спрятать? Можно так сделать? Если можно просьба подсказать исходник.

Заранее спасибо!


Сергей А.   (2005-12-03 01:41:00) [1]

2 Virgo_Style ©
Спасибо! Правда у меня на DBGrid.OnDrawDataCell не сработало, но я с помощью совета нашел вот эту страницу:
http://www.gyry.net/?d=catalog&did=377

Там в примечание сказано:
Borland не рекомендует использовать в новых разработках обработчик события OnDrawDataCell, которому пришел на смену обработчик OnDrawColumnCell. Старый вызов сохранен для совместимости.


Virgo_Style   (2005-12-03 01:07:00) [2]

Сергей А.   (03.12.05 0:55) [1]

DBGrid.OnDrawDataCell


Сергей А.   (2005-12-03 00:55:00) [3]

Я уже нашел ответ на мой первый вопрос, но никак не могу разобраться со 2 задачей. В Экселе есть очень удобная функция "Условное форматирование". Можно задать условие на столбик "А", что если в нем появится к примеру слово "нет", то эту ячейку окрасить красным цветом, а если слово "да", то эту ячейку окрасить зеленым цветом. Можно ли сделать такое же в DBGrid? К примеру, если я забил текст "да" в поле "отгрузка", то ячейка в которой я забил текст "да" должна окраситься зеленым цветом. Как такое сделать? Очень нужен исходник!

И еще! Можно ли сделать так, чтобы забив текст в поле "Клиент" DBGrid проверил текст указанный в поле и если он подходит под определенные условия, то в этой же строке, но в другом поле (например, "тип клиента") появился определенный текст. К примеру! Если в поле клиент указан "ЧП Пупкин", то в поле тип клиента должно появиться "А".


Наверх

Титульная страница Поиск, карта сайта Написать письмо