[英]SSRS Multi-Value Parameter Error
目標:我有一個SSRS報告,該報告使用隱藏參數捕獲UserID,使用多值下拉參數顯示分支,並使用另一個多值參數顯示與這些分支相關的銷售代表。 這個想法是,用戶只能查看其UserID等於分支名稱的分支和銷售代表。
問題:如果授予用戶查看芝加哥和紐約分支的權限,並且僅選擇那些分支,則報表運行良好。 僅顯示這兩個分支的數據。
如果用戶僅選擇芝加哥,則會顯示錯誤消息。
如果用戶僅選擇紐約,則會顯示錯誤消息。
如果用戶選擇“全選”,報告將顯示所有分支的數據(即使他們不應該訪問的分支也是如此)。
錯誤消息: 將nvarchar值“ Chicago”轉換為數據類型int時,轉換失敗。
我在數據集中使用查詢,而不是存儲過程。 我應該使用存儲過程嗎?
我在WHERE條款中使用了“ IN”運算符:
WHERE ReportIDTable.ReportID = 1
AND ReportIDTable.UserID = @UserID
AND ((Branch IN (@BranchID)) OR Branch = 9999)
我嘗試使用JOIN()和SPLIT()函數,但沒有發現任何區別。
我已經做了很多研究,但似乎無法解決問題。 任何幫助將非常感激!
@BranchID參數已經設置為TEXT,並且實際上已由另一個查詢填充。
SELECT 'ZZ <Untracked Sales>' AS ParentID
UNION
SELECT ParentID
FROM ReportDistribution WITH (NOLOCK)
WHERE (ReportID = 1) AND (ReportHierarchyID = 3)
GROUP BY ParentID
主要數據集查詢:
SELECT
commission_sale_history.invoice_year,
commission_sale_history.invoice_month,
branch.branch_description,
commission_reps.division,
commission_reps.rep_name,
commission_reps.employee_id,
commission_sale_history.customer_id,
customer.customer_name,
commission_sale_history.invoice_no,
commission_sale_history.order_no,
commission_sale_history.product_division,
commission_sale_history.commission_type,
commission_sale_history.sales,
commission_sale_history.commission_cost,
commission_sale_history.commission_amount,
commission_sale_history.payment_date,
commission_sale_history.invoice_date,
commission_sale_history.commission_rate,
commission_sale_history.commission_split,
commission_reps.salary
FROM ((((commission_sale_history WITH (NOLOCK)
INNER JOIN commission_reps WITH (NOLOCK)
ON (commission_sale_history.branch_id = commission_reps.branch_id)
AND (commission_sale_history.rep_id = commission_reps.rep_id))
INNER JOIN customer WITH (NOLOCK)
ON commission_sale_history.customer_id = customer.customer_id)
INNER JOIN branch WITH (NOLOCK)
ON commission_sale_history.branch_id = branch.branch_id)
INNER JOIN ReportIDTable WITH (NOLOCK)
ON commission_reps.rep_id =
CASE WHEN CONVERT(int,ReportIDTable.Salesrep) = 999999
THEN commission_reps.rep_id ELSE
CONVERT(int,ReportIDTable.Salesrep) END)
LEFT JOIN invoice_hdr_salesrep WITH (NOLOCK)
ON invoice_hdr_salesrep.invoice_number = commission_sale_history.invoice_no
AND invoice_hdr_salesrep.salesrep_id = commission_sale_history.rep_id
WHERE ReportIDTable.ReportID = 1
AND ReportIDTable.UserID = @UserID
AND ((Branch IN (@BranchID)) OR Branch = '9999')
AND commission_sale_history.rep_id IN(@SalesRepID)
AND commission_sale_history.invoice_date >= @InvoiceStartDate
AND commission_sale_history.payment_date
BETWEEN @PaymentFromDate AND @PaymentThroughDate
AND commission_sale_history.paid_in_full_flag = 'Y'
AND ISNULL(commission_sale_history.credit_matched_to_payment_flag,'Y') = 'Y'
AND commission_sale_history.product_division
NOT IN ('Parts Sales', 'Rental', 'Forklift/Equipment', 'Service')
AND ISNULL(invoice_hdr_salesrep.primary_salesrep,'Y')='Y'
ORDER BY
commission_reps.rep_name,
customer.customer_id,
commission_sale_history.invoice_no,
commission_sale_history.commission_type
我假設BranchID為and int,其名稱為字符串,因此您分支的數據集看起來像這樣。
BranchID BranchName
1 Chicago
2 New York
在參數中,確保您的Value
指向“ BranchID”列,而“標簽”指向“ BranchName”列。
選中此選項后,將參數值設置為text
(我知道這是一個數字,請嘗試...。)
您不需要使用存儲的proc,join或split,就可以了。
如果仍然有問題,請發布針對主查詢和參數的數據集查詢,並在可能的情況下分別發布一些示例輸出。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.