Редактор формул таблицы nanoCAD: наличие подстроки в строке
Здравствуйте.
Есть отчёт в таблице нанокад.
Требуется в атрибутах блоков проверять наличие подстроки.
То есть нужна функция наподобие:
=Функция_проверки_подстроки(Object."АТРИБУТ"; "ПОДСТРОКА"; если_да; если_нет)
Справка Нанокада выдаёт немало функций редактора формул. Но найти требуемую не могу.
Подскажите как это сделать.
Ответы
-
в общем случае часть строки искать не умеет
нет такой функции
1 -
Вот прямо такого нет
можно
1 -
Спасибо за участие!
Но для использования substring требуется знать начальное положение подстроки, а она может быть в любом месте.
subsplit почти подходит, но разделителем в ней служит только один символ! В вашем примере разделителя будет два: либо "L", либо "=". Но не "L=" !
Вот мой конкретный пример, где я пробовал использовать такую конструкцию:
=iff(subsplit(Object."ОБОЗНАЧЕНИЕ";"СП";1)=="";0;1)
Здесь разделителями получаются одновременно "С" и "П", а не "СП".
0 -
- Это полный набор обозначений?
- А почему в третьей строке в 4 и 5й колонке "1"?
Я смотрю на картинку и мне кажется, что если есть "(", то можно в четвертой и пятой колонках писать =count(), при наличии группировки по "С"
0 -
- Нет. Обозначения могут быть самые разные. Искомые подстроки всегда будут "СП" и "СИ". Они могут быть, а могут не быть в обозначении.
- Потому что функция не работает, как хотелось бы.
Скобок может не быть. А могут быть, но с цифрами, что нам не надо.
0 -
Просто ты пытаешься под свои бизнес процессы подстроить нанокад,
Как правило приходится наоборот, логику приложений подстраивать под возможности программы и свои навыки.
Если нужна безграничная гибкость, велком NET, ну или хотя бы лисп и вебеа.
Из коробки нано тоже многое умеет, но проще знать и учитывать его возможности , чем потом строить франкенштейнов
1 -
Какая именно неправильно работает?
Так проверьте, пожалуйста
@doctorRAZ ,В блоке есть необходимые атрибуты.
так что законное желание :) ,упростить процесс.
1 -
Кстати, если хотите, то эти атрибуты можно высчитывать и принудительно возвращать (ctlSetValue()) в блок. Но уже утром.
1 -
Добавил =ctlSetValue(off(0;-2);Object."СП")+ctlSetValue(off(0;-1);Object."СИ")
1 -
»Если нужна безграничная гибкость, велком NET, ну или хотя бы лисп и вебеа.
Только для этого надо сначала научиться проектировать, быстро и без ошибок, как @doctorRAZ
Организовать двухстороннюю связь отчета и объектов в чертеже будет достаточно проблематично.
1 -
Всем спасибо!
Была идея отказаться от атрибутов (СП, СИ) и вынести это в обозначение для наглядности.В целом ситуация ясна, буду исходить из текущих возможностей Нанокада.
0 -
Это значит, что решение не подошло?
0 -
Нет.
ctlSetValue это крутая функция, я её использую в других местах. Но здесь атрибуты не нужны, и записывать в них не надо.
subRight требует фиксированного формата записи. Такого не будет. Почему-то таблица в вашем примере после обновления выдаёт ошибки:Версия Нанокада 20.1
Спасибо за ответы, я хотел выяснить есть ли недокументированная функция, её нет.Поэтому решение такое - изначальный вариант, но с одним символом:
=iff(subsplit(Object."ОБОЗНАЧЕНИЕ";"П";1)=="";0;1)
=iff(subsplit(Object."ОБОЗНАЧЕНИЕ";"И";1)=="";0;1)1 -
Почему-то таблица в вашем примере после обновления выдаёт ошибки:
Старая версия.
Это добавлено позже
0 -
subRight требует фиксированного формата записи.
Нужно бы реальный пример. Условия можно формировать по-разному.У меня всё работает
0
Разделы
- Все разделы
- 59 Общие вопросы
- 55 Работа nanoCAD в ОС Linux
- 417 Платформа nanoCAD
- 17 nanoCAD GeoniCS
- 88 nanoCAD BIM Строительство
- 42 nanoCAD Механика PRO
- 59 nanoCAD BIM Электро
- 11 nanoCAD BIM Вентиляция
- 13 nanoCAD BIM ВК
- 3 nanoCAD BIM Отопление
- 8 nanoCAD BIM СКС
- 52 nanoCAD BIM ОПС
- 3 nanoCAD Стройплощадка
- 4 nanoCAD Металлоконструкции
- 2 nanoCAD Конструкции PS
- 6 TDMS Фарватер
- 1 Облака точек
- nanoCAD GeoSeries
- NSR Specification
- Учебным заведениям и учащимся
- 7 nano360