Я хочу получить результат следующего запроса в ячейке Excel:

select pro.code
from   ExactOnlineRest.Project.projects PRO
join   ExactOnlineRest.Manufacturing.shoporders SHO
on     SHO.project = PRO.ID
where  ShopOrderNumber = <value in cell F2>

Запрос отлично работает в Query Tool. Я также могу использовать блок Invantive Control для извлечения данных в виде списка с одной строкой / одним столбцом. Но как мне получить результат этого запроса непосредственно в ячейке Excel, не поддерживая блок?

1 ответ1

0

Вы можете использовать следующую формулу:

=I_SQL_SELECT_SCALAR("pro.code", "exactonlinerest..projects pro join exactonlinerest..shoporders sho on sho.project = pro.id", "shopordernumber = " & F2)

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

Возможно, вы захотите составить список необходимых часто повторяющихся производственных запросов и добавить их в формулы Excel, поддерживаемые Invantive Control.

Также рекомендуется использовать псевдоним pjt для projects , используя руководство по стилю, и sor для shoporders .

Также обратите внимание, что когда ячейка F2 пуста, SQL не будет выполнен в предложении where. В качестве альтернативы вы можете добавить «если пусто, то использовать« ноль »или подобное.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .