6

Ich habe einen SSRS-Bericht hinzuzufügen, die für den Export versagt zu übertreffen, wenn die Zeilenanzahl größer als der Grenzwert 2003 Excel ist von 65536Wie SSRS Seitenumbruch nach 65536 Zeilen, Zählen Gruppe Kopf-/Fußzeilen

Der Bericht bereits hat eine Gruppierungsebene mit einem Gruppenfuß.

Ich habe versucht,

=ceiling(rownumber(nothing)/65536) 

jedoch einen zusätzlichen Gruppierungsebene mit einem Seitenumbruch auf dem Ausdruck hinzuzufügen, dies die Detailzeilen zählt, sondern nehmen nicht berücksichtigt die Gruppe Fußzeile. So wertet die rownumber zu 53.000, während die tatsächliche Anzahl der Zeilen überschritten hat 65536

Der folgende Ausdruck

=ceiling(RunningValue(Fields!myfirstgroup.Value, CountDistinct, Nothing) + rownumber(nothing)/65536) 

mir die tatsächliche Zeilenanzahl einschließlich der Gruppe Fußzeilen geben, aber SSRS wird keine Gruppe ermöglichen, sich auf ein laufender Wertausdruck.

Wie kann ich einen Seitenumbruch nach 65536 Zeilen erzwingen, um einen Export nach Excel zu ermöglichen? Ich hatte gehofft, dies in der Berichtsdefinition zu erreichen und zu vermeiden, eine berechnete Seitennummer in der Abfrage hinzuzufügen.

Jede Hilfe sehr geschätzt

* UPDATE - Beispieldaten *

ItemDescription , Location , Quantity 

Red lorry , M25 , 5 

Red lorry , M6 , 2 

Yellow lorry , M1 , 3 

Bericht eine Gruppierung auf ItemDescription für das Element mit insgesamt hat, so ist es

ItemDescription , Location , Quantity 

    Red lorry , M25 , 5 

    Red lorry , M6 , 2 

     Total for Red Lorry,7 

    Yellow lorry , M1 , 3 

     Total for Yellow Lorry,3 
zeigen

Dies bedeutet, dass ich aus meinen 3 Datenzeilen 5 Berichtszeilen mit Detail- und Fußzeilen habe. SSRS kann angeben, wie viele Details Zeilen in meinem Dataset sind, aber ich muss die Fußzeilen für einen Seitenumbruch berücksichtigen.

+0

Ich denke, Ihnen geteilt variable Anzahl von Zeilen und es zu zählen, können in der Gruppe Fußzeile setzen. Fügen Sie einen Ausdruck hinzu, um der gemeinsam genutzten Variablen einen Seitenumbruch zu geben. –

+3

Können Sie uns ein wenig mehr darüber erzählen, warum Sie einen Bericht mit mehr als 65.000 Zeilen erstellen möchten, der nach Excel exportiert wird UND Gruppierungen mit Gruppenfüßen enthält? Wird jemand die Summen in diesen Fußzeilen sehen? Können Sie die Zeilen stattdessen in CSV exportieren? – Nathan

+0

Es ist eine Kundenanforderung, diese Menge an Daten in Excel mit Gruppierungszeilen zu haben, so dass das mein Ziel ist. Anstatt die Weisheit dieser Anfrage in Frage zu stellen oder eine alternative Lösung zu finden, bin ich mehr daran interessiert, eine Lösung für das technische Problem zu finden. – JamieA

Antwort

4

Hallo, dieser Link könnte Ihnen helfen. Vor ein paar Jahren hatte ich ähnliche Probleme.

SSRS Page break on Tablix with Rownumber ,just one row group and no group expression given by default

=Floor((RowNumber(Nothing)-1)/2000) 

war die vorgeschlagene Antwort

+0

Danke. Dies wird den Fehler verhindern, aber es ist ein wenig unentwickelt und könnte zu 2 oder 3 mal so vielen Excel-Arbeitsblättern führen, als tatsächlich benötigt werden. – JamieA

+0

Nicht das elegante, nachdem ich nach, sondern verhindert den Excel-Exportfehler, also +50. Für die Aufzeichnung war die einzige elegante Methode, die ich dazu fand, meinen Seitenumbruch in SQL zu berechnen und eine Berichtsgruppierung hinzuzufügen. Überrascht, dass SSRS keine Möglichkeit hat, sich damit zu befassen – JamieA

+0

sorry @JamieA Ich konnte Ihnen damit nicht im Detail helfen. Für einen einfachen Datensatz funktioniert SSRS immer perfekt, aber wenn der Bericht komplex wird, werden all diese kleinen Dinge uns ärgern und uns Zeit nehmen (10 Monate mit SSRS-Projekt) :( –

2

Erstellen Sie eine Gruppe mit dem folgenden Ausdruck: = CInt (Ceiling (RowNumber (nichts)/65000))

Die 65000 geben Sie ein wenig mehr Raum für alle Kopf- und Fußzeilen. Machen Sie als Nächstes einen Seitenumbruch in dieser Gruppe "Zwischen jeder Instanz einer Gruppe" und "Auch am Ende einer Gruppe" und Sie werden das Problem mit der Excel-Dateigrenze erfolgreich übertreffen.

Dies ist, was wir normalerweise ohne irgendein Problem verwenden. Ich glaube nicht, dass jemand es bemerken wird, wenn Sie nicht alle 65.536 Zeilen verwenden.

+0

Danke für Ihre Antwort, Entschuldigung, es hat so lange gedauert, um wieder zu kommen! Die Frage besagt jedoch, dass ich bereits versucht habe, einen ähnlichen Gruppierungsausdruck mit einem Seitenumbruch zu verwenden. 65000 bietet nicht genügend Platz für Kopf- und Fußzeilen, da meine erste Gruppierungsebene eine Gruppenfußzeile enthält, und ich habe Tausende dieser Fußzeilen zu berücksichtigen, die nicht in der Funktion RowNumber() gezählt werden – JamieA