Đây là một ứng dụng tự động đặt dữ liệu và hiển thị báo cáo.Truy vấn MDX trả về giá trị trong báo cáo nhưng không phải trong mã Visual Basic
Tôi có truy vấn MDX cho báo cáo dựa trên thông số. Truy vấn là:
SELECT NULL ON COLUMNS, strtomember(@DateYear) ON ROWS FROM [MYDATACUBE]
Khi chạy điều này trong trình thiết kế truy vấn báo cáo, nó trả về giá trị đúng cách. Tuy nhiên, khi chạy nó trong mã cơ bản trực quan, nó không trả về gì cả. Đây là phần quan trọng trong mã của tôi:
Dim cn = New AdomdConnection(adomdparamconnectionstrings(countparamsadomd))
Dim da As AdomdDataAdapter = New AdomdDataAdapter()
Dim cmd = New AdomdCommand(paramcommands(countparamsadomd), cn)
Dim tbl = New DataTable
If (adomdparams) Then 'If there are parameters, adds them to the query
For l As Integer = 0 To (countparamsadomd - 1)
If (adomdparamconnectionstrings(l) = "NODATASET") Then
Dim p As New AdomdParameter(paramvaradomd(l), paramadomd(l))
cmd.Parameters.Add(p)
Else
Dim p As New AdomdParameter(paramvaradomd(l), adomdqueryvalues(l))
cmd.Parameters.Add(p)
End If
Next
End If
da.SelectCommand = cmd
cn.Open()
da.Fill(tbl)
cn.Close()
Tôi biết chuỗi kết nối hoạt động vì tất cả các bộ dữ liệu khác sử dụng cùng một bộ dữ liệu. Tôi biết lệnh là đúng bằng cách sử dụng điểm break. Tôi biết giá trị của tham số là đúng cũng sử dụng điểm break. Tôi biết mã tổng thể hoạt động bởi vì nó hoạt động với tất cả các dữ liệu tôi đã thử nghiệm nó với ngoại trừ này. Sử dụng các điểm ngắt, mọi thứ dường như hoạt động như đối với các tập dữ liệu khác, nhưng sau đó nó không trả về bất kỳ giá trị nào.
Bảng kết quả từ việc này có cột được đặt tên đúng ([Ngày]. [Năm]. [Năm]. [MEMBER_CAPTION]) nhưng không có hàng. Giá trị trả về phải là một hàng duy nhất có năm trong đó.
You are not trả lại bất kỳ dữ liệu trên trục COLUMNS, ví dụ, 'CHỌN NULL ON COLUMNS'. Tôi đã cung cấp một ví dụ dưới đây trả về thuộc tính MEMBER_CAPTION của một thành viên tham số. – jhenninger