Frage

Ich habe ein Projekt alle Berichte auf einer SSRS-Instanz zu aktualisieren, und dachte, dass ich eine Liste aller Berichte in Excel bekommen würde, damit ich sie abhaken, wie ich jeden aktualisieren. Leicht dachte ich. Ich nicht es verwenden häufig (überhaupt), aber XML schien sich dies zu verleihen. Ich würde so etwas wie haben:

<Server>
  <ReportFolder>
    <ReportFolder>
      <Report>
      </Report>
      <Report>
      </Report>
    </ReportFolder>
    <Report>
    </Report>
    <Report>
    </Report>
    <Report>
    </Report>
  </ReportFolder>
  <ReportFolder>
  </ReportFolder>
</Server>

Die Katalog-Tabelle war meine Quelle der Daten, es hat ItemID und ParentID so kann ich Objekte und ihre Hierarchie identifizieren, aber ich kann den vollständigen Server in XML-Form nicht, ich den Inhalt eines Ordners bekommen, wenn ich den Ordner angeben, (Name oder ItemID), aber nicht der gesamte Server. Sobald ich die WHERE nehmen ItemID = 1234 Zeile ich so etwas wie:

<Server>
  <ReportFolder>
  </ReportFolder>
  <ReportFolder>
  </ReportFolder>
  <ReportFolder>
  </ReportFolder>
    <Report>
    </Report>
    <Report>
    </Report>
    <Report>
    </Report>
    <Report>
    </Report>
    <Report>
    </Report>  
</Server>

Ich habe CTE XML AUTO, XML EXPLICIT versucht, und jetzt bin immer meine Distanzierung fühlen so weit mit XML gerechtfertigt ist!

Gibt es eine Möglichkeit, die voll ist (bis zu 4 Stufen) der Hierarchie in XML-Form zu bekommen?

Ist das etwas, das auf XML nur relevant ist nicht, und ich habe eine falsche Abzweigung in eine Sackgasse genommen?

War es hilfreich?

Lösung

Also, gute und schlechte Nachrichten. Hier ist die gute Nachricht.

CREATE FUNCTION [dbo].[GetReportTree](@ItemId uniqueidentifier)
RETURNS XML
BEGIN RETURN 
  (SELECT   ca.ItemId AS '@ItemId',
            ca.Name AS '@Name',
            ca.Type AS '@Type',
            dbo.GetReportTree(ca.ItemId)
   FROM dbo.Catalog ca
   WHERE (@ItemId IS NULL AND ParentId IS NULL) OR ParentID=@ItemId
   FOR XML PATH('CatalogItem'), TYPE)
END

SELECT dbo.[GetReportTree](NULL)   

Erzeugt eine Hierarchie wie folgt aus:

<CatalogItem Name="" Type="1">
  <CatalogItem Name="ScrumTest" Type="1">
    <CatalogItem Name="(Hidden) Delta Report Small" Type="2" />
    <CatalogItem Name="(Hidden) Product Burndown Chart Small" Type="2" />
    <CatalogItem Name="(Hidden) Product Cumulative Flow Small" Type="2" />
    <CatalogItem Name="(Hidden) Sprint Burndown Chart Small" Type="2" />
    <CatalogItem Name="All Product Backlog Items" Type="2" />
    <CatalogItem Name="All Sprint Backlog Items" Type="2" />
    <CatalogItem Name="All Sprints" Type="2" />
    <CatalogItem Name="Current Sprint Status" Type="2" />
    <CatalogItem Name="Delta Report" Type="2" />
    <CatalogItem Name="Engineering Reports" Type="1">
      <CatalogItem Name="(Hidden) Bug History Chart Small" Type="2" />
      <CatalogItem Name="Bug Count" Type="2" />
      <CatalogItem Name="Bug History Chart" Type="2" />
      <CatalogItem Name="Bug Priority Chart" Type="2" />
    </CatalogItem>
    <CatalogItem Name="Impediment Report" Type="2" />
    <CatalogItem Name="Product Backlog Composition" Type="2" />
    <CatalogItem Name="Product Burndown Chart" Type="2" />
    <CatalogItem Name="Product Cumulative Flow" Type="2" />
    <CatalogItem Name="Retrospective Report" Type="2" />

Die schlechte Nachricht ist, dass ich nicht sicher bin, wenn Sie es ohne den Zusatz der „ReportTree“ -Funktion in dem Report tun können. So hängt es von Ihrem Zugriff auf diesen Server. Sie können die Funktion erhalten können, über Datenbanken zu arbeiten, habe ich nicht versuchen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top