Условное
форматирование строк табличной части
подформы
В одной программе
понадобилось мне выделить строки в
подчиненной форме для усиления визуального
контроля. Табличная часть
подчиненной формы примерно такая и
форматировать надо, чтобы выглядело вот так:
Статья Дата Номер
Решение по нарушению Дата Оплаты
12 01.01.2004
1 100 р.
10.01.2004
13 02.01.2004 2 Направлено в суд
12 03.01.2004
3 500 р.
15.01.2004
12 04.01.2004
4 250 р.
16.02.2004
14 02.01.2004 5
В Московский
12 03.01.2004
6 100 р.
15.01.2004
15 04.01.2004
7 Лишен на 2 мес.
16.08.2004
11 02.01.2004 8
50 р.
12 03.01.2004
9 100 р.
15.01.2004
15 04.01.2004
10 Лишен на 4 мес.
18 04.01.2004
11 Лишен на 2 мес.
23.06.2004
11 02.01.2004 12
550 р.
12 03.01.2004
13 2000 р.
16 04.01.2004
14 Прекращено
12.04.2004
12 03.01.2004
15 200 р.
Задача осложнялась
тем, что просили выделять цветом не один
только столбец [Решение по нарушению], а всю строку, состоящую из 5
столбцов, строку со значением столбца "Лишен
на..." выделять жирно-красным цветом
шрифта, если поле столбца [Дата Оплаты] не
заполнено (см. пример), соответственно, если
поле заполнено, то уже жирно-красным
выделять нет необходимости. Также строку со
значением столбца "Направлено в суд"
выделять красным цветом шрифта, но не
жирным (для улучшения визуального контроля
за направленным документом).
Ну и шрифт текстовых строк (по столбцу [Решение
по нарушению]) сделать болотно-зеленоватым
по теме интерфейса, чтобы немного
отличались от стандартных с рублями ;) (это я
сам придумал, чтобы жизнь медом не казалась
;)
Неплохие условия, да
? Я тоже сначала думал, что это просто
невозможно, вот так просто, без
программирования, используя лишь
стандартное малоинформативное окно
условного форматирования (Формат->Условное
форматирование), пока не взялся покрепче...
за мышь ;)
К своему
неудовольствию, в выпадающем списке
условий (в окне Условное
форматирование) не обнаружил команды
содержит/не содержит (Like/Not Like). Хм... похоже тут
все предусмотрено для работы с числовыми
форматами, а как же мне с текстовыми полями
разобраться ?
Так-с, похоже только
есть только один способ - использовать
выражения. Выбираем в первом условии из
списка [выражение] и вписываем в строку вот
такое выражение:
[РешениеПоНарушению] Like "Напр*"
РешениеПоНарушению
- это имя поля. Придаем шрифту красный цвет,
визуально контролируем выбор. Вот первое
условие для столбца мы создали.
Нажимаем кнопку
Добавить >> и выбираем из списка также [выражение].
Вписываем в строку выражение
[РешениеПоНарушению] Like "Л*" And IsNull([ДатаОплаты])
Надеюсь,
выражение понятно - состоит из двух условий,
если выполняются оба сразу, то шрифт принимает
заданное начертание. Придаем
формату шрифта жирность и красность ;). Вот
мы и создали второе условие.
Нажимаем
еще раз кнопку Добавить >> и выбираем из
списка также [выражение]. Вписываем в строку
выражение
[РешениеПоНарушению]>"А"
Это
последнее условие - оно выполняется только
тогда, когда первые два прошли проверку и не
удовлетворили. Логика проста - все что
больше буквы "А" раскрашиваем в зеленый
цвет. Согласно сортировке сначала
идут цифры, а уж потом и буквы, вот я и воспользовался
этим. Все текстовые поля, которые не подошли
под первое и второе условие будут
раскрашены в болотный цвет ;)
Ну а как же, спросит
внимательный читатель, тут же условия даны
только для одного столбца ? А, верно... ;)
просто условное форматирование нужно
задать для оставшихся 4 столбцов.
Совершенно необязательно открывать для
каждого поля форму [Условное
форматирование] и вписывать
соответствующие выражения,
гораздо удобнее воспользоваться кнопкой [Формат
по образцу] на панели инструментов. Щелкаем по полю [Решение по нарушению],
затем выполняем двойной
щелчок на кнопке [Формат по образцу]. Двойной
щелчок необходим для закрепления формата
на мышке (мы
же собираемся еще по 4 полям щелкнуть). Затем
щелкаем по всем оставшимся четырем полям и,
чтобы снять закрепленный на мышке формат,
щелкаем снова по кнопке [Формат по образцу]
или просто нажимаем ESC. Все поля табличной
части подформы примут настройки условного
форматирования, заданные нами изначально
для поля [РешениеПоНарушению
].
Ну
вот, намеченная задача выполнена в полном
объеме ;). Надеюсь, Вы получили неплохой опыт
раскрашивания строк путем наложения
условного форматирования со сложными
критериями без всякого
программирования. Внимательно изучив и поэкспериментировав,
Вы с легкостью улучшите мой пример и будете
с успехом применять это неплохое
визуальное решение в практике создания
красивых и удобных интерфейсов. Позднее я
опишу способ наложения условного
форматирования из программного кода.
Кстати,
появилась такая возможность, начиная лишь с Access
2000.