Visual Basic, .NET, ASP, VBScript
 

   
 

За период изучения данной СУБД мною накоплено большое количество программного кода, советов, трюков и хитростей в создании баз данных средствами MS Access.

 
     
   
 

Условное форматирование строк табличной части подформы

В одной программе понадобилось мне выделить строки в подчиненной форме для усиления визуального контроля. Табличная часть подчиненной формы примерно такая и форматировать надо, чтобы выглядело вот так:

 

Статья     Дата    Номер  Решение по нарушению    Дата Оплаты

  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.

 
     

   
   
     
  VBNet рекомендует  
   
     
   
   
     
   
   
     
   
  Запчасти для спецтехники в Екатеринбурге на http://ekb.doravtosnab.ru/.