Подскажите как сделать свой View?

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

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

короче вот такая запись внедренного массива не проходит

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

select  *
from :view
(зведочка вполне правомерна все имена колонок определены в виде)
Последний раз редактировалось Александр 21 мар 2008, 11:59, всего редактировалось 1 раз.

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

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

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

это я все к тому что если во внедренном массиве оставить только параметр и все и в качестве параметра передавать строку запроса целиком 'select * from lsdbo.Ric_PSft_view' то это не проходит

вобщем запрос внедренного массива обязательно должен содержать осмысленную/фиксированную секцию FROM

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

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

Сообщение Anderyt »

надо на примере..
напишите функцию Лоции, в которую вы вставили запрос и куда вы хотите передать параметры.
если отметите, что именно является параметром и какого типа (строка, число) - попробую привести синтаксис...
по крайней мере с exec_SQLSelect в действиях над объектами мы такое делать практически научились..
так что жду примера ;-)
лучше день потерять, потом за пять минут долететь!
Аватара пользователя
Александр
Активный участник
Сообщения: 1652
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

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

Андрей ну давай еще раз :wink:
1.Есть форма работы
2.На най есть Масив
3.Массив создается внедренным запросом
4.Запрос вводится через контекстное меню массива 'Внедрить SQL Select'
5.Этот запрос вглядит так 'select * from lsdbo.Ric_PSft_view' он возвращает 4 колонки т.е. массив
6. У меня есть еще три View которыми бы я хотел наполнять тот же самый массив
7. Я делаю переменную myView чтобы передавать через нее интересующий меня вид например lsdbo.Ric_PSft_view
8 Я модифицирую внедренный SQL Select на запись вида 'select * from :myView'
9 Данный синтаксис не проходит - ошибка

10 Сижу и думаю как обойти данную проблему :wink: :wink:

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

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

Сообщение Anderyt »

хм... а вот с "Внедрить SQL Select" я не работал.... :-(
могу только послать вас в Теххелп ;-)
лучше день потерять, потом за пять минут долететь!
Аватара пользователя
Александр
Активный участник
Сообщения: 1652
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

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

хорошо :wink: :wink:
скажи как это реализовать теми средствами которыми ты работал? :wink: :wink:

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

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

Сообщение Anderyt »

привожу функцию из ДЕЙСТВИЯ НАД ОБЪЕКТАМИ.
там можно написать вот так:

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

Var_array_version_IDs = Set ( f_ExecSQLSelect_2 ('execute lsdbo.custom_proc_get_ver_ids_of_child_objects_wo_rights '+a_Object + ', '+ var_group + ', ~''+ var_ver_rights+'~'', '',';')+';' )
обратите внимание, a_Object и var_group - числовые параметры, поэтому вставляются просто в разрыв строки.
var_ver_rights - строковый параметры, нужно, чтобы он был выделен одинарными кавычками, поэтому используются ~'' и '~'.
а вот если название вида...
название вида мы не передавали.
можно попробовать ставить его так же, как и числовые переменные... вдруг прокатит..
в крайнем случае, можно сделать так:

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

f_ExecSQLSelect_2(
case(var_my_view
when is = 'my_view_1' then 'select * from lsdbo.my_view_1'
when is = 'my_view_2' then 'select * from lsdbo.my_view_2'
),'',''
)
коряво, но работать должно.
если нет - то прямая дорога в Теххелп ;-)
лучше день потерять, потом за пять минут долететь!
Аватара пользователя
Александр
Активный участник
Сообщения: 1652
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

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

все же давай вернемся к WorkFlow к многомерным массивам (не спискам) :wink: ведь речь идет именно о них - не так ли :wink:

давай спрошу по другому
1. есть массив WorkfLow
2. он заполняется запросом
3. пусть не через контекстное меню пусть через
(f_EmbeddedSQLSelect ( this , ' <SQLSelect_Statement> ' , ' <ArgsList> ' , ' <FormVarName> ' )

ВОПРОС
можно ли данную процедуру выполнять неоднократно в процессе работы
т.е. фактически в реальном времени пересоздавать СТРУКТУРУ массива???

ИЛИ

можно ли данный вызов записать как

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

(f_EmbeddedSQLSelect ( this , 'select * from :myView' , 'lsdbo.Ric_PSft_view' , ' мой массив ' )
???

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

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

Сообщение Anderyt »

Александр, если совсем коротко - я НЕ ЗНАЮ.
сам я такого не пробовал, поэтому не могу сказать, можно или нет.
я просто предложил некоторые способы, как можно попробовать.
но вот что смущает... а можно в EmbeddedSQLSelect использовать select * ??
мы обычно используем запросы по какой то конкретной колонке, ведь массивы все одномерные..
или я ошибаюсь?
лучше день потерять, потом за пять минут долететь!
Аватара пользователя
Александр
Активный участник
Сообщения: 1652
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

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

да с одной стороны массивы конечно одномерные :wink: но собранные вместе в одной форме верхнего массива они становятся многомерными

давай вообще отвлечемся и поставлю вопрос по другому
можно ли разнести этапы создания и наполнения массива?

в идеале...
я на форме делаю многомерный ПУСТОЙ строковый массив
для чего
1. Создаю переменную Массив1 типа массив, и 4 переменных колонка1, колонка2, колонка3, колонка4 также типа массив

для физического создания массива на форме Массив1 делаю внедренный запрос

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

Select
   '' as колонка1
   '' as колонка2
   '' as колонка3
   '' as колонка4
Получаю ПУСТОЙ массив с именем Массив1 состоящий из 4х колонок

теперь второй момент - нужно заполнить его
как это можно сделать
1. Просто в действии над переменными добавить новую строку
или
а вот тут и сам вопрос
можно ли заполнить уже созданный пустой массив результатами своего другого запроса автоматически какой либо функцией
типа

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

Select
   v1 as колонка1
   v2 as колонка2
   v3 as колонка3
   v4 as колонка4
from lsdbo.....
если да - то надобность в параметрах внедренного запроса отпадает вообще

не знаю понятно ли объяснил....

ps
вопрос полностью пересекается с темой http://www.lplm.ru/phpBB2/viewtopic.php?t=375&start=105 8я страница :wink: :wink:

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

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

Сообщение Anderyt »

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

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

temp_str = f_EmbeddedSQLSelect
(this, 
'

	select link_id
	from lsdbo.tree_link_view
                where
                link_type_id = 1
                and
	parent_id = :object_id
', 
'object_id,number', 
'Obj_id_array')

temp_str = string(f_RetrieveForm ( this , 'object_id' , ' Obj_id_Array ' ))

temp_str = f_FormDataToArray ( this , 'Obj_id_Array' )
таким образом, на текущей форме массив Obj_id_Array заполняется нужными элементами..
а с внедренными селектом я не работал еще...
лучше день потерять, потом за пять минут долететь!
Аватара пользователя
Александр
Активный участник
Сообщения: 1652
Зарегистрирован: 24 авг 2006, 08:06
Используемое ПО: Lotsia PDM PLUS
Откуда: 55.745578,37.665825

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

ладно - это все понятно - внедренный Select ни при чем - ты точно также можешь поместить в свой вызов ФИКТИФНЫЙ ПУСТОЙ Selеct (главное условие наличие имени колонки).

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

temp_str = f_EmbeddedSQLSelect (this,'select 0 as link_id','','Obj_id_array')


Просто мне как всегда нужно только то что нужно мне - любыми средствами документированными и не очень :wink: :wink:

пойду в техподдержку закажу новый функционал :wink:

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

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

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

оказывается все можно сделать (техподдержка) - т.е. перезаписать существующий массив другим запросом - главное условие чтобы СТРУКТУРА массива осталась без изменения

берем f_EmbeddedSQLSelect и перезаписываем существующий многомерный массив тысячу раз совершенно разными запросами - главное чтобы возвращаемые данные разлетелись по 'своим' колонкам
:wink: :wink:

а главное что - что мы с видами выиграли время
раньше массив наполнялся (без видов) 6 секунд а теперь 2

4 секунды выигрыш и два дня разборок - но результат достойный пятницы - неделя кончилась удачно :wink: :wink:

ps

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

f_EmbeddedSQLSelect ( this , 'Select pObjDescr as pObjDescr, pAtrVendor as pAtrVendor, ~'0~' as pBtAdd, pObjID as pObjID from lsdbo.ric_'+ vProductTypeCurrent +'_view' , '' , 'pFormPrice' )
pps
для Андрея Select * можно потому что я просто беру все данные из вида а в виде колонки называются также как и переменные (массивы) на форме :wink:

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

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

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

да кстати, совсем забыл, Андрей - спасибо за виды и за консультацию!

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

Ответить