2013-05-24 10 views
5

Ich möchte auf die Sitzung zugreifen oder viewstate Variablen in SSRS 2012 Berichte wie wir in c# zugreifen.Zugriff auf Sitzungsvariable in SSRS (SQL Server 2012)?

Session["user"]

Ich möchte SSRS Bericht wie diese zuzugreifen.

Ich möchte den Benutzer einbeziehen, der angemeldet ist, wenn der Bericht erstellt wird.

Gibt es eine Möglichkeit, dies zu erreichen? Können wir in benutzerdefinierten Code in SSRS darauf zugreifen?

+0

+1 von E-Mail-Shooter :) – Buras

+0

Haha. Danke @ Buras. = D –

Antwort

1

Im nachfolgenden Code könnten Sie die gewünschten Daten an einen Berichtsparameter kopieren.

// Copy the session username to a report param called "CurrentUser". 
    ReportParameter userParam = new ReportParameter("CurrentUser", Session["user"]); 

    // add the parameter to the report 
    reportViewer.ServerReport.SetParameters(new ReportParameter[] { userParam }); 

Und dann fügen Sie Ihren Parameter zum Bericht hinzu, wie Sie jeden anderen Parameter würden. Siehe Beispiel unter: http://msdn.microsoft.com/en-us/library/aa337091.aspx

+0

Gilt dies für die Oracle-Datenbank? –

+0

Der Code, den ich geschrieben habe, war speziell für die Berichterstattung, die nicht an eine bestimmte Datenbank gebunden ist. –

+0

Danke .. Ich habe die Idee, aber nicht die vollständige Antwort. Trotzdem danke. –

1

Im Bericht selbst können Sie auf den Benutzer verweisen, der den Bericht mit User!UserID ausführt.

Siehe Built-in Globals and Users References.

bearbeitet nach Kommentar:

Da es scheint, dass Sie keinen internen Bezug auf den Benutzer ausgeführt wird, den Bericht, die beste Option könnte sein, die Benutzer Referenz zu übergeben mit einem Versteckten Parametern.

Von Books Online:

Sie können den Parameter auf den Eingangsparameter verstecken Bereich des veröffentlichten Bericht, noch Sollwerte für sie in einem Bericht URL oder in einer Subskriptionsdefinition.

Also in diesem Fall würde es bedeuten, dass der Parameter für Benutzer nie sichtbar wäre, aber Sie könnten es programmgesteuert festlegen.

Sie könnten eine Zeichenfolge basierend auf Session["user"] oder, wie auch immer Sie Benutzer-IDs außerhalb des Berichts verwalten, an den Bericht übergeben und diesen Parameter dann wie im Bericht erforderlich anzeigen/bearbeiten.

+0

Ich sah diesen Herrn, aber ich benutze nicht Windows-Authentifizierung, und übrigens verwende ich Oracle als Datenbank, wenn das helfen würde. –

+0

Ich meine, wir haben eindeutige Benutzernamen für unsere Benutzer. –

+0

Wie greifen Benutzer auf den Bericht zu? Website des Berichts-Managers? ReportViewer Kontrolle in der Webanwendung? ReportViewer-Steuerelement in Desktop-Anwendung? –

0

Wenn viele gemeinsame Daten vorhanden sind, können Sie die Sitzungsdaten in einer temporären Tabelle in der Datenbank speichern. Sie aktualisieren diese Sitzungsdatentabelle, bevor Sie den Bericht ausführen. Dann können Sie einfach wie jede andere Tabelle im Bericht auf diese Daten zugreifen und nur die Benutzer-ID als Parameter angeben.