2015-05-08 44 views
0

我有一个报告与2日期参数和2个参数:@ConstitID@BatchID,都允许NullSSRS报告与第二参数,允许空不工作

该报告按预期工作,直到我添加第二个参数@BatchID

问:有人可以解释我在下面的代码中缺少的东西吗?我将寻找添加额外的参数,将允许Null,并需要清楚地了解如何添加允许Null的其他参数。

WHERE (p_memb_fee_batch_pmt_dst.fee_gl_number IN (@FeeGL_Number)) 
AND (p_memb_fee_batch_header.fin_tran_date BETWEEN @TransactionDateStart AND @TransactionDateEnd) 
AND (p_memb_fee_batch_payment.constit_id = @ConstitID) 
AND (p_memb_fee_batch_payment.batch_id = @BatchID) OR (p_memb_fee_batch_pmt_dst.fee_gl_number IN (@FeeGL_Number)) 
AND (p_memb_fee_batch_header.fin_tran_date BETWEEN @TransactionDateStart AND @TransactionDateEnd) 
AND (@ConstitID IS NULL) OR (p_memb_fee_batch_payment.constit_id IS NULL) 
AND (p_memb_fee_batch_payment.batch_id IS NULL) OR (@BatchID IS NULL) 
ORDER BY p_memb_fee_batch_pmt_dst.fee_gl_number 

回答

0

我实际上是能够通过删除我曾在基于参数SSRS设置了2个过滤器来解决问题@BatchID和@ConstitID。然后我按如下方式整理了代码,报告按预期工作。 (我试图首先发表评论,因为我很想知道是否有更高效的编码解决方案。

WHERE (p_memb_fee_batch_pmt_dst.fee_gl_number IN (@FeeGL_Number)) 
AND (p_memb_fee_batch_header.fin_tran_date BETWEEN @TransactionDateStart  
AND @TransactionDateEnd) 
AND (p_memb_fee_batch_payment.constit_id = @ConstitID) 
AND (p_memb_fee_batch_payment.batch_id = @BatchID) OR (p_memb_fee_batch_pmt_dst.fee_gl_number IN (@FeeGL_Number)) 
AND (p_memb_fee_batch_header.fin_tran_date BETWEEN @TransactionDateStart AND @TransactionDateEnd) 
AND (p_memb_fee_batch_payment.batch_id = @BatchID) 
AND (@ConstitID IS NULL) OR (p_memb_fee_batch_pmt_dst.fee_gl_number IN (@FeeGL_Number)) 
AND (p_memb_fee_batch_header.fin_tran_date BETWEEN @TransactionDateStart AND @TransactionDateEnd) 
AND (p_memb_fee_batch_payment.constit_id = @ConstitID) 
AND (@BatchID IS NULL) OR (p_memb_fee_batch_pmt_dst.fee_gl_number IN (@FeeGL_Number)) 
AND (p_memb_fee_batch_header.fin_tran_date BETWEEN @TransactionDateStart AND @TransactionDateEnd) 
AND (@ConstitID IS NULL) 
AND (@BatchID IS NULL) 
ORDER BY p_memb_fee_batch_pmt_dst.fee_gl_number