Как использовать параметр в предложении Where оператора SQL, используемого в Crystal Report? - PullRequest
0 голосов
/ 28 июня 2018

У меня есть оператор SQL, который я хотел бы использовать в Crystal Report (Crystal Reports 2016). Вот предложение Where утверждения:

WHERE
    DV_Inventory.Recv_Order_ID IN (SELECT DV_Order.ID 
                                   FROM DV_Order 
                                   WHERE DV_Order.Vendor_ID IN (SELECT  DV_Business_Partner.ID 
                                                                FROM DV_Business_Partner  
                                                                WHERE DV_Business_Partner.BillingID = '500335')) 
    AND DV_Inventory.Ship_ts isnull 
    AND (DV_Inventory.Qty_Available + DV_Inventory.Qty_Allocated + DV_Inventory.Qty_Hold + DV_Inventory.Qty_Quarantine + DV_Inventory.Qty_Damaged) > 0

Отчет прекрасно работает с этим предложением WHERE. Однако, когда я изменяю его для запроса идентификатора счета,

WHERE 
    DV_Inventory.Recv_Order_ID IN (SELECT DV_Order.ID 
                                   FROM DV_Order 
                                   WHERE DV_Order.Vendor_ID IN (SELECT DV_Business_Partner.ID 
                                                                FROM DV_Business_Partner 
                                                                WHERE DV_Business_Partner.BillingID = ? ...

Я получаю следующую ошибку:

7002: параметры существуют, но IPD не установлен. Пожалуйста, позвоните SQLDescribeParam () Код поставщика базы данных 32

Я могу без проблем запустить оператор из DBVisualizer, но не могу заставить его работать в Crystal Reports.

Есть мысли о том, что я делаю не так? Это база данных PostgreSQL.

1 Ответ

0 голосов
/ 29 июня 2018

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

Однако есть и другой способ! Crystal Report поддерживает команды SQL через эксперта по базам данных. Для этих команд могут быть определены параметры команды, которые позволяют запрашивать ввод данных пользователем. Команды SQL также позволяют использовать более сложные запросы SQL с меньшим влиянием на производительность вашего отчета.

Чтобы создать команду SQL, откройте Database Expert. В разделе «Мои подключения» у вас будет список всех баз данных, к которым вы можете подключиться. Разверните базу данных, которую вы используете для отчета, и она перечислит все объекты в этой базе данных. Самый верхний элемент в списке должен быть «Добавить команду».

...