2012-05-03 6 views
0

Я должен инвентаризировать около 400 отчетов, и мне нужно сделать, чтобы вывести все sql из отчетов. Я могу XmlDocument загружать результаты и перемещаться по информации в VS и находить информацию, которую я ищу.Перечисление результатов для данных в отчете SSRS

В каждом отчете я должен нажать Results View

я должен детализировать результаты просмотра для следующих элементов.

{Element, Name="Report"} 
{Element, Name="DataSet"} 
{Element, Name="Query"} 
{Element, Name="Command Text"} 

Я пытаюсь добраться до элементарного командного текста, но я не уверен в том, как enurmate или получить доступ к этому уровню. Вот код, я использую:

string[] Fil_Info = Directory.GetFiles(dir); 
      foreach (string file in Fil_Info) 
      { 
       XmlDocument doc = new XmlDocument(); 
       doc.Load(file); 
       //Console.WriteLine(doc.Value.ToString()); 
       XmlAttributeCollection attrColl =doc.DocumentElement.Attributes; 
       foreach (XmlAttribute xmlAtt in attrColl) 
       { 
        XmlAttributeCollection attrColl2 = xmlAtt.Attributes; 
        foreach (XmlAttribute xmlAtt2 in attrColl2) 
        { 


        } 

       } 

      } 
+0

Можете ли вы привести пример того, как структурирован XML? Я думаю, вы захотите использовать расширения LINQ, например. '.Descendants (...)', но я точно не знаю, как вам посоветовать без подробностей. –

+0

@TimS. Я даже не уверен, как обеспечить структуру, я знаю, что на уровне «Command Text» innerxml - это то, что мне нужно –

ответ

0

Я действительно не знаю, что вы после этого, и я не видел структуру вашего языка XML, так что я везу дикое предположение, и это, вероятно, не является оптимальным/функциональный, но эй, что самое интересное, если вам не нужно правильно его подстраивать?

IEnumerable<XElement> GetCommandText(string file) 
    { 
    XDocument xdoc = XDocument.Load(file); 
    return xdoc.Root.Elements().Where(r => (string)r.Attribute("Name") == "Command Text"); 
    } 

если вы хотите больше помощи, пожалуйста, довольно пожалуйста, напишите пример того, что исходный XML выглядит :)

0

Вы можете иметь отчет сервера отчетов об отчетах. См. Сообщения на форуме от jcoe по XML-запросам на дому »Обсуждения статей» Обсуждения статей по автору »Обсудить содержание, отправленное Майклом Дэвисом» Отчеты диагностического сервера отчетов Page 9 и Page 10.

Или продолжать с текущим подходом, вот запрос Linq, который будет разбирать, что вы после того, как из файла RDL:

 XNamespace reportDefinition = "http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition"; 
     XNamespace reportDesigner = "http://schemas.microsoft.com/SQLServer/reporting/reportdesigner"; 

     XDocument reportXml = XDocument.Load(@"MyReport.rdl"); 

     var reportQueries = from XElement dataSetElement in reportXml.Element(reportDefinition + "Report").Element(reportDefinition + "DataSets").Elements(reportDefinition + "DataSet") 
          let dataSetName = dataSetElement.Attribute("Name").Value 
          let queryCommandText = dataSetElement.Element(reportDefinition + "Query").Element(reportDefinition + "CommandText").Value 
          let queryDataSourceName = dataSetElement.Element(reportDefinition + "Query").Element(reportDefinition + "DataSourceName").Value 
          select new { DataSetName = dataSetName, QueryCommandText = queryCommandText, QueryDataSourceName = queryDataSourceName }; 
Смежные вопросы