Как динамически сформировать пользовательский SQL отчет

Здесь обсуждаем систему TDM/PDM/Workflow Lotsia PDM PLUS (PartY PLUS).
Ответить
Аватара пользователя
Александр
Активный участник
Сообщения: 1652
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

Как динамически сформировать пользовательский SQL отчет

Сообщение Александр »

Всем привет!
Делаю отчет на основе своего SQL допустим

Код: Выделить всё

 Select rw.id
  From lsdbo.object_reference_view rw,
          lsdbo.object_type_view tw
Where (rw.type_id = tw.id) 
            AND (tw.id = 100003181100000
            AND rw.id in
                (Select av.object_id
                   From lsdbo.attrib_value_view av,
                           lsdbo.value_string_view vv
                 Where av.value_id = vv.id and
                          av.attrib_id = -33 and
                          vv.attrib_id = -33 AND
                          vv.Value 
                              in('Руденко Марина Александровна',
                                  'Балашова Ксения Юрьевна',
                                  'Борзенкова Анна Владимировна',
                                  'Кудрявцева Наталья Валериевна',
                                  'Темнова Алла Сергеевна' )))
т.е. беру все объекты созданные людьми из списка in

Но дело в том что набор этих людей может быть произвольным и известен только перед запуском отчета.
В фильтры вставлять это не хочется (отчет будет слишком долгий)
Хочется из действия изменить текущий отчет на основе своего SQL

Кто нибудь делал?
Последний раз редактировалось Александр 12 фев 2007, 16:16, всего редактировалось 1 раз.

Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный

Аватара пользователя
Александр
Активный участник
Сообщения: 1652
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

Сообщение Александр »

К сожалению передать в секцию in перечисляемый тип строк или чисел (т.е. массив) через аргумент отчета не представляется возможным на текущий момент. Но это дело находится в разработке Лоции
а пока мы поступили просто и некрасиво - заменили in на OR
т.е.

Код: Выделить всё

vv.Value=:FIO_01
or vv.Value=:FIO_01
or vv.Value=:FIO_01
...
or vv.Value=:FIO_20
заведомо внеся избыточность в список возможных значений, т.к. реальное число строк списка отследить в запросе также не представляется возможным :?

или представляется? конечно хотелось бы свести кривость подхода к минимуму

Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный

Аватара пользователя
Александр
Активный участник
Сообщения: 1652
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

Сообщение Александр »

вопрос решился с другой стороны

Код: Выделить всё

Select rw.id
          From lsdbo.object_reference_view rw,
               lsdbo.object_type_view tw
         Where (rw.type_id = tw.id) 
                 AND
               (tw.id = 100003181100000
                 AND rw.id in
                (Select av.object_id
                   From lsdbo.attrib_value_view av,
                        lsdbo.value_string_view vv
                  Where av.value_id = vv.id and
                        av.attrib_id = -33 and
                        vv.attrib_id = -33 AND
                        and CHARINDEX(vv.Value ,:mStr)>0 
но как сделать так чтобы отчет при запуске из действия выполнялся сразу (ведь аргумент определен)
а не выводил окно аргументов с предложением обновиться???

Софт - RicCRM<<LotsiaPDM(4.40)<<MsSQL(5/8)
Уровень администрирования - Альтернативный

Аватара пользователя
Anderyt
Активный участник
Сообщения: 777
Зарегистрирован: 15 июл 2004, 13:15
Используемое ПО: Lotsia PDM PLUS
Откуда: Тюмень
Контактная информация:

Сообщение Anderyt »

кажется, у меня получалось сделать то же самое примерно, но используя LIKE, хотя и в очень неожиданной форме :-) про charindex надо запомнить... это же примерно то же, что pos(), да?
а автоматический запуск - это решается. у отчета есть какие аргументы? вот эти же аргументы нужно передать из действия, в том же порядке... если уже так и сделано, а окно все равно показывается, то вроде нужно добавить в параметры функции для запуска отчета после имени отчета переменную a_object... звучит странно, ведь среди аргументов отчета нету объекта... но это работает ;-)
лучше день потерять, потом за пять минут долететь!
Ответить