Обработка значения группы галок — различия между версиями

Материал из Oktell
Перейти к: навигация, поиск
(Новая страница: «Наверх __TOC__ =Введение= При использовании компонента редактора форм "Группа…»)
 
 
(не показано 6 промежуточных версии этого же участника)
Строка 2: Строка 2:
  
 
__TOC__
 
__TOC__
 +
 +
  
 
=Введение=
 
=Введение=
  
При использовании компонента редактора форм "Группа галок" в качестве выходного значения получаем битовую маску вида 0001011101.
 
Цель данной статьи преобразовать данную маску в строку с перечислением вариантов выбранных оператором.
 
  
==Реализация==
 
  
1)Создадим таблицу следующего вида (название таблицы в примере - compare):
+
При использовании компонента редактора форм "Группа галок" в качестве выходного значения получаем битовую маску вида 0001011101. Где каждый символ - выбранный (1) или не выбранный (0) вариант в группе галок.
  
 +
Задача: преобразовать данную маску в строку с перечислением вариантов, выбранных оператором.
  
<center>[[Файл:grgalok1.jpg|400px]] [[Файл:grgalok2.jpg|800px]]</center>
+
 
 +
=Реализация=
 +
 
 +
'''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):


Grgalok1.jpg Grgalok2.jpg

, где

  • index1 - порядковое значение данного варианта в таблице абонентов.
  • description1 - описание варианта.


2) В диалоговой форме добавляем компонент "Группа галок" и укажем следующие элементы:

Grgalok3.jpg

Текст запроса в примере -

select description1
from oktell.dbo.compare
order by index1

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


3) После этого выполним SQL запрос для получения строки с перечислением выбранных вариантов.


Grgalok4.jpg
Grgalok5.jpg


текст запроса -

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) После выполнения данного запроса в переменную "Текст группы галок" запишется перечисление описаний через запятую.


Результаты

Выбор значений в диалоговой форме:

Grgalok6.jpg


Результат отображенный в уведомлении:

Grgalok7.jpg