Topic: Сложение содержимого ячеек

Как сложить текстовое содержимое определенных ячеек таблиц-словарей и поместить содержимое в другую ячейку-словарь для отображения в TableGrid и ComboBox.

Re: Сложение содержимого ячеек

думаю это можно сделать вычисляемым полем, лучше опишите вашу ситуацию, для чего это необходимо сделать.

Dmitry.

Re: Сложение содержимого ячеек

Есть словарь "Сотрудники", в нем поля: фамилия, имя, отчество, должность, место. Я хочу, чтобы содержимое этих полей "складывалось" и отображалось в combobox.
Кстати про глюк в объекте combobox: в выпадающем списке первая строчка всегда пустая. Если в запущенном проекте выбрать первую строчку, то это вызывает ошибку.
И еще очень мало информации про возможности "Вычисляемое поле". Вы, как разработчик, знаете все про это, так поделитесь с нами, пользователями, всем объемом информации. smile

Re: Сложение содержимого ячеек

В свойсте ComboBox-а FieldName вы можете указать несколько полей, например:


{lastname} {firstname} {secondname}  Должность: {dolzhnost}, Место: {mesto}


т.е. в фигурным скобках указываются названия полей,  а без скобок указывается необходимый поясняющий текст.


У ComboBox всегда первая строчка пустая, это не ошибка, а дает возможность например удалить значение из ComboBox-а при редактировании записи, просто выбрав пустую строчку.


На счет вычисляемых полей:
Там вы можете указать формулу, если в таблице допустим есть поля содержащие значения цены и количества, то чтобы получить итоговое значение стоимости, в выч. поле можно написать: cena*kolichestvo, где cena и kolichestvo это названия полей.


так же в вычисляемом поле можно написать полноценный SQL запрос, но это уже соответственно требует знаний SQL синтаксиса, и если вы его знаете, то скорей всего и знаете как пользоваться вычисляемыми полями )


Стоит помнить, что вы не можете сохранять данные в вычисляемое поле, т.к. его на самом деле не существует в базе данных, т.к. это просто результат вычислений или SQL запроса.

Dmitry.

5 (edited by Владислав Косяков 2014-04-30 16:05:23)

Re: Сложение содержимого ячеек

Еще раз возвращаюсь к своему вопросу.
Со скобками, конечно, интересно интересно получилось: Ивановиванивановичпрограммист. Как вставлять пробелы между значениями?
Как сложить значения и вставить в ячейку TableGird, с пробелами?
Пытался через вычисляемое поле сложить (CALCULATED:DocTypeSl.DocType,DocSl.NDoc,DocSl.DateDoc,DocSl.SummDoc,OrgSl.Org,\r\n)
не вышло.
Но, на мой взгляд, это то же полумера. Было бы лучше сложить значения в словаре и брать их от туда уже в "готовом" виде. Как можно это сделать?
И можно что нибудь про вычисляемое поле/функции? Некоторые из них в первый раз вижу.

Re: Сложение содержимого ячеек

Владислав Косяков
чтобы вставить пробел, нужно вставить пробел smile
{field1} {field2}
между {field1} и {field2} есть пробел.


чтобы склеить поля между собой в вычисляемых полях, используйте знак ||
DocTypeSl.DocType || DocSl.NDoc

с пробелом: DocTypeSl.DocType || ' ' || DocSl.NDoc

Dmitry.

Re: Сложение содержимого ячеек

С пробелом между } { получилось, с || нет
(CALCULATED:DocTypeSl.DocType||DocSl.NDoc||DocSl.DateDoc||DocSl.SummDoc\r\n)

Re: Сложение содержимого ячеек

Владислав Косяков
протестировал у себя, выяснил что такое сложение не работает, если хотя бы одно поле не будет содержать информацию.

сделайте вычисляемое поле такого вида:
ifnull('', DocTypeSl.DocType) || ifnull('', DocSl.NDoc) || ifnull('', DocSl.DateDoc) || ifnull('', DocSl.SummDoc)


я добавил функцию ifnull, которая возвращает пустую строку, если в поле нет информации.

Dmitry.

Re: Сложение содержимого ячеек

Что-то у меня не получается одновременно "СВЯЗЬ" и "ВЫЧИСЛЯЕМОЕ ПОЛЕ".

Re: Сложение содержимого ячеек

Можете подробней рассказать, что не получается?

Dmitry.

Re: Сложение содержимого ячеек

В словаре OborSl добавил строку Doc2 - вычисляемое поле - ifnull('',DocSl.DocName)||ifnull('',DocSl.SummDoc)
Выдает ошибку Нет столбца DocSl.DocName. Но он там есть!!!
То же самое делал в словаре DocSl
Результат тот же. Я совсем запутался с этим вычисляемым полем.

Re: Сложение содержимого ячеек

Владислав Косяков
Судя по вашему описанию, вы пытаетесь из таблицы OborSl сложить строки из таблицы DocSl ?
программа не может знать, от какой именно записи, вы хотите сложить строки из таблицы DocSl


пришлите проект на емейл с описанием, того что необходимо сделать.

Dmitry.