2013-08-01 16 views
10

Mam raport, który przekazuje identyfikator, który jest używany do uzyskiwania dostępu do salesforce.com. Chcę otworzyć SFDC jako nową stronę z hiperłącza URL. Jednak nic, co robię, nie działa!Otwórz adres URL SSRS w nowym oknie

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

Pola id Wartość jest id SFDC która jest przekazywana!. Próbuję tego w wyrazie bezskutecznie!

Wiem, że jest to coś bardzo prostego, ale po prostu go nie znajduję. Z góry dziękuję za pomoc!

AKTUALIZACJA !!!

Wyliczyłem to !!! Dla przypomnienia, składnia jest:

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

Odpowiedz

6

Dla przypomnienia, problem z oryginałem Składnia polegała na tym, że próbujesz przejść od odnoszenia się do pola SSRS do wpisania łańcucha bez odpowiedniego rozdzielenia tych dwóch. Jeśli chciał poprzedniej składni do pracy (bez usuwania nazwę okna docelowego (tj, „_blank”), by to zrobić tak:

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

Walczyłem z tym przez długi czas, ale można zrobić są one bardzo złożone, o ile starannie zestawisz wszystko poprawnie.Możesz również dodać wiele poleceń javascript (ale bez funkcji) w tym samym wyrażeniu akcji Poniżej znajduje się jedno z moich najbardziej skomplikowanych poleceń akcji SSRS Go-to-URL:

="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 & "'));" 

Najważniejsze jest, aby upewnić się, że wszelkie niezbędne wymagane przez pojedyncze cytaty javascript pokazać się wewnątrz łańcucha (czyli „'”).

+1

Per Stefan Steiger w odniesieniu do raportów PDF i Excel, można łatwo zamknąć część JavaScript adresu URL w oświadczeniu IIF, które usuwa kod JavaScript, jeśli jest eksportowany do wersji PDF lub Excel za pomocą wbudowanych pól RenderFormat, jeśli używasz SSRS 2008 R2 lub nowszy. Jeśli używasz 2008 lub wcześniej, możesz osiągnąć ten sam wynik z parametrem boolowskim. Jeśli masz pytania dotyczące sposobu, odpowiedz na ten komentarz. –

0

Wiele razy spotkałem się z tym pytaniem i odpowiedziałem i zastanawiam się, czy łatwiej jest napisać funkcję C#, aby wykonać to połączenie, aby uniknąć złożoności cytowania.

1

Nonono, nie używaj ="javascript:void(window.open(.
pierwsze, łamie PDF & raportów Excel,
a po drugie, to nie działa w IE11 i możliwe również < 11.
testowałem go, pracował tylko w Chrome dla mnie.
Po trzecie, bałagan to połączyć.

Istnieje wiele łatwiej & lepsze rozwiązanie:
Dodaj &rc:LinkTarget=_blank dostępu do zawartości raportu, takich jak:

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

i otworzy się w nowym oknie.

Edit:
Jeśli chcesz mieć własną stronę wyświetlacza:

W ten sposób można uzyskać wszystkie raporty:

USE [ReportServer$MSSQL_2008_R2] 

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

A to w jaki sposób można wyświetlić wszystkie foldery/Raporty na poziomie 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 

Jeśli chcesz tylko foldery:

WHERE Type = 1 

Jeśli chcesz tylko zbiór danych źródła:

WHERE Type = 5 
+0

@Timbo: Lokalizujesz adres URL dostępu po otwarciu przeglądarki i przechodzisz do http://twoja-domena.com/ReportServer lub lokalnie/intranetowo za pomocą http: // nazwa-komputera/ReportServer. Możesz także przeczytać wszystkie linki z bazy danych serwera raportów. Jeśli serwer raportów ma niestandardową nazwę wystąpienia, np. MSSQL_2008_R2, który staje się: http: // localhost/ReportServer_MSSQL_2008_R2. W RS 2005 był to ReportServer $ MSSQL_2005 przy okazji, zauważ zmianę z $ na _. –

1

Jeśli chcą połączyć z zewnętrznym URL i chcą linki do pracy zarówno w podglądzie raportu i jeśli wyeksportować do programu Excel dla przykład, używam następującego wyrażenia.

=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 
) 

Będzie używać JavaScript, jeśli przeglądać z poziomu raportu w przeglądarce i standardowe łącze w przeciwnym razie.

Powiązane problemy