2013-08-01 59 views
10

Tôi có báo cáo chuyển một id được sử dụng để truy cập salesforce.com. Tôi muốn mở SFDC như một trang mới từ liên kết URL. Tuy nhiên, không có gì tôi làm dường như đang làm việc!Mở URL SSRS trong Cửa sổ mới

= "javascript: void (window.open ('! https://na5.salesforce.com/& Fields id.Value, '_ blank'))"

Fields id Value là id SFDC đang được thông qua!. Tôi đang cố gắng này trong biểu thức để không có kết quả!

Tôi biết nó là một cái gì đó rất đơn giản nhưng tôi chỉ không tìm thấy nó. Cảm ơn trước vì sự giúp đỡ của bạn!

CẬP NHẬT !!!

Đã tìm ra! Đối với hồ sơ, cú pháp là:

= "javascript: void (window.open ('https://na5.salesforce.com/"! & Fields id.Value & "'))"

Trả lời

6

Đối với hồ sơ, vấn đề với ban đầu của bạn cú pháp là bạn đã cố gắng để đi từ tham chiếu một trường SSRS để nhập một chuỗi mà không tách hai cách đúng. Nếu bạn muốn cú pháp trước đó của bạn để làm việc (không loại bỏ tên cửa sổ mục tiêu của (ví dụ, '_blank'), bạn sẽ làm điều đó như thế này:

="javascript:void(window.open('https://na5.salesforce.com/" & Fields!id.Value & "','_blank'))" 

tôi vật lộn với điều này trong một thời gian dài, nhưng bạn có thể làm Những điều này khá phức tạp miễn là bạn cẩn thận để đặt tất cả mọi thứ lại với nhau một cách chính xác Bạn cũng có thể thêm nhiều lệnh javascript (nhưng không có chức năng) trong cùng một biểu thức hành động dưới đây là một trong những lệnh hành động SSRS Go-to-URL phức tạp nhất của tôi:

="Javascript:" 
    & IIF(left(Fields!Name.Value,11)="RESTRICTED-", 
     "alert('Restricted!'); ","") & IIF(Fields!Name_Alert.Value = 1, "alert('Alternate Alert!'); ","") 
    & "void(window.open('" 
    & Globals!ReportServerUrl 
    & "/Pages/ReportViewer.aspx?%2fJPD%2fPO_Dashboard%2fJuvenile_Profile&rs:Command=Render" 
    & "&rc:Parameters=true" 
    & "&Emp_Number=" 
    & Parameters!Param1.Value 
    & “&ID=" & Fields!ID.Value & "'));" 

Điều quan trọng là đảm bảo rằng bất kỳ và tất cả dấu nháy đơn cần thiết theo javascript hiển thị bên trong một chuỗi (ví dụ: "'").

+1

Mỗi điểm của Stefan Steiger về báo cáo PDF và Excel, bạn có thể dễ dàng đóng gói phần JavaScript của URL vào câu lệnh IIF để loại bỏ JavaScript nếu được xuất sang phiên bản PDF hoặc Excel bằng các trường RenderFormat tích hợp nếu bạn đang sử dụng SSRS 2008 R2 trở lên. Nếu bạn đang sử dụng năm 2008 hoặc trước đó, bạn có thể đạt được kết quả tương tự với tham số boolean. Nếu bạn có câu hỏi về cách thức, hãy trả lời nhận xét này. –

0

Tôi đã thấy câu hỏi này được hỏi và trả lời nhiều lần, và tôi tự hỏi liệu nó có dễ dàng hơn khi viết một hàm C# để thực hiện cuộc gọi này để tránh sự phức tạp của trích dẫn hay không.

1

Không phải, không sử dụng ="javascript:void(window.open(.
Thứ nhất, nó phá vỡ PDF & báo cáo Excel,
và thứ hai, nó không hoạt động trong IE11 và có thể cũng < 11.
Tested nó, chỉ làm việc trong Chrome cho tôi.
Và thứ ba, đó là một mớ hỗn độn để đặt nó lại với nhau.

Có một giải pháp tốt hơn & xa dễ dàng hơn:
Thêm &rc:LinkTarget=_blank để URL truy cập báo cáo của bạn, như:

https://your-domain.com/ReportServer/Pages/ReportViewer.aspx?%2fJPD%2fPO_Dashboard%2fJuvenile_Profile&rs:Command=Render&rc:LinkTarget=_blank 

và nó sẽ mở ra trong một cửa sổ mới.

Edit:
Nếu bạn muốn làm cho trang hiển thị của riêng bạn:

Đây là cách bạn có được tất cả các báo cáo:

USE [ReportServer$MSSQL_2008_R2] 

SELECT 
    [ItemID] 
    ,[Path] 
    ,[Name] 
    ,[ParentID] 
FROM [Catalog] 
WHERE Type = 2 

Và đây là cách bạn có thể hiển thị tất cả các thư mục/báo cáo ở cấp x

;WITH CTE AS 
(
    SELECT 
     [ItemID] 
     ,[Path] 
     ,[Name] 
     ,[ParentID] 
     ,0 AS lvl 
     ,CAST([Name] AS nvarchar(MAX)) AS RecursivePath 
    FROM [Catalog] 
    WHERE [ParentID] IS NULL 


    UNION ALL 

    SELECT 
     [Catalog].[ItemID] 
     ,[Catalog].[Path] 
     ,[Catalog].[Name] 
     ,[Catalog].[ParentID] 
     ,cte.lvl +1 AS lvl 
     ,CAST(cte.RecursivePath + '/' + [Catalog].[Name] AS nvarchar(MAX)) AS RecursivePath 
    FROM CTE 
    INNER JOIN [Catalog] 
     ON [Catalog].ParentID = CTE.ItemID 



) 

SELECT * FROM CTE 
WHERE lvl = 1 
ORDER BY lvl, Path 

Nếu bạn chỉ muốn các thư mục:

WHERE Type = 1 

Nếu bạn chỉ muốn các dữ liệu nguồn:

WHERE Type = 5 
+0

@Timbo: Bạn định vị URL truy cập khi bạn mở trình duyệt và truy cập http://your-domain.com/ReportServer hoặc cục bộ/mạng nội bộ bằng http: // machine-name/ReportServer. Bạn cũng có thể đọc tất cả các liên kết từ cơ sở dữ liệu của trình báo cáo. Nếu máy chủ báo cáo của bạn có tên cá thể không standart, ví dụ: MSSQL_2008_R2, trở thành: http: // localhost/ReportServer_MSSQL_2008_R2. Trong RS 2005, đó là ReportServer $ MSSQL_2005, thông báo thay đổi từ $ đến _. –

1

Nếu bạn đang muốn liên kết đến một URL bên ngoài và muốn các liên kết để làm việc cả trong người xem báo cáo và nếu bạn xuất sang Excel cho ví dụ, tôi sử dụng biểu thức sau.

=IIF(
    Globals!RenderFormat.Name = "RPL", 
"javascript:void(window.open('http://www.domain.com/page/" & Fields!Page_ID.Value & "','_blank'))", 
    "http://www.domain.com/page/" & Fields!Page_ID.Value 
) 

Nó sẽ sử dụng JavaScript nếu xem từ trong báo cáo trong trình duyệt và liên kết chuẩn khác.

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