powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / ReportingService 2005, Concat;Join;Split, соединить строки в группировке.
25 сообщений из 32, страница 1 из 2
ReportingService 2005, Concat;Join;Split, соединить строки в группировке.
    #36466005
fgrelax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет.
Сделана группировка по name.
Задача, соединить всех пользователей, привязанных к отчету в одну строку, разделив ";".
При этом на серверной стороне выполнять запрос нельзя, только средствами RS или custom code.

--group by name
name userExecutionLog allReports Brep_Admins Brep_AllReports Brep_Developers Administrators

--split user
name userExecutionLogallReports;Brep_Admins;Brep_AllReports;Brep_Developers;Administrators
...
Рейтинг: 0 / 0
ReportingService 2005, Concat;Join;Split, соединить строки в группировке.
    #36490261
boss1999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
создаешь функцию которая позвращает строку
создаешь глобальную стринговую переменную
и еще одну фукнцию в которую ты будешь передвавать переменные значенния свои юзера

dim str as string = nothing

скажем в серое поле пишешь code.totalstring(Fields!User.Value)

sub TotalString(value as string)
str &= IIf(system.string.IsNullOrEmpty(str), string.Format("{0}", value), string.Format("{0}, ", value))
end sub


а в поле User (reportItems) где надо вывести строку
пишешь =Code.GetString()

function GetString() as string
return str
end function

(может быть сразу можно написать Code.str - точно не знаю проверить нада)

типа как то так
...
Рейтинг: 0 / 0
ReportingService 2005, Concat;Join;Split, соединить строки в группировке.
    #36526558
SQLPowerUser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fgrelax
При этом на серверной стороне выполнять запрос нельзя, только средствами RS или custom code.
Почему на сервере нельзя? Можно.
Сложение символьных полей в запросе для SQL Server 2005
...
Рейтинг: 0 / 0
ReportingService 2005, Concat;Join;Split, соединить строки в группировке.
    #36531301
fgrelax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SQLPowerUserfgrelax
При этом на серверной стороне выполнять запрос нельзя, только средствами RS или custom code.
Почему на сервере нельзя? Можно.
Сложение символьных полей в запросе для SQL Server 2005

Вопрос в другом. Мне надо обойтись лишь встроенными средствами RS2005.

Здесь по-более рассмотрены варианты.
http://www.simple-talk.com/sql/t-sql-programming/concatenating-row-values-in-transact-sql/
...
Рейтинг: 0 / 0
ReportingService 2005, Concat;Join;Split, соединить строки в группировке.
    #36531317
boss1999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
так вопрос еще актуален? я уж думал давно решился
столько всего рассказали
...
Рейтинг: 0 / 0
ReportingService 2005, Concat;Join;Split, соединить строки в группировке.
    #36535251
fgrelax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
boss1999,

да актуален. Сможешь написать custom code?
...
Рейтинг: 0 / 0
ReportingService 2005, Concat;Join;Split, соединить строки в группировке.
    #36535262
boss1999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fgrelax,

а тот что выше написал? пробовал подогнать?
...
Рейтинг: 0 / 0
ReportingService 2005, Concat;Join;Split, соединить строки в группировке.
    #36536382
fgrelax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
boss1999,

как в репортинге две функции запихнуть в кастом код?
...
Рейтинг: 0 / 0
ReportingService 2005, Concat;Join;Split, соединить строки в группировке.
    #36536816
boss1999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Легко !!!!
точно так же как и в обычном VB файле
...
Рейтинг: 0 / 0
ReportingService 2005, Concat;Join;Split, соединить строки в группировке.
    #36536820
boss1999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пишешь подряд функцию или процедуру
соот-но к примеру
function test() as string
................
return
end function

sub test1
..........
end sub
...
Рейтинг: 0 / 0
ReportingService 2005, Concat;Join;Split, соединить строки в группировке.
    #36537593
fgrelax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
boss1999,

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
dim str as string = nothing

sub TotalString(value as string)
str &= IIf(system.string.IsNullOrEmpty(str), string.Format("{0}", value), string.Format("{0}, ", value))
end sub;
function GetString() as string
return str
end function

nameuser=Fields!Name.Value=code.totalstring(Fields!User.Value)=Code.GetString()

The Value Expression for the textbox 'textbox6' contains an error: [BC30491] Выражение не порождает значение
...
Рейтинг: 0 / 0
ReportingService 2005, Concat;Join;Split, соединить строки в группировке.
    #36537594
fgrelax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
fgrelax,

custom code (в предыдущем посте ошибку допустил)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
dim str as string = nothing

sub TotalString(value as string)
str &= IIf(system.string.IsNullOrEmpty(str), string.Format("{0}", value), string.Format("{0}, ", value))
end sub

function GetString() as string
return str
end function
...
Рейтинг: 0 / 0
ReportingService 2005, Concat;Join;Split, соединить строки в группировке.
    #36537621
boss1999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не работает?
...
Рейтинг: 0 / 0
ReportingService 2005, Concat;Join;Split, соединить строки в группировке.
    #36537677
fgrelax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
boss1999,

The Value Expression for the textbox 'textbox6' contains an error: [BC30491] Выражение не порождает значение
...
Рейтинг: 0 / 0
ReportingService 2005, Concat;Join;Split, соединить строки в группировке.
    #36537685
boss1999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
а 'textbox6' - это какое поле?
...
Рейтинг: 0 / 0
ReportingService 2005, Concat;Join;Split, соединить строки в группировке.
    #36537748
boss1999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
и еще
попробуй

name | user
_______________________________________________________________________
=code.totalstring(Fields!User.Value) | ____________________________
----------------------------------------------- | =Code.GetString()
...
Рейтинг: 0 / 0
ReportingService 2005, Concat;Join;Split, соединить строки в группировке.
    #36537845
fgrelax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
boss1999а 'textbox6' - это какое поле?
=code.totalstring(Fields!UserName.Value)

boss1999и еще
попробуй

name | user
_______________________________________________________________________
=code.totalstring(Fields!User.Value) | ____________________________
----------------------------------------------- | =Code.GetString()

это так? , если да, то не работает, та же ошибка.

name user=code.totalstring(Fields!User.Value)=Code.GetString()[/quote]
...
Рейтинг: 0 / 0
ReportingService 2005, Concat;Join;Split, соединить строки в группировке.
    #36537911
boss1999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
попробуй без иниц. переменной
т.е. просто dim str as string
...
Рейтинг: 0 / 0
ReportingService 2005, Concat;Join;Split, соединить строки в группировке.
    #36537941
boss1999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
слуш а почему нельзя на сервере сделать это? может запрос покажешь?
...
Рейтинг: 0 / 0
ReportingService 2005, Concat;Join;Split, соединить строки в группировке.
    #36538633
fgrelax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
boss1999попробуй без иниц. переменной
т.е. просто dim str as string

так тоже не работает, ошибка та же.

boss1999
слуш а почему нельзя на сервере сделать это? может запрос покажешь?


Да, в принципе, можно.

Я использовал курсор

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
DECLARE @tbl TABLE (id nvarchar( 4000 ) PRIMARY  KEY,  list nVARCHAR(max))

SET NOCOUNT ON

DECLARE @c nvarchar(max), @p nVARCHAR(max), @cNext nvarchar(max), @pNext nVARCHAR(max)

DECLARE c CURSOR FOR

select name, username
from
(select cc.Name, uc.UserName 
from Catalog cc, PolicyUserRole pc, Users uc
where cc.PolicyID = pc.PolicyID and pc.UserID=uc.UserID)d
order by Name, UserName; 

        OPEN c ;

        FETCH NEXT FROM c INTO @cNext, @pNext ;

        SET @c = @cNext ;

        WHILE @@FETCH_STATUS =  0  BEGIN

             IF @cNext > @c BEGIN

                  INSERT @tbl SELECT @c, @p ;

                  SELECT @p = @PNext, @c = @cNext ;

             END ELSE

                  SET @p = COALESCE(@p + ',', SPACE( 0 )) + @pNext ;

             FETCH NEXT FROM c INTO @cNext, @pNext

        END

        INSERT @tbl SELECT @c, @p ;

        CLOSE c ;

DEALLOCATE c ;

SELECT * FROM @tbl ;

Но хотелось понять, можно ли обойтись custom code.
...
Рейтинг: 0 / 0
ReportingService 2005, Concat;Join;Split, соединить строки в группировке.
    #36538717
boss1999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
на самом деле извратиться можно
но придеца кажется отказаться от группировки

по поводу запроса лучше пользовать временной таблицей
к примеру declare @t table(log nvahcar(100), users nvarchar(1000))

insert @t

select cc.Name, uc.UserName
from Catalog cc, PolicyUserRole pc, Users uc
where cc.PolicyID = pc.PolicyID and pc.UserID=uc.UserID
order by Name, UserName

declare @s nvarchar(1000), @l nvarchar(100)
update @t
set @s=users=case when @s=Log then users + ', ' + @s else users end, @l = log

проверь может ошибся
...
Рейтинг: 0 / 0
ReportingService 2005, Concat;Join;Split, соединить строки в группировке.
    #36538720
boss1999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
все таки будет время (чутка разгружусь) попробую сделать с помощью кода в репортинге
...
Рейтинг: 0 / 0
ReportingService 2005, Concat;Join;Split, соединить строки в группировке.
    #36538726
boss1999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да и
select log,max(users) from @t group by log
...
Рейтинг: 0 / 0
ReportingService 2005, Concat;Join;Split, соединить строки в группировке.
    #36538781
boss1999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну вот как и говорил получилось
Было

стало



ну и сама доработанная функция: (custom code)

dim s as string


function sum(value as string, count_all as integer, curr_row as integer) as string
s = s + "; " + value

if count_all = curr_row then
return s
else
return ""
end if
end function




в дизайнере где users пишем
=code.sum( Fields!USERS.Value, rownumber("DataSource1"), CountRows("DataSource1"))

единственное что останется сделать это написать условие видимости строк, ну эт я думаю сам сделаешь, т.е. как то так - если есть значение users то hidden false иначе true
...
Рейтинг: 0 / 0
ReportingService 2005, Concat;Join;Split, соединить строки в группировке.
    #36538785
boss1999
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
это датасоурс для теста
SELECT 'Log' AS Log, 'Test1' AS USERS
UNION ALL
SELECT 'Log' AS Log, 'Test2' AS USERS
UNION ALL
SELECT 'Log' AS Log, 'Test3' AS USERS
...
Рейтинг: 0 / 0
25 сообщений из 32, страница 1 из 2
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / ReportingService 2005, Concat;Join;Split, соединить строки в группировке.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]