Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Объеденить несколько полей в одно  [new]
13Q
Member

Откуда:
Сообщений: 10
Необходимо вставить заданную в SSRS переменную в таблицу.

Запрос в SSRS выглядит так:

insert into Table (Value)

Select @Value

Так как переменная предполагает возможность выбора нескольких значений, то вставить не получается, т.к. получается что кол-во полей не совпадает. SSRS выводит эту переменную следующим образом: N''Value1'',N''Value2'',N''Value3'' и т.д. а вставить все это нужно в 1 поле в таблице (да если и не в одно вставлять, все ровно заранее предсказать кол-во значений нельзя).
Вопрос собственно в том, как их объединить в одно значение. Пробовал прописывать кавычки (Select ''''+@Value+''''), не помогает, конвертировать переменную в текст или варчар так же не дает.
Может кто сталкивался и имеет готовое решение?

Заранее спасибо.
19 янв 12, 14:42    [11933030]     Ответить | Цитировать Сообщить модератору
 Re: Объеденить несколько полей в одно  [new]
Зайцев Фёдор
Member

Откуда: Лужки
Сообщений: 5308
а можно вместо "бла-бла-бла" увидеть структуру таблицы, пример данных и результат инсёрта?
19 янв 12, 15:36    [11933497]     Ответить | Цитировать Сообщить модератору
 Re: Объеденить несколько полей в одно  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
13Q
Необходимо вставить заданную в SSRS переменную в таблицу.

А на кой, простите вам это надо??

13Q
Запрос в SSRS выглядит так:

insert into Table (Value)

Select @Value

Так как переменная предполагает возможность выбора нескольких значений, то вставить не получается, т.к. получается что кол-во полей не совпадает. SSRS выводит эту переменную следующим образом: N''Value1'',N''Value2'',N''Value3'' и т.д. а вставить все это нужно в 1 поле в таблице (да если и не в одно вставлять, все ровно заранее предсказать кол-во значений нельзя).
Вопрос собственно в том, как их объединить в одно значение. Пробовал прописывать кавычки (Select ''''+@Value+''''), не помогает, конвертировать переменную в текст или варчар так же не дает.
Может кто сталкивался и имеет готовое решение?

Заранее спасибо.

Скорее всего так сделать нельзя, потому что эти значения становятся частью строки запроса, а не параметром.
19 янв 12, 21:21    [11935978]     Ответить | Цитировать Сообщить модератору
 Re: Объеденить несколько полей в одно  [new]
qwerty112
Guest
13Q
Необходимо вставить заданную в SSRS переменную в таблицу.

Запрос в SSRS выглядит так:

insert into Table (Value)

Select @Value

Так как переменная предполагает возможность выбора нескольких значений, то вставить не получается, т.к. получается что кол-во полей не совпадает. SSRS выводит эту переменную следующим образом: N''Value1'',N''Value2'',N''Value3'' и т.д. а вставить все это нужно в 1 поле в таблице (да если и не в одно вставлять, все ровно заранее предсказать кол-во значений нельзя).
Вопрос собственно в том, как их объединить в одно значение. Пробовал прописывать кавычки (Select ''''+@Value+''''), не помогает, конвертировать переменную в текст или варчар так же не дает.
Может кто сталкивался и имеет готовое решение?

Заранее спасибо.

на ХП переделай это своё г.
и в ней анализируй/"вставляй"
19 янв 12, 23:40    [11936344]     Ответить | Цитировать Сообщить модератору
 Re: Объеденить несколько полей в одно  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
qwerty112
13Q
Необходимо вставить заданную в SSRS переменную в таблицу.

Запрос в SSRS выглядит так:

insert into Table (Value)

Select @Value

Так как переменная предполагает возможность выбора нескольких значений, то вставить не получается, т.к. получается что кол-во полей не совпадает. SSRS выводит эту переменную следующим образом: N''Value1'',N''Value2'',N''Value3'' и т.д. а вставить все это нужно в 1 поле в таблице (да если и не в одно вставлять, все ровно заранее предсказать кол-во значений нельзя).
Вопрос собственно в том, как их объединить в одно значение. Пробовал прописывать кавычки (Select ''''+@Value+''''), не помогает, конвертировать переменную в текст или варчар так же не дает.
Может кто сталкивался и имеет готовое решение?

Заранее спасибо.

на ХП переделай это своё г.
и в ней анализируй/"вставляй"

Разница то в чем, ХП или не ХП?
20 янв 12, 21:06    [11942952]     Ответить | Цитировать Сообщить модератору
 Re: Объеденить несколько полей в одно  [new]
qwerty112
Guest
Mind
qwerty112
пропущено...

на ХП переделай это своё г.
и в ней анализируй/"вставляй"

Разница то в чем, ХП или не ХП?

ты это серьёзно ?

нуу, я ещё разок повторю - недойдёт - бросай это дело и дуй в счетоводы

qwerty112
на ХП переделай это своё г.
и в ней анализируй/"вставляй"


объясняю, в ХП получаеш строковой параметр вида N''Value1'',N''Value2'',N''Value3''
преобрзовываеш его как тебе нужно
(я, например, в хмл преобразовывал, но мне нужен был фильтр по всем значениям)
и "вставляеш"
21 янв 12, 17:32    [11945191]     Ответить | Цитировать Сообщить модератору
 Re: Объеденить несколько полей в одно  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 31949
qwerty112
ты это серьёзно ?

нуу, я ещё разок повторю - недойдёт - бросай это дело и дуй в счетоводы
Тоже непонятно, чем таким особенным хп отличается от обычного батча, каких именно ограничений батча там нет.
21 янв 12, 18:49    [11945501]     Ответить | Цитировать Сообщить модератору
 Re: Объеденить несколько полей в одно  [new]
qwerty112
Guest
alexeyvg
qwerty112
ты это серьёзно ?

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

да шожж такое, то ...

вы, вот это про "обычного батча", в контексте условий ТС "выдвигаете" ?
автор
Необходимо вставить заданную в SSRS переменную в таблицу.

Запрос в SSRS выглядит так:
21 янв 12, 21:13    [11946051]     Ответить | Цитировать Сообщить модератору
 Re: Объеденить несколько полей в одно  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
qwerty112
Mind
пропущено...

Разница то в чем, ХП или не ХП?

ты это серьёзно ?

Разница то в чем, ХП или не ХП, применительно к данной проблеме?

qwerty112
нуу, я ещё разок повторю - недойдёт - бросай это дело и дуй в счетоводы

Уж как нибудь без тебя разберемся кому куда идти.

qwerty112
объясняю, в ХП получаеш строковой параметр вида N''Value1'',N''Value2'',N''Value3''

Проблема то как раз в том чтобы получить строковый параметр из SSRS.


Если топикстартеру еще нужен ответ на его вопрос, то вот он. Значение параметра нужно передавать вот так:
=JOIN(Parameters!Color.Value, “,”)
Потом строку можно будет парсить функцией Split, делать естественно это можно хоть в батче хоть в процедуре, разницы нет.

Ну и вот ссылка на описалово проблемы и её решения (сорри что на английском, на русском я уже ничего не гуглю):
http://munishbansal.wordpress.com/2008/12/29/passing-multi-value-parameter-in-stored-procedure-ssrs-report/
23 янв 12, 21:25    [11956295]     Ответить | Цитировать Сообщить модератору
 Re: Объеденить несколько полей в одно  [new]
qwerty112
Guest
Mind
qwerty112
объясняю, в ХП получаеш строковой параметр вида N''Value1'',N''Value2'',N''Value3''

Проблема то как раз в том чтобы получить строковый параметр из SSRS.

нет такой проблемы,
автор
Так как переменная предполагает возможность выбора нескольких значений, то вставить не получается, т.к. получается что кол-во полей не совпадает. SSRS выводит эту переменную следующим образом: N''Value1'',N''Value2'',N''Value3''

пропавший автор, использует параметр-"список значений" - комбобокс с флажками для выбора
и в параметре УЖЕ содержится - N''Value1'',N''Value2'',N''Value3'' - не нужен ему этот JOIN

Mind
Потом строку можно будет парсить функцией Split, делать естественно это можно хоть в батче хоть в процедуре, разницы нет.

ага, когда её добавят в Т-СКЛ :)
http://munishbansal.wordpress.com/2008/12/29/passing-multi-value-parameter-in-stored-procedure-ssrs-report/
WHERE @Color IS NULL OR Color IN (SELECT * FROM SplitList(@Color, ‘,’))

where SplitList is a UDF which takes the list and the de-limiter as input parameters and splits all the values.


т.е. - вместо одной процедуры, где бы содержалась вся логика обработки,
вы предлагаете автору обзавестись ЮДФ-ом, и запрос держать/править на клиенте ?
и чем же это лучше ?

зы
да и "разница" есть
24 янв 12, 01:50    [11957358]     Ответить | Цитировать Сообщить модератору
 Re: Объеденить несколько полей в одно  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
Если человек не знает о чем идет речь, у него есть 2 варианта:
1. Разобраться, сделать пару тестов, понять в чем проблема.
2. Предлагать решения не имеющие отношения к проблеме и в случае чего посылать всех несогласных в счетоводы.

qwerty112
Mind
пропущено...

Проблема то как раз в том чтобы получить строковый параметр из SSRS.

нет такой проблемы,

Сам пробовал? Пример пожалуйста, потом будет общаться дальше.

qwerty112
автор
Так как переменная предполагает возможность выбора нескольких значений, то вставить не получается, т.к. получается что кол-во полей не совпадает. SSRS выводит эту переменную следующим образом: N''Value1'',N''Value2'',N''Value3''

пропавший автор, использует параметр-"список значений" - комбобокс с флажками для выбора
и в параметре УЖЕ содержится - N''Value1'',N''Value2'',N''Value3'' - не нужен ему этот JOIN

Был бы автор еще жив он бы с тобой не согласился. Плохой из тебя доктор.
И что такое по твоему N''Value1'',N''Value2'',N''Value3'' ? Не смущают кавычки и запятые? Не? Это не одно значение, а несколько, которые передаются не параметром. Оно в таком виде из SSRS подставляется в строку: WHERE colname IN (N''Value1'',N''Value2'',N''Value3") и выполняется. Единственный способо получить это в виде строкового параметра это использовать функцию JOIN в SSRS.

qwerty112
Mind
Потом строку можно будет парсить функцией Split, делать естественно это можно хоть в батче хоть в процедуре, разницы нет.

ага, когда её добавят в Т-СКЛ :)
http://munishbansal.wordpress.com/2008/12/29/passing-multi-value-parameter-in-stored-procedure-ssrs-report/
WHERE @Color IS NULL OR Color IN (SELECT * FROM SplitList(@Color, ‘,’))

where SplitList is a UDF which takes the list and the de-limiter as input parameters and splits all the values.


т.е. - вместо одной процедуры, где бы содержалась вся логика обработки,
вы предлагаете автору обзавестись ЮДФ-ом, и запрос держать/править на клиенте ?
и чем же это лучше ?

Да какая еще логика? Парсинг строки? Один раз в функцию и потом вызывать где угодно, хоть из батча, хоть из процедуры. Какая то другая логика? Не знаю такой, автор её не озвучил.
25 янв 12, 00:00    [11964617]     Ответить | Цитировать Сообщить модератору
 Re: Объеденить несколько полей в одно  [new]
qwerty112
Guest
Mind
Был бы автор еще жив он бы с тобой не согласился. Плохой из тебя доктор.
И что такое по твоему

N''Value1'',N''Value2'',N''Value3'' ? Не смущают кавычки и запятые? Не? Это не одно значение, а несколько, которые

передаются не параметром. Оно в таком виде из SSRS подставляется в строку: WHERE colname IN

(N''Value1'',N''Value2'',N''Value3") и выполняется. Единственный способо получить это в виде строкового параметра

это использовать функцию JOIN в SSRS.

НЕ СМУЩАЮТ !

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

получается что кол-во полей не совпадает. SSRS выводит эту переменную следующим образом:

N''Value1'',N''Value2'',N''Value3''

"SSRS выводит эту переменную" - без всяких JOIN-ов, заметь !

единственное, что меня могло бы "смутить", это то, что автор называет параметр - "переменной"
но, и этому я вижу вполне простое (медицинское - тут я с тобой согласен) объяснение: автор - просто тупень, и не
знает разницы между "параметр отчета" и "переменная отчета", поэтому и тулит то, что первое всплыло "в мозге"

а вот где твоё объяснение выделенных фраз ??

и если на то пошло, то автору НЕ НУЖЕН твой WHERE colname IN (N''Value1'',N''Value2'',N''Value3")
ему "нужен"
insert into Table (Value1, Value2, ..., ValueN)
Select N'Value1', N'Value2' ..., N'ValueN'


как тут должна помочь твоя славная UDF ?? или под "батчем" нужно понимать клепание и выполнение динамического
запроса в SSRS ? так ? ....нуу знаете ли "дохтар" ...

Mind
Сам пробовал? Пример пожалуйста, потом будет общаться дальше.

нудный ты, слишком, для "общаться дальше"
вот тебе тест, в картинках, для "дохтаров"

+
create proc haba_haba 
	@ПараметрКоторыйОченьТяжелоПолучитьИзSSRS nvarchar (max)
as
begin
print @ПараметрКоторыйОченьТяжелоПолучитьИзSSRS
	select @ПараметрКоторыйОченьТяжелоПолучитьИзSSRS as xz
end	
go

create table T (fld nvarchar(20) primary key)
go

insert into T

select 'одын' union all
select 'тфа' union all
select 'тры' union all
select 'двадцатьвосемь'


К сообщению приложен файл. Размер - 45Kb
25 янв 12, 12:40    [11966910]     Ответить | Цитировать Сообщить модератору
 Re: Объеденить несколько полей в одно  [new]
qwerty112
Guest
Mind
qwerty112

т.е. - вместо одной процедуры, где бы содержалась вся логика обработки,
вы предлагаете автору обзавестись ЮДФ-ом, и запрос держать/править на клиенте ?
и чем же это лучше ?

Да какая еще логика? Парсинг строки? Один раз в функцию и потом вызывать где угодно, хоть из батча, хоть из процедуры. Какая то другая логика? Не знаю такой, автор её не озвучил.


"какая еще логика?" - даа, ЛЮБАЯ ЛОГИКА, отличная от простого select ... from Tab; !
как-то даже неудобно говорить об этом человеку, у которого в профиле значится DBA

тут один толковый доктор, проводил сеансы терапии,
для "постродавших от эмбдед СКЛ-я" поциентов - Stored procedure vs Insert/Update/Delete

рекомендую,
(у меня - врядли получится лучше)
25 янв 12, 12:55    [11967071]     Ответить | Цитировать Сообщить модератору
 Re: Объеденить несколько полей в одно  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
qwerty112,

Хорошо, разница в том, что при использовании процедуры, SSRS сам дотумкивает объединить несколько строк через запятые в одну строку и передать это в качестве параметра в процедуру. В случае же батча чтобы достичь того же эффекта нужно использовать JOIN в SSRS иначе параметр фик достанешь в правильном виде. Делать же это через процедуру или батч пусть решает сам пациент, который уже мертв, так что доктора могут идти домой. Так пойдет?
25 янв 12, 21:35    [11971991]     Ответить | Цитировать Сообщить модератору
 Re: Объеденить несколько полей в одно  [new]
qwerty112
Guest
Mind
Так пойдет?

вполне :)
25 янв 12, 23:38    [11972668]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить