0

ライブクエリのレポートに問題があります。私のレポートでは、私は、日付範囲@DateFrom@DateToと特定の属性を選択できるようにすべき3つのパラメータ選択できるように5つのパラメータがあります。私は、日付範囲パラメータを必須にしたいReport Builderのオプションの必須パラメータ

@salesid, @batch, @serial 

をし、それが何の問題もなく働いていますが、最後の3つのパラメータ:@salesid,@batch,@serialはオプションです。

しかし、彼らは必要なように動作しません。最後の3つのパラメータは、フィルタとして機能する値を入力する必要があります。しかし、私は日付と1つのパラメータを選択すると、選択された値の代わりにクエリの全体の値が取得されます。

パラメータのプロパティでは、「空白値( "")」オプションを選択し、既定値を空白として定義した場合にのみ選択しました。

where 
    st.custaccount <> 'number%' 
    and datepart(year,st.CREATEDDATETIME) >= 2012 
    and (ita.VENDORCODE like'producer1' or ita.vendorcode like 'producer2') 
    and st.createddatetime >= @FromDate 
    and st.createddatetime <= @ToDate 
    or (st.salesid = @salesid or @salesid is null) 
    or (itd.INVENTBATCHID = @batch or @batch is null) 
    or (itd.INVENTSERIALID = @serial or @serial is null) 

理論的には、それは動作しますが...まあ実際にはそうでない必要があります。私のクエリの条件はどのように見えるかだ

希望の効果を得るための条件を設定するにはどうすればよいですか?これまでに何か助けになるものは見つかりませんでした。あなたの何人かが役に立つと分かっているなら、私に手がかりをお願いします。

答えて

0

最後の3 orステートメントをandステートメントに変更する必要があります。

現時点では、クエリは、本質的に、これらの最後の3つのパラメータのいずれかが/ nullに一致していることを、あなたの基準ORに一致するデータ項目にチェックしています。

where st.custaccount <> 'number%' 
    and st.CREATEDDATETIME >= '20120101' -- Try not to use functions in your WHERE clause, as this stops indexes from working, making your query less efficient. 
    and ita.VENDORCODE in('producer1', 'producer2') -- IN has the same effect. 
    and st.createddatetime between @FromDate and @ToDate -- BETWEEN is an inclusive date range. Equivalent to >= and <= 

    and (st.salesid = @salesid 
     or @salesid is null 
     ) 
    and (itd.INVENTBATCHID = @batch 
     or @batch is null 
     ) 
    and (itd.INVENTSERIALID = @serial 
     or @serial is null 
     ) 
+0

私は以前それを試してみました:これは、データが日付範囲などでない場合であっても、それはまだ返却されることを意味します。そしてそれは仕事の種類や種類ではありません。より具体的には、salesidとバッチで動作していますが、最後のパラメータのシリアルでは機能しません。 パラメータプロパティで「null値を許可」オプションを追加するのを忘れていたため、2番目のパラメータまたは3番目のパラメータで以前は機能しませんでした。しかし、3番目のパラメータは、結果をフィルタリングするための唯一のパラメータとして使用できません。 あなたのコメントに私はあなたが見たものを変更したので、私はちょうどクライアントの特定の値を投稿したいと思っていませんでした。 あなたの返信の種類は私の質問にまだ答えています。 – M3How

+0

そして、その間を含むヒントのおかげで、本当に役に立ちました:) – M3How

関連する問題