Обработка значения группы галок — различия между версиями
(Новая страница: «Наверх __TOC__ =Введение= При использовании компонента редактора форм "Группа…») |
|||
| (не показано 6 промежуточных версии этого же участника) | |||
| Строка 2: | Строка 2: | ||
__TOC__ | __TOC__ | ||
| + | |||
| + | |||
=Введение= | =Введение= | ||
| − | |||
| − | |||
| − | |||
| − | 1) | + | При использовании компонента редактора форм "Группа галок" в качестве выходного значения получаем битовую маску вида 0001011101. Где каждый символ - выбранный (1) или не выбранный (0) вариант в группе галок. |
| + | Задача: преобразовать данную маску в строку с перечислением вариантов, выбранных оператором. | ||
| − | <center>[[Файл:grgalok1.jpg|400px]] [[Файл:grgalok2.jpg| | + | |
| + | =Реализация= | ||
| + | |||
| + | '''1''') Создадим таблицу следующего вида (название таблицы в примере - compare): | ||
| + | |||
| + | |||
| + | <center>[[Файл:grgalok1.jpg|400px]] [[Файл:grgalok2.jpg|700px]]</center> | ||
, где | , где | ||
| Строка 19: | Строка 25: | ||
*description1 - описание варианта. | *description1 - описание варианта. | ||
| − | 2)В диалоговой форме добавляем компонент "Группа галок" и укажем следующие элементы: | + | |
| + | '''2''') В диалоговой форме добавляем компонент "Группа галок" и укажем следующие элементы: | ||
[[Файл:grgalok3.jpg|center|800px]] | [[Файл:grgalok3.jpg|center|800px]] | ||
| Строка 27: | Строка 34: | ||
from oktell.dbo.compare | from oktell.dbo.compare | ||
order by index1 | order by index1 | ||
| + | |||
| + | В данном запросе сортировка очень важна, т.к. в таблице абонентов мы указали порядковое значение варианта и оно обязательно должно соответствовать порядку вывода на диалоговую форму. В противном случае не будет соответствия между значением в битовой маске и описанием варианта из созданной ранее таблицы. | ||
| + | |||
| + | |||
| + | '''3''') После этого выполним SQL запрос для получения строки с перечислением выбранных вариантов. | ||
| + | |||
| + | |||
| + | [[Файл:grgalok4.jpg|center|800px]] | ||
| + | |||
| + | [[Файл:grgalok5.jpg|center|800px]] | ||
| + | |||
| + | |||
| + | текст запроса - | ||
| + | |||
| + | <pre> | ||
| + | declare @res nvarchar(4000) | ||
| + | set @res='' | ||
| + | |||
| + | select @res=@res+a.description1+', ' | ||
| + | from ( | ||
| + | select row_number() over (order by index1) as "rn", description1 | ||
| + | from oktell.dbo.compare) | ||
| + | a | ||
| + | where substring(@s,a.rn,1)='1' | ||
| + | |||
| + | |||
| + | select @result=substring(@res,1,len(@res)-1) | ||
| + | </pre> | ||
| + | |||
| + | |||
| + | '''4''') После выполнения данного запроса в переменную "Текст группы галок" запишется перечисление описаний через запятую. | ||
| + | |||
| + | |||
| + | =Результаты= | ||
| + | |||
| + | Выбор значений в диалоговой форме: | ||
| + | |||
| + | [[Файл:grgalok6.jpg|center|800px]] | ||
| + | |||
| + | |||
| + | Результат отображенный в уведомлении: | ||
| + | |||
| + | [[Файл:grgalok7.jpg|center|400px]] | ||
Текущая версия на 11:30, 26 июня 2015
Содержание
Введение
При использовании компонента редактора форм "Группа галок" в качестве выходного значения получаем битовую маску вида 0001011101. Где каждый символ - выбранный (1) или не выбранный (0) вариант в группе галок.
Задача: преобразовать данную маску в строку с перечислением вариантов, выбранных оператором.
Реализация
1) Создадим таблицу следующего вида (название таблицы в примере - compare):
, где
- index1 - порядковое значение данного варианта в таблице абонентов.
- description1 - описание варианта.
2) В диалоговой форме добавляем компонент "Группа галок" и укажем следующие элементы:
Текст запроса в примере -
select description1 from oktell.dbo.compare order by index1
В данном запросе сортировка очень важна, т.к. в таблице абонентов мы указали порядковое значение варианта и оно обязательно должно соответствовать порядку вывода на диалоговую форму. В противном случае не будет соответствия между значением в битовой маске и описанием варианта из созданной ранее таблицы.
3) После этого выполним SQL запрос для получения строки с перечислением выбранных вариантов.
текст запроса -
declare @res nvarchar(4000) set @res='' select @res=@res+a.description1+', ' from ( select row_number() over (order by index1) as "rn", description1 from oktell.dbo.compare) a where substring(@s,a.rn,1)='1' select @result=substring(@res,1,len(@res)-1)
4) После выполнения данного запроса в переменную "Текст группы галок" запишется перечисление описаний через запятую.
Результаты
Выбор значений в диалоговой форме:
Результат отображенный в уведомлении:

