Заказ звонка

Закрыть

*
*
*

Выполнение sql запроса в API

Страницы: 1 2 След.
RSS
Выполнение sql запроса в API
Слышал в новой версии TCS появилась возможность выполнить sql запрос в скрипте, не расскажите как это сделать?
С уважением, Никифоров В.Н.
Вот в документации раздел с примером: ExecSQL
Полученный объект типа DModule можете дальше использовать в алгоритме привычным образом.
А если Вам надо результат запроса представить пользователю для анализа, то гораздо удобнее будет пользоваться QueryViewer. В ознакомительной базе данных есть пример в режиме Работа с ПСП на закладке Список ПСП макрос "Фактические затраты материалов и комплектующих" или "Материалы по подразделениям, в рублях"
Посмотрел пример, немного прояснилось, попробовал набросать свое. Как я понял здесь точно такой же запрос как в бланке отчета работать не будет. Нет временной таблицы #CurrentQuery. А привязка идет по ранее созданным ID в таблице #PBOM_IDS. Отсюда такой вопрос, не подскажите к чему мне привязать этот ID, к представлению V_MANUFACTURING_PROCESSES, а все остальные таблицы к нему?

Текст моего запроса:
С уважением, Никифоров В.Н.
Всё правильно. CurrentQuery это текущий грид, генерируется репортером для того, чтобы привязаться к контексту. Если Вы используете скрипт, то к контексту можете привязываться посредством объекта TCSActiveModule и его свойств. Из какого режима Вы запрос строите и какую информацию хотите видеть?
Строю из режима техпроцесс. Сам запрос написал, он в пердыдущем сообщении. Вывести надо параметры и реквизиты техпроцесса. Это нам нужно для нормировщиков, чтобы проверить все ли они занесли.
С уважением, Никифоров В.Н.
Ну тогда Вам, в принципе, будет достаточно идентификатора версии, который можно достать так TCSActiveModule.Properties("VER_ID").AsSafeInteger

Код где-то так должен выглядеть:
Код
RecID =  " INS ERT #TEMP_TABLE VAL UES ( " + TCSActiveModule.Properties("VER_ID").AsSafeString + " ); "

QueryText = "SET NOCOUNT ON; " &_
"CRE ATE TABLE #TEMP_TABLE (VER_ID int); " &_
" " + RecID + " " &_
"" &_
"SELECT " &_
и далее Ваш запрос, в котором используйте #TEMP_TABLE а к ней уже джоин V_MANUFACTURING_PROCESSES по VERSION_ID
Сделал запросик, в sql работает отлично. Запускаю в скрипте, начинает ругаться на синтаксис возле ID.

Код
QueryText = "SET NOCOUNT ON; " &_
"CRE ATE TABLE #TEMP_TABLE (ID int); " &_
" " + RecID + " " &_
"" &_
"SEL ECT DISTINCT " &_
"TP.OPERATION_NUMBER, " &_
"TP.POSITION_NUMBER, " &_ 
"TP.NOMENCLATURE_ITEM_NAME As NMK_NAME, " &_
"PARAMETERS_TARIF_SET.PARAMETER_VALUE As TARIF_SET, " &_ 
"PARAMETERS_SHT.PARAMETER_VALUE As SHT," &_ 
"PARAMETERS_SHIFR.PARAMETER_VALUE As SHIFR, " &_ 
"REKVIZIT.EQUIP_RANK_NOTE As RAZRYAD, " &_ 
"REKVIZIT.EQUIP_LABOR_CONDITIONS_NOTE As TRUD, " &_ 
"REKVIZIT.EQUIP_PROFESSION_CODE_NOTE As CODE_PROF " &_ 
"FR OM V_MANUFACTURING_PROCESSES AS TP " &_
"RIGHT JOIN #TEMP_TABLE ON #TEMP_TABLE.ID = TP.VERSION_ID " &_
"LEFT JOIN V_PROCESS_ITEM_REQUISITES AS REKVIZIT ON TP.VERSION_ID = REKVIZIT.PROCESS_VERSION_ID AND TP.PROCESS_ITEM_ID = REKVIZIT.PROCESS_ITEM_ID " &_
"LEFT JOIN V_PROCESSES_PARAMETERS AS PARAMETERS_TARIF_SET ON TP.PROCESS_ITEM_ID = PARAMETERS_TARIF_SET.PROCESS_ITEM_ID AND TP.VERSION_ID = PARAMETERS_TARIF_SET.PROCESS_VERSION_ID AND (PARAMETERS_TARIF_SET.PARAMETER_UNIQUE_CODE ='T_N_TS') " &_
"LEFT JOIN V_PROCESSES_PARAMETERS AS PARAMETERS_SHT ON TP.PROCESS_ITEM_ID = PARAMETERS_SHT.PROCESS_ITEM_ID AND TP.VERSION_ID = PARAMETERS_SHT.PROCESS_VERSION_ID AND (PARAMETERS_SHT.PARAMETER_UNIQUE_CODE ='TCS_OB_TS') " &_
"LEFT JOIN V_PROCESSES_PARAMETERS AS PARAMETERS_SHIFR ON TP.PROCESS_ITEM_ID = PARAMETERS_SHIFR.PROCESS_ITEM_ID AND TP.VERSION_ID = PARAMETERS_SHIFR.PROCESS_VERSION_ID AND (PARAMETERS_SHIFR.PARAMETER_UNIQUE_CODE ='GUID2020') " &_
"WHERE TP.CLASS_NOTE = 'ОБР'" &_
"ORDER BY TP.OPERATION_NUMBER, TP.POSITION_NUMBER"
С уважением, Никифоров В.Н.
В предпоследней строке добавьте пробел перед кавычками, по-моему, он там отсутствует.
Добавил, не помогло. Ошибка где-то как мне кажется в строке где присоединяется временная таблица с версией.
1.jpg (54.79 КБ) [ Скачать ]
С уважением, Никифоров В.Н.
Чтобы такие ошибки выловить, я обычно MsgBox'ом вывожу QueryText. Т.к. надо ещё посмотреть как встраивается подстрока RecID
Страницы: 1 2 След.
Читают тему (гостей: 1, пользователей: 0, из них скрытых: 0)