Условное форматирование поля таблицы на форме

Автор st.inna, 12 января 2023, 13:53

0 Пользователи и 1 гость просматривают эту тему.

st.inna

Всем здравствуйте!

Очень много примеров разукрашивания ячеек в Calc, но ничего не нашла по поводу условного форматирования ячеек таблицы, расположенной на форме в Base.

Для текстового поля задать изменение цвета фона или шрифта проблем нет, и если бы в Base была ленточная форма (как в Access), то тут все понятно. Но как быть, если в Base для просмотра множества записей на одной странице есть только таблица. Имеется ли какое-то свойство для "раскрашивания" поля таблицы при условии, что значение в этом поле чему-то равно или больше чего-то и т.д. (в общем по условию)? Или все-таки есть хитрый способ сымитировать ленточную форму (это вообще было бы круто, не понимаю почему ее не сделали в Base)?

sokol92

Насчет условного форматирования я сомневаюсь...
Можно сделать обычным форматированием, которое позволит изменить цвет шрифта (не более 3 условий). Вот пример от @Villeroy.
Владимир.

st.inna

Большое спасибо!

С числами понятно. В приведенном Вами примере код [BLUE][<0]#.0 "°C";[RED][>30]#.0 "°C";[BLACK]#.0 "°C" раскрашивает число в зависимости от самого значения.

Как такой код написать для текста. Нужно слово ГОТОВ выводить синим, слова НЕ ГОТОВ выводить красным.

economist

#3
Элемент управления/контрол "Таблица/XGRID", кмк, не позволяет расцветить текстовые столбцы, ни авто-форматированием, ни макросом (но можно менять значения). И это неспроста: если дать разукрашивать все подряд - пестрая таблица станет нечитаемой. Ни в одной учетной программе (1С, Axapta, SAP итд) этого тоже нет для текста. И даже "отрицательное красным" увидишь нечасто.

Чтобы цветом заострить внимание пользователя - используйте не Формы с Таблицами в Base (они для ввода данных), а Отчеты (они для вывода данных). Отчет по Таблицам/Представлениям/Запрос вы можете сделать по полям БД, не только в Base, но и во Writer (файл *.odt) или Calc (*.ods). Плюс такого решения - многопользовательский доступ, нет блокировки файла Base (*.odb). Как следствие, намного меньше (в разы) падений Base, если его не открывать :-) 

Раскрашивать текст яч со словом ГОТОВО во Writer придется Макросом, поскольку нет условного форматирования. Зато данные БД из Writer можно изменять, если использовать рядом контрол XGRID. 

А вот в Calc есть Условное форматирование, легко настраиваемое. Но сам БД-Диапазон (создается перетаскиванием после нажатия на Ctrl+Shift+F4) - нельзя форматировать (обновление снесет всё). Значит придется на соседнем пустом листе/месте нарисовать "форму" Отчета и сослаться на БД Диапазон. В ячейках с формулами используйте "формульное" Усл. форматирование - и цель достигнута. Но это "форма" - на посмотреть. Для изменения данных в БД - нужен макрос или контрол XGRID, как и во Writer.

Плюс Calc - можно подключить пользователей к созданию такого Отчета. Они навертят себе такой "дэшборд", какой вам даже не снился. И будут пользоваться им (т.к. "свое", родное). При открытии *.ods - он будет спрашивать об обновлении БД-данных. Спустя время все это это покажется даже более удобным, чем нырять в Base.

Имитировать и расцветить "таблицу" на Форме Base можно текстовыми метками + макросом, но это трудоемко.
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...

sokol92

Цитата: st.inna от 13 января 2023, 10:52Нужно слово ГОТОВ выводить синим, слова НЕ ГОТОВ выводить красным
В указанном примере можно и так:  :)

[<0][BLUE]"Холодно";[>30][RED]"Сахара";[BLACK]"OK"
Владимир.

mikekaganski

Цитата: st.inna от 13 января 2023, 10:52Нужно слово ГОТОВ выводить синим, слова НЕ ГОТОВ выводить красным

Не используйте строки "ГОТОВ"/"НЕ ГОТОВ" в таблице. Вместо этого используйте булевые значения (или просто числа). И отформатируйте соответствующий вывод с помощью кода типа

[=0][RED]"НЕ ГОТОВ";[BLUE]"ГОТОВ"
С уважением,
Михаил Каганский

st.inna

Вау!!! То, что нужно!

Всем огромное спасибо!!!

Слова "ГОТОВ" или "НЕ ГОТОВ" в поле прописываются автоматически по макросу, который проверяет значения в других полях записи и делает вывод готов/не готов. Теперь вместо этих "ГОТОВ"/"НЕ ГОТОВ" в макросе пропишу "1"/"2". А затем форматирование [=1][BLUE]"ГОТОВ";[=2][RED]"НЕ ГОТОВ". Хороший выход!

Один вопрос остался: почему разработчики LO игнорируют ленточную форму... Видимо он риторический  :)

economist

В Base почти ничего не добавляют уже лет десять (да и в Access новинок не особо). Это потому что десять лет назад офисные БД резко и сильно утратили свою актуальность в связи с появлением свободных/бесплатных или дешевых учетных систем (1С), web-альтернатив, облаков и мощных свободных RDBMS со своими средствами разработки и ODBC/JDBC-драйверами.

Скилл "MS Access" почти исчез из резюме. Но большая часть Access API реализована в LibreOffice Base в большой библиотеке макросов Access2Base (в комплекте). Ленточную форму не встречал в хотелках, надежды что она появится - никакой. На примере данного топика я еще раз убедился что уже реализованный функционал - способен почти на все, что захочется впредь.
Руб. за сто, что Питоньяк
Любит водку и коньяк!
Потому что мне, без оных, -
Не понять его никак...