2011-09-11 30 views
6

Tôi đang cố gắng lấy tham số tên người dùng và thay thế giá trị bằng tên người dùng của phiên để tôi có thể chuyển đến thủ tục được lưu trữ bên trong DRL để tạo dấu thời gian bảng với tên người dùng này . Tham số "tên người dùng" là một trong các tham số của RDL đi kèm với giá trị mặc định và tôi đang cố thay đổi nó bằng mã sau.SSRS Đặt tham số theo lập trình gây ra trạng thái ValidValueMissing

Thay thế một trong những ReportParameters:

var userParameter = GetUserParameter(); 
if (userParameter != null) 
{ 
    newParameters.Remove(newParameters.FirstOrDefault(param => param.Name.Contains(CurrentUserParameterName))); 
    newParameters.Add(userParameter); 
} 

Tìm ReportParameters username:

var paremeters = ReportViewer.ServerReport.GetEditableHiddenParameters(); 

//finds parameter by its name, pelase view const value in CurrentUserParameterName 
var userParameter = paremeters.FirstOrDefault(param => param.Name.Contains(CurrentUserParameterName)); 
if (userParameter != null) 
{ 
    userParameter.Values.Clear(); 
    userParameter.Values.Add(Utils.GetUserName()); 
} 
return userParameter; 

Set thông số để ServerReport:

ReportViewer.ServerReport.SetParameters(parameters); 

Sau khi chạy báo cáo, tôi nhận được thông báo " Thông số 'tên người dùng' thiếu giá trị "

Khi tôi gỡ lỗi và tìm trong ServerReport.GetParameters() Tôi có thể thấy rằng tôi có ReportParameter "tên người dùng", tôi có giá trị (giá trị mới), nhưng trạng thái của nó là "MissingValidValue".

Tôi đang làm gì sai? Cảm ơn trước, Eddie

+0

có vẻ như có một thành viên có tên ValidValues ​​với giá trị tên người dùng hiện tại và một thành viên khác có tên giá trị trống. –

Trả lời

6

cuối cùng tôi đã quản lý để khắc phục vấn đề này nhờ vào bài viết này: http://technet.microsoft.com/en-us/library/dd220464.aspx

Nếu bạn đã xác định giá trị có sẵn cho một tham số, các giá trị hợp lệ luôn xuất hiện như một danh sách thả xuống. Ví dụ: nếu bạn cung cấp giá trị có sẵn cho thông số Ngày giờ, danh sách thả xuống cho các ngày xuất hiện trong ngăn thông số thay vì điều khiển lịch. Để đảm bảo rằng danh sách giá trị nhất quán giữa báo cáo và subreports, bạn có thể đặt tùy chọn trên nguồn dữ liệu để sử dụng một giao dịch cho tất cả các truy vấn trong tập dữ liệu được liên kết với nguồn dữ liệu.

Vì tôi đã nhập giá trị mặc định trong tùy chọn "giá trị có sẵn" ngoài việc đặt giá trị đó vào "giá trị mặc định", báo cáo đã cố gắng xác thực tên người dùng phiên mới, không được liệt kê là "có sẵn giá trị". Khi tôi đã xóa các giá trị trong "giá trị có sẵn", ReportParameter mới mà tôi cung cấp trong mã-đằng sau không phải được xác thực và báo cáo được hiển thị thành công.

Các vấn đề liên quan