powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / RS2005:Как использовать multiValue параметр в процедуре?
7 сообщений из 7, страница 1 из 1
RS2005:Как использовать multiValue параметр в процедуре?
    #36147390
minya13_85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Работаю в RS2005. Есть некая процедура:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
CREATE PROCEDURE [dbo].[ddd]
@Fdata datetime,@Ldata datetime,@Proba int
AS
BEGIN
    SELECT  Artikul,proba,data
    FROM  main.dbo.jornal       
    WHERE  data>=@Fdata and data<=@Ldata and Proba in (@Proba)
END
Использую данную процедуру в отчете. Параметру @Proba ставлю: MultiValue, чтобы пользователи смогли выбрать несколько значений проб галочками. одно значение нормально, два значения не передает, выдает ошибку.
Как это можно реализовать? Читал посты на эту тему, я там ничего не понял. Понял что нужно создать таблицу некую и туда записывать выбранные пробы, а потом
Код: plaintext
 where Proba in (select Proba from Table)
А как туда записывать то, что выбрал пользователь?
...
Рейтинг: 0 / 0
RS2005:Как использовать multiValue параметр в процедуре?
    #36147509
Bigheadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) Что за ошибка?
2) У вас параметр @Proba описан как int. А это одно значение! Каким образом по-вашему процедура должна принять на вход несколько значений?

Если вы вставите в текст запроса датасета собственно сам запрос (а не вызов хранимки):
Код: plaintext
1.
2.
3.
    SELECT  Artikul,proba,data
    FROM  main.dbo.jornal       
    WHERE  data>=@Fdata and data<=@Ldata and Proba in (@Proba)
и сделаете привязку параметров, то все должно успешно заработать. Если очень нужна именно хранимка (вы уверены в этом?!), то необходимы дополнительные действия.
...
Рейтинг: 0 / 0
RS2005:Как использовать multiValue параметр в процедуре?
    #36147585
minya13_85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Bigheadman1) Что за ошибка?
2) У вас параметр @Proba описан как int. А это одно значение! Каким образом по-вашему процедура должна принять на вход несколько значений?

Если вы вставите в текст запроса датасета собственно сам запрос (а не вызов хранимки):
Код: plaintext
1.
2.
3.
    SELECT  Artikul,proba,data
    FROM  main.dbo.jornal       
    WHERE  data>=@Fdata and data<=@Ldata and Proba in (@Proba)
и сделаете привязку параметров, то все должно успешно заработать. Если очень нужна именно хранимка (вы уверены в этом?!), то необходимы дополнительные действия. нужна хранимка это точно, я указал просто пример. А вообще у меня используются временные таблицы, курсоры и т.д.
...
Рейтинг: 0 / 0
RS2005:Как использовать multiValue параметр в процедуре?
    #36147605
Bigheadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Тогда с помощью Expression вы можете сформировать строку со всеми выбраннымии Value параметра и передать ее в хранимку.
Код: plaintext
=Join(Parameters!Param.Value,",")
А в хранимке выполняйте парсинг и обрабатывайте дальше, как вам нужно.
...
Рейтинг: 0 / 0
RS2005:Как использовать multiValue параметр в процедуре?
    #36147637
minya13_85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BigheadmanТогда с помощью Expression вы можете сформировать строку со всеми выбраннымии Value параметра и передать ее в хранимку.
Код: plaintext
=Join(Parameters!Param.Value,",")
А в хранимке выполняйте парсинг и обрабатывайте дальше, как вам нужно.Можно по-подробнее? Я что-то не понял.
...
Рейтинг: 0 / 0
RS2005:Как использовать multiValue параметр в процедуре?
    #36147697
--__Александр__--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
minya13_85
1) Посмотрите профайлером, какую строку на вход подается в вашу хп, когда выбирается несколько значений.
2) Перепишите вашу ХП так, что бы она корректно обрабатывала эту входную строку.
...
Рейтинг: 0 / 0
RS2005:Как использовать multiValue параметр в процедуре?
    #36147862
minya13_85
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
--__Александр__--minya13_85
1) Посмотрите профайлером, какую строку на вход подается в вашу хп, когда выбирается несколько значений.
2) Перепишите вашу ХП так, что бы она корректно обрабатывала эту входную строку.
В общем сделал так:
Код: 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.
Создал функцию:

CREATE FUNCTION [dbo].[Proba_Vibor] (@Proba ntext)
RETURNS 
@tbl TABLE 
(listpos int IDENTITY( 1 ,  1 ) NOT NULL,number  int NOT NULL)
AS
BEGIN
	DECLARE @pos      int,
              @textpos  int,
              @chunklen smallint,
              @str      nvarchar( 4000 ),
              @tmpstr   nvarchar( 4000 ),
              @leftover nvarchar( 4000 )

      SET @textpos =  1 
      SET @leftover = ''
      WHILE @textpos <= datalength(@Proba) /  2 
      BEGIN
         SET @chunklen =  4000  - datalength(@leftover) /  2 
         SET @tmpstr = ltrim(@leftover + substring(@Proba, @textpos, @chunklen))
         SET @textpos = @textpos + @chunklen

         SET @pos = charindex(',', @tmpstr)
         WHILE @pos >  0 
         BEGIN
            SET @str = substring(@tmpstr,  1 , @pos -  1 )
            INSERT @tbl (number) VALUES(convert(int, @str))
            SET @tmpstr = ltrim(substring(@tmpstr, @pos +  1 , len(@tmpstr)))
            SET @pos = charindex(',', @tmpstr)
         END

         SET @leftover = @tmpstr
      END

      IF ltrim(rtrim(@leftover)) <> ''
         INSERT @tbl (number) VALUES(convert(int, @leftover))
	RETURN 
END

В процедуре прописал:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
CREATE PROCEDURE [dbo].[ddd]
@Fdata datetime,@Ldata datetime,@Proba nvarchar( 10 )
AS
BEGIN
    SELECT  Artikul,proba,data
    FROM  main.dbo.jornal       
    WHERE  data>=@Fdata and data<=@Ldata and Proba in (select number from [dbo].[Proba_Vibor] (@Proba))
END

в параметре проба изменил integer на string, поставил значение multivalue, всё сработало.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Отчетные системы [игнор отключен] [закрыт для гостей] / RS2005:Как использовать multiValue параметр в процедуре?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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