it-swarm.com.de

SSRS-Bericht zeigt keine Daten an

Ich habe gerade einen SQL Server 2005-SSRS-Bericht erstellt, und die Daten werden nicht im Vorschaufenster angezeigt.

Das Dataset wird aus einer gespeicherten Prozedur anhand eines String-Parameters korrekt aufgefüllt. Ich kann es im Datenfenster ausführen. Beim Ausführen des Berichts im Vorschaufenster wird die richtige Anzahl von Zeilen angezeigt, der Inhalt der Zellen enthält jedoch keine Daten

Missing Data

Das Quell-Dataset basiert auf einer Stored Procedure mit einem in String übergebenen Parameter in SQL Server 2005, der den Inhalt einer temporären Tabelle zurückgibt. Das Dataset ordnet dann die Felder den Einheimischen zu. Ich kann dies in der Datenansicht korrekt ausführen.

Gespeicherte Prozedur 

ALTER PROCEDURE spWebReportStage25BuildReview
    @BuildNumber as nvarchar(50)

Temp-Tabellenschema

CREATE TABLE #tmpModelZones
(
    BuildID bigint NOT NULL,
    BuildNo nvarchar(50) NOT NULL,
    ModelID int NOT NULL,
    ModelName nvarchar(50) NOT NULL,
    ZoneID int NOT NULL,
    ZoneName nvarchar(50) NOT NULL,
    SortOrder int NOT NULL,
    Created bit DEFAULT 0 NOT NULL,
    Closed bit DEFAULT 0 NOT NULL,
    PRIMARY KEY (BuildID, ZoneID)
)

SSRS-Datensatz

enter image description here

SSRS-Datensatzzuordnung

enter image description here

SSRS-Datensatzparameter enter image description here

Dataset mit Parameter ausführen

enter image description here

In der angezeigten Tabelle gibt es keine zusätzlichen Gruppierungen, Filter oder Aggregationen. Es ist einfach ein flacher Tisch

12
Phil Murray

Bei Verwendung temporärer Tabellen kann SSRS die Metadaten nicht abrufen. Grundsätzlich gibt es zwei Möglichkeiten, SSRS die Spaltennamen mitzuteilen:

  1. Fügen Sie SET FMTONLY ON hinzu. Dadurch werden die Metadaten abgerufen, die Daten werden jedoch nicht angezeigt. 

  2. Wechseln Sie zur Registerkarte DATA, klicken Sie auf den Generic Query Designer und klicken Sie auf Refresh-Felder. Daraufhin wird ein Dialogfeld angezeigt, in dem Sie den Parameterwert angeben können. Wenn wir die Abfrage im Abfrage-Designer ausführen, ruft SSRS das Schema und die Daten aus der gespeicherten Prozedur ab. Nun sind die Daten im Vorschaufenster verfügbar.

8
praveen

Ich habe das noch nie gesehen. Allerdings kann SSRS manchmal etwas "aus" sein, daher hier eine Liste der Dinge, die Sie ausprobieren sollten. Ich fürchte, die meisten davon sind vom Typ "Haben Sie versucht, das Gerät aus- und wieder einzuschalten?".

  • .data-Dateien löschen, die dem Bericht zugeordnet sind.
  • Duplizieren/sichern Sie den Bericht, und versuchen Sie, fügen Sie das Dataset in einem neuen Basis-Tablix hinzu, um zu sehen, ob in diesem Fall Daten angezeigt werden.
  • Überprüfen Sie die hidden -Eigenschaft. Vergessen Sie nicht, dass es (aus irgendeinem dummen Grund) nicht (wie bei jedem anderen gesunden Produkt) ein Sichtbares J/N-Feld ist, sondern ein Verborgenes J/N-Feld.
  • Überprüfen Sie Schriftfarbe und -größe usw.
  • Führen Sie den Bericht auf Ihrem Berichtsserver (im Gegensatz zur Vorschau) aus, um zu überprüfen, ob dies funktioniert.
  • Verwenden Sie einige temporäre Textfelder für zeigen Sie die tatsächlichen Werte Ihrer Parameter an, um zu prüfen, ob sie genau gleich sind, als wenn Sie den Datensatz testeten.
  • Check the code-behind (xml in der rdl) für unerwartete Filter, ausgeblendete Eigenschaften, Ausdrücke usw. im Tablix. Selbst wenn Sie die RDL nicht ganz "lesen" können, sollten Sie mit Syntax-Hervorhebung in der Lage sein, sie zu überfliegen und eine Menge Informationen dazu zu extrahieren.
  • Überprüfen Sie das ExecutionLog2 und andere Protokollierungsmaterialien, um zu sehen, wie viele Zeilen in Berichtsläufen zurückgegeben werden.

Außerdem wäre es hilfreich, wenn Sie Ihre Frage mit weiteren Informationen aktualisieren oder bearbeiten:

  • Welche Gruppierungen hat das Tablix?
  • Was sind die Filter für Tablix, Zeilengruppen und Spaltengruppen?
  • Wie ist die allgemeine Struktur des Datensatzes und seine Ergebnisse?
  • Wie sind die Parameter strukturiert und verwendet?
11
Jeroen

Ich hatte auch ein ähnliches Problem. In meinem Fall kam es sogar ohne Parameter oder irgendetwas vor, nur der einfachste Bericht, den Sie sich vorstellen können. Es enthielt eine Tabelle mit einem einzelnen Feld, es wurden keine Filter verwendet. Es gelang mir zwar, einige Daten anzuzeigen, aber es wurden nur die Zeilen angezeigt, die nicht in die Zelle passten und daher die Zeilenhöhe zwangsweise vergrößerten. 

Mein Fix für dieses Problem: Ändern der Schriftart oder der Schriftgröße vom Standard (Größe 10, Segoe-Benutzeroberfläche). Dann wurden alle Daten angezeigt. Wenn Sie dies wieder in die Segoe-Benutzeroberfläche ändern, werden die Daten wieder verschwinden. 

3
Stijn

Ich hatte einen Fall, in dem ein Arbeitsbericht keine Daten mehr anzeigt. Ich habe eine weitere Tabelle ohne Formatierung hinzugefügt, die mit demselben Dataset verknüpft ist. Dabei wurde überprüft, dass die Abfrage keine Daten mehr zurückgibt, wenn Parameter von SSRS übergeben werden. Nach einer Untersuchung stellte ich fest, dass mein Testparameter für einen Wert für "Ankerdatum" als JJJJ-MM-TT formatiert war. In meiner aktualisierten Abfrage machte ich Annahmen über die Reihenfolge der Zeichen im Datumsparameter (um sie auf JJJJ zu kürzen.) -MM für einen Join).

Ich hatte den Verdacht, dass SSRS das Datum möglicherweise in einem anderen Format überträgt (MM/DD/YY ist meine derzeitige kulturelle Einstellung für Datumsvorgaben). Ich lief also mit dieser Ahnung ab und änderte meine SQL-Logik, um mit jedem übergebenen Datumsformat zu arbeiten. - z.B. links (konvertieren (Datum, @HanchorDate, 20), 7)

Dies behebte mein Problem - die Formatannahmen, mit denen ich getestet hatte (hart codierte Werte zum Testen der Abfrage während der Entwicklung), waren schlechte Annahmen. SSRS kann Daten auch in lokalen Formaten weitergeben - achten Sie also unbedingt auf diese Annahme.

Ich hatte das gleiche Problem. Hier ist was ich gefunden habe. Hier ist mein Code:

    DECLARE @tblPigProblems TABLE (
    Id          INT IDENTITY, 
    PPId            INT, 
    GaugeColor      VARCHAR(25), 
    FullStartTime       VARCHAR(25), 
    PigSystem         VARCHAR(25)
    )

    IF (1 = 0)
    BEGIN
        SELECT * FROM @tblPigProblems
    END

    ...

    SELECT '@tblPigProblems'    [PigProblems],  
    @p_vchLine      [Line],         
    GaugeColor      [Product],
    FullStartTime       [Start Time],
    PigSystem       [Pig System]
FROM @tblPigProblems

Was ich tat, war die Verwendung des anfänglichen "SELECT * FROM @tblPigProblems", um sicherzustellen, dass SSRS die Felder aus der gespeicherten Prozedur ermitteln konnte, wenn vor der letzten select-Anweisung, die die Datenmenge zurückgegeben hat, Fehlermeldungen im Code angegeben wurden. Als dann die Ergebnisse ermittelt wurden, habe ich den Feldern einen Alias ​​zugewiesen. Das Problem bestand darin, dass die Aliase für die Felder nicht mit den deklarierten Feldnamen übereinstimmten (dh das deklarierte Feld "GaugeColor" stimmte nicht mit dem Alias ​​"[Produkt]" überein, den ich im select angegeben hatte, um die Ergebnismenge zu erstellen. Die Art und Weise, in der ich Es wurde erkannt, dass beim Aktualisieren der Felder im Abschnitt "Daten" des SSRS-Berichts und der Anzeige der Datensatzfelder die Feldnamen aus der Tabellendeklaration aufgeführt wurden (z. B. "GaugeColor"). Wenn ich die gespeicherte Prozedur innerhalb des Datensatzes ausgeführt habe (auf das! geklickt!) zeigte die in SSRS aufgeführte Ergebnismenge die Feld-Aliasnamen (z. B. "Produkt"). Da diese nicht übereinstimmten, wurde in der Textbox, der ich das Feld zugewiesen hatte, nichts angezeigt (z. B. "= Felder") ! ColorGauge.Value "). SSRS hat diese Diskrepanz nicht erkannt und die Erstellung des Berichts ermöglicht, aber es werden keine Werte angezeigt. Die Korrektur war einfach: Ersetzen Sie Folgendes:

    IF (1 = 0)
    BEGIN
        SELECT * FROM @tblPigProblems
    END

mit:

    IF (1 = 0)
    BEGIN
        SELECT '@tblPigProblems'    [PigProblems],  
        @p_vchLine      [Line],         
        GaugeColor      [Product],
        FullStartTime   [Start Time],
        PigSystem       [Pig System]
    FROM @tblPigProblems
    END

Dan

2
Dan Goodell