уловка: вычислить и сохранить.

Практические советы по работе с FileMaker, типичные задачи и их решения. У вас вопрос? Пишите сюда.
Ответить
andrey volkov
Сообщения: 338
Зарегистрирован: 11 сен 2017, 13:42
Откуда: Санкт-Петербург

уловка: вычислить и сохранить.

Сообщение andrey volkov » 27 сен 2020, 08:48

Доброго дня, коллеги

Смотрите, какая забавная штука может быть реализована в файлмейкере:

Код: Выделить всё

GetValue(TextFormatRemove ( 

If(not IsEmpty(Filter(Self; "/*-+")); Evaluate(Self); Self)
 ); 1)
причем ключевая формула здесь посередине:

Код: Выделить всё

If(not IsEmpty(Filter(Self; "/*-+")); Evaluate(Self); Self)
эту формулу я вставляю в Auto-Enter Calculation (обновлять)
и теперь в поле можно вести как число в виде Number (18,323), так и формулу типа 17/18 + (13-55)

работает так: если введены некие строковые символы, намекающие на то, что это формула, то мы вычисляем формулу, иначе мы возвращаем само число.
Намеренно избегаю упрощенного выражения Evaluate(Self)

таким образом получаем калькулятор прямо в хранимом числовом поле. ХЗ, где это можно практически применить, но прикольно.

Аватара пользователя
Arcady
Администратор
Сообщения: 201
Зарегистрирован: 10 сен 2017, 20:45
Контактная информация:

Re: уловка: вычислить и сохранить.

Сообщение Arcady » 05 окт 2020, 09:48

О! классная идея. Давно думал, что-то такое кое-где прикрутить - иногда это может быт реально полезно.
Но факт, что нужно вычислить выражение предлагаю определять, что если выражение начинается со знака = как в экселе. Это и пользователем привычно, и меньше странного поведения системы (мало ли для чего пользователь знак + или - поставил, может это у него дефис)

И тогда можно пользоваться любыми функциями FileMaker и вставлять сложные выражения прямо в поле - хотя это конечно тоже такое...
как-то так:

Код: Выделить всё

If (  Left ( Self; 1) = "="  ; Evaluate( Right(Self; Length(Self)-1 ) ) ; Self )
Аркадий Перла.
ТриА. Разработка решений для FileMaker
http://tria.pw

Ответить