2017-07-25 10 views
0

ドロップダウンメニューを作成しようとしています。しかし、私はスカラー変数@ItemBuyerを宣言する必要があることを明示的に宣言し、コードに設定しているにもかかわらず、エラーを受けています。SAP B1クエリが "スカラー変数を宣言しなければならない"エラーを返します。

DECLARE @ItemBuyer VARCHAR(30) 
    SET @ItemBuyer= /* T3.OwnerCode */ '[%1]' 

    DECLARE @SQL VARCHAR(MAX) 
    SET @SQL = 'SELECT T3.[DocNum] AS DocNumber, T3.[CardCode] AS 
    VendorCode, T3.[CardName] AS VendorName, T3.OwnerCode as BuyerID, T2. 
    [ItemCode] AS ItemNo, T2.[U_CPM_LegItemNo] AS LegacyItemNumber, T2. 
    [Dscription] AS ItemDescription, T2.[U_CPM_ConfDate] AS POConfirmDate, 
    T2.[OpenCreQty] AS CreditMemoAmount FROM [dbo].[OITG] T0 , [dbo]. 
    [OITM] T1 INNER JOIN [dbo].[POR1] T2 ON T2.[ItemCode] = T1. 
    [ItemCode] INNER JOIN [dbo].[OPOR] T3 ON T3.[DocEntry] = T2. 
    [DocEntry] WHERE (T2.[OpenCreQty] > (0)) AND (T2.[U_CPM_ConfDate] 
    IS NULL ) and (T3.[OwnerCode] = @ItemBuyer)' 

    EXEC(@SQL) 

私はまた、以下のような変数を宣言して設定してみました:

DECLARE @ItemBuyer VARCHAR(30) = /* T3.[OwnerCode] */ '[%0]' 

をしかし、私も変数を介して、構文が間違っているというエラーが正しい値を返す取得します。私は少しここにこだわっています。うまくいけば誰かが私を助けることができます。

おかげで、

Krys

+0

なぜ動的SQLを使用していますか? –

+0

動的クエリを使用していて、動的クエリに値を提供していません。 – Hybridzz

答えて

0

私はこのようなクエリを書き換えます:

/*SELECT FROM [dbo].[OPOR] P1*/ 
declare @ItemBuyer as int 
/* WHERE */ 
set @ItemBuyer = /* P1.OwnerCode */ '[%0]' 


SELECT T3.[DocNum] AS DocNumber 
, T3.[CardCode] AS VendorCode 
, T3.[CardName] AS VendorName 
, T3.OwnerCode as BuyerID 
, T2.[ItemCode] AS ItemNo 
, T2.[U_CPM_LegItemNo] AS LegacyItemNumber 
, T2.[Dscription] AS ItemDescription 
, T2.[U_CPM_ConfDate] AS POConfirmDate 
, T2.[OpenCreQty] AS CreditMemoAmount 
FROM [dbo].[POR1] T2 
INNER JOIN [dbo].[OPOR] T3 ON T3.[DocEntry] = T2.[DocEntry] 
WHERE T2.[OpenCreQty] > 0 
AND T2.[U_CPM_ConfDate] IS NULL 
and T3.[OwnerCode] = @ItemBuyer 

私はまだ動的な構文クエリを覚えて管理することはできませんので、私は、このリンクを使用する必要があります毎回私はそれをしたい:http://www.clientsfirst-us.com/blog/sap/sap-business-one/user-defined-prompts-in-sap-business-one-queries/

あなたが使用していなかったいくつかのテーブルを取り除いていることに注意してくださいselectまたはwhereステートメント。おそらくそれがクエリ速度の違いを大きくすることはないでしょうが、それは単にそれをよりきれいにします。 (私はそれを私の好みのスタイルに入れるために書式を整えましたが、それは必ずしも必要ではありません)

関連する問題