Официальный форум российского программного комплекса T-FLEX PLM


Поиск  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Базы, переменные, строки
 
Доброго времени суток, коллеги!
Помогите решить один вопрос, пожалуйста.

Опишу две ситуации:

1. Создаем переменную S, присваиваем ей значение 40. Создаем
переменную $Str, присваеваем ей значение "Толщина {S} мм". На поле
чертежа создаем однострочный текст, выводим в него {$Str}. Видим на поле
в результате: "Толщина 40 мм".

2. Создаем переменную S, присваиваем ей значение 40. Создаем
переменную $Str, значение ее считываем из базы, куда записано значение
"Толщина {S} мм". На поле чертежа создаем однострочный текст, выводим в
него {$Str}. Видим на поле в результате: "Толщина {S} мм".

Вопрос очевиден: как во втором случае добиться результата, аналогичному первому?
Заранее спасибо!
Изменено: Иванов Иван - 05.09.2015 17:26:03
Страницы: Пред. 1 2 3 След.
Ответы
 
Цитата
Vite написал:
Чем не подходит вариант, который предложил @Sila Musli?
Цитата
Sila Musli написал:
Вот простой примерчик одного из вариантов решения примерной задачи, как я понял.
Всё! Вчера ночью не разглядел. Это то, что нужно! Огромное спасибо. Обновлю библиотеку - выложу, может кому интересно будет.
Тему можно закрыть.
Еще раз: огромное спасибо!
 
Ну хорошо, что всё получилось)
 
Если я правильно понял задачу, то её можно решить через конструкцию "treplace".
В строках внесенных в базу на месте требуемой толщины (S) записываем сочетание букв (допустим "абвгд"), а при выводе строки в переменную заменяем сочетание букв значением переменной (S).
 
Цитата
Дмитрий Вахрушев написал:
Если я правильно понял задачу, то её можно решить через конструкцию "treplace".
В строках внесенных в базу на месте требуемой толщины (S) записываем сочетание букв (допустим "абвгд"), а при выводе строки в переменную заменяем сочетание букв значением переменной (S).
Посмотрите сообщение #5 данного топика, там так и предложено. ТС вроде устроило.
 
Продолжаю тему.
Вопрос простой. Надо выбрать текстуру из БД (скр.1). В библиотеке материалов создана аналогичная библиотека (скр.2). Есть переменная $МатGSКол, которая содержит в выпадающем списке название Подколлекций. Есть переменная $МатGS, которая является параметром для назначения материала. Нужно связать две этих переменных таким образом, чтобы переменная $МатGS выдавала список значений в зависимости от Подколлекции ($МатGSКол). Если использовать функцию find, то выдаётся одно значение без вариантов (скр.2). Создавать параллельно ещё одну базу для названий Подколлекций не хочется. Чувствую, что в ТФ должно быть простое решение.
Скрытый текст
Успех это способность идти от одной неудачи к другой без потери энтузиазма.
(У.Черчиль)
 
Цитата
ВладиславКМВ написал:
Создавать параллельно ещё одну базу для названий Подколлекций не хочется. Чувствую, что в ТФ должно быть простое решение.
Попробуйте применить фильтр для выподающего списка. Создайте переменную (напимер, $DynamicList) с условием, которая возвращает применяемый фильтр. В свойствах списка, для поля "фильтр" передайте значение переменной фильтра ($DynamicList).
T-FLEX CAD 17.1.6.0
 
Цитата
Vite написал:
Попробуйте применить фильтр для выподающего списка.
Где взять фильтр?
Успех это способность идти от одной неудачи к другой без потери энтузиазма.
(У.Черчиль)
 
Цитата
ВладиславКМВ написал:
Где взять фильтр?
См. свойства списка, диалог "Выбор из базы данных".
tf_query_db.PNG (3.67 КБ)
T-FLEX CAD 17.1.6.0
 
Цитата
Vite написал:
См. свойства списка, диалог "Выбор из базы данных"
Где взять список?
Успех это способность идти от одной неудачи к другой без потери энтузиазма.
(У.Черчиль)
 
Цитата
ВладиславКМВ написал:
Где взять список?
См. свойства переменной / Список (БД) / "Редакировать"
T-FLEX CAD 17.1.6.0
 
Цитата
Vite написал:
См. свойства переменной / Список (БД) / "Редакировать"
Аа, ну так да, нашёл. Не узнал окошко, у меня оно выглядит по-другому. Хорошая идея с фильтром, чувствую, решение где-то рядом. Я думаю, надо работать с переменной $МатGS, т.к. выдавать необходимый список должна именно она. Применяю для неё фильтр $МатGSКол по полю Наименование (скр.1), но пока результат не то, что нужно (скр.2), в списке наименования из обеих подколлекций, несмотря на то, что $МатGSКол выдаёт какую-либо одну подколлекций
Что означает "...с условием, которая возвращает применяемый фильтр"?
Скрытый текст
Изменено: ВладиславКМВ - 08.01.2016 23:07:19
Успех это способность идти от одной неудачи к другой без потери энтузиазма.
(У.Черчиль)
 
Цитата
ВладиславКМВ написал:
Что означает "...с условием, которая возвращает применяемый фильтр"?
Непосредственно в поле "Фильтр" вы не можете использовать логические конструкции.
T-FLEX CAD 17.1.6.0
 
Цитата
Vite написал:
Непосредственно в поле "Фильтр" вы не можете использовать логические конструкции.
Понятно. Однако, и с фильтром и без фильтра результат одинаков (см.скр.). Фильтр не работает? Или работает как-то по-другому?
Скрытый текст
Успех это способность идти от одной неудачи к другой без потери энтузиазма.
(У.Черчиль)
 
Цитата
Vte написал:
Непосредственно в поле "Фильтр" вы не можете использовать логические конструкции.
Справка вот что выдаёт по этому вопросу:
"Поле “Фильтр” позволяет задавать условия для отбираемых из базы значений (при формировании списка значений). Условия задаются с помощью логических выражений, составленных по тем же правилам, что и выражения для переменных"
Т.е., надо понимать, в качестве фильтра можно применить простую логическую конструкцию. Напр., если я для переменной $МатGS напишу в поле фильтра выражение Подколлекция==Natural (скр.1), то результат получается положительный, переменная выдаёт список только из указанной подколлекции (скр.2)
А если напишу в этом поле более сложную конструкцию find(GS.Наименование, GS.Подколлекция==$МатGSКол) для выбора из нескольких подколлекций, то фильтр уже не работает. Аналогично и с переменной $МатGSКол, фильтр, увы, не возвращает её список.
Скрытый текст

Эврика!!! Пишу в поле Подколлекция==$МатGSКол
Теперь всё как надо. Хорошая идея с фильтром! Дёшево и сердито.
Изменено: ВладиславКМВ - 09.01.2016 11:07:29
Успех это способность идти от одной неудачи к другой без потери энтузиазма.
(У.Черчиль)
 
Опять споткнулся на БД.
Задача такая. Есть БД в Экселе. Книга разложена по листам. Первый лист - общая БД (пл) по производителям и коллекциям. Второй и последующий листы - коллекции с размерами деталей. Необходимо по иерархии пошагово дойти до нужного набора деталей строго одного размера. Шаг1: выбрать производителя из общей БД (пл). Шаг2: выбрать коллекцию этого производителя (другие производители отфильтрованы). Шаг3: Выбрать деталь необходимого исполнения из списка (другие размеры отфильтрованы).
Скрытый текст
Можно, конечно собрать всё в одной БД, тогда вопросов бы не возникло. Но я разбил БД на несколько, одну главную и несколько подчиненных. Теперь надо организовать выбор из нескольких БД. На третьем шаге затык, т.к. появляется уже выбор из разных БД и простым указанием в свойствах переменной Выбор из базы данных уже не подходит, т.к. переменная желательно должна быть одна, а БД будут меняться.
Также можно попробовать делать для каждой БД новую переменную, а потом их связывать общей переменной. Но, думаю, есть способ элегантней, обойтись минимумом переменных. Я попробовал ввести ещё одну промежуточную переменную $БД, которая выводит в значение конкретную подчинённую БД в зависимости от выбранной коллекции. Теперь, по логике, если написать выражение типа find($БД.Текстура, $БД.Размер=="25х40"), то можно получить желаемое. Однако, не получилось. Во-первых нужно получить не одно значение, а список. А во-вторых, эта конструкция вообще не работает. Есть другие конструкции?
В прилагаемом файле, БД, фрагмент и текстуры.
25х40_Шаблон.rar (2.73 МБ)
Успех это способность идти от одной неудачи к другой без потери энтузиазма.
(У.Черчиль)
 
ВладиславКМВ, механизм подчиненных списков реализуется при помощи фильтров, либо заменой элемента управления "Комбинированный список" в диалоге управления, по другому никак.
T-FLEX CAD 17.1.6.0
 
Так может подчиненные таблицы в одну? Ведь по сути они одинаковые. Тогда одна переменная со списком, а фильтр будет по производителю и по коллекции : (Производитель==$плПроизв&&Коллекция==$плКол).
Я бы наверно так и сделал одну главную и одну подчиненную.
 
Цитата
Vite написал:
по другому никак
Придётся идти на компромис:
Цитата
Денис Пользователь написал:
Так может подчиненные таблицы в одну?
Отлично! Результат вполне приемлемый. Во второй таблице записи сгруппировал по коллекциям, чтобы можно было сворачивать ненужные. Получается вполне компактно. В фильтре записал Коллекция==$плКол&&Размер==25х40 Получилось, как надо. Оказывается в фильтре можно использовать несколько переменных. Не знал. Спасибо, Денис.
Скрытый текст
Успех это способность идти от одной неудачи к другой без потери энтузиазма.
(У.Черчиль)
 
Добрый день!
Есть вопрос по БД.
Есть БД по оснастке. Наличие оснастки зависит от диаметра.
На определенные диаметры есть оснастка, на ряд диаметров - нет
В БД внесены только те диаметры, для которых есть оснастка.
Как организовать запрос к БД, чтобы при отсутствии диаметра в БД - запрос возвращал значение 0, а не давал диагностическое сообщение "Ошибка пересчёта переменной" ?

В таблице - диаметры, для которых есть оснастка
Изменено: awmalchuk - 10.02.2016 11:56:14
Практика - критерий истины (с)
 
Если я правильно понял, то можно сделать что-то типа этого.

Номер = rec(Stouns.D==D)
Камни = Номер==0 ? 0 : val(Номер,Stouns.Stouns)
Страницы: Пред. 1 2 3 След.