Доброго времени суток, коллеги! Помогите решить один вопрос, пожалуйста.
Опишу две ситуации:
1. Создаем переменную S, присваиваем ей значение 40. Создаем переменную $Str, присваеваем ей значение "Толщина {S} мм". На поле чертежа создаем однострочный текст, выводим в него {$Str}. Видим на поле в результате: "Толщина 40 мм".
2. Создаем переменную S, присваиваем ей значение 40. Создаем переменную $Str, значение ее считываем из базы, куда записано значение "Толщина {S} мм". На поле чертежа создаем однострочный текст, выводим в него {$Str}. Видим на поле в результате: "Толщина {S} мм".
Вопрос очевиден: как во втором случае добиться результата, аналогичному первому? Заранее спасибо!
Vite написал: Чем не подходит вариант, который предложил @Sila Musli?
Цитата
Sila Musli написал: Вот простой примерчик одного из вариантов решения примерной задачи, как я понял.
Всё! Вчера ночью не разглядел. Это то, что нужно! Огромное спасибо. Обновлю библиотеку - выложу, может кому интересно будет. Тему можно закрыть. Еще раз: огромное спасибо!
Если я правильно понял задачу, то её можно решить через конструкцию "treplace". В строках внесенных в базу на месте требуемой толщины (S) записываем сочетание букв (допустим "абвгд"), а при выводе строки в переменную заменяем сочетание букв значением переменной (S).
Дмитрий Вахрушев написал: Если я правильно понял задачу, то её можно решить через конструкцию "treplace". В строках внесенных в базу на месте требуемой толщины (S) записываем сочетание букв (допустим "абвгд"), а при выводе строки в переменную заменяем сочетание букв значением переменной (S).
Посмотрите сообщение #5 данного топика, там так и предложено. ТС вроде устроило.
Продолжаю тему. Вопрос простой. Надо выбрать текстуру из БД (скр.1). В библиотеке материалов создана аналогичная библиотека (скр.2). Есть переменная $МатGSКол, которая содержит в выпадающем списке название Подколлекций. Есть переменная $МатGS, которая является параметром для назначения материала. Нужно связать две этих переменных таким образом, чтобы переменная $МатGS выдавала список значений в зависимости от Подколлекции ($МатGSКол). Если использовать функцию find, то выдаётся одно значение без вариантов (скр.2). Создавать параллельно ещё одну базу для названий Подколлекций не хочется. Чувствую, что в ТФ должно быть простое решение.
Скрытый текст
Успех это способность идти от одной неудачи к другой без потери энтузиазма. (У.Черчиль)
ВладиславКМВ написал: Создавать параллельно ещё одну базу для названий Подколлекций не хочется. Чувствую, что в ТФ должно быть простое решение.
Попробуйте применить фильтр для выподающего списка. Создайте переменную (напимер, $DynamicList) с условием, которая возвращает применяемый фильтр. В свойствах списка, для поля "фильтр" передайте значение переменной фильтра ($DynamicList).
Vite написал: См. свойства переменной / Список (БД) / "Редакировать"
Аа, ну так да, нашёл. Не узнал окошко, у меня оно выглядит по-другому. Хорошая идея с фильтром, чувствую, решение где-то рядом. Я думаю, надо работать с переменной $МатGS, т.к. выдавать необходимый список должна именно она. Применяю для неё фильтр $МатGSКол по полю Наименование (скр.1), но пока результат не то, что нужно (скр.2), в списке наименования из обеих подколлекций, несмотря на то, что $МатGSКол выдаёт какую-либо одну подколлекций Что означает "...с условием, которая возвращает применяемый фильтр"?
Vte написал: Непосредственно в поле "Фильтр" вы не можете использовать логические конструкции.
Справка вот что выдаёт по этому вопросу: "Поле “Фильтр” позволяет задавать условия для отбираемых из базы значений (при формировании списка значений). Условия задаются с помощью логических выражений, составленных по тем же правилам, что и выражения для переменных" Т.е., надо понимать, в качестве фильтра можно применить простую логическую конструкцию. Напр., если я для переменной $МатGS напишу в поле фильтра выражение Подколлекция==Natural (скр.1), то результат получается положительный, переменная выдаёт список только из указанной подколлекции (скр.2) А если напишу в этом поле более сложную конструкцию find(GS.Наименование, GS.Подколлекция==$МатGSКол) для выбора из нескольких подколлекций, то фильтр уже не работает. Аналогично и с переменной $МатGSКол, фильтр, увы, не возвращает её список.
Скрытый текст
Эврика!!! Пишу в поле Подколлекция==$МатGSКол Теперь всё как надо. Хорошая идея с фильтром! Дёшево и сердито.
Опять споткнулся на БД. Задача такая. Есть БД в Экселе. Книга разложена по листам. Первый лист - общая БД (пл) по производителям и коллекциям. Второй и последующий листы - коллекции с размерами деталей. Необходимо по иерархии пошагово дойти до нужного набора деталей строго одного размера. Шаг1: выбрать производителя из общей БД (пл). Шаг2: выбрать коллекцию этого производителя (другие производители отфильтрованы). Шаг3: Выбрать деталь необходимого исполнения из списка (другие размеры отфильтрованы).
Скрытый текст
Можно, конечно собрать всё в одной БД, тогда вопросов бы не возникло. Но я разбил БД на несколько, одну главную и несколько подчиненных. Теперь надо организовать выбор из нескольких БД. На третьем шаге затык, т.к. появляется уже выбор из разных БД и простым указанием в свойствах переменной Выбор из базы данных уже не подходит, т.к. переменная желательно должна быть одна, а БД будут меняться. Также можно попробовать делать для каждой БД новую переменную, а потом их связывать общей переменной. Но, думаю, есть способ элегантней, обойтись минимумом переменных. Я попробовал ввести ещё одну промежуточную переменную $БД, которая выводит в значение конкретную подчинённую БД в зависимости от выбранной коллекции. Теперь, по логике, если написать выражение типа find($БД.Текстура, $БД.Размер=="25х40"), то можно получить желаемое. Однако, не получилось. Во-первых нужно получить не одно значение, а список. А во-вторых, эта конструкция вообще не работает. Есть другие конструкции? В прилагаемом файле, БД, фрагмент и текстуры. 25х40_Шаблон.rar(2.73 МБ)
Успех это способность идти от одной неудачи к другой без потери энтузиазма. (У.Черчиль)
ВладиславКМВ, механизм подчиненных списков реализуется при помощи фильтров, либо заменой элемента управления "Комбинированный список" в диалоге управления, по другому никак.
Так может подчиненные таблицы в одну? Ведь по сути они одинаковые. Тогда одна переменная со списком, а фильтр будет по производителю и по коллекции : (Производитель==$плПроизв&&Коллекция==$плКол). Я бы наверно так и сделал одну главную и одну подчиненную.
Отлично! Результат вполне приемлемый. Во второй таблице записи сгруппировал по коллекциям, чтобы можно было сворачивать ненужные. Получается вполне компактно. В фильтре записал Коллекция==$плКол&&Размер==25х40 Получилось, как надо. Оказывается в фильтре можно использовать несколько переменных. Не знал. Спасибо, Денис.
Скрытый текст
Успех это способность идти от одной неудачи к другой без потери энтузиазма. (У.Черчиль)
Добрый день! Есть вопрос по БД. Есть БД по оснастке. Наличие оснастки зависит от диаметра. На определенные диаметры есть оснастка, на ряд диаметров - нет В БД внесены только те диаметры, для которых есть оснастка. Как организовать запрос к БД, чтобы при отсутствии диаметра в БД - запрос возвращал значение 0, а не давал диагностическое сообщение "Ошибка пересчёта переменной" ?